Google Maps Business Listing avatar

Google Maps Business Listing

Pricing

from $4.13 / 1,000 results

Go to Apify Store
Google Maps Business Listing

Google Maps Business Listing

Google Maps business listings API: one call takes a keyword and a location and returns matching listings as 25-field records — identity, Google categories, address, coordinates, rating, contacts, opening hours and attributes — with no API key and no daily quota.

Pricing

from $4.13 / 1,000 results

Rating

5.0

(2)

Developer

TrueFetch

TrueFetch

Maintained by Community

Actor stats

7

Bookmarked

281

Total users

4

Monthly active users

7 days ago

Last modified

Share

Google Maps Business Listing is a google maps business listings api that turns one keyword and location into 43-field records with IDs, categories, addresses, coordinates, review and photo counts, contacts, hours, hotel details, attributes, and departments—without a Google API key or daily Actor quota.

  • One call, whole-market coverage — the location is resolved to a centre point and swept as a grid of map viewports, so a request larger than one viewport is assembled for you.
  • 43 fields per listing, including Google identifiers, structured address parts, entrance coordinates, review and photo counts, hotel details, international phone, and current open status.
  • No key, no quota, no OAuth — billed per listing record returned, not per API call attempted.
  • 40 interface languages control Google's labels for categories, hours, and attributes; the selected locale may also change the returned result set.

Run a one-result test · View API

The smallest useful run returns one listing and bills one Result event plus one Actor Start — $0.0155 on the FREE tier.

What does Google Maps Business Listing do?

It answers one question — which businesses match this phrase in this market, and what does Google publish about each — as typed records rather than a rendered page.

The Actor resolves your location to coordinates, sweeps the surrounding area as a grid of map viewports, and returns one record per business found. Each record carries a stable field set, so a response can be parsed without knowing which panels Google chose to render for a given listing.

It returns review and photo counts when Google publishes them, but not review text, photo galleries, or email addresses, and it does not infer missing contacts. It is not Google's Places API, which is the sanctioned choice when contractual support is required. The Actor is not affiliated with Google and returns public listing data.

How do I run Google Maps Business Listing?

Fill four inputs, start the run, and read one record per business from the default Dataset:

  1. Set max_results to how many records you want.
  2. Put the search phrase in keyword — a profession, a trade or a business name.
  3. Put the market in location, specific enough to be unambiguous.
  4. Choose the language the labels should come back in.

The prefilled test input:

{
"max_results": 2,
"keyword": "coffee shop",
"location": "Seattle, Washington",
"language": "Spanish"
}

Result limits are per record, not per request: ten records bill ten Result events across however many viewport calls it took to find them. A listing too sparse to be useful is skipped rather than returned, so a billed record always carries usable data.

What data does Google Maps Business Listing return?

One record per business carries 43 fields in a stable set.

GroupFieldsNotes
Identity and languageplatform, place_id, data_id, entity_id, name, local_name, name_language, local_language, display_languageIdentifiers and names come from Google; localized fields remain empty when Google omits them.
Address and coordinatesaddress, street, area, city, locality, region, postal_code, country, latitude, longitude, entrance_latitude, entrance_longitude, timezoneStructured components and optional entrance coordinates come from the listing response, not the request text.
Classification and contactcategory, categories, rating, review_count, photo_count, hotel_class, hotel_amenities, phone, phone_intl, website, thumbnail, description, business_descriptionCounts and hotel details remain empty when Google omits them; categories preserves every returned category.
Hours and attributesopening_hours, service_hours, open_status, attributes, highlights, departmentsHours preserve the day rows Google supplies; attributes stay grouped by label family.
Provenanceprocessor, processed_atIdentifies the producing Actor and formatting time.

An abbreviated illustrative listing record for the Seattle coffee-shop scenario:

