
Google Search Scraper
scrape.ly/store/querystone/google-search-scraperSEO toolsAI
1 monthly user

Scrape Bing search results for any query: organic results with title, URL, description, position and sitelinks, plus People Also Ask, related searches and news, in any Bing market and language.
Get Bing search results as clean JSON, CSV or Excel. For every query you get the organic results (title, URL, description, position, date, sitelinks), plus People Also Ask, related searches and top news when Bing shows them. Pick any Bing market and language, run hundreds of queries in parallel, and go as deep as the results go. No login, no API key, no browser.
en-US, de-DE, ja-JP, pt-BR ...) and 50 languages, plus an optional country bias.| Field | What it does |
|---|---|
queries | Search terms or Bing search URLs, one per line. A URL's q, setmkt, setlang and cc are used for that line. Duplicates and blank lines are dropped. |
maxResultsPerQuery | Organic results to collect per query (default 10). |
fileTypes, exactMatch, wordsInTitle, wordsInUrl | Operator filters added to every query (filetype:, quotes, intitle:, inurl:). |
freshness | Only results from the past day, week or month. |
marketCode, languageCode, countryCode | Which Bing edition to search. The language defaults to the market's language. |
includeExtras | Also include People Also Ask, related searches and news (off by default). |
maxConcurrency | Queries processed in parallel (default 8). |
proxyConfiguration | Residential proxy in the market's country by default (en-US uses US exits). |
{
"queries": ["web scraping tools", "best pizza in Berlin"],
"maxResultsPerQuery": 20,
"marketCode": "en-US"
}
One dataset item per Bing results page. The Organic results view in the Output tab lists one row per result, and there are separate views for People Also Ask, related searches, news and per-page counts.
| Field | Description |
|---|---|
searchQuery | term, page url, page number, marketCode, languageCode and countryCode used. |
organicResults[] | position (rank within the query), title, url, displayedUrl, siteName, description, date and sitelinks when Bing shows them. |
peopleAlsoAsk[] | question and the source url. |
relatedSearches[] | text and the Bing url. |
news[] | title, url, source, age, description (the top story card). |
resultsTotal | Bing's own estimate of the result count, when shown. |
correctedQuery | The spelling Bing searched for instead, when it corrected the query. |
hasNextPage | Whether Bing offers another page. |
warning | Present only when Bing sent a reduced page (no People Also Ask, related searches or further pages). |
Queries that find nothing, or that Bing keeps answering with unrelated decoy results, save no row and are not charged: they are listed with the reason in the run's status message and in the OUTPUT record (failedInputs).
{
"searchQuery": {
"term": "python tutorial",
"url": "https://www.bing.com/search?q=python+tutorial&setmkt=en-US&setlang=en",
"page": 1,
"marketCode": "en-US",
"languageCode": "en"
},
"organicResults": [
{
"position": 1,
"title": "Python Tutorial - W3Schools",
"url": "https://www.w3schools.com/python/",
"displayedUrl": "https://www.w3schools.com › python",
"siteName": "W3School",
"description": "With our \"Try it Yourself\" editor, you can edit Python code and view the result. Click on the \"Try it Yourself\" button to see how it works."
},
{
"position": 2,
"title": "The Python Tutorial — Python 3.15.0 documentation",
"url": "https://docs.python.org/3/tutorial/index.html",
"displayedUrl": "https://docs.python.org › tutorial",
"description": "This tutorial introduces the reader informally to the basic concepts and features of the Python language and system. Be …",
"date": "1 day ago"
}
],
"peopleAlsoAsk": [
{ "question": "How do I learn Python?", "url": "https://www.python.org/about/gettingstarted/" }
],
"relatedSearches": [
{ "text": "python tutorial for beginners", "url": "https://www.bing.com/search?q=python+tutorial+for+beginners&FORM=QSRE9" }
],
"hasNextPage": true
}
You pay $0.01 per 1,000 results pages ($0.00001 per page). A page holds about 10 organic results. Pages with no results, errors and retries are free.
Platform usage (compute and proxy traffic) is billed on top at the standard rates. The default residential proxy costs $2 per GB; a first page is about 50 KB of residential traffic and later pages about 150-200 KB including retries. Measured totals on the default settings:
Larger jobs scale with the number of pages (roughly $0.0004-0.0005 per page in total, estimated from these runs). Switch the proxy to datacenter ($1 per GB) for cheaper first-page-only jobs.
Is it legal to scrape Bing? The actor only reads public search result pages and needs no login. You are responsible for how you use the data and for following Bing's terms and the laws that apply to you.
Do I need a proxy or an API key? No key. The actor uses the platform's residential proxy by default, with exits in each query's market country. Switch to datacenter in the Proxy section for a cheaper run if you only need first pages.
How many results can I get per query? As many as Bing serves. Bing decides how deep a query goes, so some queries end earlier. The run status then says how many queries ran out of results.
Why do I see fewer than 10 organic results on a page? Bing replaces some blue links with maps, shopping or video blocks on some queries. Those blocks are not organic results, so they are not counted. With includeExtras the full page can leave only two or three blue links on page 1; the actor then fills page 1 with the organic results of Bing's lighter layout for the same query, so you get the usual ten.
Why are some fields missing? Empty values are omitted. date, sitelinks, peopleAlsoAsk and news only appear when Bing shows them for that query.
Can I schedule it or call it from code? Yes. Use schedules in the console, or start the actor and read the dataset through the API, with the same JSON, CSV and Excel exports.
site: operator is ignored by Bing for this kind of request, so there is no site filter. filetype:, intitle:, inurl: and quotes work.maxResultsPerQuery is a hard cap per query (each query gets up to that many organic results). Rows are results pages, so the last page is trimmed to the cap.Every field below can be set in the run form, passed through the API, or saved as a task. Unset fields fall back to the defaults shown.
queriesarrayRequiredSearch queries or Bing URLs
One search term or Bing search URL (https://www.bing.com/search?q=...) per line. A URL's q, setmkt, setlang and cc settings are used for that line.
maxResultsPerQueryintegerOptionaldefault 10Max results per query
Organic results to collect for each query. Bing shows about 10 to 14 results per page, so the actor fetches as many pages as needed and stops early when Bing has no more results.
Operators and filters added to every query.
fileTypesarrayOptionalFile types
Only return files of these types with the filetype: operator, for example pdf or docx. Several types are combined with OR.
exactMatchbooleanOptionaldefault falseExact match
Wraps each query in quotes so Bing searches for the exact phrase.
wordsInTitlearrayOptionalWords in title
Adds an intitle: operator for each word or phrase.
wordsInUrlarrayOptionalWords in URL
Adds an inurl: operator for each word or phrase.
freshnessenumOptionaldefault "any"Freshness
Only results Bing indexed in this period.
Which Bing edition to search.
marketCodeenumOptionaldefault "en-US"Market
Bing market (country and language edition) the results come from. Sent as setmkt.
languageCodeenumOptionalLanguage
Interface and result language, sent as setlang. Leave empty to use the market's language.
countryCodestringOptionalCountry code
Optional two-letter country code sent as cc to bias results towards a country, for example DE. Leave empty to use the market.
Output and speed settings.
includeExtrasbooleanOptionaldefault falseInclude People Also Ask, related searches, news and sitelinks
Adds People Also Ask, related searches and news to each page item when Bing shows them.
maxConcurrencyintegerOptionaldefault 8Parallel queries
How many queries run at the same time. Pages of one query are fetched one after another.
proxyConfigurationobjectOptionaldefault {"useScrapelyProxy":true,"scrapelyProxyGroups":["RESIDENTIA…Proxy configuration
Proxy used to reach Bing. Residential is the default: each query uses exits in its market's country (en-US uses US, de-DE uses DE) unless you pick a country, so later result pages load reliably. Datacenter is cheaper but often stops after the first page.
Every run writes its results to a dataset. Preview it in the dashboard, then export it or read it through the API.
| Field | Type | Description |
|---|---|---|
| searchQuery | object | |
| organicResults | array | |
| peopleAlsoAsk | array | |
| relatedSearches | array | |
| news | array | |
| resultsTotal | integer | |
| correctedQuery | string | |
| hasNextPage | boolean | |
| warning | string |
You pay for the events the actor reports, such as each result or page it produces. Platform usage is included in the event prices.
| Event | Charged when | Price |
|---|---|---|
| Results page | One page of Bing results (about 10 organic results) with People Also Ask, related searches and news when requested. Empty pages and errors are free. | $0.00001 |
Run this actor from your own code. Swap in your API token and the examples work as-is.
import { ScrapelyClient } from 'scrapely-client'
const client = new ScrapelyClient({ token: process.env.SCRAPELY_TOKEN })
// Start the actor and wait for the run to finish.
const run = await client.actor('querystone/bing-search-scraper').call({
"queries": [
"web scraping tools",
"best pizza in Berlin"
],
"maxResultsPerQuery": 10,
"marketCode": "en-US",
"proxyConfiguration": {
"useScrapelyProxy": true,
"scrapelyProxyGroups": [
"RESIDENTIAL"
]
}
})
// Read the dataset the run produced.
const { items } = await client.dataset(run.defaultDatasetId).listItems()
console.log(items)Tokens live in your account settings. Keep them server-side: a token carries the full permissions of your account.
Connect the Scrape.ly MCP server once and your agent can run this actor as a tool. Pick your tool:
Fetch scrape.ly/agents.md and run querystone/bing-search-scraperPaste into Claude Code, Codex, Cursor or any AI agent. It signs you in once in the browser.
{
"mcpServers": {
"scrapely": {
"url": "https://api.scrape.ly/mcp?tools=actors,runs,storage,docs&actors=querystone/bing-search-scraper"
}
}
}No key in the file: your client opens the browser to sign you in the first time it connects.
Inputs the developer prepared for common jobs. Open one to see its input, then copy it to your account to run it as-is or adjust it.
Results with People Also Ask, related searches and news.
Organic results across several result pages.
Exact-match PDF results with the word in the title.
Scrape.ly gives you the infrastructure, the tooling, and the team to extract, process, and operationalize web data at any scale. Setup takes minutes. The advantage lasts forever.