# Bing Organic SERP Analyzer (`opspilot.cc/bing-serp-analyzer`) Actor

Get real-time Bing SERP results for any keyword. Returns top 100 organic results with detailed data.

- **URL**: https://apify.com/opspilot.cc/bing-serp-analyzer.md
- **Developed by:** [wang wei](https://apify.com/opspilot.cc) (community)
- **Categories:** SEO tools, E-commerce
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

from $5.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.

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

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use 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 Organic SERP Analyzer

### Overview

This Actor retrieves real-time organic search results from Bing for a given keyword, location, and language. It extracts the top organic listings together with all major SERP features (answer boxes, featured snippets, people also ask, local packs, shopping, videos, news, AI overviews, etc.). The results can be used for SEO monitoring, competitor analysis, content research, or rank tracking.

Unlike simulated or cached data, this Actor performs a live request to Bing and returns the exact HTML‑parsed results as they appear to a user.

### Features

✅ **Bing organic SERP** (up to 100 results per request, configurable depth)

✅ **Supports desktop and mobile devices**

✅ **Extracts all standard SERP elements:**
- Organic listings (title, URL, description, breadcrumb, sitelinks, dates)
- Paid results (ads)
- Featured snippets (with tables, images, videos)
- Answer boxes
- People also ask (expanded Q&A)
- Related searches
- Local packs (businesses, ratings, phone, claimed status)
- Image & video packs
- Shopping results (prices, marketplace)
- Top stories / news
- Jobs, events, recipes, carousels
- AI Overview (Bing's generative answer with references)

✅ **Returns position (rank), URL, page title, meta description, and optional rectangle coordinates**

✅ **Full JSON output ready for further processing or storage**

### Input

| Field | Type | Description |
|-------|------|-------------|
| `keyword` | string (textfield) | Keyword to search (up to 700 characters) |
| `location_name` | textfield | Target location (e.g., "United States", "UK") |
| `language_name` | textfield | Target language (e.g., "English", "Spanish") |
| `depth` | number | Number of results (10-200, default 10) |
| `device` | select | Device type: desktop or mobile |

### Location Support

Fuzzy matching supports:
- Full names: "United States", "United Kingdom"
- Abbreviations: "USA", "UK", "GB", "US"
- Common names: "Holland" → Netherlands

### Language Support

Fuzzy matching supports:
- Full names: "English", "Spanish", "German"
- Abbreviations: "ENG", "SPA", "DEU"

### Output

| Field | Type | Description |
|-------|------|-------------|
| `type` | string | SERP element type (organic, paid, images, etc.) |
| `rank_group` | integer | Group rank in SERP |
| `rank_absolute` | integer | Absolute position in SERP |
| `domain` | string | Domain of the result |
| `title` | string | Title of the result |
| `url` | string | URL of the result |
| `description` | string | Description/snippet |
| `breadcrumb` | string | Breadcrumb navigation |
| `rating` | object | Rating data (if available) |
| `highlighted` | array | Keywords highlighted in snippet |

### SERP Element Types

- `organic` - Standard organic search results
- `paid` - Paid advertisements
- `answer_box` - Direct answer boxes
- `featured_snippet` - Featured snippets
- `related_searches` - Related search queries
- `people_also_search` - People also search for
- `people_also_ask` - People also ask questions
- `local_pack` - Local business listings
- `images` - Image results
- `video` - Video results
- `top_stories` - News/top stories
- `shopping` - Shopping results
- `jobs` - Job listings
- `events` - Event listings
- `recipes` - Recipe results
- `ai_overview` - Bing AI-generated overview

### Use Cases

| Scenario | Description |
|---------|-------------|
| Rank tracking | Monitor your own or competitor positions for target keywords over time. |
| SERP feature analysis | Understand which rich results (featured snippets, people also ask, local packs, AI overviews) appear for your keywords and optimise accordingly. |
| Competitor research | Extract the top 100 organic results for a keyword to see what content ranks well, what titles and descriptions competitors use, and what structured data they implement. |
| Local SEO | Retrieve local pack data (business name, rating, phone, claimed status) for location‑based keywords. |
| Content ideation | Use the "related searches" and "people also ask" blocks to discover questions and topics your audience searches for. |
| SERP volatility monitoring | Run daily scrapes to detect ranking changes or new SERP features (e.g., AI overview appearing or disappearing). |

### Limitations & Best Practices

**Respect Bing's terms of service** – This Actor simulates a real user request; do not use it for aggressive crawling or in ways that might violate Bing's acceptable use policy.

**Rate limiting** – The underlying API allows up to 2000 requests per minute, but we recommend keeping a reasonable delay (e.g., 1‑2 seconds) between calls to avoid any temporary blocking.

**Location and language** – Always provide either a location name or a location code. If omitted, the default is "Worldwide" / English, but results may be less accurate.

### Example Workflow

1. Use the Actor with a list of seed keywords (run sequentially or in parallel).
2. Parse the output and extract:
   - Organic URLs and their positions.
   - Featured snippet content (if present).
   - People also ask questions (great for FAQ schema).
3. Store the results in a dataset or upload to Google Sheets / Airtable using Apify integrations.
4. Compare across multiple runs to track ranking progress.

### Legal Disclaimer

This tool is provided "as is" for legitimate SEO and research purposes. Users are solely responsible for complying with Bing's terms of service and any applicable laws. The maintainers are not liable for misuse of this Actor.

# Actor input Schema

## `keyword` (type: `string`):

The keyword to search on Bing (up to 700 characters).
## `location_name` (type: `string`):

Target location (e.g., 'United States', 'UK'). Supports fuzzy matching.
## `language_name` (type: `string`):

Target language (e.g., 'English', 'Spanish'). Supports fuzzy matching.
## `depth` (type: `integer`):

Number of results to return (10-200, default 10). More results may incur additional charges.
## `device` (type: `string`):

Device type for search results.

## Actor input object example

```json
{
  "keyword": "keyword research",
  "location_name": "United States",
  "language_name": "English",
  "depth": 10,
  "device": "desktop"
}
````

# Actor output Schema

## `serpData` (type: `string`):

Dataset containing Bing SERP results with organic, paid, and other element types

# 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 = {
    "keyword": "keyword research"
};

// Run the Actor and wait for it to finish
const run = await client.actor("opspilot.cc/bing-serp-analyzer").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 = { "keyword": "keyword research" }

# Run the Actor and wait for it to finish
run = client.actor("opspilot.cc/bing-serp-analyzer").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{
  "keyword": "keyword research"
}' |
apify call opspilot.cc/bing-serp-analyzer --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=opspilot.cc/bing-serp-analyzer",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Bing Organic SERP Analyzer",
        "description": "Get real-time Bing SERP results for any keyword. Returns top 100 organic results with detailed data.",
        "version": "0.1",
        "x-build-id": "B6iccKhxsSBLaIry0"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/opspilot.cc~bing-serp-analyzer/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-opspilot.cc-bing-serp-analyzer",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/opspilot.cc~bing-serp-analyzer/runs": {
            "post": {
                "operationId": "runs-sync-opspilot.cc-bing-serp-analyzer",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/opspilot.cc~bing-serp-analyzer/run-sync": {
            "post": {
                "operationId": "run-sync-opspilot.cc-bing-serp-analyzer",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "keyword"
                ],
                "properties": {
                    "keyword": {
                        "title": "Keyword",
                        "type": "string",
                        "description": "The keyword to search on Bing (up to 700 characters)."
                    },
                    "location_name": {
                        "title": "Location",
                        "type": "string",
                        "description": "Target location (e.g., 'United States', 'UK'). Supports fuzzy matching.",
                        "default": "United States"
                    },
                    "language_name": {
                        "title": "Language",
                        "type": "string",
                        "description": "Target language (e.g., 'English', 'Spanish'). Supports fuzzy matching.",
                        "default": "English"
                    },
                    "depth": {
                        "title": "Results Depth",
                        "type": "integer",
                        "description": "Number of results to return (10-200, default 10). More results may incur additional charges.",
                        "default": 10
                    },
                    "device": {
                        "title": "Device Type",
                        "enum": [
                            "desktop",
                            "mobile"
                        ],
                        "type": "string",
                        "description": "Device type for search results.",
                        "default": "desktop"
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
