Rask start
Hent en nøkkel, kopier linjen, kjør den, les JSON.
0. Skaff en nøkkel
Opprett en gratis konto, åpne API-nøkler og lag en. Hold deretter nøkkelen i en miljøvariabel:
export FNA_KEY=fna_live_...1. Søk
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"
}
]
}Tre felter i dette svaret er verdt å merke seg med en gang. total er antall artikler som matchet, ikke antall returnert — det er begrenset til 10,000 for hastighet, og total_is_lower_bound forteller deg når du treffer grensen. country_source sier hvordan landet ble bestemt, noe som betyr noe fordi omtrent en tredjedel av landverdiene i ethvert nyhetsdatasett er inferanser snarere enn fakta. Og crawled_at er det ærlige tidsstempelet: utgivere kan datere published_at tilbake, men crawl-tid tildeles av pipeline-en.
2. Avgrens søket
Filtre kombineres med AND på tvers av parametre og OR innenfor ett parameter. Så country=DE,AT&lang=de leses som "tyskspråklige artikler fra Tyskland eller Østerrike". Dette spør etter dagens ukrainskspråklige artikler fra Ukraina, nyeste først:
curl -H "Authorization: Bearer $FNA_KEY" "https://freenewsapi.ai/v1/search?country=UA&lang=uk&date=today&sort=date&size=10"3. Få hele teksten
Søkeresultater utelater artikkelteksten som standard for å holde svarene små. Be om den eksplisitt når du har valgt de artiklene du faktisk vil ha:
curl -H "Authorization: Bearer $FNA_KEY" "https://freenewsapi.ai/v1/search?q=inflation&full_text=true&size=5"Fulltekst er omtrent 2,000–4,000 tegn per artikkel. Tjue artikler med full_text=true tilsvarer omtrent 40,000 tokens for en språkmodell. Velg først, hent deretter fullteksten. Se tokenkostnader.
4. Tell i stedet for å liste opp
Ofte er det nyttige spørsmålet ikke «hva er artiklene», men «finnes det noe her i det hele tatt, og hvor er det». Å telle svar til en brøkdel av kostnaden — omtrent 200 tokens mot flere tusen for en side med resultater — gjør det til det rette første kallet for en agent som avgjør om et søk er verdt å kjøre:
curl -H "Authorization: Bearer $FNA_KEY" "https://freenewsapi.ai/v1/stats?q=earthquake&date=7d"Svaret gir deg antall oppgitt per land, språk, domenenavn, utgiver og dag, beregnet over hele treffsettet, ikke bare gjeldende side.
I 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"])I 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));