{
"place_id": "ChIJvful7UFrkFQR0OhobFnU_fs",
"data_id": "0x54906b41eda5fbbd:0xfbfdd4596c68e8d0",
"entity_id": "/g/11ypm6y10w",
"name": "Aroom Coffee Waterfront",
"name_language": "en",
"display_language": "es",
"category": "Cafetería",
"categories": ["Cafetería"],
"address": "904 Alaskan Wy, Seattle, WA 98104",
"city": "Seattle",
"region": "Washington",
"postal_code": "98104",
"country": "US",
"latitude": 47.603519,
"longitude": -122.3374201,
"rating": 4.7,
"review_count": null,
"photo_count": 268,
"hotel_class": null,
"hotel_amenities": [],
"phone_intl": "+1 206-960-9609",
"business_description": "Aroom Coffee is a Vietnamese specialty café in Seattle, offering authentic phin-brewed coffee and creative drinks like Egg Coffee, Salty Coffee, Sesame Latte, Pandan, and Banana Matcha. Rooted in culture and crafted with care, Aroom is a space where stories, people, and flavors meet.",
"opening_hours": [{ "day": "martes", "hours": ["8 a.m.–5 p.m."] }],
"service_hours": [],
"open_status": "Abierto · Cierra a las 5 p.m.",
"attributes": [{ "group": "Accesibilidad", "values": ["Entrada accesible para personas en silla de ruedas"] }],
"departments": [],
"platform": "Google Maps",
"processed_at": "2026-08-11T20:01:41+00:00"
}

Values Google does not supply stay empty rather than being filled in — rating is null for listings with too little feedback, and highlights is an empty array where Google surfaces no badges.

What inputs can I configure?

Four inputs, all required, in schema order.

InputTypeRequiredEffect
max_resultsintegerYesHow many records to return. No ceiling is enforced; a request larger than the market holds returns everything available.
keywordstringYesThe phrase Google Maps is queried with, passed through unmodified.
locationstringYesThe market to cover. Resolved to a centre point, then swept as a grid of viewports.
languageselect, 40 optionsYesWhich source-interface language labels categories, hours, and attributes; the selected locale may also change the returned result set.

What platforms and markets does Google Maps Business Listing cover?

The Actor covers Google Maps listings in any market whose location Google can resolve.

  • Markets — any resolvable city, region, or country; Google determines how many listings exist there.
  • Languages — 40 label options, from Dutch and German through Japanese, Arabic, Hindi, and Vietnamese.
  • Volume per location — one map viewport is exhausted at roughly 112-139 distinct places, measured across three cities. The grid widens to 3 × 3 for larger requests, putting the practical ceiling near 1,000 records for a single location.

Niche trades and small markets can legitimately return fewer records than broad categories in large cities.

Why use Google Maps Business Listing?

The market data arrives structured, deduplicated, and linked to Google's identifiers.

CapabilityWhat it gives a data team
Area coverage from one Actor runMore than one visible map viewport when the requested count needs it.
Multiple identifiers per recordStable joins on place_id, data_id, or entity_id.
Structured opening_hoursIncluded day names and ranges without parsing a rendered sentence.
Categories as Google files themClassification arrives with the data instead of being inferred from names.
No Google API keyNo Google credential setup or daily Actor quota to plan around.

The trade-off is no review text, gallery, email addresses, or contractual Google guarantee. Google's Places API is the right tool when those guarantees matter.

Who is Google Maps Business Listing for?

It serves developers, lead platforms, and research teams that need local business records as pipeline input.

Use it to compare one trade across markets, find listings with a phone but no website, or diff place_id sets between scheduled runs.

It is the wrong tool if you need review content, business emails, verified contact enrichment, or data delivered under a vendor contract with Google.

How can I use Google Maps Business Listing through the API or MCP?

The Actor ID is 0SHtjFyh3L6V8fLDT — also addressable by name as truefetch/google-maps-business-listing; both forms work in the API, the SDKs, and MCP.

curl -X POST "https://api.apify.com/v2/acts/truefetch~google-maps-business-listing/run-sync-get-dataset-items?token=YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"max_results":2,"keyword":"coffee shop","location":"Seattle, Washington","language":"Spanish"}'

Through MCP, expose it with the Apify MCP server and call the same Actor:

{
"mcpServers": {
"apify": {
"command": "npx",
"args": ["-y", "@apify/actors-mcp-server", "--actors", "truefetch/google-maps-business-listing"],
"env": { "APIFY_TOKEN": "YOUR_TOKEN" }
}
}
}

Generated SDK and OpenAPI examples are on the API page. Large sweeps can run asynchronously and be paged from the Dataset.

