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

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:

bash
export FNA_KEY=fna_live_...

1. Cari

bash
curl -H "Authorization: Bearer $FNA_KEY" "https://freenewsapi.ai/v1/search?q=climate+summit&size=2"
respons
{
  "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:

bash
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:

bash
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:

bash
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

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

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));

Berikutnya