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

Scrapes Bing search results by query, returning title, URL, snippet, position, and domain.

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

## Pricing

from $1.19 / 1,000 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/platform/actors/running/actors-in-store#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

![banner](https://i.ibb.co/8yCDCX2/bing-search-scraper.png)

## Bing Search Scraper

**Turn Bing searches into clean, structured JSON results.**

Give this scraper a list of search queries and it returns Bing's organic results as structured data: title, URL, snippet, position, and domain. Tracking redirects are resolved to the real destination URL, so every result links straight to the source. It suits SERP tracking, market and competitor research, lead discovery, and feeding search results into AI and data pipelines.

### ⚡ Quick start

```json
{
  "queries": ["openai funding round", "apple acquisition"],
  "maxItems": 10
}
```

### 🧩 Input

| Field | Type | Required | Default | Description |
|---|---|---|---|---|
| `queries` | array | yes\* | — | Search terms to look up. One entry per query. |
| `startUrls` | array | no | — | Bing search URLs to scrape directly, for example `https://www.bing.com/search?q=example`. Use instead of `queries` for full control of search parameters. |
| `maxItems` | integer | yes | `10` | Maximum results per query. See the FAQ on Bing's result limit. |
| `resultType` | string | no | `rss` | `rss` for Bing's feed output, `html` for the standard results page. See below. |
| `market` | string | no | `en-US` | Market code setting country and language, e.g. `en-US`, `en-GB`. |
| `language` | string | no | `en` | Interface language code, e.g. `en`. |
| `proxyConfiguration` | object | no | `{ "useApifyProxy": false }` | Proxy settings. |

\* Provide either `queries` or `startUrls`.

#### Choosing a result type

| | `rss` (default) | `html` |
|---|---|---|
| Reliability | Highest — structured feed output | Good, but depends on page layout |
| Proxy | Not needed | Not usually needed |
| Snippet & title | Yes | Yes |
| Displayed URL | No | Yes |
| Publication date | No | For news results only |

Start with `rss`. Switch to `html` when you need displayed URLs or news publication dates.

### 📤 Output

Each result becomes one dataset item. Results arrive in Bing's own ranking order, recorded in `position`. Redirect links are decoded so `url` is always the real destination rather than a Bing tracking URL. Fields a result does not provide are returned as `null` rather than omitted, keeping the shape consistent.

#### Fields

| Field | Type | Description |
|---|---|---|
| `query` | string | The search query that produced this result. |
| `url` | string | Destination URL, with Bing's tracking redirect resolved. |
| `title` | string | Result title. |
| `snippet` | string | Result description shown by Bing. |
| `position` | number | Rank within the results for this query, starting at 1. |
| `page` | number | Results page number. Always `1`. |
| `displayedUrl` | string | URL as displayed by Bing. `html` result type only. |
| `domain` | string | Domain of the destination URL, without `www.`. |
| `publishedAt` | string | Publication date, ISO 8601. Present for news results in `html` mode only. |
| `bingIndexedAt` | string | When Bing last indexed the page, ISO 8601. `rss` result type only. This is an indexing timestamp, **not** a publication date. |
| `resultType` | string | Which result type produced this item, `rss` or `html`. |
| `fetchedAt` | string | When the search was run, ISO 8601. |

<details><summary>Example output</summary>

```json
{
  "query": "openai funding round",
  "url": "https://openai.com/",
  "title": "OpenAI | Research & Deployment",
  "snippet": "We believe our research will eventually lead to artificial general intelligence, a system that can solve human-level problems.",
  "position": 1,
  "page": 1,
  "displayedUrl": "https://openai.com",
  "domain": "openai.com",
  "publishedAt": null,
  "bingIndexedAt": "2026-07-24T11:24:00.000Z",
  "resultType": "rss",
  "fetchedAt": "2026-07-24T19:00:11.555Z"
}
```

</details>

### 💡 Use cases

- Track how a brand, product, or competitor ranks on Bing over time.
- Discover sources and coverage for a company or topic, then fetch the pages behind them.
- Compare Bing rankings against other search engines for SEO research.
- Feed fresh, cited search results into AI and LLM pipelines.
- Build lead and prospect lists from search visibility.

### ❓ FAQ

- **How many results can I get per query?** About ten. Bing serves a single page of organic results per query and ignores requests for more, so raising `maxItems` above ten will not return additional results. To widen coverage, add more specific queries rather than asking for more results.
- **Do I need a proxy?** Usually not, in either result type. Add one if you run large volumes or want results from a specific country.
- **Why is `bingIndexedAt` not the publication date?** It is the time Bing last indexed the page, so it often shows a recent date for old content. Use `publishedAt` (news results in `html` mode), or fetch the page itself for a reliable date.
- **What happens if Bing blocks a request?** The run fails with a clear error rather than reporting zero results, so a blocked or changed page is never mistaken for "nothing found".
- **Can I search a specific country?** Yes. Set `market`, for example `en-GB`, and optionally use a proxy in that country.

### 🔗 More scrapers by Anyx

- [Web Content Scraper](https://apify.com/anyxsolutions/web-content-scraper)
- [Google AI Scraper](https://apify.com/anyxsolutions/google-ai-scraper)
- [Indeed Scraper](https://apify.com/anyxsolutions/indeed-scraper)
- [Similarweb Top Websites Scraper](https://apify.com/anyxsolutions/similarweb-top-websites-scraper)

### 🤝 Anyx Solutions

We build custom scrapers and data-extraction pipelines.

- Email: tantosthor@gmail.com

### 🖼 Image credit

Image credit: [www.bing.com](https://www.bing.com/search?q=web+scraping)

# Actor input Schema

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

Search terms to look up on Bing. One entry per query.

## `startUrls` (type: `array`):

Optional Bing search URLs to scrape directly, for example https://www.bing.com/search?q=example. Use this instead of Queries when you want full control over the search parameters.

## `maxItems` (type: `integer`):

Maximum number of results to return per query. Bing serves about ten results per query and does not paginate, so higher values will not return more. Add more queries to widen coverage.

## `resultType` (type: `string`):

How results are collected. "rss" uses Bing's feed output: fast, reliable, and needs no proxy, but returns about ten results per query. "html" reads the standard results page, supports more pages, and includes news dates, but usually requires a residential proxy.

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

Market code that sets the country and language of results, for example en-US or en-GB. Results also follow the location of your proxy.

## `language` (type: `string`):

Language code for the results page, for example en.

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

Apify proxy settings used for the run. The RSS result type works without a proxy. The HTML result type usually needs residential proxies.

## Actor input object example

```json
{
  "queries": [
    "openai funding round",
    "apple acquisition"
  ],
  "maxItems": 10,
  "resultType": "rss",
  "market": "en-US",
  "language": "en",
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `overview` (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": [
        "openai funding round",
        "apple acquisition"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("anyxsolutions/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": [
        "openai funding round",
        "apple acquisition",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("anyxsolutions/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": [
    "openai funding round",
    "apple acquisition"
  ]
}' |
apify call anyxsolutions/bing-search-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,anyxsolutions/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/rSRMGh1XshgS9QzIH/builds/obWbCT3HuoZ5hpkkk/openapi.json
