# Bing Search API: Web Search Results (SERP) for Any Query (`sauliusautomatesit/bing-search-api`) Actor

Bing web search results for any list of queries: title, URL, snippet, date, site and position, in any market, with freshness and safe-search filters. A drop-in for the retired Bing Web Search API. $1 per 1,000 results.

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

## Pricing

from $0.85 / 1,000 search 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: web search results for any query

Get [Bing](https://www.bing.com) web search results for any list of queries, in bulk. Every result comes with its position, title, URL, domain, snippet, date and the site name Bing shows, for the market you choose (`en-US`, `en-GB`, `de-DE`, `ja-JP`...).

Microsoft retired the official Bing Web Search API in August 2025. This Actor gives you the same core answer, the organic results, as clean JSON with no Azure account, no API key and no browser. **$1 per 1,000 results**, and queries that find nothing cost nothing.

### What you can use it for

- **Web search for AI agents and RAG**: give your agent or LLM app fresh web results through the API or the Apify MCP server.
- **Rank tracking**: schedule a run every day for your keywords and see where your pages sit on Bing, which also powers Yahoo search and much of DuckDuckGo.
- **Brand monitoring**: see which pages Bing ranks for your brand and your competitors' names, every day.
- **SEO and content research**: who ranks for a topic in each market, with what titles and snippets.
- **Bulk research**: thousands of keywords in one run, with the domains that rank for each.

### How to use it

1. Put one search per line in **Search queries**, in plain words.
2. Optional: **Market** (language-COUNTRY, default `en-US`) and **Results per query**.
3. Run it and download the results as JSON, CSV or Excel, or read them through the API.

#### Input example

```json
{
  "queries": ["best crm software", "web scraping tools", "apify"],
  "market": "en-US",
  "maxResultsPerQuery": 10
}
```

### Output

One item per organic result, in Bing's order:

```json
{
  "query": "best crm software",
  "position": 1,
  "title": "10 Best CRM Software Of 2026 – Forbes Advisor",
  "url": "https://www.forbes.com/advisor/business/software/best-crm-software/",
  "domain": "forbes.com",
  "siteName": "forbes.com",
  "displayUrl": "https://www.forbes.com › advisor › business › software › best-crm-software",
  "snippet": "Compare top CRM options to find the best fit for your needs and budget, and explore features, pricing and support …",
  "date": "Sep 16, 2026",
  "market": "en-US",
  "totalResultsEstimate": 7760,
  "searchUrl": "https://www.bing.com/search?q=best+crm+software&setlang=en-US&cc=US&mkt=en-US",
  "scrapedAt": "2026-10-03T18:00:00.000Z"
}
```

- `url` is the real page address, not a Bing redirect.
- `date` is the date Bing shows next to the snippet, when it shows one.
- `totalResultsEstimate` is Bing's own "About N results" figure.

The run summary (queries, results delivered, queries without results, queries asked again, failures) is saved as `OUTPUT` in the run's key-value store.

### Pricing

Pay per result, no subscription:

| Event | Price |
|---|---|
| Search result | $0.001 ($1 per 1,000 results) |
| Actor start | $0.00005 |

A query with 10 results costs $0.01. 1,000 queries with 10 results each cost about $10. Queries that return nothing are free. Bronze, Silver and Gold Apify plans get 5%, 10% and 15% off. Proxy and compute are included.

### Use it from code

#### API (cURL)

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

#### Python

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_TOKEN")
run = client.actor("sauliusautomatesit/bing-search-api").call(run_input={
    "queries": ["best crm software", "web scraping tools"],
    "market": "en-US",
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item["position"], item["title"], item["url"])
```

#### JavaScript

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

const client = new ApifyClient({ token: 'YOUR_TOKEN' });
const run = await client.actor('sauliusautomatesit/bing-search-api').call({ queries: ['best crm software'] });
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items.map((r) => `${r.position}. ${r.title} ${r.url}`));
```

#### MCP (Claude, Cursor, any MCP client)

Add `https://mcp.apify.com/?tools=sauliusautomatesit/bing-search-api` as a remote MCP server and your agent can search Bing as a tool.

### Limits, honestly

- **Up to 10 results per query.** Bing gives automated clients its first results page only; the "next page" returns the same results again. For more coverage, split a topic into several more specific queries.
- **Plain keyword search.** For automated clients Bing ignores search operators (`site:`, quotes, `-exclude`) and the date filter, so this Actor does not offer them.
- Organic web results only: no ads, images, videos, news carousels or "people also ask" boxes.
- Bing sometimes shows 7 to 9 organic results, and now and then an answer that has nothing to do with the query. The Actor checks every answer, asks again on a fresh IP and keeps the best one, so a few queries may still have fewer than 10 results.
- Results reflect what Bing shows an anonymous visitor in the chosen market, without personalisation.

### Related Actors

- [Google Trends API](https://apify.com/sauliusautomatesit/google-trends-api): search interest over time, by region, related and rising queries.
- [Google Ads Transparency API](https://apify.com/sauliusautomatesit/google-ads-transparency-api): every ad an advertiser runs on Google.
- [YouTube Transcript Scraper](https://apify.com/sauliusautomatesit/youtube-transcript-scraper): transcripts of any YouTube video, channel or playlist.

### FAQ

**Is this the official Bing API?** No. Microsoft retired the Bing Search APIs on 11 August 2025. This Actor reads Bing's public results page and returns the organic results as structured data.

**Do I need a Microsoft or Azure account?** No. You only need an Apify account.

**Can I search in other countries and languages?** Yes: set **Market** to any Bing market, for example `en-GB`, `de-DE`, `fr-FR`, `es-ES`, `it-IT`, `ja-JP`, `pt-BR`.

**How fast is it?** About one second per query, 5 queries in parallel by default (up to 20).

**Is it legal?** It collects publicly visible search results. You are responsible for how you use the data and for complying with the laws that apply to you.

# Actor input Schema

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

One search per line, in plain words: `best crm software`, `apify web scraping`, `how to bake sourdough`. Bing ignores search operators such as `site:` and quotes for automated clients.

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

Language and country of the results, as language-COUNTRY: `en-US`, `en-GB`, `de-DE`, `fr-FR`, `es-ES`, `ja-JP`, `pt-BR` and so on.

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

How many organic results to keep per query, from the top. Bing gives automated clients its first page only, so the most is 10.

## `concurrency` (type: `integer`):

How many queries run at the same time.

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

Apify Proxy is used by default and is included in the price. Change only if you know you need to.

## Actor input object example

```json
{
  "queries": [
    "best crm software"
  ],
  "market": "en-US",
  "maxResultsPerQuery": 10,
  "concurrency": 5,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

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

One item per organic result, in Bing's order. Download as JSON, CSV or Excel, or read it from this API endpoint.

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

Queries run, results delivered, queries without results and failures.

# 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": [
        "best crm software"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("sauliusautomatesit/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": ["best crm software"] }

# Run the Actor and wait for it to finish
run = client.actor("sauliusautomatesit/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": [
    "best crm software"
  ]
}' |
apify call sauliusautomatesit/bing-search-api --silent --output-dataset

```

## MCP server setup

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