# Bing Maps Scraper (`searchapi/bing-maps-scraper`) Actor

Extracts public place and business results from Bing Maps: names, addresses, phone numbers, websites, coordinates, ratings, review counts, opening hours, categories, and place IDs.

- **URL**: https://apify.com/searchapi/bing-maps-scraper.md
- **Developed by:** [Search API](https://apify.com/searchapi) (community)
- **Categories:** Developer tools, Lead generation, Automation
- **Stats:** 2 total users, 1 monthly users, 65.5% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.99 / 1,000 search 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/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

### What does Bing Maps Business Listings Scraper do?

**Bing Maps Business Listings Scraper** is a public Bing Maps API alternative for collecting place and business listings from [Bing Maps](https://www.bing.com/maps). It extracts source-backed names, stable IDs, addresses, coordinates, categories, phones, websites, ratings, hours, images, and search metadata without accessing private or login-protected data.

### Why use Bing Maps Business Listings Scraper?

Use it for local market research, lead enrichment, location intelligence, directory monitoring, or geographic datasets. Apify adds scheduling, API access, integrations, monitored runs, datasets, and optional proxy configuration.

### What data can Bing Maps Business Listings Scraper extract?

| Field | Type | Description |
| --- | --- | --- |
| `uid` / `poiId` | string | Stable Bing listing identifier |
| `name` | string | Place or business name |
| `address` | string | Public address |
| `latitude`, `longitude` | number | Public map coordinates |
| `phone`, `website` | string | Public contact details when available |
| `rating`, `reviewCount` | number | Displayed rating metadata |
| `category`, `hours` | string | Business category and hours |
| `searchQuery`, `position`, `page` | mixed | Search provenance |

### How to scrape Bing Maps

1. Open the Actor input tab.
2. Use `searchQueries` for fast structured batch mode, or legacy `query` for browser fallback.
3. Set `maxItems`, `maxPages`, and optional rating/category filters.
4. Start the Actor and inspect the dataset.
5. Download results as JSON, CSV, Excel, XML, or another supported format.

### How much will it cost to scrape Bing Maps?

Cost depends on current Actor pricing and runtime. Structured mode is generally cheaper than browser mode. Review the pricing tab and start with a bounded sample.

### Input

See the input tab for all options. Example:

```json
{"searchQueries":["coffee shops in Austin, TX"],"maxItems":5,"maxPages":1,"resultsPerPage":10,"market":"en-US","language":"en-US","countryCode":"US"}
```

### Output

Every accepted record has a stable Bing ID, name, map link, search provenance, and timestamp. Optional fields are omitted when unavailable. Download the dataset as JSON, HTML, CSV, Excel, or another supported format.

### Tips and advanced options

- Batch mode deduplicates by Bing place ID across queries and pages.
- Filters are applied after parsing public listings.
- Access-control pages fail explicitly and are never stored as businesses.

### FAQ, disclaimer, and support

#### Why are some contact or rating fields absent?

Bing does not expose every optional value for every listing. The Actor omits unavailable values rather than fabricating placeholders.

#### Can I use the Actor programmatically?

Yes. Use the Actor API tab or an Apify client library and report reproducible issues through the Issues tab.

Our Actors collect publicly displayed business information only. Results may still contain personal data protected by the GDPR or similar laws. Use personal data only with a legitimate reason and consult legal counsel when unsure.

# Actor input Schema

## `query` (type: `string`):

The place or business type to search for on Bing Maps (e.g. 'restaurants in New York', 'hotels in Chicago')

## `searchQueries` (type: `array`):

Optional batch of public Bing Maps business queries. When supplied, the structured overlay endpoint mode is used.

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

Maximum number of place results to extract

## `maxPages` (type: `integer`):

Maximum public overlay pages per search query.

## `resultsPerPage` (type: `integer`):

Requested result count for each structured overlay page.

## `maxConcurrency` (type: `integer`):

Maximum number of batch requests in flight; the browser mode remains single-query.

## `maxRetries` (type: `integer`):

Bounded retries for temporary structured endpoint failures.

## `requestTimeoutMs` (type: `integer`):

Timeout for each structured endpoint request.

## `minRating` (type: `number`):

Keep structured business listings at or above this rating.

## `minReviewCount` (type: `integer`):

Keep structured business listings with at least this many reviews.

## `categoryIncludes` (type: `string`):

Case-insensitive category filter for structured business results.

## `includePermanentlyClosed` (type: `boolean`):

Include listings that the structured response explicitly marks permanently closed.

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

Bing structured result language, for example en-US.

## `countryCode` (type: `string`):

Two-letter uppercase Bing market code for structured results.

## `requestDelayMs` (type: `integer`):

Minimum spacing between structured endpoint request starts.

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

Bing market code (language-country), e.g. en-US, en-GB, de-DE

## `headless` (type: `boolean`):

Run browser in headless mode (recommended for performance)

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

Proxy settings for the scraper

## Actor input object example

```json
{
  "query": "restaurants in New York",
  "maxItems": 50,
  "maxPages": 5,
  "resultsPerPage": 25,
  "maxConcurrency": 2,
  "maxRetries": 2,
  "requestTimeoutMs": 30000,
  "includePermanentlyClosed": false,
  "language": "en-US",
  "countryCode": "US",
  "requestDelayMs": 500,
  "market": "en-US",
  "headless": true,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

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

Rich normalized Bing Maps place records with contact, location, review, hours, media, and search metadata.

# 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 = {
    "query": "restaurants in New York",
    "maxItems": 50,
    "market": "en-US"
};

// Run the Actor and wait for it to finish
const run = await client.actor("searchapi/bing-maps-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 = {
    "query": "restaurants in New York",
    "maxItems": 50,
    "market": "en-US",
}

# Run the Actor and wait for it to finish
run = client.actor("searchapi/bing-maps-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 '{
  "query": "restaurants in New York",
  "maxItems": 50,
  "market": "en-US"
}' |
apify call searchapi/bing-maps-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,searchapi/bing-maps-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/4dqhikv9NM5uXhuNW/builds/gk8TZKZNZIz0udIw9/openapi.json
