# Bing Search API: Bing SERP Scraper & Web Results (`plainrows/bing-search-api`) Actor

Bing Search API alternative and MCP tool: Bing organic web results as JSON (position, URL, domain, title, snippet) for any query, country, language, desktop or mobile. $0.0024 per query with results plus $0.0003 per result, $0.0026 per extra page of 10, $0.001 per run. Empty queries are free.

- **URL**: https://apify.com/plainrows/bing-search-api.md
- **Developed by:** [PlainRows](https://apify.com/plainrows) (community)
- **Categories:** SEO tools, Developer tools, AI
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.30 / 1,000 organic results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Bing Search API: Bing SERP Scraper & Web Results

A **Bing Search API alternative**: give it **search queries**, get **one row per Bing organic result** with its **position, URL, domain, title and snippet**, for the country, language and device you choose (desktop or mobile), up to 100 results per query. One live Bing search per query, JSON out.

It calls a commercial SERP data API instead of driving browsers: **no proxies, no CAPTCHAs, no Microsoft account, no Azure key of your own**. Up to five queries run at a time (fewer with deep result pages), a few seconds each. **Queries with no result are free.**

### Typical uses

- **Replace the retired Bing Web Search API** in scripts and apps that need Bing web results as JSON.
- **SEO on Bing**: see who ranks on Bing for your keywords, by country and language, desktop or mobile.
- **Research and monitoring**: collect the top Bing results for a list of topics, brands or questions on a schedule.
- **AI agents and RAG**: give an LLM fresh web results (URL, title, snippet) from Bing as an MCP tool.
- **Exports**: send the rows to Google Sheets, BigQuery, Slack, n8n, Make or Zapier.

### What you get for each organic result

| Field | Description |
|---|---|
| `searchQuery` | The query searched on Bing |
| `position` | Organic position on Bing (1 = first organic result) |
| `absolutePosition`, `page` | Position among all elements of the page (ads and boxes included); Bing results page |
| `url`, `domain` | Result URL and its domain |
| `title`, `description` | Result title and the snippet Bing shows |
| `breadcrumb`, `websiteName`, `publishedAt` | Breadcrumb, site name and publication date when Bing shows them |
| `resultType` | Element type (`organic`) |
| `serpFeatures` | Other element types on the same page (paid, people_also_ask, related_searches, video...) |
| `found`, `status`, `message` | `FOUND` for a billed row; free rows say why: `NO_RESULTS`, `FORMAT_CHANGED`, `PROVIDER_ERROR`, `REJECTED`, `NOT_CHECKED` |
| `country`, `languageCode`, `device`, `searchedAt` | Where, how and when the search ran |

Missing values are `null`, never guessed. Positions are Bing's organic rank (ads and boxes are not counted in `position`).

### Input

```json
{
  "queries": ["crm software", "best project management tool"],
  "country": "US",
  "device": "desktop",
  "maxResults": 10
}
```

- **queries** (required): up to 1,000 per run, one Bing search each, max 700 characters.
- **country**: US, GB, CA, AU, IE, IN, DE, AT, CH, FR, BE, ES, MX, IT, NL, PT, BR, PL, SE, JP. **languageCode** defaults to the country's main language.
- **device**: `desktop` (default) or `mobile`.
- **maxResults** (default 10): organic results per query, 1 to 100. 10 = the first Bing page, which may hold fewer than 10 organic results once ads and boxes take their place. Each further 10 results is one more Bing page (see Pricing).

### Pricing

Pay per event, no subscription:

- **Search query with results**: $0.0024, once per query that returns at least one organic result.
- **Organic result**: $0.0003 per result row. A full first page of 10 results costs about $0.0054.
- **Extra results page**: $0.0026, only if you raise `maxResults` above 10, once per extra page of 10 results Bing returned.
- **Actor start**: $0.001 per run.

Queries with no result, queries the data source failed or refused, unreadable answers and queries not reached (budget or timeout) get a free row with `found: false` and the reason. The run never spends more than the maximum cost you set.

**Free Apify plan:** each run searches the first 5 queries, up to 30 results each, so you can test the output. A paid Apify plan removes this limit.

### Good to know

- Results are those of a logged-out user in the chosen country, language and device, not personalized. The same query can move a place or two between runs.
- Advanced search operators (`site:`, `intitle:`, `inurl:`, `filetype:`...) are not supported: such queries are skipped for free and listed in the run summary (`invalidQueries`).
- For Google results, use [Keyword Rank Checker](https://apify.com/plainrows/keyword-rank-checker); for Bing search volumes, [Bing Keyword Search Volume & CPC](https://apify.com/plainrows/bing-keyword-search-volume).

### What this is not

- **Not the official Microsoft Bing Search API** (Azure), and not affiliated with or endorsed by Microsoft. It returns the public Bing results page as data.
- Not Bing Copilot answers, Bing Images or Bing News: organic web results only.

### Run summary

Each run stores a summary in the key-value store (`OUTPUT`): queries run, queries with no result, results billed, search fees and extra pages charged, and anything skipped because of the free-plan or budget limit.

### Use it from code, automations or AI agents

**API (one call, results returned directly):**

```bash
curl -X POST "https://api.apify.com/v2/acts/plainrows~bing-search-api/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"queries": ["crm software"]}'
```

**n8n, Make, Zapier:** use the Apify integration, pick `plainrows/bing-search-api` and send the rows where you need them.

**AI agents (MCP tool):** add `https://mcp.apify.com?tools=plainrows/bing-search-api` to Claude, Cursor or any MCP client, then ask "Search Bing for 'crm software' and list the top 10 results".

### FAQ

**Is this a replacement for the Bing Search API?**
For organic web results, yes: send queries, get JSON rows with position, URL, title and snippet. It is not the Microsoft API itself (see "What this is not").

**Do I pay for queries with no result?**
No. A query with no organic result gets a free `found: false` row.

**Can I get more than the first page?**
Yes, raise `maxResults` up to 100. Each extra page of 10 results Bing returns is billed as an extra page.

### More PlainRows tools

Same pay-per-result pricing, same clean JSON, built to chain together in n8n, Make, Zapier or AI agents.

- **SEO and keywords:** [Keyword Search Volume, CPC & Difficulty](https://apify.com/plainrows/keyword-search-volume) · [Keyword Planner Alternative (Bulk Search Volume & CPC)](https://apify.com/plainrows/keyword-planner-alternative) · [Bing Keyword Search Volume & CPC](https://apify.com/plainrows/bing-keyword-search-volume) · [Keyword Ideas Generator](https://apify.com/plainrows/keyword-ideas-generator) · [Google Autocomplete & People Also Ask](https://apify.com/plainrows/google-autocomplete-questions) · [Google Trends Explorer](https://apify.com/plainrows/google-trends-explorer) · [Google Trends Keyword Discovery (Rising & Related)](https://apify.com/plainrows/google-trends-keyword-discovery) · [Website Organic Traffic & Top Keywords](https://apify.com/plainrows/domain-seo-overview) · [Competitor Keywords API (Ranked Keywords)](https://apify.com/plainrows/competitor-keywords-api) · [Bulk Website Traffic Checker](https://apify.com/plainrows/website-traffic-checker) · [SEO Competitors & Keyword Gap Finder](https://apify.com/plainrows/seo-competitors-keyword-gap) · [PPC Competitor Keywords (SpyFu Alternative)](https://apify.com/plainrows/ppc-competitor-keywords) · [Bulk Domain Authority Checker](https://apify.com/plainrows/domain-authority-checker) · [Backlink Checker](https://apify.com/plainrows/backlink-checker) · [Backlink API (Referring Domains & Backlinks Data)](https://apify.com/plainrows/backlink-api) · [Broken Link Checker](https://apify.com/plainrows/broken-link-checker) · [AI Search Visibility Tracker (ChatGPT, Gemini, AI Mode)](https://apify.com/plainrows/ai-search-brand-visibility) · [Google Maps Rank Tracker (Geo-Grid Local SEO)](https://apify.com/plainrows/google-maps-rank-tracker)
- **Leads and companies:** [Google Maps Scraper](https://apify.com/plainrows/google-maps-businesses) · [Google Maps Email Extractor](https://apify.com/plainrows/google-maps-email-extractor) · [Google Maps Businesses Without Website](https://apify.com/plainrows/google-maps-no-website-leads) · [Yellow Pages Australia Scraper](https://apify.com/plainrows/yellowpages-au-scraper) · [Website Technology Checker](https://apify.com/plainrows/website-tech-stack) · [Website Email Extractor](https://apify.com/plainrows/website-email-extractor) · [Contact Details Scraper (Emails, Phones, Socials)](https://apify.com/plainrows/contact-details-scraper) · [ATS Jobs Scraper (Workday, Greenhouse, Lever, Ashby)](https://apify.com/plainrows/ats-job-postings) · [Workday Jobs Scraper](https://apify.com/plainrows/workday-jobs-scraper) · [Greenhouse Jobs Scraper](https://apify.com/plainrows/greenhouse-jobs-scraper) · [Lever Jobs Scraper](https://apify.com/plainrows/lever-jobs-scraper) · [Ashby Jobs Scraper](https://apify.com/plainrows/ashby-jobs-scraper) · [Google Jobs Scraper](https://apify.com/plainrows/google-jobs-scraper) · [Reed.co.uk Jobs Scraper (UK)](https://apify.com/plainrows/reed-jobs-scraper) · [jobs.ch & jobup.ch Jobs Scraper (Switzerland)](https://apify.com/plainrows/jobs-ch-scraper) · [Arbeitsagentur Jobs Scraper (Germany)](https://apify.com/plainrows/arbeitsagentur-jobs-scraper) · [Gupy Jobs Scraper (Brazil)](https://apify.com/plainrows/gupy-jobs-scraper) · [Catho Jobs Scraper (Brazil)](https://apify.com/plainrows/catho-jobs-scraper) · [Vagas.com.br Jobs Scraper (Brazil)](https://apify.com/plainrows/vagas-jobs-scraper) · [Jobs.cz Scraper (Czech Republic)](https://apify.com/plainrows/jobs-cz-scraper) · [Google Ads Scraper (Transparency Center)](https://apify.com/plainrows/google-ads-transparency) · [Company Registry Lookup (SIRENE, LEI, Brreg)](https://apify.com/plainrows/company-registry-lookup) · [Public Tenders Search (EU TED & UK)](https://apify.com/plainrows/public-tenders-search)
- **E-commerce and travel:** [Amazon Product Search Scraper](https://apify.com/plainrows/amazon-product-search) · [Google Shopping Prices Scraper](https://apify.com/plainrows/google-shopping-prices) · [Google Hotels Prices Scraper](https://apify.com/plainrows/google-hotels-prices) · [Google Hotels Scraper](https://apify.com/plainrows/google-hotels-scraper) · [Tripadvisor Reviews Scraper](https://apify.com/plainrows/tripadvisor-reviews) · [Trustpilot Reviews Scraper](https://apify.com/plainrows/trustpilot-reviews)
- **Marketplaces and classifieds:** [AliExpress Scraper](https://apify.com/plainrows/aliexpress-scraper) · [Kleinanzeigen Scraper (Germany)](https://apify.com/plainrows/kleinanzeigen-scraper) · [AutoScout24 Scraper (Cars, Europe)](https://apify.com/plainrows/autoscout24-scraper) · [Kijiji Scraper (Canada)](https://apify.com/plainrows/kijiji-scraper) · [Marktplaats Scraper (Netherlands)](https://apify.com/plainrows/marktplaats-scraper) · [Property Finder Scraper (UAE)](https://apify.com/plainrows/propertyfinder-scraper) · [Redfin Scraper (US Homes for Sale)](https://apify.com/plainrows/redfin-scraper) · [Otomoto Scraper (Polish Car Listings)](https://apify.com/plainrows/otomoto-scraper) · [Otodom Scraper (Poland Property)](https://apify.com/plainrows/otodom-scraper) · [Imovirtual Scraper (Portugal Property)](https://apify.com/plainrows/imovirtual-scraper) · [Standvirtual Scraper (Portugal Cars)](https://apify.com/plainrows/standvirtual-scraper) · [Immoweb Scraper (Belgium Property)](https://apify.com/plainrows/immoweb-scraper) · [Blocket Scraper (Sweden)](https://apify.com/plainrows/blocket-scraper) · [FINN.no Scraper (Norway)](https://apify.com/plainrows/finn-scraper) · [coches.net Scraper (Spain Cars)](https://apify.com/plainrows/coches-net-scraper) · [2dehands Scraper (Belgium)](https://apify.com/plainrows/2dehands-scraper) · [Storia Scraper (Romania Property)](https://apify.com/plainrows/storia-scraper) · [Autovit Scraper (Romania Cars)](https://apify.com/plainrows/autovit-scraper) · [FINN.no Car Scraper (Norway Cars)](https://apify.com/plainrows/finn-cars-scraper) · [DBA Scraper (Denmark)](https://apify.com/plainrows/dba-scraper) · [Tori.fi Scraper (Finland)](https://apify.com/plainrows/tori-scraper)
- **Content and media:** [Google News Scraper](https://apify.com/plainrows/google-news-scraper) · [YouTube Search Scraper](https://apify.com/plainrows/youtube-search-scraper) · [YouTube Search API (JSON)](https://apify.com/plainrows/youtube-search-api) · [YouTube Comments Scraper](https://apify.com/plainrows/youtube-comments-scraper) · [Google Images Scraper](https://apify.com/plainrows/google-images-scraper) · [Website Screenshot API](https://apify.com/plainrows/website-screenshot) · [Google Maps Reviews Scraper](https://apify.com/plainrows/google-maps-reviews) · [Google Reviews Scraper](https://apify.com/plainrows/google-reviews-scraper) · [App Store & Google Play Reviews Scraper](https://apify.com/plainrows/app-reviews-scraper) · [App Store & Google Play App Details Scraper](https://apify.com/plainrows/app-details-scraper) · [Google Play Reviews Scraper](https://apify.com/plainrows/google-play-reviews-scraper) · [App Store Reviews Scraper](https://apify.com/plainrows/app-store-reviews-scraper)

### Support

Missing a field or found a bug? Open an issue on this page. Issues are read and answered.

# Actor input Schema

## `queries` (type: `array`):

One Bing search per line, exactly as you would type it. Up to 1,000 queries per run, max 700 characters each. Advanced operators (site:, intitle:, filetype:...) are not supported.

## `country` (type: `string`):

Country whose Bing results you want.

## `languageCode` (type: `string`):

Two-letter language code, e.g. "en" or "fr". Leave empty to use the country's main language (for example German for Switzerland, French for Belgium).

## `device` (type: `string`):

Bing results as seen on a desktop computer or on a mobile phone.

## `maxResults` (type: `integer`):

How many organic results to return per query: 10 = first Bing page (the normal case). Each further page of 10 is billed as an extra results page (see Pricing).

## Actor input object example

```json
{
  "queries": [
    "crm software",
    "best project management tool"
  ],
  "country": "US",
  "device": "desktop",
  "maxResults": 10
}
```

# Actor output Schema

## `results` (type: `string`):

No description

## `summary` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "queries": [
        "crm software",
        "best project management tool"
    ],
    "country": "US",
    "device": "desktop",
    "maxResults": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("plainrows/bing-search-api").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "queries": [
        "crm software",
        "best project management tool",
    ],
    "country": "US",
    "device": "desktop",
    "maxResults": 10,
}

# Run the Actor and wait for it to finish
run = client.actor("plainrows/bing-search-api").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "queries": [
    "crm software",
    "best project management tool"
  ],
  "country": "US",
  "device": "desktop",
  "maxResults": 10
}' |
apify call plainrows/bing-search-api --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,plainrows/bing-search-api"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/LGG67Ry91RwTUAA1b/builds/55OywvfsrKzOt42Ox/openapi.json
