10 News API Filter Patterns Every Developer Should Know (2026)
Nyhedsfiltrering API kombinerer forespørgselsparametre — titelsøgning, datoer, kilder, entiteter, sentiment, kategorier — for at indsnævre et nyhedsfeed fra millioner af artikler til dem, din app har brug for. En moderne nyheds-API klassificerer hver artikel på dimensioner, du kan filtrere direkte (entitet, sentiment, kategori, kildeland), så én anmodning erstatter en hel NLP-pipeline. De fleste leverandørdokumenter angiver parametre, men viser aldrig, hvordan en reel kombineret forespørgsel ser ud, hvad der returneres, eller hvor faldgruberne er.
Dette indlæg er til udviklere, der integrerer en nyheds-API og ønsker copy-paste eksempler, der kører. Hvert mønster nedenfor bruger APITube's /v1/news/everything-endepunkt, med cross-API oversættelseslinjer, hvor syntaksen adskiller sig i NewsAPI.org eller NewsData.io. Hvert mønster inkluderer curl, et Python-uddrag, et trimmet JSON-svar og den faldgrube, der spilder din første dag.
Afsløring: Jeg arbejder hos APITube. Mønstrene kortlægges rent til andre store nyheds-API'er — oversættelseslinjer inkluderet, hvor syntaksen afviger.
10 Patterns at a Glance
- Søgeord & eksakt-frase titelsøgning (
title,"...",~N) - Ekskludering af termer og matchning efter position (
ignore.title,title_starts_with,title_ends_with) - Datointervalfilter (
published_at.start,published_at.end) - Sprog + kildeland-filter (
language.code,source.country.code) - Kilde domæne inkluder / ekskluder (
source.domain,ignore.source.domain) - Enhedsfilter (
entity.id) - Sentiment polaritetsfilter (
sentiment.body.polarity) - Kategori + branchefilter (
category.id,industry.id) - Sammensat forespørgsel (entitet + sentiment + dato + sprog + kildeland)
- Paginering + sortering (
per_page,page,sort.by,sort.order)
Alle eksempler antager export APITUBE_KEY=... og grundlæggende URL https://api.apitube.io. Godkend med X-API-Key-headeren (eller en api_key query-parameter).
1. Søgning på nøgleord & eksakt frase i titel
APITube søger i artiklen title. Pas almindelige ord for løs matching, eller omslut en sætning i anførselstegn for et nøjagtigt, in-order match. Nøgleordsøgning udvider synonymer og morfologiske former; citerede sætninger gør det ikke.
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 respons (uddrag):
{
"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
}
Tre matchende tilstande:
- Nøgleord —
title=bitcoinellertitle=AI,innovation(kommaseparerede termer, vilkårlig rækkefølge, med synonym/morfologi-udvidelse). - Sætning —
title="breaking news"(præcis sætning, ingen udvidelse). - Nærhed —
title="apple iphone"~5(ord inden for N tokens af hinanden,N= 0–10).
Faldgrube: APITube matcher mod titlen, ikke hele brødteksten — der er ingen body søgeparameter. Titlen er det stærkeste relevanssignal, så dette er med vilje, men et nøgleord begravet kun i artikelbrødteksten vil ikke matche. Den fulde body returneres i hvert resultat, så filtrer efter det, hvis du har brug for brødtekst-niveau matching. Mellemrum inde i en citeret frase kræver stadig URL-kodning (%20 eller +).
Tværs-API: NewsAPI.org bruger et enkelt q felt, der søger i titel + brødtekst. APITube filtrerer specifikt på title og viser de klassificerede dimensioner nedenfor (enhed, sentiment, kategori), så du sjældent har brug for rå brødtekstsøgning.
2. Ekskludering af vilkår og matchning efter position
Indsnævr en titelsøgning uden boolske operatorer: udeluk termer med ignore.title, og forankr matches med title_starts_with / title_ends_with / title_pattern. APITube parser ikke AND/OR/NOT inde i en værdi — disse ord behandles som almindelige tokens — så udelukkelse er sin egen 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 respons (uddrag):
{"results": [{"title": "Breaking: Tesla Q1 earnings beat estimates", "sentiment": {"body": {"polarity": "positive"}}}], "has_next_pages": true}
Faldgrube: forsøg ikke at skrive title=(tesla OR rivian) AND earnings NOT rumor — der er intet boolesk forespørgselssprog. OR, AND, NOT ville blive søgt som bogstavelige ord. Brug kommaseparerede termer for OR-stil bredde (title=tesla,rivian), ignore.title for eksklusion, og kør separate kald, hvis du har brug for AND-logik på tværs af termer.
Kryds-API: NewsAPI.org understøtter AND/OR/NOT inden for q. NewsData.io bruger kommasepareret q_or og et separat eksklusionsfelt. APITube holder inklusion og eksklusion som adskilte parametre.
3. Dato-intervalfilter
Begræns artikler til et publiceret vindue ved hjælp af published_at.start og published_at.end. Begge accepterer ISO 8601 tidsstempler.
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 uddrag:
{"results": [{"published_at": "2026-04-15T08:42:00Z", "title": "..."}], "has_next_pages": true}
Faldgrube: bare datoer som 2026-04-01 virker, men API behandler dem som midnat UTC. Hvis du har brug for en specifik tidszone, tilføj den eksplicit. APITube accepterer også Solr-stil relative datoer (NOW-7DAYS, NOW-1MONTH/DAY). Locale-formaterede strenge som 04/01/2026 er ikke gyldige og returnerer lydløst nul resultater.
4. Sprog + Kildeland-filter
Filtrer efter artikelsprog og kildeland uafhængigt. Sprog bruger ISO 639-1-koder; land bruger ISO 3166-1 alpha-2 (præcis to tegn).
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"}
Faldgrube: parameteren er source.country.code, ikke country.code — og den filtrerer efter udgiverens land, ikke hvor historien handler om. Et tysk medie, der skriver om Brasilien, har stadig source.country.code=de. For at filtrere efter historie-lokation, brug lokationsparametrene (location.name) eller en entity.id for landet.
5. Inkluder/Ekskluder Kildedomæne
Begræns til specifikke kilder med source.domain; udeluk kilder med ignore.source.domain. Begge tager eksakte domænenavne (opløst mod APITube's kildedirektorium) og accepterer op til tre kommaseparerede værdier.
curl -sS 'https://api.apitube.io/v1/news/everything?source.domain=reuters.com&title=fed' \
-H "X-API-Key: $APITUBE_KEY"
For at udelukke kilder, brug den dedikerede ignore-parameter:
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 uddrag:
{"results": [{"source": {"domain": "reuters.com", "location": {"country_code": "us"}}}]}
Faldgrube: domæne-matching er eksakt, og der er ingen wildcards — reuters.com matcher ikke uk.reuters.com, og *.reuters.com understøttes ikke. Der er ingen boolesk negation inde i source.domain; eksklusion lever i den separate ignore.source.domain parameter. Hver side begrænses til tre domæner pr. anmodning.
Kryds-API: NewsAPI.org bruger domains= og excludeDomains= (kommalister). APITube deler inkludering/eksludering i source.domain og ignore.source.domain.
6. Entitetsfilter
Filtrer efter en specifik person, organisation eller et brand ved hjælp af entity.id. Entitets-ID'er er stabile numeriske identifikatorer; entitetsnavne er det ikke.
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 uddrag:
{"results": [{"title": "...", "entities": [{"id": 1278268, "name": "...", "type": "person", "links": {"wikidata": "https://www.wikidata.org/wiki/..."}}]}]}
Faldgrube: entity.id er APITube's numeriske entitetsidentifikator (e.g. 1278268), ikke en Wikidata Q-ID — at sende Q312 returnerer en valideringsfejl. Slå ID'et op fra entities[]-arrayet i et hvilket som helst resultat, eller via /v1/news/entity-endepunktet; hvert resultat indeholder også en links.wikidata URL, hvis du har brug for at krydsreferere. Du kan sende op til tre ID'er kommasepareret (ELLER logik). Filtrering efter entitet afklarer "Apple" firmaet fra frugten, fordi genkenderen allerede har klassificeret hver omtale — den enkelt største nøjagtighedsopgradering over nøgleordsøgning.
Kryds-API: NewsAPI.org har ingen enhedsfiltrering. NewsAPI.ai (Event Registry) og APITube understøtter begge det; APITube bruger sine egne numeriske ID'er og linker ud til Wikidata i svaret.
7. Sentiment Polaritetsfilter
Filtrer til artikler med en given sentiment-polaritet i brødteksten, titlen eller samlet. Polaritet beregnes pr. dokument ved indtagelse; gyldige værdier er positive, negative og 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 uddrag:
{"results": [{"title": "...", "sentiment": {"body": {"polarity": "negative", "score": -0.62}}}]}
Faldgrube: sentiment er pr. dokument, ikke pr. claim. En artikel, der er for det meste positiv, men citerer én kritisk analytiker, er stadig mærket positive. Der er tre uafhængige akser — sentiment.title.polarity, sentiment.body.polarity, sentiment.overall.polarity — plus score-intervaller (sentiment.body.score.min / .max). For claim-niveau sentiment, post-process den returnerede body med en LLM.
8. Kategori + Branchefilter
Indsnævr efter emnekategori (category.id) og brancheklassifikation (industry.id). Begge er uafhængige taksonomier, og begge tager deres egne identifikatorer — ikke free-text 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 uddrag:
{"results": [{"categories": [{"id": "medtop:15000000", "name": "Sport", "taxonomy": "iptc"}], "industries": [{"id": 400, "name": "..."}]}]}
Faldgrube: category.id er en IPTC medie-emne-kode (e.g. medtop:15000000), og industry.id er en numerisk ID (e.g. 400) — ingen af dem accepterer et simpelt ord som technology eller software, hvilket returnerer en "ikke fundet"-fejl. Hent de gyldige koder fra listen over kategorier eller fra /v1/news/category- og /v1/news/industry-endepunkterne. Kategori og branche er ortogonale akser, ikke et hierarki, så at stable et snævert par kan producere en næsten tom skæring — brug en som primær, den anden som forfining.
9. Sammensat Forespørgsel — Stable 4+ Dimensioner i Ét Kald
Mønsteret, som de fleste leverandørdokumentationer aldrig viser: kombiner entitet + sentiment + dato-interval + sprog + kildeland i én enkelt anmodning.
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 uddrag:
{
"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
}
Dette er den forespørgsel, du ønsker til brandovervågning, alarmering om negativ dækning i et specifikt marked eller træning af en sentimentmodel. At køre den som fem separate kald og flette på klientsiden brænder din kvote 5x for det samme svar.
Faldgrube: hvert yderligere filter indsnævrer resultat-sættet multiplikativt. En 5-dimensionel forespørgsel kan returnere nul rækker i langsomme nyhedsuge — tjek has_next_pages og håndter tomme results-arrays yndefuldt.
10. Paginering + Sortering
Brug per_page med page til at gennemgå resultater; sorter med sort.by og sort.order.per_page er som standard 100 og begrænset til 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
Faldgrube 1: sorteringsparametrene er sort.by og sort.order (punktnotation) — ikke sort eller sort_by. sort.by accepterer published_at (standard), created_at, id, read_time, source.rank.opr, sentiment.*.score-felterne og mere; sort.order er asc eller desc (standard desc).
Faldgrube 2: stop paginering, når has_next_pages er false — svaret giver dig også en færdigbygget next_page URL, så du kan følge den i stedet for selv at inkrementere page. Der er ingen top-level total-tæller; brug has_next_pages / next_page til at styre din løkke.
Tværs-API: NewsAPI.org bruger pageSize (max 100) og page. NewsData.io bruger cursor-baseret pagination via et page token, ikke numeriske sidenumre — antag det ikke.
5 Anti-mønstre, der spilder din tid
- Rækker ud efter en
bodysøgeparameter. Den eksisterer ikke — APITube filtrerer påtitle. Søg i titlen, og filtrer derefter de returneredebodyefterfølgende, hvis du har brug for matching på brødtekstniveau. - Skriver boolske forespørgsler (
(a OR b) AND c NOT d). Der er ingen boolsk parser. Brug kommaseparerede termer for OR,ignore.titlefor eksklusion, separate kald for AND. - Overførsel af menneskeligt læsbare ID'er (
category.id=technology,entity.id=Q312,industry=software). Kategorier er IPTC-koder, entiteter og brancher er numeriske ID'er. Slå dem op fra svaret eller reference-endpoints. - Brug af
country.code/sort_by/total. De rigtige navne ersource.country.code,sort.by+sort.order, og paginering drives afhas_next_pages/next_page— der er intettotal-felt. - Naive datostrenge (
2026/04/01,April 1). Kun ISO 8601 (eller Solr-stilNOW-7DAYS) parser; locale-formater returnerer nul resultater lydløst.
Ofte stillede spørgsmål
Hvordan filtrerer jeg nyheds-API-resultater?
Du filtrerer nyheds-API-resultater ved at sende forespørgselsparametre til søge-endpointet. Almindelige filtre inkluderer titelsøgning (title), datointerval (published_at.start, published_at.end), sprog (language.code), kildeland (source.country.code), kildedomen (source.domain), entitet (entity.id), sentiment (sentiment.body.polarity) og kategori (category.id). Kombiner flere parametre i en enkelt anmodning for at indsnævre resultater — APITube's /v1/news/everything accepterer alle disse i ét kald, forbundet med logisk OG.
Hvilke søgeoperatorer understøtter nyheds-API?
APITube's title-parameter understøtter tre tilstande: nøgleordsøgning (kommaseparerede termer med synonym- og morfologiudvidelse), eksakte fraser i anførselstegn (title="Federal Reserve") og nærhedssøgning (title="apple iphone"~5). Den understøtter ikke boolske AND/OR/NOT-operatorer eller parenteser inde i en værdi — disse ord behandles som almindelige tokens. Brug kommaseparerede termer for OR-stil bredde og den separate ignore.title-parameter til udelukkelse.
Hvordan søger du nyheder efter datointerval?
Send published_at.start og published_at.end med ISO 8601 tidsstempler, e.g. 2026-04-01T00:00:00Z. Rene datoer som 2026-04-01 accepteres og behandles som midnat UTC. NewsAPI.org bruger from og to; NewsData.io bruger from_date og to_date. Undgå lokalt formaterede datoer (04/01/2026) — de er ikke gyldige ISO 8601 og returnerer stille og roligt nul resultater.
Kan jeg filtrere nyheder efter sentiment eller entitet?
Ja — APITube eksponerer sentiment.body.polarity, sentiment.title.polarity og sentiment.overall.polarity (positiv / negativ / neutral), plus entity.id for personer, organisationer og brands. entity.id er en numerisk identifikator (slå den op fra enhver resultats entities[]-array), ikke en Wikidata Q-ID. NewsAPI.org understøtter ingen af delene; NewsAPI.ai (Event Registry) understøtter begge. Filtrering efter entity.id er den største enkeltstående nøjagtighedsforbedring i forhold til nøgleordsøgning, fordi den disambiguerer navne som "Apple" eller "Amazon" fra deres ikke-virksomhedsrelaterede betydninger.
Hvordan kombinerer jeg flere filtre i én nyheds-API-forespørgsel?
Send alle parametre i én GET-anmodning — API forbinder dem med logisk OG. APITube accepterer dusinvis af samtidige filtre i ét kald (entitet + sentiment + dato + sprog + source.country.code vist i Mønster 9). At køre fem separate filtrerede kald og krydsreferere på klientsiden brænder fem gange kvoten for samme resultat. Byg den sammensatte forespørgsel, og indsnævr derefter yderligere, kun hvis resultat-sættet er for stort.
Prøv APITube Gratis
Alle 10-mønstre kører mod APITube's /v1/news/everything-endepunkt. Sentiment, entiteter og kategoriklassificering er inkluderet på enhver artikel uden separate berigelseskald. Se apitube.io/priser for aktuelle niveauer og anmodningsgrænser.
Ressourcer
- APITube — apitube.io — prøv det gratis, sentiment og entiteter inkluderet på hver artikel
- Dokumentation — docs.apitube.io — endpoints, parametre, svarsstruktur, integrationer
- Prissætning — apitube.io/pricing — alle niveauer
- Ny til nyheds-API'er? — Nyheds-API Hurtig Start: Din Første Forespørgsel på 5 Minutter


