Migrating to APITube
Switching news APIs usually breaks in the same three places: a parameter that looks equivalent but is not, a filter that silently stops applying, and a response field that quietly disappears. These guides map each competitor's parameters onto APITube's, name the things that do not carry over, and link to a drop-in compatibility shim so your call sites can stay unchanged while you migrate.
Every mapping in this section was executed against the live API before being published. Where something does not work, it says so.
Pick your API
What every migration has in common
Four things change no matter which API you are coming from. Read these once and most of the per-service guides become skimmable.
1. Search covers headlines, not article bodies
Most news APIs search the title and the body text by default. APITube's title= searches headlines only.
# Other APIs: matches "Tesla" anywhere in the article
q=Tesla
# APITube: matches "Tesla" in the headline
title=TeslaThis is the single biggest behavioural change, and it usually means fewer results.
The replacement is better than a workaround. Filter on the entity instead of the keyword:
curl -H "X-API-Key: YOUR_API_KEY" \
"https://api.apitube.io/v1/news/everything?organization.name=Tesla"That runs on named-entity recognition over the full article text, so it also catches "the Austin-based automaker" when the NER resolves it. See Parameters for person.name, location.name, entity.id, and the rest.
2. Comma-separated filters apply at most three values
language.code=en,de,fr,it # Italian is ignored — no errorThe fourth value onwards is dropped silently. Two ways around it:
# The boolean query language has no value-count limit
query=language.code:(en OR de OR fr OR it OR es)
# Or split into requests of three and deduplicate on the article id3. Unknown parameters are ignored, not rejected
APITube returns 200 ok for parameters it does not recognise, and the filter simply does not apply. A migration script that forwards a competitor's parameter name produces a request that looks successful and is completely unfiltered:
# Both return the entire index with HTTP 200
curl "…/v1/news/count?q=tesla&api_key=KEY"
curl "…/v1/news/count?country=us&api_key=KEY"Every compatibility shim linked from these guides keeps an explicit allow-list and warns on anything it drops. If you are converting by hand, check your parameter names against Parameters rather than assuming.
4. Wildcards are not supported, and they fail quietly
title=technology # 75,574 articles ✅
title=technolog* # the entire index ❌ HTTP 200, filter droppedExpand prefix searches into an explicit OR list:
query=title:(technology OR technological OR technologies)The boolean form at least errors properly: query=title:technolog* returns 400 ER0704.
5. Set a generous client timeout and retry on 500
Response times vary far more than most APIs. Measured on 27 July 2026 across two controlled series of 54 requests, the same request shape returned anywhere from 0.4 to 28.7 seconds. Two things push the average up: category.id costs roughly 17–23 seconds on its own, even at per_page=1, and a larger per_page adds on top of whatever the filters cost.
Requests that cross roughly 25–30 seconds hit the gateway timeout and come back as 500 or 502. The same URL will often succeed on the next attempt, so this is a retry, not a bug in your query.
Practically: set the client timeout above 30 seconds — most HTTP libraries default to 10 or 30 and will cut a category-filtered request off mid-flight — and retry once on 500. If you are paging through a large result set, fetch counts from /v1/news/count once per filter set rather than per page.
Endpoint equivalents at a glance
| What you want | APITube endpoint |
|---|---|
| Search everything | /v1/news/everything |
| Top headlines | /v1/news/top-headlines |
| Breaking news | /v1/news/everything?is_breaking=1 |
| Result count | /v1/news/count |
| Geo search | /v1/news/local |
| Aggregation / trends | /v1/news/trends?field=entity.id |
| Real-time push | Webhooks or WebSocket stream |
| Entity autocomplete | /v1/suggest/entities?prefix= |
What you gain
Most competitors return a title, a description, a snippet, and a category string. Every APITube article carries:
- Named entities with Wikidata and Wikipedia links, occurrence counts, and per-entity sentiment
- Sentiment split into title, body, and overall on a −1…1 scale
- Three classification axes — IPTC MediaTopics (
category.id), editorial topics (topic.id), and industry sectors (industry.id) - Full article body as text and HTML
- Publisher metadata — political bias, authority rank, country
- Readability scores — Flesch-Kincaid, reading ease, target audience
- 250 articles per request (10 on Free, 50 on Starter)
- Export to JSON, JSONL, CSV, TSV, XLSX, XML, RSS, and Parquet from any query
Before you start
Get a key at apitube.io and make one request:
bashcurl -H "X-API-Key: YOUR_API_KEY" \ "https://api.apitube.io/v1/news/everything?title=bitcoin&per_page=3"Check your languages. APITube does not index every language every competitor lists — most notably Russian and Ukrainian are not available. The per-service guides list exactly which codes are rejected. Confirm yours works before converting anything:
bashcurl -H "X-API-Key: YOUR_API_KEY" \ "https://api.apitube.io/v1/news/count?language.code=de"Read your service's guide, then decide between converting by hand or dropping in the shim from the migration kit.
Getting help
- Parameters reference — every filter APITube supports
- Response structure — every field an article carries
- HTTP response codes — what each error code means
- Interactive query builder — build and test a request in the browser
If a mapping in these guides turns out to be wrong, that is a bug — open an issue on the relevant migration kit and it gets fixed.