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

Schnellstart

Schlüssel holen, Zeile kopieren, ausführen, JSON lesen.

0. Schlüssel erhalten

Erstellen Sie ein kostenloses Konto, öffnen Sie API-Schlüssel und erstellen Sie einen. Bewahren Sie ihn dann in einer Umgebungsvariable auf:

bash
export FNA_KEY=fna_live_...

1. Suchen

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

Drei Felder in dieser Antwort sind sofort bemerkenswert. total gibt an, wie viele Artikel übereingestimmt haben, nicht wie viele zurückgegeben wurden – dieser Wert ist aus Leistungsgründen auf 10,000 begrenzt, und total_is_lower_bound teilt Ihnen mit, wann diese Grenze erreicht wurde. country_source zeigt, wie das Land bestimmt wurde, was wichtig ist, da etwa ein Drittel der Länderangaben in jedem Nachrichtendatensatz auf Schätzungen und nicht auf Fakten basiert. Und crawled_at ist der ehrliche Zeitstempel: Verlage können published_at zurückdatieren, aber die Crawl-Zeit wird vom System zugewiesen.

2. Eingrenzen

Filter kombinieren sich mit UND über Parameter hinweg und mit ODER innerhalb eines Parameters. country=DE,AT&lang=de liest sich also als „Deutschsprachige Artikel aus Deutschland oder Österreich“. Dies fragt nach heutigen ukrainischsprachigen Artikeln aus der Ukraine, sortiert nach Neuesten:

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

3. Den vollständigen Text erhalten

Suchergebnisse enthalten standardmäßig keinen Artikeltext, um die Antwortgröße gering zu halten. Fordern Sie den Text explizit an, sobald Sie die gewünschten Artikel ausgewählt haben:

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

Der Volltext umfasst etwa 2,000–4,000 Zeichen pro Artikel. Zwanzig Artikel mit full_text=true entsprechen etwa 40,000 Tokens für ein Sprachmodell. Wählen Sie zuerst aus, laden Sie dann die Artikeltexte nach. Siehe Token-Kosten.

4. Zählen statt auflisten

Oft ist die nützliche Frage nicht „Was sind die Artikel“, sondern „Gibt es hier überhaupt etwas, und wo ist es?“. Das Zählen von Antworten kostet einen Bruchteil der Kosten – etwa 200 Tokens im Vergleich zu mehreren Tausend für eine Ergebnisseite – was es zum richtigen ersten Aufruf für einen Agenten macht, der entscheidet, ob eine Suche lohnenswert ist:

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

Die Antwort enthält Zählungen nach Land, Sprache, Domain-Endung, Verlag und Tag, berechnet über die gesamte Treffermenge und nicht nur über die aktuelle Seite.

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

Weiter