# Bing Search Scraper: Results, Rankings & Related Searches (`vncntlabs/bing-search-scraper`) Actor

Scrape Bing search results for up to 1,000 queries: organic rankings with position, title, URL, domain and snippet, plus related searches, ads and shopping when present. Any country, city, language or device. Pay per page.

- **URL**: https://apify.com/vncntlabs/bing-search-scraper.md
- **Developed by:** [VNCNT Labs](https://apify.com/vncntlabs) (community)
- **Categories:** SEO tools, MCP servers
- **Security:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 50.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.00 / 1,000 search results page (10 results)s

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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 Scraper: Results, Rankings & Related Searches

You already check Google. Your buyers also search Bing. Put in your queries and get **Bing's results page as clean data**: every organic result with its **position, title, URL, domain and snippet**, plus one summary row per query with **related searches, ads, shopping carousels and image blocks** when Bing showed them.

Search from **any country, city or region, in any language, on desktop or mobile**, from the top 10 to the top 100. Up to 1,000 queries per run. No proxies, no CAPTCHAs, no Bing login. **$2 per 1,000 result pages**, and you only pay for pages Bing actually had.

Built for:

- **SEO and content teams**: see who ranks on Bing for the same keywords you track on Google, and which related searches Bing suggests.
- **Agencies and freelancers**: pull local Bing results for a client's city without a VPN.
- **Etsy, Amazon and print-on-demand sellers**: find the guides, marketplaces and competitors that own Bing in your niche.
- **Developers and AI agents**: same shape as our [Google SERP Scraper](https://apify.com/vncntlabs/google-serp-scraper), so switching engines is a one-field change.

### What you get

| Row (`type`) | What's in it | Charged |
|---|---|---|
| `organic` | `query`, `position`, `absolutePosition`, `page`, `title`, `url`, `domain`, `breadcrumb`, `websiteName`, `description`, `date`, `sitelinks`, `country`, `location`, `device`, `checkedAt` | covered by the page price |
| `serp` (one per query) | `status`, `organicCount`, `topDomains`, `relatedSearches`, `ads`, `shopping`, `images`, `peopleAlsoAsk` (when Bing shows it), `localPack` (when present), `serpFeatures`, `totalResults`, `spellCorrection`, `bingUrl`, `pagesCharged`, `chargedEvents` | `search-page` per page of 10 results |
| `skipped` | inputs that weren't searched, with the reason (duplicates, search operators, too long) | free |

Turn off **One row per organic result** to get one row per query with the results nested in `organicResults`.

**Bing vs Google:** Bing's advanced SERP often returns fewer feature types than Google. AI Overview, People Also Ask and the local pack are frequently absent. Shopping and image blocks show up more often. Empty fields mean Bing did not show that block for that query, not a bug.

### Input examples

Page 1 for a few seller queries (standard queue, cheap for owner tests):

```json
{ "queries": ["how to sell on etsy", "best print on demand companies", "standing desk"], "resultsPerQuery": 10 }
```

Fast mode (live endpoint, about 10-30 seconds):

```json
{ "queries": ["standing desk"], "resultsPerQuery": 10, "fastMode": true }
```

Top 30 local results on mobile:

```json
{ "queries": ["plumber near me"], "resultsPerQuery": 30,
  "location": "Columbus,Ohio,United States", "device": "mobile" }
```

**Tips**

- **Results per query** is your cost dial: top 10 = 1 page ($0.002), top 100 = 10 pages ($0.02). Bing sometimes has fewer pages than you ask for, and you're only charged for the pages it returned.
- Without fast mode, results usually take under a minute (standard queue with priority 1). Fast mode uses the live endpoint for about $0.0012 more per page.
- Plain queries only. `site:`, `intitle:`, `inurl:` and similar operators are skipped (free) because the data provider bills them at 5x.
- For a city, use `City,Region,Country`, like `Austin,Texas,United States`.

### Output example

An organic row (real output, Nov 5 2026, query "standing desk"):

```json
{
  "type": "organic", "query": "standing desk", "position": 1, "absolutePosition": 2, "page": 1,
  "title": "Amazon.com: Standing Desk",
  "url": "https://www.amazon.com/standing-desk/s?k=standing%20desk",
  "domain": "amazon.com", "breadcrumb": "https://www.amazon.com › standing-desk",
  "description": "Electric standing desks with memory presets and sturdy frames for any home office setup.",
  "country": "United States", "device": "desktop", "checkedAt": "2026-11-05T14:31:00Z"
}
```

### Pricing

| Event | Price | When |
|---|---|---|
| Actor start | $0.005 | once per run |
| Search results page (10 results) | $0.002 | per page Bing returned for a query |
| Fast mode (per page) | $0.0012 | only when fast mode is on, per charged page |

Empty, failed and skipped queries are free. Free Apify plans: 20 queries and the top 30 results per query.

### FAQ

#### Why do some Bing queries look off?

Bing's result page can change by device, city and time, and the licensed DataForSEO Bing index sometimes returns thin or odd pages for a query. Try the same query again, switch country or city, or turn on fast mode (live). Our Google SERP Scraper is the better fit when you need Google-only features like AI Overviews and People Also Ask.

**Is this affiliated with Bing or Microsoft?** No. Results come through DataForSEO's licensed Bing Organic SERP API.

**Why are AI Overview / People Also Ask empty?** Bing often does not show those blocks. The fields stay in the schema so you can use the same code as Google SERP.

**How is this different from your Google SERP Scraper?** Same input shape and almost the same output. Engine is Bing; feature coverage is thinner; shopping/images show up more.

**Do you store my queries?** Only in your Apify run storage, under your account.

### Support

Questions or bugs: <hello@vncntlabs.com>. Built by [VNCNT Labs](https://vncntlabs.com).

# Actor input Schema

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

One Bing search per line, up to 1,000. Plain queries only: search operators like <code>site:</code> or <code>intitle:</code> are skipped.

## `resultsPerQuery` (type: `integer`):

How deep to go: 10 = page 1, 100 = the top 100. Rounded up to a multiple of 10. Each 10 results is one charged page; you only pay for pages Bing actually had.

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

Bing country edition.

## `location` (type: `string`):

For local results, e.g. <code>Austin,Texas,United States</code> or <code>London,England,United Kingdom</code> (city,region,country). Leave empty for country-wide results.

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

Optional language code (en, de, fr, es, pt-BR...). Defaults to the country's main language.

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

Desktop and mobile results often differ.

## `fastMode` (type: `boolean`):

Results in about 10-30 seconds via the live endpoint instead of the standard queue, at a small extra charge per page. Leave off for big or scheduled batches (standard + priority 1).

## `organicRows` (type: `boolean`):

On: every organic result is its own dataset row (easy to export to a sheet), plus one summary row per query. Off: one row per query with the results nested in <code>organicResults</code>.

## Actor input object example

```json
{
  "queries": [
    "how to sell on etsy",
    "etsy seller handbook"
  ],
  "resultsPerQuery": 10,
  "country": "United States",
  "device": "desktop",
  "fastMode": false,
  "organicRows": true
}
```

# Actor output Schema

## `overview` (type: `string`):

No description

## `serp` (type: `string`):

No description

## `all` (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": [
        "how to sell on etsy",
        "etsy seller handbook"
    ],
    "resultsPerQuery": 10,
    "fastMode": false
};

// Run the Actor and wait for it to finish
const run = await client.actor("vncntlabs/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": [
        "how to sell on etsy",
        "etsy seller handbook",
    ],
    "resultsPerQuery": 10,
    "fastMode": False,
}

# Run the Actor and wait for it to finish
run = client.actor("vncntlabs/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": [
    "how to sell on etsy",
    "etsy seller handbook"
  ],
  "resultsPerQuery": 10,
  "fastMode": false
}' |
apify call vncntlabs/bing-search-scraper --silent --output-dataset

```

## MCP server setup

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