Migrating from NewsAPI.ai
Replace getArticles with GET /v1/news/everything. Convert Wikipedia URIs, DMOZ paths and ISO 639-3 language codes to APITube names, categories and ISO 639-1 codes.
Why teams switch
| NewsAPI.ai | APITube | |
|---|---|---|
| Sentiment coverage | English only — their docs state that setting minSentiment/maxSentiment reduces results to English articles | Every language |
| Free tier | 2,000 searches one time, not renewed; last 30 days only | Renewing quota |
| Entity identity | Wikipedia URIs — an autosuggest call before you can search | Plain names, plus Wikidata links on the response |
| Category taxonomy | DMOZ — a directory discontinued in 2017 | IPTC MediaTopics, actively maintained |
| Articles per request | 100 | 250 |
Check the limitations below if you rely on body-text search, events or concept matching.
Your first request
// NewsAPI.ai — POST with a JSON body
{
"action": "getArticles",
"keyword": "Tesla Inc",
"keywordLoc": "title",
"lang": "eng",
"sourceLocationUri": ["http://en.wikipedia.org/wiki/United_States"],
"articlesCount": 100,
"apiKey": "YOUR_KEY"
}# APITube — a plain GET
curl "https://api.apitube.io/v1/news/everything?title=Tesla&language.code=en&source.country.code=us&per_page=100" \
-H "X-API-Key: YOUR_API_KEY"Identifier translation
Convert these four kinds of identifiers:
conceptUri=http://en.wikipedia.org/wiki/Tesla,_Inc. → organization.name=Tesla
conceptUri=http://en.wikipedia.org/wiki/Elon_Musk → person.name=Elon Musk
sourceLocationUri=.../Germany → source.country.code=de
locationUri=.../Germany → location.name=Germany
categoryUri=dmoz/Business → category.id=medtop:04000000
lang=eng → language.code=en
[email protected] → author.name=Mark MazzettiUse the name after the last / in the URI. Replace underscores with spaces, then remove company suffixes and words used to distinguish entries with the same name. sourceLocationUri describes where the publisher is; locationUri describes the place the article is about. Use a different filter for each.
Parameter mapping
| NewsAPI.ai | APITube | Note |
|---|---|---|
keyword | title | Headlines only |
keywordLoc=title | title | Lossless |
conceptUri | person.name / organization.name / location.name | Translate the URI first |
categoryUri | category.id | DMOZ → IPTC; 7 top-level paths confirmed |
lang | language.code | ISO 639-3 → ISO 639-1; 8 of 57 have no equivalent |
sourceUri | source.domain | No translation needed |
minSentiment / maxSentiment | sentiment.overall.score.min / .max | Same −1…1 scale, and not limited to English |
dateStart / dateEnd | published_at.start / .end | |
articlesCount | per_page | 250 max; 10 on Free, 50 on Starter, 200 on Basic |
articlesPage | page | |
articlesSortBy=date | sort.by=published_at | |
ignoreSourceGroupUri=paywall/* | is_paywall=0 |
The full table, including all 57 language codes and the URI translation algorithm, is in the migration kit.
What does not carry over
The events model. getEvents, eventUri, and the breaking-events feed have no counterpart. APITube clusters articles into stories (story.id) but does not expose an event object. This is the main reason a team might decide not to migrate.
Body-text search. keywordLoc defaults to body. APITube searches headlines.
Concept disambiguation at query time. Apple_Inc. and Apple are different concepts on NewsAPI.ai. organization.name=Apple is one name — the entity type narrows it, but not as precisely.
Eight languages. kaz, kur, mal, mar, pan, rus, ukr, and gsw have no APITube equivalent. Belarusian bel maps to by, not the ISO be.
articlesSortBy=rel. Combined with a search term, sort.by=relevance currently returns 500.
What you gain
APITube returns sentiment in every language, IPTC MediaTopics categories and filter values you can use without a separate lookup. Articles also include separate title and body sentiment, a clickbait flag and publisher bias.
You can export results in eight formats. Page sizes are 10 on Free, 50 on Starter, 200 on Basic and up to 250 on higher plans.
Next steps
- newsapi-ai-apitube-migration-kit — the URI translation reference, all 57 language codes, a compatibility library for Node.js and Python that keeps the Event Registry response format, and an AI prompt for bulk conversion
- Parameters reference
- Common migration issues