Începe rapid
Obțineți o cheie, copiați linia, rulați-o, citiți JSON.
0. Obțineți o cheie
Creați un cont gratuit, deschideți cheile API și creați una. Apoi păstrați-o într-o variabilă de mediu:
export FNA_KEY=fna_live_...1. Căutați
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"
}
]
}Trei câmpuri din acest răspuns merită o atenție imediată. total reprezintă numărul de articole potrivite, nu cel returnat — este limitat la 10,000 pentru viteză, iar total_is_lower_bound vă informează când atingeți această limită. country_source indică modul în care a fost determinată țara, aspect important deoarece aproximativ o treime din valorile de țară din orice set de știri sunt inferențe, nu fapte. Iar crawled_at este marcajul orar onest: editorii pot retrodata published_at, dar timpul de crawl este atribuit de pipeline.
2. Restrângeți căutarea
Filtrele se combină cu AND între parametri și cu OR în interiorul unui singur parametru. Astfel, country=DE,AT&lang=de se citește ca „articole în limba germană din Germania sau Austria”. Aceasta cere articolele de azi în limba ucraineană din Ucraina, cele mai noi primele:
curl -H "Authorization: Bearer $FNA_KEY" "https://freenewsapi.ai/v1/search?country=UA&lang=uk&date=today&sort=date&size=10"3. Obțineți textul complet
Rezultatele căutării omit textul integral al articolelor în mod implicit, pentru a menține dimensiunea răspunsurilor mică. Solicită-l explicit doar atunci când ai selectat articolele de care ai nevoie cu adevărat:
curl -H "Authorization: Bearer $FNA_KEY" "https://freenewsapi.ai/v1/search?q=inflation&full_text=true&size=5"Textul complet are aproximativ 2,000–4,000 caractere per articol. Douăzeci de articole cu full_text=true reprezintă aproximativ 40,000 tokeni pentru un model lingvistic. Selectați mai întâi, apoi preluați conținutul articolelor. Consultați costurile cu tokenii.
4. Numărați în loc să listați
Adesea, întrebarea utilă nu este „care sunt articolele”, ci „există ceva aici și unde se află”. Numărarea răspunsurilor costă o fracțiune din preț — aproximativ 200 tokeni, față de câteva mii pentru o pagină de rezultate — ceea ce o face prima apelare corectă pentru un agent care decide dacă o căutare merită efectuată:
curl -H "Authorization: Bearer $FNA_KEY" "https://freenewsapi.ai/v1/stats?q=earthquake&date=7d"Răspunsul oferă numărătoare pe țară, limbă, domeniu, editor și zi, calculată pentru întreaga mulțime de rezultate potrivite, nu doar pentru pagina curentă.
În 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"])În 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));