Bing, DuckDuckGo, Baidu & Yahoo SERP Scraper — One Run avatar

Bing, DuckDuckGo, Baidu & Yahoo SERP Scraper — One Run

Pricing

from $1.00 / 1,000 serp results

Go to Apify Store
Bing, DuckDuckGo, Baidu & Yahoo SERP Scraper — One Run

Bing, DuckDuckGo, Baidu & Yahoo SERP Scraper — One Run

Track rankings on the search engines Google-only scrapers ignore. Bing, DuckDuckGo, Baidu and Yahoo in a single run — one flat JSON row per result: rank, title, URL, snippet, page, engine, total results. Language/region targeting, native pagination, desktop/mobile. No API keys, no login.

Pricing

from $1.00 / 1,000 serp results

Rating

0.0

(0)

Developer

Nomad.Dev

Nomad.Dev

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

1

Monthly active users

18 days ago

Last modified

Share

Bing, DuckDuckGo, Baidu & Yahoo SERP Scraper

Scrape organic search results from the four engines Google-only scrapers ignore — Bing, DuckDuckGo, Baidu and Yahoo — in a single run. Pass your queries, pick engines, get clean structured JSON: title, URL, snippet, rank, page, engine tag and the engine's estimated total-results count. Language/region targeting, native pagination, optional desktop/mobile device targeting. No API keys, no login, no browser.

Why not Google? Because Google is already a solved, commoditised market — Apify's own Google Search Scraper does it well and cheaply, and a dozen others race it to the bottom. Meanwhile Bing (~4% of desktop search and the engine behind Copilot), DuckDuckGo, Baidu (China) and Yahoo (Japan) are barely covered, and a Bing-only scraper on this store will charge you more than this Actor charges for all four. If your rank tracking stops at Google, you are blind on every engine your competitors are not.

Engine parsers ported from the MIT-licensed openserp project (see NOTICE).

What SERP data does this scraper extract?

Each result is one flat JSON record per organic (or ad, if enabled) result:

FieldMeaning
queryThe search query this result came from
engineEngine that returned it: bing, duckduckgo, baidu, yahoo
rank1-based organic rank within (query, engine), across pages
page1-based SERP page number
titleResult title as shown on the SERP
urlTarget URL (redirect wrappers unwrapped where possible)
snippetDescription / snippet text
adtrue when the result is a sponsored/ad slot
serpUrlThe exact SERP URL that was fetched (for reproducibility)
deviceDevice profile used for the request: desktop or mobile (echoes the device input; see Device targeting below)
resultsTotalThe engine's own estimated total number of matches for the query (e.g. Bing's "About 1,230,000 results"). Best-effort — populated for bing and baidu when the SERP shows a count header; null for duckduckgo / yahoo (no count header) and whenever the header wasn't present

Every field above is present on every row (flat schema, no nested objects, no permanently-empty columns) — this keeps CSV/Excel exports clean.

How to scrape search engine results with this Actor

  1. Click Try for free / Run — no login to any search engine, no cookies.
  2. Enter one or more queries, tick the engines you want, optionally set languageCode / region / maxPagesPerQuery.
  3. Run it and export the dataset as JSON, CSV or Excel, or read it over the API.

Run it from your own code:

