Bing Maps Scraper avatar

Bing Maps Scraper

Pricing

from $1.99 / 1,000 search results

Go to Apify Store
Bing Maps Scraper

Bing Maps Scraper

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

Pricing

from $1.99 / 1,000 search results

Rating

0.0

(0)

Developer

Search API

Search API

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

Bing Maps Business Listings Scraper

Searches public Bing Maps business listings and writes a rich normalized dataset. The Actor uses Bing's public maps/overlaybfpr HTML endpoint first because it exposes structured data-entity business payloads. When that endpoint returns no usable records, the Actor can open Bing Maps with Playwright and extract the same payload from the DOM.

Input modes

Use one query for a normal search, or provide searchQueries for a batch. If both are supplied, query is included as the first query and duplicate phrases are removed. Batch results are collected independently, capped per query, and interleaved fairly before the global maxItems limit is applied.

For compatibility with existing Cloud inputs, the Actor also accepts maxRetries, requestTimeoutMs, and categoryIncludes. The first two take precedence over maxRequestRetries and requestTimeoutSecs when both forms are supplied; categoryIncludes is combined with includeCategories.

Example single-query input:

{
"query": "restaurants in Austin",
"maxItems": 25,
"maxPages": 2,
"resultsPerPage": 10,
"sortBy": "ratingDesc",
"proxyConfiguration": { "useApifyProxy": false }
}

Example multi-query input:

{
"searchQueries": ["coffee shops in Austin", "bookstores in Austin"],
"maxItems": 20,
"maxItemsPerQuery": 10,
"maxPages": 2,
"resultsPerPage": 10,
"maxConcurrency": 1,
"maxRequestRetries": 1,
"requestTimeoutSecs": 45,
"requestHandlerTimeoutSecs": 180,
"requestDelayMs": 500,
"includeKeywords": ["Austin"],
"excludeCategories": ["closed"],
"sortBy": "searchOrder",
"proxyConfiguration": { "useApifyProxy": false }
}

Output

Each dataset record has a stable Bing place ID and can include the listing name, address parts, coordinates, phone, website, category path, rating provider, rating and review counts, open status, hours, media, map/detail links, page and query positions, and source provenance. Numeric values are normalized to numbers and dates are ISO-8601 strings. The dataset has overview and fullDetails views.

samples/sample-record.json is the first record from a live run for restaurants in Austin. Its business name, address, category, rating, review count, and hours were checked against the corresponding Bing Maps search listing.

The OUTPUT key-value record contains run status, per-query page/card counts, filters, sorting, failure categories, connection mode, and whether the DOM fallback was used. Result-count text is retained when Bing exposes it in the structured response.

Proxy and access behavior

The input supports no proxy, Apify Proxy, and custom proxy URLs. Proxy credentials are consumed by the runtime and are never written to the dataset or logs. HTTP status and content type are checked before the response is parsed. Access-control, CAPTCHA, login, and verification pages are reported as failures; the Actor does not bypass them.

Development

Install dependencies and run the test suite:

npm install --ignore-scripts --audit=false
npm test
npm run check
npm run validate:readme

Run locally through the Apify runtime so storage and schemas are exercised:

apify run --purge --input-file INPUT.json
npm run validate:run
npm run audit:dataset

INPUT.json is a small local run example. The unit tests cover parsing, normalization, filtering, pagination, and batch selection.