How much does Google Maps Business Listing cost?

One listing record costs $0.00550 on the FREE tier, plus a $0.01000 Actor Start per run — so the smallest useful run is $0.0155.

EventBilling unitFREEBRONZESILVERGOLD / PLATINUM / DIAMOND
ResultOne listing record$0.00550$0.00495$0.00440$0.00413
Actor StartOne per GB of memory, minimum one$0.01000$0.01000$0.01000$0.01000

The Actor runs at 256 MB, so every run bills exactly one Actor Start. One listing: $0.01000 + 1 × $0.00550 = $0.01550. Listings too sparse to be useful are skipped and never billed. Prices can change; the pricing page is authoritative.

How does Google Maps Business Listing compare with alternatives?

Against reading Maps by hand. Free for a few lookups, but awkward across markets, schedules, or downstream pipelines.

Against Google's own Places API. It is the sanctioned path with contractual support. Google's pricing documentation lists request-based prices and quotas; this Actor instead bills per returned record and needs no Google key.

Against a local-data suite. Suites add enrichment and CRM workflows. Choose one for that pipeline; choose this for per-record listing data.

What are the limits and troubleshooting steps?

These limits reflect source behaviour and pair each constraint with its next step:

  • No review text and no photo gallery. Rows may include rating, review_count, photo_count, and thumbnail, but they do not include review bodies or gallery items. Use a review-specific product when those are required.
  • A market returns fewer records than requested. One viewport is exhausted at 112-139 distinct places and the grid widens to 3 × 3 at most. Narrow the location or accept the market's real size.
  • The location could not be resolved. Use city plus region — Seattle, Washington rather than Seattle — where the name is ambiguous.
  • rating is null. Google publishes no rating below a feedback threshold. The listing is real; the field is honestly empty rather than zero.
  • Two runs order results differently. Google orders by its own viewport relevance, which shifts between requests. Dedupe on place_id, never on position.
  • Labels came back in an unexpected language. language changes Google's rendered labels, not the source data — a business name stays as its owner wrote it.

For a bug report, attach the two-record Seattle input, run id, and missing field to Issues.

Frequently asked questions

Is there a google maps business data api without api key setup?

Yes — this Actor is one. It reads the public Google Maps search experience rather than the Places API, so there is no key to provision, no OAuth flow and no daily quota; you are billed per listing record returned.

How do I get google maps listings by keyword and location?

Send both as inputs: keyword carries the search phrase and location the market. The location is geocoded to a centre point and swept as a grid of viewports, so one request covers more than a single map view returns.

Does it return reviews or photos?

Rows may include rating, review_count, photo_count, and thumbnail. They do not include review bodies or photo-gallery items.

What is the difference between place_id and entity_id?

place_id identifies the map listing; entity_id is a separate entity identifier Google returns. Use place_id for listing-level dedupe and retain entity_id when a downstream source expects that namespace.

Is there a free Google Maps listings API?

Not an unrestricted one. Google's Places API is sanctioned but priced per request with daily quotas; this Actor is pay-per-record with no subscription, and the smallest run costs $0.0155.

How many records can one location return?

Roughly 1,000. One viewport yields 112-139 distinct places — measured in San Francisco, London and Paris — and the grid widens to 3 × 3 for larger requests.

Can I schedule runs to monitor a market over time?

Yes. Run the same input on an Apify Schedule and diff place_id sets between runs; new ids are openings, missing ids are closures or delistings, and rating movement on shared ids is the trend line.

Why is a business missing from the results?

Google suppresses listings below a relevance threshold for the viewport, and records too sparse to be useful are skipped rather than billed. Widen the location, raise max_results, or query the trade term Google itself uses in that market.

Google Trends Explore, LinkedIn Company API, and Amazon Store API extend this workflow from demand validation through company enrichment and online-store research.

  • Google Trends Explore — validate demand and regional interest before selecting a keyword and market.
  • LinkedIn Company API — enrich a business name from a listing with its company record.
  • Amazon Store API — inspect the online Brand Store behind a retail business found on the map.

Support

Use these Store, API, input, pricing, and Issues links for setup or troubleshooting, and the TrueFetch community for product questions.

Run a one-result test · View API

Last Updated: August 11, 2026