# Bing Maps Scraper (`aboo.script/bing-maps-scraper`) Actor

\[💰$2 / 1K] ⚡ Fast Bing Maps scraper. No login, no API key. Extract local businesses by keyword or Bing Maps URL: name, address, GPS, phone, website, socials, opening hours, amenities, ratings from Yelp and Tripadvisor, photos and recent reviews. Great for lead generation.

- **URL**: https://apify.com/aboo.script/bing-maps-scraper.md
- **Developed by:** [Aboo Script](https://apify.com/aboo.script) (community)
- **Security:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.40 / 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/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 Maps Scraper

![Bing Maps Scraper](https://i.ibb.co/C3zDBDdr/bing-maps-banner.png)

**Bing Maps Scraper** extracts local businesses and places from [Bing Maps](https://www.bing.com/maps) into clean, structured data you can download as JSON, CSV, Excel, or HTML. Type a search like "restaurants in Seattle" or paste a Bing Maps URL, and get the name, address, phone, website, coordinates, ratings, opening hours, amenities, photos, and recent reviews of every place. No account or login required.

### Introduction

[Bing Maps](https://www.bing.com/maps) is Microsoft's map and local search service. It lists millions of businesses and points of interest worldwide, with contact details, opening hours, and ratings collected from sources such as Yelp, Tripadvisor, and Booking.com.

This actor collects the same public information you see in your browser and turns it into a ready-to-use dataset. You can run it once, schedule it to run daily, or connect it to your own tools.

### What data can you extract from Bing Maps?

- 🏷️ Place name, category, and description
- 📍 Full address (street, city, state, postal code, country) with latitude and longitude
- 📞 Phone number, website, menu link, and social media profiles
- ⭐ Main rating and review count, plus ratings from every source (Yelp, Tripadvisor, Booking.com, and more) with the star distribution
- 💬 Recent reviews with author, date, rating, and text
- 🕒 Current open status and opening hours for each day of the week
- 🛎️ Amenities (Wi-Fi, outdoor seating, and more) and service options (dine-in, takeout, delivery)
- ✅ Whether the business has been claimed by its owner
- 🖼️ Main image and photo gallery
- 🔗 Direct Bing Maps link and place ID for every result

### Use Cases

- 🤝 **Lead generation**: build lists of local businesses with phone numbers, websites, and social profiles for outreach.
- 📈 **Market research**: compare how many businesses of a type exist in a city and how they are rated.
- 🕵️ **Competitor monitoring**: track ratings, reviews, and opening hours of competing locations.
- 🗂️ **Database building**: enrich your own directory or CRM with addresses, coordinates, and categories.
- 🤖 **AI and automation**: feed clean, structured data into spreadsheets, dashboards, or AI workflows.

### How to scrape Bing Maps step by step

1. Type what you are looking for into **Search queries** (for example "plumbers in Chicago"), or paste Bing Maps URLs into **Start URLs**.
2. Set **Maximum number of results** to how many places you want per URL or per query.
3. Click **Start** and wait for the run to finish.
4. Download your data in JSON, CSV, Excel, or HTML from the **Output** tab.

### Input

- **Start URLs**: Bing Maps URLs to scrape. Supported pages: search URLs that contain a search (such as `https://www.bing.com/maps?q=coffee+shops+in+new+york`) and single place URLs (such as `https://www.bing.com/maps?ss=ypid.YN47A3B2970B8A9457`).
- **Search queries**: what to search on Bing Maps, one per line, ideally with a location (for example "dentists in Austin"). Each query is scraped separately.
- **Maximum number of results**: how many places to collect for each start URL or search query.

You can use start URLs, search queries, or both in the same run.

### Input Examples

Scrape a Bing Maps search URL:

```json
{
  "startUrls": [{ "url": "https://www.bing.com/maps?q=coffee+shops+in+new+york" }],
  "maxResults": 5
}
```

Search by keywords:

```json
{
  "searchQueries": ["restaurants in Seattle"],
  "maxResults": 5
}
```

### Output

Each place is saved as one item in the dataset. Here is an example of a single item (long lists shortened):

```json
{
  "url": "https://www.bing.com/maps?ss=ypid.YNAD3BD6C14D6447C0",
  "id": "YNAD3BD6C14D6447C0",
  "title": "Le Pichet",
  "category": "French",
  "categories": ["French"],
  "address": "1933 1st Ave, Seattle, WA 98101",
  "street": "1933 1st Ave",
  "city": "Seattle",
  "state": "WA",
  "postalCode": "98101",
  "countryCode": "US",
  "latitude": 47.610740661621094,
  "longitude": -122.3426513671875,
  "phone": "+1 206-256-1499",
  "website": "http://www.lepichetseattle.com/",
  "rating": 4,
  "reviewCount": 1281,
  "ratingSource": "Yelp",
  "ratings": [
    {
      "source": "Yelp",
      "rating": 4,
      "reviewCount": 1281,
      "distribution": [
        { "stars": 5, "percentage": 54 },
        { "stars": 4, "percentage": 23 }
      ]
    },
    { "source": "Tripadvisor", "rating": 4.3, "reviewCount": 621, "distribution": [] },
    { "source": "Bringfido", "rating": 5, "reviewCount": 3, "distribution": [] }
  ],
  "openStatus": "Open · Closes 22:00",
  "openingHours": [
    { "day": "Monday", "hours": "10:00 - 21:00" },
    { "day": "Tuesday", "hours": "10:00 - 21:00" }
  ],
  "description": "Restaurant Le Pichet is an eating establishment that provides a range of food services for lunch and dinner.",
  "amenities": [],
  "serviceOptions": ["Dine-in", "Takeout / Delivery"],
  "socialProfiles": [
    { "name": "Facebook", "url": "https://www.facebook.com/Le-Pichet-116481725042170/" },
    { "name": "Instagram", "url": "https://www.instagram.com/lepichetseattle/" },
    { "name": "Wikipedia", "url": "https://en.wikipedia.org/wiki/Le_Pichet" }
  ],
  "menuUrl": "https://www.lepichetseattle.com/casse-croute",
  "isClaimed": true,
  "imageUrl": "https://www.bing.com/th?id=OLC.tCC0%2bW7d559i0w480x360&pid=Local",
  "photos": [
    "https://media-cdn.tripadvisor.com/media/photo-s/02/58/53/5e/quintessential-steamed.jpg",
    "https://d2dzi65yjecjnt.cloudfront.net/352663-1.jpg"
  ],
  "recentReviews": [
    {
      "source": "Yelp",
      "author": "Ryan L.",
      "date": "2026-10-17T00:00:00.000Z",
      "rating": 4,
      "text": "Le Pichet is a nice little bistro near pike place. Stopped in for a small post lunch hour snack and ordered the Pork Rilletes and baguette...",
      "url": "https://www.yelp.com/biz/le-pichet-seattle?hrid=8gnsWIjp89QCyDxRPNTRgg"
    }
  ],
  "scrapedAt": "2026-10-31T18:41:20.895Z"
}
```

You can download the dataset in JSON, CSV, Excel, XML, or HTML, or access it through the Apify API.

### Notes

- Bing Maps returns about 40 to 50 places per search. To collect more, split a broad search into smaller ones, for example by neighborhood or nearby town ("restaurants in Capitol Hill Seattle", "restaurants in Ballard Seattle").
- Always include a location in your search queries. A query without a location returns places near the scraper's server, not near you.
- For search URLs, the search text decides the location. The visible map area of a pasted URL is not used.
- Only Bing Maps search URLs and place URLs are supported; other URLs are skipped with a warning.
- A place that appears in several searches of the same run is saved only once.
- Recent reviews and star distribution come from the first rating source shown on the place card. Review texts are short previews, as shown on Bing Maps.
- Some places do not show a phone, website, rating, amenities, or opening hours. Missing values are returned as `null` or an empty list.

### Why use the Bing Maps Scraper?

- ✅ **No login needed**: works with public data only, so there is no account to manage.
- 📋 **Full place details**: every result includes contacts, hours, amenities, ratings from all sources, photos, and recent reviews, not just the name and address.
- 🧹 **Clean data**: numbers are real numbers, dates use one standard format, and text is free of HTML.
- 💸 **Pay for what you need**: set a result limit per URL or query and keep every run small and cheap.
- 🔄 **Ready for automation**: schedule runs, export to Google Sheets, or connect to Make, Zapier, and n8n.

### FAQ

#### How many results can I scrape?

You can set any number in **Maximum number of results**. The actor keeps going until it reaches your limit or Bing Maps has no more new places for that search. See **Notes** for the per-search limit.

#### Do I need a Bing or Microsoft account?

No. The actor only collects publicly available data. You do not need to log in or provide any account details.

#### Can I scrape data on a schedule?

Yes. Use Apify Schedules to run the actor every hour, day, or week, and get fresh data automatically.

#### Why are some fields empty?

Some places simply do not show every piece of information. When a field is not available on Bing Maps, it is returned as `null` or an empty list.

#### Can I request a new feature or filter?

Yes. Right now the actor supports start URLs and search queries. If you need other inputs, such as searching inside a map area or by category and radius, get in touch and they can be added.

#### Can I get a custom or private version?

Yes. The actor can be customized for your workflow, delivered as a private version, or a new scraper can be built for a different website. Use the contact details below.

### Need to scrape other map platforms?

- [Google Maps Photos Scraper](https://apify.com/aboo.script/google-maps-photos-scraper): collects the photo gallery of Google Maps places.
- [Google Maps Business Posts Scraper](https://apify.com/aboo.script/google-maps-business-posts-scraper): collects the updates and offers that businesses post on Google Maps.
- [Google Maps Contributor Scraper](https://apify.com/aboo.script/google-maps-contributor-scraper): collects reviews and ratings written by a Google Maps contributor.

***

**Need help or want a custom solution?**

- 📧 Email: aboo.script@gmail.com
- 🧩 More scrapers: [Apify profile](https://apify.com/aboo.script)

### Image Credit

Image credit: [Bing Maps](https://www.bing.com/maps)

# Actor input Schema

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

Bing Maps search URLs (with a q= query, optionally centered on an area with cp= and lvl=) or place URLs (with ss=ypid.).

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

What to search on Bing Maps, ideally with a location (e.g. "plumbers in Chicago"). Each query is scraped separately. Without a location, results are near the scraper's server.

## `maxResults` (type: `integer`):

Maximum number of places to scrape per start URL or search query. Bing Maps returns up to about 40-50 places per search.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://www.bing.com/maps?q=coffee+shops+in+new+york"
    }
  ],
  "searchQueries": [
    "restaurants in Seattle"
  ],
  "maxResults": 5
}
```

# 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 = {
    "startUrls": [
        {
            "url": "https://www.bing.com/maps?q=coffee+shops+in+new+york"
        }
    ],
    "searchQueries": [
        "restaurants in Seattle"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("aboo.script/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 = {
    "startUrls": [{ "url": "https://www.bing.com/maps?q=coffee+shops+in+new+york" }],
    "searchQueries": ["restaurants in Seattle"],
}

# Run the Actor and wait for it to finish
run = client.actor("aboo.script/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 '{
  "startUrls": [
    {
      "url": "https://www.bing.com/maps?q=coffee+shops+in+new+york"
    }
  ],
  "searchQueries": [
    "restaurants in Seattle"
  ]
}' |
apify call aboo.script/bing-maps-scraper --silent --output-dataset

```

## MCP server setup

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