Skip to content

Migrating from Currents API

Replace /v1/search and /v2/search with /v1/news/everything. The boolean query language carries over almost unchanged, and the category taxonomy maps one-to-one — the cleanest category mapping in this section. The blocker, stated up front, is Russian.

Why teams switch

Currents APIAPITube
Article textdescription only — no full-text fieldFull body and body_html
EnrichmentA category arrayEntities with per-entity sentiment, sentiment on title/body/overall, IPTC plus topic and industry axes, readability, publisher bias
Results per page300 max, but (page_number − 1) × page_size capped at 5 000250 per request, no offset ceiling
Category taxonomy16 canonical V2 categoriesThe same IPTC top level, plus thousands of child codes

Your first request

bash
# Currents API
curl "https://api.currentsapi.services/v2/search?keywords=technology&language=en&country=US&category=science_technology&page_size=100" \
  -H "Authorization: Bearer YOUR_KEY"
bash
# APITube
curl "https://api.apitube.io/v1/news/everything?title=technology&language.code=en&source.country.code=us&category.id=medtop:13000000&per_page=100" \
  -H "X-API-Key: YOUR_API_KEY"

The categories map one-to-one

Currents' V2 taxonomy is built on IPTC MediaTopics top-level codes, so the conversion is mechanical rather than judgement-based:

Currents V2IPTC code
economy_business_financemedtop:04000000
crime_law_justicemedtop:02000000
science_technologymedtop:13000000
sportmedtop:15000000
healthmedtop:07000000

All 14 filterable categories translate this way. The full table — including the 47 legacy V1 categories — is in the migration kit.

Parameter mapping

Currents APIAPITubeNote
keywordstitleNarrows to headlines — Currents matches the description too
queryqueryBoolean syntax survives; every bare term needs a field prefix
languagelanguage.codeSee the language section below
countrysource.country.code
categorycategory.idOne-to-one, max 3 values
domainsource.domainMax 3
domain_notignore.source.domain
start_date / end_datepublished_at.start / .end
page_sizeper_page250 max on APITube
page_numberpage
typeNo article-type filter

keywords takes priority over query when both are present on Currents. The shims in the kit reproduce that precedence.

Boolean queries

Both sides use AND / OR / NOT, quoted phrases and parentheses, and both bind AND tighter than OR. The only change is the field prefix:

# Currents
query=("AI" OR "Machine Learning") AND NOT "Ethics"

# APITube
query=(title:"AI" OR title:"Machine Learning") AND NOT title:"Ethics"

What does not carry over

Russian. language.code=ru returns 400 ER0237. Currents lists Russian among its 23 languages, and there is no substitute. If Russian coverage matters to you, this migration does not work.

Malay. Currents uses the non-standard code msa; ISO 639-1 says ms. APITube supports neither.

Wildcards. No wildcard support, and title= accepts one without error while returning the entire index with a 200. Expand into query=title:(term1 OR term2).

Article type. Currents' type filter has no APITube counterpart.

Description search. Currents matches keywords against the description as well as the title. APITube's title= is headlines-only, so expect fewer results — and compensate by filtering the returned body, or by using organization.name instead of a keyword.

What you gain

Full article body instead of a description, named entities with sentiment scored towards each one, sentiment on the headline and the body separately, IPTC MediaTopics with child codes rather than 16 top-level buckets, topic and industry axes, publisher political bias and Open Page Rank, readability scores, and export to eight formats.

Next steps