Panduan cepat
Dapatkan kunci, salin baris tersebut, jalankan, baca JSON.
0. Dapatkan kunci
Buat akun gratis, buka kunci API dan buat satu. Kemudian simpan dalam variabel lingkungan:
export FNA_KEY=fna_live_...1. Cari
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"
}
]
}Tiga bidang dalam respons ini patut diperhatikan segera. total adalah jumlah artikel yang cocok, bukan jumlah yang dikembalikan — jumlahnya dibatasi hingga 10,000 untuk kecepatan, dan total_is_lower_bound memberi tahu Anda kapan batas tersebut tercapai. country_source menunjukkan bagaimana negara ditentukan, yang penting karena sekitar sepertiga nilai negara dalam dataset berita apa pun adalah inferensi, bukan fakta. Dan crawled_at adalah timestamp yang jujur: penerbit dapat memundurkan tanggal published_at, tetapi waktu crawling ditetapkan oleh pipeline.
2. Persempit pencarian
Filter menggabungkan dengan AND antar parameter dan OR dalam satu parameter. Jadi country=DE,AT&lang=de dibaca sebagai "artikel berbahasa Jerman dari Jerman atau Austria". Ini meminta artikel berbahasa Ukraina dari Ukraina hari ini, yang terbaru terlebih dahulu:
curl -H "Authorization: Bearer $FNA_KEY" "https://freenewsapi.ai/v1/search?country=UA&lang=uk&date=today&sort=date&size=10"3. Dapatkan teks lengkap
Hasil pencarian tidak menyertakan isi artikel secara default agar respons tetap kecil. Minta secara eksplisit setelah Anda memilih artikel yang benar-benar ingin Anda gunakan:
curl -H "Authorization: Bearer $FNA_KEY" "https://freenewsapi.ai/v1/search?q=inflation&full_text=true&size=5"Teks lengkap berukuran sekitar 2,000–4,000 karakter per artikel. Dua puluh artikel dengan full_text=true adalah sekitar 40,000 token untuk model bahasa. Pilih terlebih dahulu, lalu ambil isi artikel. Lihat biaya token.
4. Hitung, bukan daftar
Seringkali pertanyaan yang berguna bukanlah "apa saja artikelnya" melainkan "apakah ada sesuatu di sini, dan di mana letaknya". Menghitung jawaban dengan biaya yang jauh lebih murah — sekitar 200 token dibandingkan dengan beberapa ribu untuk satu halaman hasil — menjadikannya panggilan pertama yang tepat untuk agen yang memutuskan apakah pencarian layak dijalankan:
curl -H "Authorization: Bearer $FNA_KEY" "https://freenewsapi.ai/v1/stats?q=earthquake&date=7d"Respons memberikan jumlah berdasarkan negara, bahasa, zona domain, penerbit, dan hari, yang dihitung untuk seluruh set yang cocok, bukan hanya halaman saat ini.
Dalam 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"])Dalam 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));