Skip to content

Migrating from SerpApi Google News ​

Replace https://serpapi.com/search?engine=google_news with /v1/news/everything. Convert operators inside q, such as site: and when:, to separate parameters.

APITube returns article text with the search results.

Why teams switch ​

SerpApi Google NewsAPITube
Article textNone — you follow the link and fetch it yourselfFull body and body_html in the response
PaginationNone — one request, one pagepage + per_page, up to 250 (10 on Free, 50 on Starter, 200 on Basic)
Total countNot reported/v1/news/count
FilteringGoogle's q operators60+ parameters you can combine in one request
Article detailsNoneEntities, sentiment (title/body/overall/per-entity), IPTC categories, topics, industries, publisher bias and rank, readability
Result identitySearch-result tokensStable integer IDs

Check how search scope, coverage and response fields differ below.

Your first request ​

bash
# SerpApi
curl "https://serpapi.com/search?engine=google_news&q=tesla&gl=us&hl=en&api_key=YOUR_KEY"
bash
# APITube
curl "https://api.apitube.io/v1/news/everything?title=tesla&source.country.code=us&language.code=en" \
  -H "X-API-Key: YOUR_API_KEY"

Operators become parameters ​

In qAPITube
teslatitle=tesla
tesla musktitle=tesla,musk (comma is AND, as on Google)
"artificial intelligence"title="artificial intelligence"
tesla OR rivianquery=title:(tesla OR rivian)
tesla -musktitle=tesla + ignore.title=musk
site:bbc.co.uksource.domain=bbc.co.uk
-site:cnn.comignore.source.domain=cnn.com
when:7dpublished_at.start=NOW-7d
after: / before:published_at.start / .end
intitle: / allintitle:Nothing — APITube only searches headlines anyway
location:"New York City"location.name=New York City
source:BBCsource.domain=bbc.co.uk — source.name does not exist

Inside query=, every bare term needs its title: prefix: query=tesla OR rivian does not search headlines at all.

The full operator reference is in the migration kit.

Parameter mapping ​

SerpApiAPITubeNote
qtitle, query, source.domain, published_at.*Splits — see above
glsource.country.codeGoogle's search country → the publisher's country. uk must become gb
hllanguage.codeInterface language → article language. Two letters only
so=1sort.by=published_at&sort.order=desc
so=0—sort.by=relevance returns 500 with a search term
topic_token, section_tokencategory.id / topic.idGoogle-specific tokens; choose APITube categories or topics manually
publication_tokensource.domain
story_token—story.id groups articles but is not a filter
kgmidorganization.name / person.name
no_cache, async, zero_trace, device—They describe how SerpApi scrapes Google
output=html—JSON, plus eight export formats
—page, per_pageNew: SerpApi has no pagination

What does not carry over ​

Relevance ordering. sort.by=relevance returns 500 ER0183 when a search term is present. Use sort.by=published_at, or sort.by=source.rank.opr to order results by the publisher's Open Page Rank. This ranks publishers rather than individual articles.

Body-text search. APITube searches headlines. There is no content=, and unknown parameters are ignored silently — a forwarded one returns the whole index with a 200. The compensation is that the body is in the response, so filter locally.

Wildcards. title=immuni* is accepted and returns the entire index with a 200. Expand into query=title:(immunity OR immunization OR immunology).

when:30m. APITube reads m as months: NOW-30m returns 28 509 of 29 747 title=tesla articles. NOW-1h, NOW-7d and NOW-1y behave as expected; there is no minutes unit.

Google's clustering. highlight and stories[] have no counterpart. Articles covering the same story share a story.id, but there is no lead article and no cluster endpoint.

Russian and Ukrainian. language.code=ru and uk return 400 ER0237. Google's regional forms (en-US, pt-BR, zh-CN) return 400 ER0061 — two-letter codes only.

Two things to check before cutting over ​

Check domain coverage. Map site: to source.domain, then check /v1/news/count. HTTP 200 with a count of zero means there are no matching articles.

Do not add a country filter on top of a domain. Many publishers carry country_code: "un" in the source index, so source.domain=theguardian.com&source.country.code=gb returns nothing while the domain alone returns thousands.

What you gain ​

Search results include body, body_html, summary, entities and sentiment. You also get separate title and body sentiment, IPTC categories, topics, industries, publisher details, readability and eight export formats. Use pages to fetch more results: 10 articles per page on Free, 50 on Starter, 200 on Basic and up to 250 on higher plans.

Next steps ​