Skip to content

Migrating from ScrapingBee ​

Use this guide to replace news searches and supported news-article requests from ScrapingBee. APITube does not replace general web scraping.

The mappings cover Google Search API requests with search_type=news and article requests for publishers covered by APITube.

Why use APITube for news collection? ​

ScrapingBeeAPITube
Article textOne fetch per article, then your extraction rulesbody and body_html in the same response
Per requestOne pageUp to 250 articles (10 on Free, 50 on Starter, 200 on Basic)
Cost modelCredits per request: 1 without JS, 5 with, 10–25 premium proxy, 75 stealth, 15 for a Google searchNo per-request credit
DiscoveryRSS parsing, sitemap crawling, or SERP scrapingSearch for articles with API filters
ExtractionPer-publisher selectors that break on redesignsStructured fields
Article detailsYours to buildEntities, sentiment, IPTC categories, topics, industries, readability, publisher bias

ScrapingBee credit costs depend on options such as render_js and premium_proxy. See ScrapingBee's knowledge base.

APITube returns article text with the search results, so you do not need a separate fetch request for every article.

Your first request ​

bash
# ScrapingBee
curl "https://app.scrapingbee.com/api/v1/store/google?search=tesla&search_type=news&country_code=us" \
  -H "Authorization: Bearer YOUR_KEY"
bash
# APITube
curl "https://api.apitube.io/v1/news/everything?title=tesla&source.country.code=us" \
  -H "X-API-Key: YOUR_API_KEY"

Parameter mapping ​

ScrapingBeeAPITubeNote
searchtitle, query, source.domain, published_at.*Google operators split into separate parameters
search_type=news—Endpoint choice. The other seven values have no equivalent
country_codesource.country.codeProxy country → publisher country. uk must become gb
extra_params[hl]language.codeTwo letters only; en-US returns 400 ER0061
extra_params[gl]source.country.codeSame caveat as country_code
extra_params[num]per_pageMax 250; 10 on Free, 50 on Starter, 200 on Basic
extra_params[start]pageOffset → page number
extra_params[tbs]published_at.start / .endWrite the bound explicitly
url—No URL lookup exists — see below
extract_rulestitle, body, published_at, author.name, imageThe fields are already there
render_js, premium_proxy, wait*, block_*—Not needed: the API returns article content directly
js_scenario, screenshot*, cookies, session_id—Keep ScrapingBee

Operators inside search: site: → source.domain, -site: → ignore.source.domain, when:7d → published_at.start=NOW-7d, -term → ignore.title, intitle: needs no equivalent because APITube already searches only headlines. inurl: has no equivalent.

URL lookup is not supported ​

There is no URL lookup, and the obvious parameter names fail silently.

bash
curl "https://api.apitube.io/v1/news/count?api_key=YOUR_API_KEY&href=https%3A%2F%2Fwww.bbc.co.uk%2Fnews%2Farticles%2Fc8dng1v72lno"
# {"count":3050326333}   ← the entire index

APITube does not support URL lookup with href=, url=, article.href= or link=. These parameters may be ignored while the request returns 200. Search by topic, entity or publisher instead.

Tasks that still need ScrapingBee ​

  • Sites that are not news publishers — competitor pages, government portals, forums, e-commerce
  • Anything behind a login (cookies, session_id)
  • Anything interactive (js_scenario — consent walls, "load more", pagination)
  • Screenshots
  • Extracting specific elements from a web page's HTML
  • Fetching one specific URL

Keep ScrapingBee for these tasks. The migration kit lists them in reference/what-you-keep-scraping.md.

Check your domains first ​

bash
curl "https://api.apitube.io/v1/news/count?api_key=YOUR_API_KEY&source.domain=example.com"

A count request can return a positive count, {"count": 0} with HTTP 200, or 400 ER0214 for an unknown source. Check the count as well as the status to confirm coverage.

Other migration differences to check ​

Search is headlines-only. No body-text parameter. Filter on organization.name instead of a keyword, or filter the returned body locally.

NOW-30m means thirty months. APITube reads m as months. NOW-1h, NOW-7d and NOW-1y behave as expected; there is no minutes unit.

Wildcards return everything. title=immuni* gives 200 and the whole index. Expand into query=title:(immunity OR immunization OR immunology).

Unknown parameters are ignored. A forwarded search= or render_js= produces a successful-looking response with the query unfiltered.

What you gain ​

APITube returns article text, entities with per-entity sentiment, separate title and body sentiment, categories, topics, industries, publisher details and readability scores. Responses also include is_duplicate and story.id, and support eight export formats.

Next steps ​