10 Nachrichten API Filter-Muster, die jeder Entwickler kennen sollte (2026)
Nachrichten API-Filterung kombiniert Abfrageparameter – Titelsuche, Daten, Quellen, Entitäten, Sentiment, Kategorien –, um einen Nachrichtenfeed von Millionen von Artikeln auf die einzugrenzenden, die Ihre App benötigt. Ein moderner Nachrichten-API klassifiziert jeden Artikel nach Dimensionen, nach denen Sie direkt filtern können (Entität, Sentiment, Kategorie, Herkunftsland), sodass eine Anfrage eine ganze NLP-Pipeline ersetzt. Die meisten Anbieterdokumentationen listen Parameter auf, zeigen aber nie, wie eine echte kombinierte Abfrage aussieht, was zurückkommt oder wo die Fallstricke liegen.
Dieser Beitrag richtet sich an Entwickler, die eine Nachrichten-API integrieren und Copy-Paste-Beispiele wünschen, die funktionieren. Jedes der folgenden Muster verwendet den APITube-Endpunkt von /v1/news/everything, mit übergreifenden API-Übersetzungszeilen, wo die Syntax in NewsAPI.org oder NewsData.io abweicht. Jedes Muster enthält Curl, einen Python-Snippet, eine gekürzte JSON-Antwort und den Stolperstein, der Ihren ersten Tag verschwendet.
Offenlegung: Ich arbeite bei APITube. Die Muster lassen sich sauber auf andere wichtige Nachrichten-APIs übertragen – Übersetzungszeilen sind enthalten, wo die Syntax abweicht.
10 Muster im Überblick
- Suche nach Titel-Schlüsselwörtern und exakten Phrasen (
title,"...",~N) - Ausschließen von Begriffen und Abgleichen nach Position (
ignore.title,title_starts_with,title_ends_with) - Datumsbereichsfilter (
published_at.start,published_at.end) - Sprach- + Quelllandfilter (
language.code,source.country.code) - Quell-Domain einschließen / ausschließen (
source.domain,ignore.source.domain) - Entitätsfilter (
entity.id) - Sentiment-Polaritätsfilter (
sentiment.body.polarity) - Kategorie + Branchenfilter (
category.id,industry.id) - Zusammengesetzte Abfrage (Entität + Stimmung + Datum + Sprache + Herkunftsland)
- Paginierung + Sortierung (
per_page,page,sort.by,sort.order)
Alle Beispiele gehen von export APITUBE_KEY=... und der Basis-URL https://api.apitube.io aus. Authentifizieren Sie sich mit dem X-API-Key-Header (oder einem api_key-Query-Parameter).
1. Stichwort- & Exakt-Phrasen-Titelsuche
APITube durchsucht den Artikel title. Verwenden Sie einfache Wörter für lose Übereinstimmung oder setzen Sie einen Satz in Anführungszeichen für eine genaue, in-order Übereinstimmung. Die Schlüsselwortsuche erweitert Synonyme und morphologische Formen; zitierte Sätze nicht.
curl -sS 'https://api.apitube.io/v1/news/everything?title="apple vision pro"&per_page=10' \
-H "X-API-Key: $APITUBE_KEY"
import requests, os
r = requests.get(
"https://api.apitube.io/v1/news/everything",
params={"title": '"apple vision pro"', "per_page": 10},
headers={"X-API-Key": os.environ["APITUBE_KEY"]},
)
print(r.json()["results"][0]["title"])
JSON-Antwort (Auszug):
{
"status": "ok",
"results": [
{"id": "a1b2", "title": "Apple Vision Pro sales beat estimates", "href": "https://...", "published_at": "2026-05-02T14:11:00Z", "source": {"domain": "reuters.com"}}
],
"has_next_pages": true
}
Drei Abgleichmodi:
- Schlüsselwort –
title=bitcoinodertitle=AI,innovation(komma-getrennte Begriffe, beliebige Reihenfolge, mit Synonym-/Morphologie-Erweiterung). - Phrase –
title="breaking news"(exakte Phrase, keine Erweiterung). - Nähe –
title="apple iphone"~5(Wörter innerhalb von N Tokens voneinander,N= 0–10).
Haken: APITube gleicht gegen den Titel ab, nicht gegen den vollständigen Body — es gibt keinen body Suchparameter. Der Titel ist das stärkste Relevanzsignal, also ist dies beabsichtigt, aber ein Schlüsselwort, das nur im Artikel-Body vergraben ist, wird nicht übereinstimmen. Der vollständige body wird in jedem Ergebnis zurückgegeben, also filtern Sie dort nachträglich, wenn Sie eine Abgleichung auf Body-Ebene benötigen. Leerzeichen innerhalb einer zitierten Phrase erfordern immer noch eine URL-Kodierung (%20 oder +).
Über-API: NewsAPI.org nutzt ein einzelnes q Feld, das Titel + Text durchsucht. APITube filtert speziell auf title und zeigt die klassifizierten Dimensionen unten (Entität, Sentiment, Kategorie), sodass Sie selten eine Rohtext-Suche benötigen.
2. Ausschließende Begriffe und Abgleich nach Position
Titel-Suche ohne Boolesche Operatoren eingrenzen: Begriffe mit ignore.title ausschließen und Übereinstimmungen mit title_starts_with / title_ends_with / title_pattern verankern. APITube parst AND/OR/NOT nicht innerhalb eines Wertes – diese Wörter werden als normale Tokens behandelt – daher ist der Ausschluss ein eigener Parameter.
curl -sS 'https://api.apitube.io/v1/news/everything?title=tesla&ignore.title=rumor&title_starts_with=Breaking' \
-H "X-API-Key: $APITUBE_KEY"
params = {"title": "tesla", "ignore.title": "rumor", "title_starts_with": "Breaking", "per_page": 20}
r = requests.get(API, params=params, headers=HEADERS)
JSON-Antwort (Auszug):
{"results": [{"title": "Breaking: Tesla Q1 earnings beat estimates", "sentiment": {"body": {"polarity": "positive"}}}], "has_next_pages": true}
Haken: Versuchen Sie nicht, title=(tesla OR rivian) AND earnings NOT rumor zu schreiben — es gibt keine boolesche Abfragesprache. OR, AND, NOT würden als wörtliche Wörter durchsucht. Verwenden Sie durch Kommas getrennte Begriffe für OR-ähnliche Breite (title=tesla,rivian), ignore.title für den Ausschluss und führen Sie separate Aufrufe durch, wenn Sie AND-Logik zwischen Begriffen benötigen.
Kross-API: NewsAPI.org unterstützt AND/OR/NOT innerhalb von q. NewsData.io verwendet kommagetrennte q_or und ein separates Ausschlussfeld. APITube behält Inklusion und Ausschluss als separate Parameter.
3. Datumsbereichsfilter
Artikel auf ein veröffentlichtes Fenster beschränken mit published_at.start und published_at.end. Beide akzeptieren ISO 8601 Zeitstempel.
curl -sS 'https://api.apitube.io/v1/news/everything?published_at.start=2026-04-01T00:00:00Z&published_at.end=2026-04-30T23:59:59Z&language.code=en' \
-H "X-API-Key: $APITUBE_KEY"
params = {
"published_at.start": "2026-04-01T00:00:00Z",
"published_at.end": "2026-04-30T23:59:59Z",
"language.code": "en",
}
JSON-Auszug:
{"results": [{"published_at": "2026-04-15T08:42:00Z", "title": "..."}], "has_next_pages": true}
Haken: reine Daten wie 2026-04-01 funktionieren, aber API behandelt sie als Mitternacht UTC. Wenn Sie eine bestimmte Zeitzone benötigen, fügen Sie sie explizit hinzu. APITube akzeptiert auch Solr-ähnliche relative Daten (NOW-7DAYS, NOW-1MONTH/DAY). Lokal formatierte Zeichenketten wie 04/01/2026 sind ungültig und geben stillschweigend null Ergebnisse zurück.
4. Sprach- + Quellland-Filter
Filtern nach Artikel-Sprache und Quellland unabhängig voneinander. Sprache verwendet ISO 639-1-Codes; Land verwendet ISO 3166-1 Alpha-2 (genau zwei Zeichen).
curl -sS 'https://api.apitube.io/v1/news/everything?language.code=de&source.country.code=de&title=KI' \
-H "X-API-Key: $APITUBE_KEY"
params = {"language.code": "de", "source.country.code": "de", "title": "KI"}
Haken: Der Parameter ist source.country.code, nicht country.code — und er filtert nach dem Land des Herausgebers, nicht danach, worum es in der Geschichte geht. Ein deutsches Outlet, das über Brasilien schreibt, hat immer noch source.country.code=de. Um nach dem Speicherort der Geschichte zu filtern, verwenden Sie die Standortparameter (location.name) oder eine entity.id für das Land.
5. Quell-Domain einschließen / ausschließen
Auf bestimmte Ausgaben mit source.domain beschränken; Ausgaben mit ignore.source.domain ausschließen. Beide nehmen exakte Domainnamen (aufgelöst gegen das Quellverzeichnis von APITube) und akzeptieren bis zu drei durch Kommas getrennte Werte.
curl -sS 'https://api.apitube.io/v1/news/everything?source.domain=reuters.com&title=fed' \
-H "X-API-Key: $APITUBE_KEY"
Um Ausgabestellen auszuschließen, verwenden Sie den dedizierten Ignorierparameter:
curl -sS 'https://api.apitube.io/v1/news/everything?title=crypto&ignore.source.domain=coindesk.com,cointelegraph.com' \
-H "X-API-Key: $APITUBE_KEY"
JSON-Auszug:
{"results": [{"source": {"domain": "reuters.com", "location": {"country_code": "us"}}}]}
Haken: Domain-Abgleich ist exakt und es gibt keine Wildcards — reuters.com passt nicht zu uk.reuters.com, und *.reuters.com wird nicht unterstützt. Es gibt keine boolesche Negation innerhalb von source.domain; der Ausschluss lebt im separaten ignore.source.domain Parameter. Jede Seite ist auf drei Domains pro Anfrage begrenzt.
Kross-API: NewsAPI.org verwendet domains= und excludeDomains= (Kommalisten). APITube teilt Inklusion/Ausschluss in source.domain und ignore.source.domain auf.
6. Entitätsfilter
Filtern nach einer bestimmten Person, Organisation oder Marke mit entity.id. Entitäts-IDs sind stabile numerische Bezeichner; Entitätsnamen sind es nicht.
curl -sS 'https://api.apitube.io/v1/news/everything?entity.id=1278268&language.code=en' \
-H "X-API-Key: $APITUBE_KEY"
params = {"entity.id": "1278268", "language.code": "en", "per_page": 25}
JSON-Auszug:
{"results": [{"title": "...", "entities": [{"id": 1278268, "name": "...", "type": "person", "links": {"wikidata": "https://www.wikidata.org/wiki/..."}}]}]}
Haken: entity.id ist die numerische Entitäts-ID von APITube (e.g. 1278268), nicht eine Wikidata Q-ID — die Übergabe von Q312 gibt einen Validierungsfehler zurück. Suchen Sie die ID im entities[]-Array eines beliebigen Ergebnisses oder über den /v1/news/entity-Endpunkt nach; jedes Ergebnis enthält auch eine links.wikidata URL, wenn Sie eine Querverweisführung benötigen. Sie können bis zu drei IDs durch Kommas getrennt übergeben (ODER-Logik). Das Filtern nach Entität löst „Apple“ das Unternehmen vom Obst auf, da der Erkennungsalgorithmus jede Erwähnung bereits klassifiziert hat — die größte Genauigkeitssteigerung gegenüber der Stichwortsuche.
Kross-API: NewsAPI.org hat keine Entitätsfilterung. NewsAPI.ai (Event Registry) und APITube unterstützen beide; APITube verwendet eigene numerische IDs und verlinkt auf Wikidata in der Antwort.
7. Sentiment-Polaritätsfilter
Filtern nach Artikeln mit einer bestimmten Sentiment-Polarität im Body, Titel oder insgesamt. Polarität wird pro Dokument bei der Aufnahme berechnet; gültige Werte sind positive, negative und neutral.
curl -sS 'https://api.apitube.io/v1/news/everything?entity.id=1278268&sentiment.body.polarity=negative&per_page=20' \
-H "X-API-Key: $APITUBE_KEY"
params = {
"entity.id": "1278268",
"sentiment.body.polarity": "negative",
"published_at.start": "2026-05-01",
}
JSON-Auszug:
{"results": [{"title": "...", "sentiment": {"body": {"polarity": "negative", "score": -0.62}}}]}
Haken: Sentiment ist pro Dokument, nicht pro Behauptung. Ein Artikel, der größtenteils positiv ist, aber einen kritischen Analysten zitiert, wird immer noch als positive gekennzeichnet. Es gibt drei unabhängige Achsen — sentiment.title.polarity, sentiment.body.polarity, sentiment.overall.polarity — plus Score-Bereiche (sentiment.body.score.min / .max). Für Sentiment auf Behauptungs-Ebene verarbeiten Sie die zurückgegebenen body mit einem LLM nach.
8. Kategorie + Branchenfilter
Nach thematischer Kategorie (category.id) und Branchenklassifizierung (industry.id) eingrenzen. Beides sind unabhängige Taxonomien, und beide nehmen ihre eigenen Bezeichner – keine Freitext-Slugs.
curl -sS 'https://api.apitube.io/v1/news/everything?category.id=medtop:15000000&industry.id=400&language.code=en' \
-H "X-API-Key: $APITUBE_KEY"
JSON-Auszug:
{"results": [{"categories": [{"id": "medtop:15000000", "name": "Sport", "taxonomy": "iptc"}], "industries": [{"id": 400, "name": "..."}]}]}
Haken: category.id ist ein IPTC Medien-Themen-Code (e.g. medtop:15000000), und industry.id ist eine numerische ID (e.g. 400) — keiner akzeptiert ein einfaches Wort wie technology oder software, was eine „nicht gefunden“-Fehlermeldung zurückgibt. Rufen Sie die gültigen Codes aus der Referenz der Kategorienliste oder den /v1/news/category- und /v1/news/industry-Endpunkten ab. Kategorie und Branche sind orthogonale Achsen, keine Hierarchie, sodass das Stapeln eines engen Paares zu einer fast leeren Schnittmenge führen kann — verwenden Sie eine als primär, die andere als Verfeinerung.
9. Kombinierte Abfrage — Stapeln von 4+-Dimensionen in einem Aufruf
Das Muster, das die meisten Anbieterdokumentationen nie zeigen: Kombinieren Sie Entität + Sentiment + Datumsbereich + Sprache + Quellland in einer einzigen Anfrage.
curl -sS 'https://api.apitube.io/v1/news/everything?entity.id=1278268&sentiment.body.polarity=negative&published_at.start=2026-04-01T00:00:00Z&published_at.end=2026-05-01T00:00:00Z&language.code=en&source.country.code=us&per_page=50' \
-H "X-API-Key: $APITUBE_KEY"
params = {
"entity.id": "1278268",
"sentiment.body.polarity": "negative",
"published_at.start": "2026-04-01T00:00:00Z",
"published_at.end": "2026-05-01T00:00:00Z",
"language.code": "en",
"source.country.code": "us",
"per_page": 50,
}
r = requests.get(API, params=params, headers=HEADERS)
JSON-Auszug:
{
"status": "ok",
"results": [
{
"title": "...",
"published_at": "2026-04-12T18:30:00Z",
"source": {"domain": "wsj.com", "location": {"country_code": "us"}},
"entities": [{"id": 1278268, "name": "...", "type": "organization"}],
"sentiment": {"body": {"polarity": "negative", "score": -0.71}}
}
],
"has_next_pages": false
}
Dies ist die Abfrage, die Sie für Markenüberwachung, Benachrichtigungen über negative Berichterstattung in einem bestimmten Markt oder das Training eines Sentiment-Modells benötigen. Wenn Sie sie als fünf separate Aufrufe ausführen und clientseitig verschneiden, verbrauchen Sie 5x Ihres Kontingents für dieselbe Antwort.
Haken: Jeder zusätzliche Filter verengt den Ergebnissatz multiplikativ. Eine 5-dimensionale Abfrage kann in langsamen Nachrichtenwochen null Zeilen zurückgeben — überprüfen Sie has_next_pages und behandeln Sie leere results-Arrays ordnungsgemäß.
10. Paginierung + Sortierung
Verwenden Sie per_page mit page, um Ergebnisse zu durchlaufen; sortieren Sie mit sort.by und sort.order.per_page ist standardmäßig 100 und hat ein Limit von 250.
curl -sS 'https://api.apitube.io/v1/news/everything?title=ai&per_page=100&page=1&sort.by=published_at&sort.order=desc' \
-H "X-API-Key: $APITUBE_KEY"
def paginate(params, max_pages=5):
for page in range(1, max_pages + 1):
r = requests.get(API, params={**params, "page": page, "per_page": 100}, headers=HEADERS)
data = r.json()
for item in data["results"]:
yield item
if not data.get("has_next_pages"):
return
Haken 1: Die Sortierparameter sind sort.by und sort.order (Punktnotation) — nicht sort oder sort_by. sort.by akzeptiert published_at (Standard), created_at, id, read_time, source.rank.opr, die sentiment.*.score Felder und mehr; sort.order ist asc oder desc (Standard desc).
Haken 2: Hören Sie auf zu paginieren, wenn has_next_pagesfalse ist — die Antwort liefert Ihnen auch einen fertig aufgebauten next_page URL, sodass Sie diesem folgen können, anstatt page selbst zu erhöhen. Es gibt keine Top-Level total-Anzahl; verwenden Sie has_next_pages / next_page, um Ihre Schleife zu steuern.
Über-API: NewsAPI.org nutzt pageSize (max 100) und page. NewsData.io verwendet cursor-basierte Pagination über ein page Token, keine numerischen Seitennummern — gehen Sie nicht davon aus.
5 Anti-Patterns, die Ihre Zeit verschwenden
- Suche nach einem
body-Suchparameter. Er existiert nicht – APITube filtert nachtitle. Durchsuchen Sie den Titel und filtern Sie dann die zurückgegebenenbodynach der Abfrage, wenn Sie eine Übereinstimmung auf Body-Ebene benötigen. - Boolesche Abfragen schreiben (
(a OR b) AND c NOT d). Es gibt keinen booleschen Parser. Verwenden Sie durch Kommas getrennte Begriffe für ODER,ignore.titlefür Ausschluss, separate Aufrufe für UND. - Übergabe von menschenlesbaren IDs (
category.id=technology,entity.id=Q312,industry=software). Kategorien sind IPTC-Codes, Entitäten und Branchen sind numerische IDs. Schlagen Sie sie in der Antwort oder den Referenzendpunkten nach. - Verwendung von
country.code/sort_by/total. Die tatsächlichen Namen sindsource.country.code,sort.by+sort.order, und die Paginierung wird vonhas_next_pages/next_pagegesteuert – es gibt keintotal-Feld. - Naive Datumszeichenfolgen (
2026/04/01,April 1). Nur ISO 8601 (oder Solr-StilNOW-7DAYS) wird geparst; Locale-Formate geben lautlos null Ergebnisse zurück.
Häufig gestellte Fragen
Wie filtere ich Nachrichten-API-Ergebnisse?
Sie filtern Nachrichten-API-Ergebnisse, indem Sie Abfrageparameter an den Such-Endpunkt übergeben. Gängige Filter sind Titelsuche (title), Datumsbereich (published_at.start, published_at.end), Sprache (language.code), Quellland (source.country.code), Quell-Domain (source.domain), Entität (entity.id), Sentiment (sentiment.body.polarity) und Kategorie (category.id). Kombinieren Sie mehrere Parameter in einer einzigen Anfrage, um die Ergebnisse einzugrenzen – APITubes /v1/news/everything akzeptiert all diese in einem Aufruf, logisch mit UND verknüpft.
Welche Suchoperatoren unterstützt die Nachrichten-API?
Der title-Parameter von APITube unterstützt drei Modi: Stichwortsuche (kommagetrennte Begriffe mit Synonym- und Morphologieerweiterung), exakte Phrasen in Anführungszeichen (title="Federal Reserve") und Nähe-Suche (title="apple iphone"~5). Er unterstützt keine booleschen AND/OR/NOT-Operatoren oder Klammern innerhalb eines Werts – diese Wörter werden als normale Tokens behandelt. Verwenden Sie kommagetrennte Begriffe für OR-artige Breite und den separaten ignore.title-Parameter für den Ausschluss.
Wie sucht man nach Nachrichten im Datumsbereich?
Übergeben Sie published_at.start und published_at.end mit ISO 8601-Zeitstempeln, e.g. 2026-04-01T00:00:00Z. Reine Daten wie 2026-04-01 werden akzeptiert und als Mitternacht UTC behandelt. NewsAPI.org verwendet from und to; NewsData.io verwendet from_date und to_date. Vermeiden Sie lokal formatierte Daten (04/01/2026) — sie sind keine gültigen ISO 8601 und liefern stillschweigend null Ergebnisse.
Kann ich Nachrichten nach Stimmung oder Entität filtern?
Ja – APITube stellt sentiment.body.polarity, sentiment.title.polarity und sentiment.overall.polarity (positiv / negativ / neutral) sowie entity.id für Personen, Organisationen und Marken bereit. entity.id ist eine numerische Kennung (schlagen Sie sie aus dem entities[]-Array eines beliebigen Ergebnisses nach), keine Wikidata Q-ID. NewsAPI.org unterstützt keines von beiden; NewsAPI.ai (Event Registry) unterstützt beide. Die Filterung nach entity.id ist die größte Verbesserung der Genauigkeit gegenüber der Stichwortsuche, da sie Namen wie „Apple“ oder „Amazon“ von ihren nicht-unternehmerischen Bedeutungen unterscheidet.
Wie kombiniere ich mehrere Filter in einer einzigen Nachrichten-API-Anfrage?
Übergeben Sie alle Parameter in einer einzigen GET-Anfrage — der API verbindet sie mit logischem UND. APITube akzeptiert Dutzende gleichzeitiger Filter in einem Aufruf (Entität + Stimmung + Datum + Sprache + source.country.code, wie in Muster 9 gezeigt). Fünf separate gefilterte Aufrufe auszuführen und clientseitig zu verschneiden, verbraucht fünfmal so viel Kontingent für dasselbe Ergebnis. Erstellen Sie die zusammengesetzte Abfrage und verfeinern Sie sie dann weiter, nur wenn der Ergebnissatz zu groß ist.
Kostenlos APITube testen
Alle 10-Muster laufen gegen den APITube-Endpunkt von /v1/news/everything. Sentiment, Entitäten und Kategorienklassifizierung sind bei jedem Artikel enthalten, ohne separate Anreicherungsaufrufe. Siehe apitube.io/pricing für aktuelle Stufen und Anfragegrenzen.
Ressourcen
- APITube — apitube.io — kostenlos testen, Sentiment und Entitäten in jedem Artikel enthalten
- Dokumentation — docs.apitube.io — Endpunkte, Parameter, Antwortstruktur, Integrationen
- Preise – apitube.io/pricing – alle Stufen
- Neu bei Nachrichten-APIs? – News API Quick Start: Ihre erste Anfrage in 5 Minuten


