Bing Search API
The largest non-Google search surface, returned as clean rows. Each result carries page, position, title, snippet, the real destination URL rather than a tracking redirect, and a date when Bing shows one. City-level location, market and country targeting, three device views, and optional ad rows at no extra cost. Billing is per page rather than per result, because Bing's organic depth swings between two and ten results on the same page.
RECORDS10
MEDIAN LAGon demand
PARAMETERS8
TOTAL USERS3
MONTHLY ACTIVE2
TOTAL RUNS30
SUCCESS (30D)100.0%
RATINGno ratings yet
LAST MODIFIED2026-08-08
PUBLISHED2026-08
Input parameters
| PARAMETER | TYPE | REQ | DEFAULT | DESCRIPTION |
|---|---|---|---|---|
| query | string | yes | — | The search term. Bing operators work, so 'site:example.com pricing' behaves as you would expect. |
| max_pages | integer | no | 1 | Pages to fetch, and the billing unit: one charge per page whatever that page holds. — drives your bill |
| include_ads | boolean | no | false | Also return paid placements, marked with resultType 'ad'. They are already on the page you paid for, so they add no cost. |
| country | string | no | — | Two letter country code. Cannot be combined with market; market wins if both are set. |
| market | string | no | — | A language and country pair such as en-US. More precise than country because it sets the result language too. |
| location | string | no | — | City to search from, such as 'Seattle, Washington'. This is the control for local rank tracking. |
| safe_search | enum | no | Moderate | Adult content filter: moderate filters adult text, strict removes adult content, off applies no filter. |
| device | enum | no | desktop | Device to emulate. Rankings differ between desktop and mobile, so pick the one you actually track. |
Worked examples
{
"query": "web scraping tools",
"max_pages": 1
}
{
"query": "plumber near me",
"location": "Seattle, Washington",
"device": "mobile"
}
{
"query": "crm software",
"include_ads": true,
"max_pages": 2
}
{
"query": "site:example.com",
"max_pages": 5
}
POWER-USER TIP
Per page, and that is deliberate — Bing gives no page-size control and its organic depth swings from about two results on a commercial query to ten on an informational one. A per-result price cannot cover a two-result page, so the page is the honest unit. Every result on a charged page is returned in full.
POWER-USER TIP
Country and market do not stack — Setting both country and market is not additive; market wins, because it pins the result language as well as the region. Pick market when you care about language, country when you only care about the region.
Coverage
3
device views — desktop · mobile · tablet
3
safe search levels — moderate · strict · off
3
targeting controls — country · market · city location
Tasks
Saved runs with the inputs already filled in — each one a standalone page and a working configuration example.
Code
curl
curl -X POST "https://api.apify.com/v2/acts/johnvc~bing-search-api/run-sync-get-dataset-items" \
-H "Authorization: Bearer $APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"query":"web scraping tools","max_pages":1}'
Python
from apify_client import ApifyClient
client = ApifyClient("APIFY_TOKEN")
run = client.actor("johnvc/bing-search-api").call(
run_input={"query": "web scraping tools", "max_pages": 1}
)
for row in client.dataset(run.default_dataset_id).iterate_items():
print(row.get("position"), row.get("title"), row.get("url"))
What people use it for
- Bing rank tracking on a schedule
- Local rank checks by city and device
- Competitor ad placement monitoring
- SEO research on the largest non-Google engine
- Cross-engine ranking comparison beside the other search sources
Alternatives
Yandex Search API — the largest Russian-language engineours
百度 Baidu - Cost-Effective Baidu Search — search coverage for Chinaours
DuckDuckGo Scraper — privacy-focused search rankingsours
Naver Search API — South Korea's dominant engineours
Bing Copilot AI Answers API — Bing's AI answer layer rather than the organic SERPours