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

Snelstart

Vraag een sleutel aan, kopieer de regel, voer hem uit, lees de JSON.

0. Haal een sleutel op

Maak een gratis account, open API-sleutels en maak er een aan. Bewaar deze vervolgens in een omgevingsvariabele:

bash
export FNA_KEY=fna_live_...

1. Zoeken

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"
    }
  ]
}

Drie velden in die response zijn direct de moeite waard om te bekijken. total is het aantal artikelen dat overeenkwam, niet het aantal dat is teruggegeven — dit is voor snelheid beperkt tot 10,000, en total_is_lower_bound geeft aan wanneer je deze limiet bereikt. country_source geeft aan hoe het land is bepaald, wat relevant is omdat ongeveer een derde van de landwaarden in elke nieuwsdataset inferenties zijn in plaats van feiten. En crawled_at is de eerlijke tijdstempel: uitgevers kunnen published_at een valse datum geven, maar de crawltijd wordt toegekend door de pipeline.

2. Verfijn het

Filters combineren met AND over parameters heen en OR binnen één parameter. Dus country=DE,AT&lang=de leest als "Duitstalige artikelen uit Duitsland of Oostenrijk". Dit vraagt om vandaag's Oekraïense artikelen uit Oekraïne, nieuwste eerst:

bash
curl -H "Authorization: Bearer $FNA_KEY" "https://freenewsapi.ai/v1/search?country=UA&lang=uk&date=today&sort=date&size=10"

3. Haal de volledige tekst op

Zoekresultaten bevatten standaard geen volledige tekst om de respons klein te houden. Vraag er expliciet om nadat je de artikelen hebt geselecteerd die je echt wilt:

bash
curl -H "Authorization: Bearer $FNA_KEY" "https://freenewsapi.ai/v1/search?q=inflation&full_text=true&size=5"

De volledige tekst is ongeveer 2,000–4,000 tekens per artikel. Twintig artikelen met full_text=true zijn ongeveer 40,000 tokens voor een taalmodel. Selecteer eerst, haal daarna de volledige teksten op. Zie tokenkosten.

4. Tel in plaats van opsommen

Vaak is de nuttige vraag niet "wat zijn de artikelen" maar "is er hier überhaupt iets, en waar is het". Het tellen van antwoorden kost een fractie van de kosten — ongeveer 200 tokens tegen enkele duizenden voor een pagina met resultaten — wat het de juiste eerste aanroep maakt voor een agent die beslist of een zoekopdracht de moeite waard is:

bash
curl -H "Authorization: Bearer $FNA_KEY" "https://freenewsapi.ai/v1/stats?q=earthquake&date=7d"

De response geeft je aantallen per land, taal, domeinextensie, uitgever en dag, berekend over de volledige set van overeenkomende artikelen, niet alleen over de huidige pagina.

In 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"])

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

Volgende