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:
export FNA_KEY=fna_live_...1. Arama yapın
curl -H "Authorization: Bearer $FNA_KEY" "https://freenewsapi.ai/v1/search?q=climate+summit&size=2"{
"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:
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:
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:
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
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
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));