# Bing Search Scraper (`crawlerbros/bing-search-scraper`) Actor

Scrape Bing search results. Extract titles, URLs, descriptions, and snippets for any search query with market/language targeting.

- **URL**: https://apify.com/crawlerbros/bing-search-scraper.md
- **Developed by:** [Crawler Bros](https://apify.com/crawlerbros) (community)
- **Categories:** SEO tools, Developer tools, Other
- **Stats:** 21 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.00 / 1,000 results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.
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?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## Bing Search Scraper

Extract organic search results from Bing for any query. Get titles, URLs, descriptions, and snippets with support for 40+ markets and languages.

### Features

- Extract organic search results from Bing
- Get title, URL, description, and display URL for each result
- Support for 40+ markets/languages (en-US, fr-FR, de-DE, etc.)
- Configurable results per query (up to 100)
- Automatic pagination across multiple result pages
- No proxy required by default
- Fast HTTP-based extraction (no browser overhead)

### Input

| Field | Type | Default | Description |
|-------|------|---------|-------------|
| `queries` | Array | Required | Search queries to look up on Bing |
| `maxResultsPerQuery` | Integer | 10 | Max results per query (1-100) |
| `market` | String | "en-US" | Bing market code (e.g., "en-US", "fr-FR") |
| `proxyConfiguration` | Object | No proxy | Proxy configuration |

#### Example Input

```json
{
    "queries": ["best restaurants NYC", "python web frameworks"],
    "maxResultsPerQuery": 20,
    "market": "en-US"
}
```

### Output

| Field | Type | Description |
|-------|------|-------------|
| `query` | String | Search query used |
| `position` | Integer | Position in results (1-based) |
| `title` | String | Result title |
| `url` | String | Result URL |
| `displayUrl` | String | Displayed URL text |
| `description` | String | Result snippet/description |
| `searchUrl` | String | Bing search URL used |
| `scrapedAt` | String | ISO timestamp when scraped |

### Use Cases

- **SEO monitoring** — track your website's ranking on Bing for target keywords
- **Competitor analysis** — discover who ranks for industry keywords
- **Content research** — find top-performing content for any topic
- **Market research** — analyze search landscapes across different markets
- **Lead generation** — find businesses and websites in specific niches

### FAQ

#### Is a proxy required?

No. The scraper works without proxy by default. Enable proxy only if you experience rate limiting on high-volume runs.

#### What markets are supported?

Bing supports 40+ market codes. Common ones: en-US, en-GB, fr-FR, de-DE, es-ES, it-IT, ja-JP, pt-BR, zh-CN, ko-KR, nl-NL, ru-RU, ar-SA.

#### How many results can I get?

Up to 100 results per query with automatic pagination (10 results per page).

# Actor input Schema

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

List of search queries to look up on Bing.

## `maxResultsPerQuery` (type: `integer`):

Maximum number of results per query.

## `market` (type: `string`):

Bing market code for localized results (e.g., 'en-US', 'fr-FR', 'de-DE').

## `proxyConfiguration` (type: `object`):

Proxy config. Works without proxy by default.

## Actor input object example

```json
{
  "queries": [
    "food in NYC"
  ],
  "maxResultsPerQuery": 5,
  "market": "en-US",
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `results` (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": [
        "food in NYC"
    ],
    "maxResultsPerQuery": 5,
    "market": "en-US"
};

// Run the Actor and wait for it to finish
const run = await client.actor("crawlerbros/bing-search-scraper").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": ["food in NYC"],
    "maxResultsPerQuery": 5,
    "market": "en-US",
}

# Run the Actor and wait for it to finish
run = client.actor("crawlerbros/bing-search-scraper").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": [
    "food in NYC"
  ],
  "maxResultsPerQuery": 5,
  "market": "en-US"
}' |
apify call crawlerbros/bing-search-scraper --silent --output-dataset

```

## MCP server setup

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

```

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/n2eZb8PjtHDlpMKWv/builds/LSYW4OO3cl8eUJ8E6/openapi.json
