From 1 November 2026 the API needs a free key. Calls without one work until then. Get a key · what changes
TR
EnglishУкраїнськаEspañolPortuguêsDeutschFrançaisItalianoPolskiNederlandsSvenskaDanskNorskSuomiČeštinaRomânăMagyarΕλληνικάTürkçeالعربيةעבריתفارسیहिन्दीবাংলাIndonesiaMelayuTiếng Việtไทย日本語한국어中文
Oturum açAPI anahtarı al
Ana Sayfa › API dokümantasyonu › Hızlı Başlangıç

Hızlı Başlangıç

Bir anahtar al, satırı kopyala, çalıştır, JSON'u oku.

0. Anahtar alın

Ücretsiz bir hesap oluşturun, API anahtarları bölümünü açın ve bir tane oluşturun. Ardından bunu bir ortam değişkeninde tutun:

bash
export FNA_KEY=fna_live_...

1. Arama yapın

bash
curl -H "Authorization: Bearer $FNA_KEY" "https://freenewsapi.ai/v1/search?q=climate+summit&size=2"
yanıt
{
  "took_ms": 41,
  "total": 1284,
  "total_is_lower_bound": false,
  "size": 2,
  "offset": 0,
  "results": [
    {
      "id": "9c1f8a4b2d3e5f6071829304a5b6c7d8",
      "url": "https://example-news.com/world/climate-summit-opens",
      "title": "Climate summit opens with a call for binding targets",
      "description": "Delegates from 190 countries gathered on Monday ...",
      "published_at": "2026-08-17T09:12:00Z",
      "crawled_at": "2026-08-17T10:48:31Z",
      "host": "example-news.com",
      "sitename": "Example News",
      "country": "GB",
      "country_source": "cctld",
      "lang": "en",
      "tld": "com"
    }
  ]
}

Bu yanıtta dikkat edilmesi gereken üç alan var. total, döndürülen değil eşleşen makale sayısını gösterir — hız için 10,000 ile sınırlandırılmıştır ve total_is_lower_bound bu sınıra ulaşıp ulaşmadığınızı belirtir. country_source, ülkenin nasıl belirlendiğini gösterir; çünkü herhangi bir haber verisetindeki ülke değerlerinin yaklaşık üçte biri gerçek veriden ziyade çıkarımdır. crawled_at dürüst bir zaman damgasıdır: yayıncılar published_at için geriye dönük tarih atayabilir, ancak tarama zamanı pipeline tarafından atanır.

2. Daraltın

Filtreler, parametreler arasında AND (VE) ve tek bir parametre içinde OR (VEYA) mantığıyla birleşir. Bu nedenle country=DE,AT&lang=de ifadesi "Almanca makaleler veya Almanya ve Avusturya'dan" anlamına gelir. Bugünün Ukraynaca makalelerini, en yenilerden başlayarak Ukrayna'dan istemek için:

bash
curl -H "Authorization: Bearer $FNA_KEY" "https://freenewsapi.ai/v1/search?country=UA&lang=uk&date=today&sort=date&size=10"

3. Tam metni alın

Varsayılan olarak arama sonuçları, yanıt boyutunu küçük tutmak için makale metnini içermez. Aslında ihtiyacınız olan makaleleri seçtikten sonra metni açıkça isteyin:

bash
curl -H "Authorization: Bearer $FNA_KEY" "https://freenewsapi.ai/v1/search?q=inflation&full_text=true&size=5"

Tam metin, makale başına yaklaşık olarak 2,000–4,000 karakterdir. full_text=true ile yirmi makale, bir dil modeli için yaklaşık 40,000 token'a denk gelir. Önce seçin, ardından içeriklerini çekin. Token maliyetleri bölümüne bakın.

4. Listelemek yerine sayın

Sıklıkla yararlı soru "makaleler nelerdir" değil, "burada hiç bir şey var mı ve nerede"dir. Bir sonuç sayfası için birkaç bin jetona karşılık yaklaşık 200 jetonla, bir ajanın aramanın çalışmaya değer olup olmadığına karar vermesi için doğru ilk çağrı olması için maliyetin bir kesrine sayıları saymak:

bash
curl -H "Authorization: Bearer $FNA_KEY" "https://freenewsapi.ai/v1/stats?q=earthquake&date=7d"

Yanıt, eşleşen tüm küme üzerinden hesaplanan ülke, dil, alan adı uzantısı, yayıncı ve güne göre sayılar sağlar.

Python ile

python
import os, requests
HEADERS = {"Authorization": "Bearer " + os.environ["FNA_KEY"]}

r = requests.get("https://freenewsapi.ai/v1/search", headers=HEADERS, params={
    "q": "semiconductor export controls",
    "date": "7d",
    "lang": "en",
    "size": 20,
    "sort": "relevance",
})
for a in r.json()["results"]:
    print(a["published_at"], a["host"], a["title"])

JavaScript ile

javascript
const url = new URL("https://freenewsapi.ai/v1/search");
url.search = new URLSearchParams({ q: "central bank", date: "24h", size: "20" });

const { results } = await (await fetch(url, { headers: { Authorization: `Bearer ${FNA_KEY}` } })).json();
results.forEach(a => console.log(a.published_at, a.host, a.title));

Sonraki