Skip to content

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.aiAPITube
Sentiment coverageEnglish only — their docs state that setting minSentiment/maxSentiment reduces results to English articlesEvery language
Free tier2,000 searches one time, not renewed; last 30 days onlyRenewing quota
Entity identityWikipedia URIs — an autosuggest call before you can searchPlain names, plus Wikidata links on the response
Category taxonomyDMOZ — a directory discontinued in 2017IPTC MediaTopics, actively maintained
Articles per request100250

Check the limitations below if you rely on body-text search, events or concept matching.

Your first request ​

jsonc
// 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"
}
bash
# 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 Mazzetti

Use 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.aiAPITubeNote
keywordtitleHeadlines only
keywordLoc=titletitleLossless
conceptUriperson.name / organization.name / location.nameTranslate the URI first
categoryUricategory.idDMOZ → IPTC; 7 top-level paths confirmed
langlanguage.codeISO 639-3 → ISO 639-1; 8 of 57 have no equivalent
sourceUrisource.domainNo translation needed
minSentiment / maxSentimentsentiment.overall.score.min / .maxSame −1…1 scale, and not limited to English
dateStart / dateEndpublished_at.start / .end
articlesCountper_page250 max; 10 on Free, 50 on Starter, 200 on Basic
articlesPagepage
articlesSortBy=datesort.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 ​