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

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

bash
export FNA_KEY=fna_live_...

1. Căutați

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

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

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

bash
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

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

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

Următorul