Migrating from NewsCatcher
Replace /api/search with /v1/news/everything. Entity filters, sentiment ranges, and IPTC tags map across directly. The changes that need attention are search scope, the article-per-request limit, and two Chinese language codes.
Why teams switch
| NewsCatcher | APITube | |
|---|---|---|
| Getting a key | Fill in a form, book a demo, talk to sales. No public pricing | Sign up, key in the dashboard, first request in a minute |
| IPTC tags | v3_nlp_iptc_tags — a paid plan tier | Standard filter on every plan |
| Articles per request | 1,000 | 250 |
| Sentiment | Title and content | Title, body, and overall, plus per-entity |
| Query syntax | Boolean, wildcards, NEAR() proximity | Boolean and phrase proximity; no wildcards |
The first row is why most people arrive here. NewsCatcher's per-request limit is genuinely higher — that is stated plainly rather than hidden.
Your first request
# NewsCatcher
curl "https://v3-api.newscatcherapi.com/api/search?q=Tesla&lang=en&countries=US&page_size=100&sort_by=date" \
-H "x-api-token: YOUR_KEY"# APITube
curl "https://api.apitube.io/v1/news/everything?title=Tesla&language.code=en&source.country.code=us&per_page=100&sort.by=published_at&sort.order=desc" \
-H "X-API-Key: YOUR_API_KEY"Parameter mapping
| NewsCatcher | APITube | Note |
|---|---|---|
q | title | Headlines only — see below |
search_in=title | title | Lossless |
lang | language.code | cn and tw both become zh |
countries | source.country.code | Either case works |
sources | source.domain | Max 3, exact domain |
not_sources | ignore.source.domain | |
theme | category.id | 16 themes → IPTC codes |
iptc_tags | category.id | Prefix the numeric ID with medtop: — no plan upgrade needed |
ORG_entity_name | organization.name | |
PER_entity_name | person.name | |
LOC_entity_name | location.name | |
title_sentiment_min / _max | sentiment.title.score.min / .max | Same −1…1 scale |
content_sentiment_min / _max | sentiment.body.score.min / .max | |
exclude_duplicates | is_duplicate=0 | |
from_ / to_ | published_at.start / .end | |
sort_by=date | sort.by=published_at | |
page_size | per_page | 250 max, down from 1,000 |
The full table of all 57 parameters is in the migration kit.
What does not carry over
Search scope. search_in defaults to title_content. APITube searches headlines. If your query already set search_in: "title", the conversion is lossless.
Wildcards. technolog* has no equivalent, and passing it through returns the entire index with a 200. Expand it by hand into an OR list.
NEAR() proximity. APITube has phrase slop (title="a b"~5) capped at 10 positions inside a headline. NewsCatcher's NEAR() spans 100 words across the whole article.
Clustering. clustering_enabled returns grouped results. APITube puts a story.id on every article but has no clustered response shape.
Chinese. NewsCatcher uses cn and tw; APITube uses zh for both, so the China/Taiwan distinction is lost.
Entity names must match exactly. organization.name=Apple Inc returns 400; Apple works. Check with /v1/suggest/entities?prefix=….
What you gain
IPTC MediaTopics without a plan upgrade, sentiment towards a specific entity (entity.sentiment.score), publisher political bias, readability scoring, geo search by coordinates, and export to eight formats.
Next steps
- newscatcher-apitube-migration-kit — all 57 parameters, the 16-theme IPTC table verified against the live API, a drop-in shim for Node.js and Python, and an AI prompt for bulk conversion
- Parameters reference
- Common migration issues