Migrating from GNews
Replace /api/v4/search with /v1/news/everything and /api/v4/top-headlines with /v1/news/top-headlines. The parameter names differ but the concepts line up; the one behavioural change is that search covers headlines rather than full text.
Why teams switch
| GNews.io | APITube | |
|---|---|---|
| Articles per request | 10 on Free, 25 on Essential (€49.99/mo), 50 on Business (€99.99/mo), 100 on Enterprise (€249.99/mo) | 250 on every plan |
| Pagination depth | Hard stop at 1,000 articles | No depth limit on paid plans |
| Freshness on Free | 12-hour delay, non-commercial use only | No delay, plus SSE and WebSocket streaming |
| Archive on Free | 30 days | Years, on every plan |
| Enrichment | None | Entities, sentiment, IPTC categories, readability, publisher bias |
Going from 10 to 100 articles per request costs €249.99/month on GNews. Here per_page=250 works on the entry plan.
Your first request
# GNews
curl "https://gnews.io/api/v4/search?q=tesla&lang=en&country=us&max=10&apikey=YOUR_KEY"# APITube
curl "https://api.apitube.io/v1/news/everything?title=tesla&language.code=en&source.country.code=us&per_page=10" \
-H "X-API-Key: YOUR_API_KEY"Parameter mapping
| GNews | APITube | Note |
|---|---|---|
q | title | Headlines only — see below |
in=title | title | Direct equivalent, and lossless |
in=description,content | — | No body-text search |
lang | language.code | Same ISO 639-1 codes |
country | source.country.code | |
category | category.id | Their 9 categories become IPTC MediaTopic codes |
in | — | Scope selector has no equivalent |
nullable | — | Use has_image=1, has_author=1 instead |
from / to | published_at.start / .end | |
sortby=publishedAt | sort.by=published_at | |
sortby=relevance | — | See limitations |
max | per_page | 250 max |
page | page | No 1,000-article ceiling |
expand=content | — | Full body is always returned |
apikey | api_key or X-API-Key header |
The full table is in the migration kit.
What does not carry over
Search scope. GNews q covers title, description, and content by default. title= covers headlines. If your query set in=title, the conversion is lossless. Otherwise use an entity filter:
organization.name=Tesla # NER over the full article textsortby=relevance. Combined with a search term, sort.by=relevance currently returns 500 on APITube. Use sort.by=published_at.
expand=content. Not needed — the full body comes back on every article without a parameter.
What you gain
Beyond the article limit: entities with Wikidata links, sentiment on title and body separately, three classification axes, publisher authority and political bias, readability scores, and export to CSV, XLSX, Parquet, JSONL, RSS, and XML from any query.
Next steps
- gnews-apitube-migration-kit — full parameter tables, a drop-in shim for Node.js and Python that keeps the GNews response shape, and an AI prompt for bulk query conversion
- Parameters reference
- Common migration issues