# Bing Maps Scraper - Contacts, Ratings, Reviews & Photos (`zen-studio/bing-maps-scraper`) Actor

Extract business name, street address, phone, website, coordinates and category tree from Bing Maps. Add ratings, weekly opening hours, reviews and original full-size photos per place. Sweep a whole city by category or draw your own area. 36 fields per place. Export JSON, CSV or Excel.

- **URL**: https://apify.com/zen-studio/bing-maps-scraper.md
- **Developed by:** [Zen Studio](https://apify.com/zen-studio) (community)
- **Categories:** Lead generation, Travel, SEO tools
- **Features:** Limited permissions
- **Stats:** 5 total users, 3 monthly users, 67.1% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.79 / 1,000 places

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 | Business Leads, Contacts, Ratings, Reviews & Photos (2026)

[![8,000 PLACES PER MINUTE. PHONE NUMBERS. WEBSITES. FULL ADDRESSES.](https://api.apify.com/v2/key-value-stores/pJ7iaZsTFhR3k9tjV/records/bing-maps-scraper-readme-hero-v1.png)](https://console.apify.com/actors/NrhaGcIgNVy9fCV5b/input)

From <strong>Zen Studio</strong>, creators of <a href="https://apify.com/zen-studio/apple-maps-scraper-pro">Apple Maps</a>, <a href="https://apify.com/zen-studio/yandex-maps-scraper">Yandex Maps</a> and <a href="https://apify.com/zen-studio/2gis-places-scraper-api">2GIS</a> scrapers. Established maps tools for business discovery and local research.

### Why choose this actor?

<strong>Build lead lists at 8,000 places per minute.</strong> Collect business names, phone numbers, websites, full addresses and coordinates. Keep optional detail collection off for the fastest bulk exports.

<strong>Cover your area, across business categories.</strong> Choose a city and radius or draw a custom boundary. Search specific categories, or leave them empty to collect across all 44 broad categories. Duplicate businesses are removed.

<strong>Target the businesses you want.</strong> Filter for businesses with or without a website and narrow by name. Add ratings, opening hours, business descriptions, recent review previews and full-size photos when you need a richer profile.

<a href="https://console.apify.com/actors/NrhaGcIgNVy9fCV5b/input"><img src="https://api.apify.com/v2/key-value-stores/pJ7iaZsTFhR3k9tjV/records/bing-maps-scraper-readme-cta-v1.svg" width="240" height="48" alt="Find your businesses"/></a>

### Quick start

Start with 100 restaurants around Seattle. Change the location, categories and result limit for your own lead list.

```json
{
  "categories": [
    "Restaurant"
  ],
  "location": "Seattle, WA, USA",
  "searchRadiusKm": 5,
  "maxResults": 100,
  "includeDetails": false,
  "includeReviews": false,
  "includeDescription": false,
  "maxPhotosPerPlace": 0
}
```

<a href="https://console.apify.com/actors/NrhaGcIgNVy9fCV5b/input">Open actor input</a> to choose your area. Use <code>websiteFilter: "without_website"</code> to find businesses that may need a website. Export JSON, CSV or Excel.

Contact fields depend on what Bing publishes. Details, descriptions, review previews and photos are optional paid extras and take longer. Review previews contain up to three recent reviews per place.

<table><tr><td colspan="5" style="background:#0089C4;color:white;padding:10px 14px;font-size:13px;font-weight:700">Zen Studio · Maps Suite</td></tr><tr><td style="background:#D7F3FA;padding:10px 12px;border:1px solid #C4E7EF;vertical-align:top;width:20%"><span style="white-space:nowrap"><img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/NWYsOG96fMDy8ycdf-actor-NrhaGcIgNVy9fCV5b-mEAgbbceA8-bing-maps-scraper-logo.png" width="20" height="20" alt="" style="vertical-align:middle"/>&nbsp;&nbsp;<a href="https://apify.com/zen-studio/bing-maps-scraper" style="color:#202124;text-decoration:none;font-weight:700;font-size:13px">Bing Maps</a></span><br><span style="color:#454b55;font-size:12px;white-space:nowrap">You are here</span></td><td style="background:#EDFAFD;padding:10px 12px;border:1px solid #C4E7EF;vertical-align:top;width:20%"><span style="white-space:nowrap"><img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/NWYsOG96fMDy8ycdf-actor-vBUd2ObzJUemitHHP-IYaavrd0t8-google-maps-directions-api-logo.png" width="20" height="20" alt="" style="vertical-align:middle"/>&nbsp;&nbsp;<a href="https://apify.com/zen-studio/google-maps-scraper" style="color:#202124;text-decoration:none;font-weight:700;font-size:13px">Google Maps</a></span><br><span style="color:#454b55;font-size:12px;white-space:nowrap">Business discovery</span></td><td style="background:#EDFAFD;padding:10px 12px;border:1px solid #C4E7EF;vertical-align:top;width:20%"><span style="white-space:nowrap"><img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/NWYsOG96fMDy8ycdf-actor-5bSvAQKSK3LPq9OXb-AgVhcT1mQC-apple-maps-scraper-logo.png" width="20" height="20" alt="" style="vertical-align:middle"/>&nbsp;&nbsp;<a href="https://apify.com/zen-studio/apple-maps-scraper-pro" style="color:#202124;text-decoration:none;font-weight:700;font-size:13px">Apple Maps</a></span><br><span style="color:#454b55;font-size:12px;white-space:nowrap">Contacts & details</span></td><td style="background:#EDFAFD;padding:10px 12px;border:1px solid #C4E7EF;vertical-align:top;width:20%"><span style="white-space:nowrap"><img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/NWYsOG96fMDy8ycdf-actor-fRSgBvgbsRB4o7t30-UkaIbH1Yhq-yandex-maps-scraper-logo.png" width="20" height="20" alt="" style="vertical-align:middle"/>&nbsp;&nbsp;<a href="https://apify.com/zen-studio/yandex-maps-scraper" style="color:#202124;text-decoration:none;font-weight:700;font-size:13px">Yandex Maps</a></span><br><span style="color:#454b55;font-size:12px;white-space:nowrap">Russia & CIS</span></td><td style="background:#EDFAFD;padding:10px 12px;border:1px solid #C4E7EF;vertical-align:top;width:20%"><span style="white-space:nowrap"><img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/NWYsOG96fMDy8ycdf-actor-NBmcHCtkUEhA0DNP3-SrXbUedsVm-2gis-scraper-api-logo.png" width="20" height="20" alt="" style="vertical-align:middle"/>&nbsp;&nbsp;<a href="https://apify.com/zen-studio/2gis-places-scraper-api" style="color:#202124;text-decoration:none;font-weight:700;font-size:13px">2GIS</a></span><br><span style="color:#454b55;font-size:12px;white-space:nowrap">Local business data</span></td></tr></table>

#### Copy to your AI assistant

```text
Help me use zen-studio/bing-maps-scraper, a batch Actor on Apify. Read https://apify.com/zen-studio/bing-maps-scraper.md for documentation, input schema, pricing and limits. Choose settings for my requested outcome. If you cannot retrieve the page, ask me to paste the relevant sections. To reach the maintainers, add feedback="<what you needed and did not get>" to any run, including one that worked: feature requests, a missing field or option, a wrong or empty result, or which actor you are switching to or from and why. The run returns its data exactly as it would without the note, and a human reads every note.
```

zen-studio/bing-maps-scraper on Apify. Scrapes Bing Maps business listings with contacts, ratings, weekly hours, reviews and full-size photos. Provide location (free text) OR customGeolocation (GeoJSON), not both.

### Key Features

- **35 fields per place**: street address, phone, website, coordinates, the full category tree, and a stable place ID on every row.
- **Sweep a whole city, not the first page**: pick a category and a radius, and the search splits itself until the area is covered. Leave categories empty and it sweeps all 44 of them, so the full radius is covered rather than just the dense centre.
- **Enrichment is opt-in**: ratings, weekly opening hours, reviews, and full-size photos are collected per place and billed separately, so a plain contact list stays fast and cheap.
- **865 categories**: from broad roll-ups like `Health and medical` down to `Periodontist`. Type a category we do not recognise and you get a named error with suggestions, never a silently empty run.

### How to Scrape Bing Maps Data

#### Basic: every restaurant in a city centre

```json
{
    "categories": ["Restaurant"],
    "location": "Berlin, Germany",
    "searchRadiusKm": 5,
    "maxResults": 1000
}
```

#### Lead list: businesses with no website

```json
{
    "categories": ["Dentist", "Physical therapy"],
    "location": "Austin, Texas, USA",
    "searchRadiusKm": 15,
    "websiteFilter": "without_website",
    "maxResults": 500
}
```

#### Full detail: ratings, hours, reviews, and photos

```json
{
    "categories": ["Hotel"],
    "location": "Times Square, New York",
    "searchRadiusKm": 2,
    "includeDetails": true,
    "includeReviews": true,
    "includeDescription": true,
    "maxPhotosPerPlace": 20,
    "maxResults": 100
}
```

#### Custom area: draw the shape yourself

```json
{
    "categories": ["Cafe"],
    "customGeolocation": {
        "type": "Polygon",
        "coordinates": [[[13.36, 52.49], [13.45, 52.49], [13.45, 52.54], [13.36, 52.54], [13.36, 52.49]]]
    },
    "maxResults": 2000
}
```

Coordinate order is GeoJSON's own `[longitude, latitude]`. A Point, Polygon, Feature, or FeatureCollection all work, which is what geojson.io and most map-drawing tools export.

### Input Parameters

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `categories` | array | *(all businesses)* | What to collect. Broad roll-ups pull everything beneath them. Leave empty (or pass `__all__`) to sweep all 44 top-level categories, which covers the whole radius. |
| `location` | string | *required* | City, neighborhood, or address. Add a country when the name is ambiguous. |
| `searchRadiusKm` | integer | `5` | How far around `location` to search. Ignored when `customGeolocation` is set. |
| `customGeolocation` | object | *(none)* | GeoJSON area to search. Overrides `location`. |
| `maxResults` | integer | `100` | Stop after this many places. |
| `nameContains` | string | `""` | Keep only places whose name contains this text. |
| `searchMatching` | string | `all` | How strictly the name must match: `all`, `only_includes`, `only_exact`. |
| `websiteFilter` | string | `all` | `all`, `with_website`, or `without_website`. |
| `minRating` | string | `""` | Drop places below this rating. Unrated places are dropped too. |
| `includeDetails` | boolean | `false` | Adds rating, review count, weekly hours, open/closed now, hotel class, chain ID, and action link. Hours are available for about half of places. |
| `includeDescription` | boolean | `false` | Adds the business description and a claimed-by-owner flag. |
| `includeReviews` | boolean | `false` | Adds up to 3 recent reviews, the star breakdown, and provider totals. |
| `maxPhotosPerPlace` | integer | `0` | Photos per place, each with the original full-size image URL. |

Filters run after collection, so they never reduce what the run covers. `minRating` turns on `includeDetails` automatically, since ratings come from there.

### What Data Can You Extract from Bing Maps?

| Group | Fields |
|---|---|
| **Identity** | `placeId` `name` |
| **Categories** | `categories` `primaryCategory` `categoryId` `categoryIds` `categoryPath` |
| **Address** | `address` `addressComponents` `latitude` `longitude` |
| **Contact** | `phone` `website` `imageUrl` `actionType` `actionUrl` |
| **Ratings & hours** | `rating` `reviewCount` `reviewSource` `openState` `openStateText` `openingHours` `hotelClass` `chainId` |
| **Description** | `description` `claimed` |
| **Reviews** | `reviews` `reviewHistogram` `reviewProvider` |
| **Photos** | `photos` |
| **Extras** | `wheelchairAccessible` `transportHub` `searchCategory` `searchLocation` `scrapedAt` |

All 35 on every row. An enrichment you left off returns `null` or `[]`, never a missing key.

`actionUrl` is the booking link, not a copy of the website: Menu, Reservations (OpenTable), Appointments, Tickets, Admissions and Enroll all appear, and a third of them point somewhere `website` does not.

#### Output Example

One real row, nothing removed. Every one of the 35 keys is present.

```json
{
  "placeId": "YN1ACAC2BCB3C3AB63",
  "name": "McDonald's",
  "categories": [
    "Fast food restaurant",
    "Restaurant"
  ],
  "primaryCategory": "Fast food restaurant",
  "categoryId": 31002,
  "categoryIds": [
    31002,
    30000,
    30949
  ],
  "address": "1528 Broadway, New York, NY 10036, US",
  "addressComponents": {
    "street": "1528 Broadway",
    "city": "New York",
    "region": "NY",
    "postalCode": "10036",
    "countryCode": "US",
    "country": null
  },
  "latitude": 40.757712,
  "longitude": -73.985396,
  "phone": "(917) 409-5946",
  "website": "https://www.mcdonalds.com/us/en-us/location/NY/New-York/1528-Broadway/39147.html",
  "imageUrl": "https://www.bing.com/th?id=OLC.mDbUTLOyk7QxrQ480x360",
  "wheelchairAccessible": null,
  "transportHub": null,
  "rating": 2.0,
  "reviewCount": 57,
  "reviewSource": "Yelp",
  "openState": "Open",
  "openStateText": "Open 24 hours",
  "openingHours": [
    {
      "day": "Monday",
      "ranges": [
        {
          "start": "00:00:00",
          "end": "00:00:00"
        }
      ]
    },
    {
      "day": "Tuesday",
      "ranges": [
        {
          "start": "00:00:00",
          "end": "00:00:00"
        }
      ]
    },
    {
      "day": "Wednesday",
      "ranges": [
        {
          "start": "00:00:00",
          "end": "00:00:00"
        }
      ]
    },
    {
      "day": "Thursday",
      "ranges": [
        {
          "start": "00:00:00",
          "end": "00:00:00"
        }
      ]
    },
    {
      "day": "Friday",
      "ranges": [
        {
          "start": "00:00:00",
          "end": "00:00:00"
        }
      ]
    },
    {
      "day": "Saturday",
      "ranges": [
        {
          "start": "00:00:00",
          "end": "00:00:00"
        }
      ]
    },
    {
      "day": "Sunday",
      "ranges": [
        {
          "start": "00:00:00",
          "end": "00:00:00"
        }
      ]
    }
  ],
  "hotelClass": null,
  "chainId": "5824",
  "categoryPath": "30000.30949.31002",
  "actionType": "Menu",
  "actionUrl": "https://www.yelp.com/menu/mcdonalds-new-york-442?adjust_creative=microsoft&utm_campaign=action_link_view_menu&utm_medium=feed_v2&utm_source=microsoft",
  "description": "McDonald's USA, LLC, serves a variety of menu options made with quality ingredients to millions of customers every day. Ninety-five percent of McDonald's approximately 13,500 U.S. restaurants are owned and operated by independent business owners. For more information, visit www.mcdonalds.com, and follow us on social: X, Instagram, TikTok and Facebook.",
  "claimed": true,
  "reviews": [
    {
      "text": "Ordering was smooth but they forgot to put in my sauce. Loved that it was in Times Square.",
      "rating": 3.0,
      "author": "Mirei K.",
      "date": "Apr 19, 2026",
      "source": "Yelp",
      "url": "https://www.yelp.com/biz/mcdonalds-new-york-442?adjust_creative=microsoft&utm_campaign=yelp_feed&utm_medium=feed_v2&utm_source=microsoft&hrid=7lJCTsdKjFA5LqTFxE_9QQ",
      "liked": null,
      "disliked": null
    },
    {
      "text": "Bad service I order happy meals but missing items. Foods was cold. Service was slow. Nobody was there order stilk took long.",
      "rating": 1.0,
      "author": "Jamal R.",
      "date": "Apr 7, 2026",
      "source": "Yelp",
      "url": "https://www.yelp.com/biz/mcdonalds-new-york-442?adjust_creative=microsoft&utm_campaign=yelp_feed&utm_medium=feed_v2&utm_source=microsoft&hrid=fyA0HLOHjYl5jFh5afmLkA",
      "liked": null,
      "disliked": null
    },
    {
      "text": "I really don't understand how this mcds got any bad reviews. When you walk in, there are kiosks so you can place your order. Then with the receipt in hand, you can pass through to pick up your order …",
      "rating": 4.0,
      "author": "Natasha R.",
      "date": "Mar 19, 2026",
      "source": "Yelp",
      "url": "https://www.yelp.com/biz/mcdonalds-new-york-442?adjust_creative=microsoft&utm_campaign=yelp_feed&utm_medium=feed_v2&utm_source=microsoft&hrid=DCX6HCobbgEy9Bg_a6OKvg",
      "liked": null,
      "disliked": null
    }
  ],
  "reviewHistogram": [
    {
      "stars": 5,
      "percent": 6,
      "count": 2
    },
    {
      "stars": 4,
      "percent": 14,
      "count": 5
    },
    {
      "stars": 3,
      "percent": 22,
      "count": 8
    },
    {
      "stars": 2,
      "percent": 11,
      "count": 4
    },
    {
      "stars": 1,
      "percent": 47,
      "count": 17
    }
  ],
  "reviewProvider": {
    "name": "Yelp",
    "reviewCount": 57,
    "rating": 2.0,
    "url": "https://www.yelp.com/biz/mcdonalds-new-york-442?adjust_creative=microsoft&utm_campaign=yelp_feed&utm_medium=feed_v2&utm_source=microsoft"
  },
  "photos": [
    {
      "url": "http://a.mktgcdn.com/p/5CfAG3Mq6QkRVslIusXawUk_OUT4rpHNaED8f-dXcwQ/2998x2998.jpg",
      "thumbnailUrl": "https://www.bing.com/th?id=OLC.mDbUTLOyk7QxrQ480x360",
      "width": 2998,
      "height": 2998,
      "caption": "Provided by Bing Places for Business",
      "source": "a.mktgcdn.com"
    },
    {
      "url": "http://a.mktgcdn.com/p/a-1p1iIZikNMmnhZUmI_N-HHZDL4O8DFqHwCIeM_B_8/1180x664.jpg",
      "thumbnailUrl": "https://www.bing.com/th?id=OLC.A6SDFqQK9GcRQw480x360",
      "width": 1180,
      "height": 664,
      "caption": "Provided by Bing Places for Business",
      "source": "a.mktgcdn.com"
    },
    {
      "url": "http://a.mktgcdn.com/p/hcwmzgGyqgZlI-LBXBYh1nUDWju1pOW0CSnvRemvyzU/2998x2998.jpg",
      "thumbnailUrl": "https://www.bing.com/th?id=OLC.c+/g2XprHJV78w480x360",
      "width": 2998,
      "height": 2998,
      "caption": "Provided by Bing Places for Business",
      "source": "a.mktgcdn.com"
    }
    // ... 17 more photos
  ],
  "searchCategory": "Restaurant",
  "searchLocation": "New York, NY",
  "scrapedAt": "2026-08-24T13:41:07Z"
}
```

Three keys are `null` above because they are type-specific, not because they were dropped: `hotelClass` fills on hotels, and `wheelchairAccessible` and `transportHub` on transit stops.

Photo rows carry the original full-size image, not a re-hosted thumbnail. Both are given, so you can use whichever you need.

### Advanced Usage

Ready-made configurations for local SEO audits, agency prospecting, hotel market research, competitor tracking, and store-locator building.

#### Agency prospecting: businesses with no web presence

```json
{
    "categories": ["Auto repair", "Hair salon", "Restaurant"],
    "location": "Phoenix, Arizona, USA",
    "searchRadiusKm": 25,
    "websiteFilter": "without_website",
    "maxResults": 5000
}
```

#### Local SEO: only well-rated, currently-open competitors

```json
{
    "categories": ["Dentist"],
    "location": "Manchester, UK",
    "searchRadiusKm": 10,
    "minRating": "4.0",
    "includeDetails": true
}
```

#### Hotel research with photos and reviews

```json
{
    "categories": ["Hotel"],
    "location": "Lisbon, Portugal",
    "searchRadiusKm": 8,
    "includeDetails": true,
    "includeReviews": true,
    "maxPhotosPerPlace": 50,
    "maxResults": 300
}
```

#### Chain tracking: one brand across a metro area

```json
{
    "categories": ["Fast food restaurant"],
    "location": "Chicago, Illinois, USA",
    "searchRadiusKm": 30,
    "nameContains": "Subway",
    "searchMatching": "only_includes",
    "includeDetails": true
}
```

Every row carries `chainId`, so you can group locations by brand even when the names vary.

### Integrations and scheduling

Run the Bing Maps Scraper on a schedule in Apify Console, daily or weekly to refresh place data. Each run can call a webhook when it finishes, so n8n, Make and Zapier flows can pick up new rows; the Apify API and Apify MCP server accept the same input.

### Pricing: Pay Per Event

Places cost $3.49 on Free, $3.29 on Bronze, $2.99 on Silver and $2.79 on Gold and above per 1,000.

**$3.49 per 1,000 places** at the entry tier, dropping to **$2.79** on higher Apify plans. Enrichment is billed separately and only for places you actually keep.

| Event | Per 1,000 (Free) | Per 1,000 (Diamond) |
|-------|------------------|---------------------|
| Place scraped | $3.49 | $2.79 |
| Place details enriched | $1.99 | $1.29 |

Filtered-out places are never billed. A place that returns no detail data is not billed for details either.

### FAQ

**What is Bing Maps?**
Bing Maps is Microsoft's mapping and local-business service, the map layer behind Bing search and Windows. Its business index covers the same kind of local listings you would find on Google Maps: name, address, phone, website, category, opening hours, and aggregated ratings. This Actor collects those listings in bulk for a place and category you choose.

**How many places can I extract in one run?**
Up to 100,000. There is no per-page ceiling to work around: the search splits its own area until the region is covered, so a dense city centre and a quiet suburb both come back complete.

**How fast is it?**
3,000 places in 22 seconds on the contacts-only lane. Turning on details slows it to roughly 800 places per minute, because each place is then collected individually.

**Which categories can I use?**
865 of them, at two levels. Broad roll-ups such as `Retail`, `Health and medical`, or `Professional services` pull in everything beneath them; narrow ones such as `Periodontist` or `Japanese restaurant` stay tight. Type anything you like: an unrecognised category comes back as a clear error with close matches suggested, so a run never quietly returns nothing.

**How complete is the contact data?**
Measured on 32,638 places across Berlin, New York, London and Sao Paulo: street address 100%, phone 80%, website 54%, category tree 100%. About 88% of places carry a phone or a website in Europe and the US. Website coverage is the regional one: 67% in Berlin against 32% in Sao Paulo, which also means the "has a phone but no website" lead angle is far richer outside Western Europe (50% in Sao Paulo, 21% in Berlin).

**How many reviews do I get per place?**
Up to 3 recent reviews per place, plus the full star breakdown and the provider's total review count. Bing aggregates rather than hosts reviews, so the text comes from Tripadvisor (about two thirds of places) and Yelp (about a third); hotels also carry Booking.com and Expedia. If you need every review on a place, use the sibling scraper for the provider that holds them.

**Can I get hotel prices or room rates?**
No. Bing Maps does not expose nightly rates or availability anywhere in its place data, with or without stay dates. For hotel pricing, use [Ozon Travel Hotel Scraper](https://apify.com/zen-studio/ozon-travel-hotel-scraper) or [Wildberries Travel Scraper](https://apify.com/zen-studio/wildberries-travel-scraper).

**Do I need a Bing account or cookies?**
No. Give it a location and a category and run it.

**Does it cover countries outside the US?**
Yes. Coverage is global, and results are pinned to English so a run from any region returns `Closed` and `4.2` rather than the local-language equivalents.

**How do I export the data?**
JSON, CSV, Excel, XML, or HTML from the run's Storage tab, or through the Apify API. JSON preserves the nested fields (`addressComponents`, `openingHours`, `reviews`, `photos`) exactly; CSV and Excel flatten the address parts into columns and serialise the rest.

**What happens if my search finds nothing?**
The run tells you which of the two reasons applies. A handful of categories exist in Bing's vocabulary but hold no listings anywhere, and that reads identically to an empty area unless it is checked, so the run re-probes the area without the category filter and reports which it was.

**Is it legal to scrape Bing Maps business data?**
This Actor extracts publicly available business listings only, nothing behind a login. Business contact details are commercial rather than personal data in most jurisdictions, but reviewer names in the `reviews` field are personal data. You are responsible for complying with Microsoft's terms and with applicable data protection law (GDPR, CCPA).

**What is the free tier?**
Apify's standard free plan credit applies. There is no separate lifetime cap on this Actor, so free-plan users get the same features and the same speed as everyone else.

### More Zen Studio scrapers for maps & local data

- <img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/NWYsOG96fMDy8ycdf-actor-vBUd2ObzJUemitHHP-IYaavrd0t8-google-maps-directions-api-logo.png" width="16" height="16" style="vertical-align:middle;border-radius:3px"> **Google Maps**
  - [Google Maps Scraper](https://apify.com/zen-studio/google-maps-scraper)
  - [Google Maps Directions & Routes API](https://apify.com/zen-studio/google-maps-directions-api)
- <img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/NWYsOG96fMDy8ycdf-actor-5bSvAQKSK3LPq9OXb-AgVhcT1mQC-apple-maps-scraper-logo.png" width="16" height="16" style="vertical-align:middle;border-radius:3px"> **Apple Maps**
  - [Apple Maps Scraper](https://apify.com/zen-studio/apple-maps-scraper-pro)
  - [Apple Maps Directions & Route API](https://apify.com/zen-studio/apple-maps-directions-route-api)
- <img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/NWYsOG96fMDy8ycdf-actor-fRSgBvgbsRB4o7t30-UkaIbH1Yhq-yandex-maps-scraper-logo.png" width="16" height="16" style="vertical-align:middle;border-radius:3px"> **Yandex Maps Яндекс Карты**
  - [Yandex Maps Scraper](https://apify.com/zen-studio/yandex-maps-scraper)
  - Yandex Maps Reviews Scraper (`zen-studio/yandex-maps-reviews-scraper`)
- <img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/NWYsOG96fMDy8ycdf-actor-NBmcHCtkUEhA0DNP3-SrXbUedsVm-2gis-scraper-api-logo.png" width="16" height="16" style="vertical-align:middle;border-radius:3px"> **2GIS 2ГИС**
  - 2GIS Places Scraper (`zen-studio/2gis-places-scraper-api`)
  - 2GIS Reviews Scraper (`zen-studio/2gis-reviews-scraper`)
- <img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/NWYsOG96fMDy8ycdf-actor-EgDf0I1X8lNhCes2E-kpZCa398Jg-baidu-maps-scraper-logo.png" width="16" height="16" style="vertical-align:middle;border-radius:3px"> **Baidu Maps 百度地图**
  - Baidu Maps Scraper (`zen-studio/baidu-maps-scraper`)
- <img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/NWYsOG96fMDy8ycdf-actor-F5g6zADHgY9XgfKpv-uUDQtIEe9Q-naver-place-maps-scraper-logo.png" width="16" height="16" style="vertical-align:middle;border-radius:3px"> **Naver Map & Place 네이버 지도**
  - Naver Map & Place Scraper (`zen-studio/naver-place-scraper`)
- <img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/NWYsOG96fMDy8ycdf-actor-Qn4Jh4wff6sgCEvQ5-X3AegHM3lL-kakao-map-scraper-logo.png" width="16" height="16" style="vertical-align:middle;border-radius:3px"> **Kakao Map 카카오맵**
  - Kakao Map Scraper (`zen-studio/kakao-map-scraper`)
    Full directory: [Zen Studio on Apify](https://apify.com/zen-studio)

### Support

- **Bugs**: Issues tab
- **Features**: Issues tab

### Legal Compliance

Extracts publicly available data. Users must comply with Microsoft's terms and data protection regulations (GDPR, CCPA).

***

*Bulk business listings from Bing Maps: contacts, ratings, hours, reviews, and photos, for lead generation and local market research.*

# Actor input Schema

## `categories` (type: `array`):

What kind of places to collect. Pick from the suggestions or type any category name: broad ones like <code>Health and medical</code> pull in everything beneath them (Doctor, Dentist, Physical therapy), narrow ones like <code>Dentist</code> stay tight.<br><br>Add several to collect them all in one run. <b>Leave empty to collect every business in the area</b>, which sweeps all 44 top-level categories so the whole search radius is covered.

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

Where to search. A city, neighborhood, or address: <code>Berlin, Germany</code>, <code>Soho, London</code>, <code>Times Square, New York</code>.<br><br>More specific is better. Add a country when the name is ambiguous: <code>Springfield</code> alone lands somewhere you did not intend.

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

Stop after this many places.

## `searchRadiusKm` (type: `integer`):

How far around <b>Location</b> to search, in kilometres. A city centre is well covered by <code>5</code>; a whole metro area needs <code>15</code>–<code>25</code>.<br><br>Ignored when you draw a <b>Custom search area</b>: the shape defines its own extent.

## `customGeolocation` (type: `object`):

GeoJSON defining the exact area to search. Accepts a Point, a Polygon, or a Feature / FeatureCollection wrapping them (what geojson.io and most map-drawing tools export). Coordinate order is <code>\[longitude, latitude]</code>.<br><br>When set, this overrides <b>Location</b>. A Point uses <b>Search radius</b>; a Polygon uses its own extent.

## `nameContains` (type: `string`):

Keep only places whose name contains this text. Leave blank to keep them all.

## `searchMatching` (type: `string`):

How strictly the place name has to match <b>Name contains</b>. Ignored when that field is blank.

## `websiteFilter` (type: `string`):

Keep places with a website, without one, or both. <b>Only places without a website</b> is the usual pick for agency lead lists.

## `minRating` (type: `string`):

Drop places rated below this. <b>Unrated places are excluded too</b>: a place with no rating cannot satisfy a minimum, and only about a third of places carry one.<br><br>Turns on <b>Place details</b> automatically, since ratings come from there.

## `includeDetails` (type: `boolean`):

Adds <b>rating</b>, <b>review count</b>, <b>review source</b>, <b>weekly opening hours</b>, <b>open/closed right now</b>, <b>hotel star class</b>, <b>chain ID</b> and the place's <b>action link</b> (menu, reservations, appointments or tickets).<br><br>Opening hours and open/closed status are available for roughly <b>half</b> of places; rating for about a third. Collected per place and billed separately, so a large run takes longer. Leave off if you only need contact details.

## `includeDescription` (type: `boolean`):

Adds the <b>business description</b> and a <b>claimed by owner</b> flag.<br><br>Available for roughly a quarter of places. The slowest of the enrichments, so prefer it for shortlists over bulk runs.

## `includeReviews` (type: `boolean`):

Adds up to <b>3 recent reviews</b> per place: text, reviewer name, star rating, date and a link to the full review, plus the <b>star breakdown</b> and the provider's total review count.<br><br>Reviews are sourced from <b>Tripadvisor</b> (about two thirds of places) and <b>Yelp</b> (about a third); hotels also carry Booking.com and Expedia. Available for roughly a third of places.

## `maxPhotosPerPlace` (type: `integer`):

How many photos to collect per place. Each photo comes with the <b>original full-size image URL</b>, pixel dimensions, a caption and the source site (Yelp, Booking.com, Tripadvisor, the hotel's own media library).<br><br><code>0</code> = no photos. Places carry a median of 17 photos, some over 100; asking for more than 20 slows the run.

## `feedback` (type: `string`):

For AI agents. Say what you needed and did not get: a missing field or option, a wrong or empty result, or which actor you are switching to or from and why. Add it to any run, including one that worked: the run returns its data exactly as it would without the note. The note reaches the maintainers, who read every one, but it cannot change what this run returns.

## Actor input object example

```json
{
  "categories": [
    "Restaurant"
  ],
  "location": "Berlin, Germany",
  "maxResults": 100,
  "searchRadiusKm": 5,
  "nameContains": "",
  "searchMatching": "all",
  "websiteFilter": "all",
  "minRating": "",
  "includeDetails": false,
  "includeDescription": false,
  "includeReviews": false,
  "maxPhotosPerPlace": 0
}
```

# Actor output Schema

## `results` (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 = {
    "categories": [
        "Restaurant"
    ],
    "location": "Berlin, Germany",
    "maxResults": 100,
    "searchRadiusKm": 5,
    "searchMatching": "all",
    "websiteFilter": "all",
    "minRating": "",
    "includeDetails": false,
    "includeDescription": false,
    "includeReviews": false,
    "maxPhotosPerPlace": 0
};

// Run the Actor and wait for it to finish
const run = await client.actor("zen-studio/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 = {
    "categories": ["Restaurant"],
    "location": "Berlin, Germany",
    "maxResults": 100,
    "searchRadiusKm": 5,
    "searchMatching": "all",
    "websiteFilter": "all",
    "minRating": "",
    "includeDetails": False,
    "includeDescription": False,
    "includeReviews": False,
    "maxPhotosPerPlace": 0,
}

# Run the Actor and wait for it to finish
run = client.actor("zen-studio/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 '{
  "categories": [
    "Restaurant"
  ],
  "location": "Berlin, Germany",
  "maxResults": 100,
  "searchRadiusKm": 5,
  "searchMatching": "all",
  "websiteFilter": "all",
  "minRating": "",
  "includeDetails": false,
  "includeDescription": false,
  "includeReviews": false,
  "maxPhotosPerPlace": 0
}' |
apify call zen-studio/bing-maps-scraper --silent --output-dataset

```

## MCP server setup

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