from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("nomad-agent/serp-multi-engine-scraper").call(run_input={
"queries": ["best python web framework"],
"engines": ["bing", "duckduckgo", "baidu"],
"maxPagesPerQuery": 2,
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item["engine"], item["rank"], item["title"], item["url"])

Or a single HTTP call that runs the Actor and returns items in one response:

curl -X POST \
"https://api.apify.com/v2/acts/nomad-agent~serp-multi-engine-scraper/run-sync-get-dataset-items?token=<YOUR_APIFY_TOKEN>" \
-H "Content-Type: application/json" \
-d '{"queries": ["best python web framework"], "engines": ["bing", "duckduckgo"]}'

Integrations: export the dataset as JSON, CSV or XLSX from the Console; call it synchronously with run-sync-get-dataset-items as shown above; wire it into Make, Zapier or n8n via their Apify connector; or drive it from any AI agent through the Apify MCP server.

Input

FieldTypeDefaultNotes
queriesarraySearch queries, one per entry. Inline operators like site: and filetype: work. Required.
enginesarray["bing","duckduckgo"]Any of bing, duckduckgo, baidu, yahoo.
devicestring"desktop"desktop or mobile. Only changes behavior on Bing — see Device targeting. Other engines accept and ignore it.
languageCodestring""BCP-47 code (en, de, pt-BR). Mapped per engine: Bing mkt/setlang/cc, DuckDuckGo kl, Yahoo vl. Baidu takes no language param.
regionstring""Country hint: two-letter code for Bing (cc), e.g. de, gb. Ignored by engines without a region param.
maxPagesPerQueryinteger1SERP pages per query per engine, via each engine's native offset param. Stops early on empty/blocked pages. Max 10.
resultsPerPageinteger0Results per page where supported (Bing count, Baidu rn, Yahoo n). 0 = engine default. Max 50.
maxItemsinteger100Hard cap on total results pushed across all queries and engines, shared evenly across your queries so none is starved. Each result returned is billed as one dataset item — see Pricing below. 0 = no cap (costs then scale with queries × engines × pages — use with care). Max 1000.
includeAdsbooleanfalseInclude sponsored results (tagged "ad": true).
proxyConfigurationobjectoffOptional. Yahoo needs Apify RESIDENTIAL proxy; Bing, DuckDuckGo and Baidu work without one.
concurrencyinteger4(Advanced) How many searches run at the same time. Higher is faster but more likely to get rate-limited. Extra pages within one search are always fetched one at a time with a short delay, regardless of this setting. Max 8.

Output example

Real push_data shape, captured from a live run:

{
"query": "open source search engine",
"engine": "duckduckgo",
"rank": 1,
"page": 1,
"title": "Home - OpenSearch",
"url": "https://opensearch.org/",
"snippet": "OpenSearch is an open-source search and analytics suite…",
"ad": false,
"serpUrl": "https://html.duckduckgo.com/html/?q=open+source+search+engine&kl=us-en",
"device": "desktop",
"resultsTotal": null
}

resultsTotal is null on DuckDuckGo and Yahoo — neither renders a total-match count on the endpoints this Actor reads.

Pricing

Pay per event — no subscription, no rental, you pay only for what you fetch.

Actor startPer result1,000 results
From 20 July 2026$0.005$0.001$1.00
Until 19 July 2026$0.05$0.004$4.05

A price cut is already scheduled and takes effect on 20 July 2026 (Apify requires 14 days' notice for any price change, so it cannot land sooner). Until then the old rate above applies — quoted here in full rather than advertising a price you would not actually be charged.

maxItems (default 100) is a hard ceiling on what you can be billed for in a run.

Use cases

  • Rank tracking / SEO monitoring on the engines Google-only tools miss
  • Bing rank tracking — the engine behind Microsoft Copilot's web answers
  • Baidu (China) and Yahoo (Japan) SERP snapshots for regional SEO
  • Comparing result overlap between Bing, DuckDuckGo, Baidu and Yahoo
  • Regional / language SERP snapshots (languageCode + region)
  • Feeding organic results into research, lead-gen or LLM pipelines
  • Cheap keyword-to-URL discovery without a paid SERP API

Engines & reliability

EngineProxy needed?Notes
BingNoHTML first, automatic RSS-output fallback when Bing serves its JS bot-wall
DuckDuckGoNoUses the JS-free html.duckduckgo.com endpoint
BaiduNoReal target URLs taken from the result mu attribute where present
YahooYes — residentialReturns nothing from Apify's datacenter IPs. Enable Apify Proxy (RESIDENTIAL) and it works. r.search.yahoo.com redirect wrappers are unwrapped to the real target URL

Every page that comes back blocked or empty is retried once on a fresh session before the Actor gives up on it. Engines that stay blocked are logged and skipped — they never fail the run, and you are never charged for results that were not returned.

Why Google, Yandex and Ecosia are not offered

They were, and they never worked. All three captcha-wall a plain HTTP request — verified from Apify datacenter IPs and from a residential IP:

EngineWhat it actually returns
GoogleJS-required interstitial (soft block), on every IP tried
YandexHTTP 200, but redirected to showcaptchafast (SmartCaptcha)
EcosiaHTTP 403 bot challenge

Getting past those needs a headless browser plus captcha solving — a different and much more expensive Actor. Rather than list three engines that bill you for a guaranteed-empty run, this Actor does not offer them at all. If you need Google, use Apify's Google Search Scraper — it is first-party, cheap and good, and this Actor is designed to sit alongside it, not to replace it.

Device targeting

The device input (desktop / mobile) is real, not a cosmetic toggle — but it only does something on the engine that actually responds differently to it:

Enginedevice: mobile effect
BingReal, verified. Switches to a mobile browser User-Agent. This also helps get past Bing's JS bot-wall page that otherwise blocks datacenter IPs (mobile UA returned real results directly in testing; desktop UA needed the RSS fallback).
DuckDuckGoNo-op. The html.duckduckgo.com endpoint this Actor uses is a single, JS-free layout with no separate mobile version. The field is accepted but ignored.
Baidu / YahooNo-op. Not implemented. The field is accepted but ignored; it never causes an error.

Not implemented on any engine, and not a dataset field. On all four engines the related-searches and "People also ask" widgets are lazy-loaded by JavaScript after the initial response — the static HTML this Actor fetches never contains them, so there is nothing to parse. Adding the fields would only ever give you permanently-empty columns.

If you need People Also Ask, it is a Google feature in practice, and Apify's Google Search Scraper extracts it.

FAQ

Is it legal to scrape search engine results? This Actor reads only publicly available SERP data — what any visitor sees without logging in. No personal data behind authentication is touched. Review the target engines' terms and your local regulations for your specific use case.

Do I need an account or API key? No. Results are fetched from public SERP pages — no login, no API keys, no cookies.

Can I scrape Google with this? No — and that is deliberate, not a limitation being hidden. Google captcha-walls plain HTTP requests from every IP, so offering it would just bill you for empty runs. See Why Google, Yandex and Ecosia are not offered. Use Apify's Google Search Scraper for Google and this Actor for everything else.

Why does Yahoo return no results? Yahoo is the one engine here that needs a proxy: it returns nothing from Apify's datacenter IPs. Enable Apify Proxy with the RESIDENTIAL group in proxyConfiguration. Bing, DuckDuckGo and Baidu need no proxy at all.

How many results can I get? Up to maxPagesPerQuery pages per engine per query (~10 results/page, ~25 for DuckDuckGo), capped by maxItems (default 100, max 1000). The cap is shared out evenly across your queries, so every query gets results — it is never drained by whichever query happens to run first. Each result is billed as one dataset item — see Pricing above.

Are ads included? Only when includeAds is on; ad rows are tagged "ad": true and never consume organic ranks.

Can I get mobile search results? Yes for Bing: set device to mobile. It's a no-op on DuckDuckGo, Baidu and Yahoo — see Device targeting.

Does this Actor extract related searches or People Also Ask? No — on all four engines those widgets are JavaScript-rendered after page load, so a plain HTTP fetch never receives them. See Related searches & People Also Ask.

Something broken or missing? Search engines change their markup often. Open an issue on the Actor's Issues tab — it is monitored and reliability fixes ship fast.

Attribution

SERP URL construction and CSS selectors are a Python port of openserp by Rustem Kamalov, MIT License. See LICENSE and NOTICE.

Is this Actor useful to you? A quick ⭐ review on the Actor's Reviews tab helps other SERP and search-data users find it — and tells us what to build next.