Google Maps Business Profiles Dataset
Pricing
from $0.10 / 1,000 google place ids
Google Maps Business Profiles Dataset
100M+ Google maps business profiles updated monthly. No need to waste your money on google maps scrapers anymore. Starting from just $0.10/1000 rows, at least 10x cheaper than Bright Data and other providers. Choose and pay only for data columns you really need.
Pricing
from $0.10 / 1,000 google place ids
Rating
5.0
(1)
Developer
Miso
Maintained by CommunityActor stats
0
Bookmarked
6
Total users
4
Monthly active users
13 days ago
Last modified
Categories
Share
Google Maps Dataset
Export Google Maps business records from an existing dataset. Filter by country, business category, category keyword, city, and US state, then choose the columns you want to receive.
Every result includes a Google Place ID. Optional columns are charged only when they contain a value: NULL, empty strings, and whitespace-only values are not charged.
What this Actor does
- Exports business locations with names, addresses, phone numbers, websites, coordinates, ratings, and categories.
- Lets you select output columns individually.
- Filters records before applying your starting row and result limit.
- Supports exports of up to 1,000,000 businesses per run, subject to available matching records and your run budget.
- Retrieves data in batches of up to 10,000 records.
- Identifies records by Google Place ID. Locations sharing a name, phone number, or website remain separate records when their Place IDs differ.
- Provides data comparable to Brightdata.com etc datasets at fraction of their price. Eg Bright Data Dataset is about 15x more expensive.
This Actor reads stored data; it does not perform a fresh Google Maps scrape for each run. Field availability and freshness depend on the source dataset. Email addresses and contact-person enrichment are not included.
Quick start
- Select one country.
- Optionally select a category or enter a category keyword, city, or US state.
- Choose your output columns. Select at least one column in addition to the mandatory Google Place ID.
- Set the maximum number of results and, optionally, a starting row.
- Review the Actor's current pricing and your maximum run budget, then start the run.
Results are saved to the run's dataset. The Results output links to the dataset items.
Search and export inputs
| Input | Required / default | Description |
|---|---|---|
country | Required | One supported ISO country code, such as US or GB. Multiple countries and ALL are not supported. |
category | Optional | Select an exact business category, such as bakery. The form initially suggests bakery; clear it to export without a category restriction. |
keyword | Optional | Searches within business category names, such as hvac or teeth whitening. Overrides category when supplied. It does not search business names or addresses. |
city | Optional | City name or prefix. For example, San matches city names beginning with San. |
state | All | US state code, such as CA. Use All for no state restriction and for countries other than the US. |
max_results | 100 | Maximum businesses to deliver after the starting position. Integer from 1 to 1,000,000. |
start_from_row | 1 | One-based starting position within the filtered results. 10001 skips the first 10,000 matches. Skipped rows are not charged. |
Country, city, state, and the effective category filter are applied together. Category keyword matching is a substring search; spaces are normalized to underscores to match stored category names. If both category and keyword are empty or omitted, there is no category restriction.
Supported countries
United States (US), United Kingdom (GB), United Arab Emirates (AE), Argentina (AR), Austria (AT), Australia (AU), Belgium (BE), Brazil (BR), Canada (CA), Spain (ES), France (FR), Ireland (IE), India (IN), Italy (IT), Japan (JP), South Korea (KR), Mexico (MX), Netherlands (NL), Poland (PL), Saudi Arabia (SA), Sweden (SE), Thailand (TH), Turkey (TR), Denmark (DK), Norway (NO), Finland (FI), Portugal (PT), Germany (DE), Switzerland (CH), Bulgaria (BG), Czechia (CZ), Slovakia (SK), Hong Kong (HK), Indonesia (ID), and Israel (IL).
Output columns
google_place_id is always included and charged for each delivered business. It has no selection checkbox.
Every optional field has a corresponding boolean input. Set it to true to include the field or false to exclude it.
| Input | Output field | Default | Contents |
|---|---|---|---|
include_name | name | true | Business name |
include_street | street | true | Street address |
include_city | city | true | City |
include_state | state | false | US state; NULL outside the US |
include_phone | phone | true | Phone number |
include_url | url | true | Business website URL |
include_google_maps_url | google_maps_url | false | Google Maps link in https://www.google.com/maps?cid=... format |
include_lat | lat | false | Latitude |
include_lon | lon | false | Longitude |
include_review_score | review_score | false | Review rating |
include_reviews_number | reviews_number | false | Number of reviews |
include_google_business_categories | google_business_categories | false | Category text from the source dataset |
Only selected optional fields are exported. Selected fields with missing values remain in the output, but are not charged. Numeric fields may be returned as numbers or numeric strings, depending on the source data. Category text is returned as stored, rather than converted into an array.
When sending JSON input, explicitly set unwanted default-enabled columns to false. Omitting include_phone, for example, leaves phone enabled by default.
Example input
Export up to 10,000 US businesses, starting at the millionth matching record, with only their names and categories alongside their mandatory Place IDs:
{"country": "US","keyword": "","state": "All","max_results": 10000,"start_from_row": 1000000,"include_name": true,"include_street": false,"include_city": false,"include_state": false,"include_phone": false,"include_url": false,"include_google_maps_url": false,"include_lat": false,"include_lon": false,"include_review_score": false,"include_reviews_number": false,"include_google_business_categories": true}
To restrict this example to bakeries, set category to bakery. To search across category names instead, set keyword to your search text.
Example output
Illustrative records for the selection above:
[{"google_place_id": "EXAMPLE_PLACE_ID_1","name": "Example Bakery","google_business_categories": "bakery"},{"google_place_id": "EXAMPLE_PLACE_ID_2","name": "Example Business","google_business_categories": null}]
The first record incurs a Place ID event, a name event, and a categories event. The second incurs only the Place ID and name events because its categories value is NULL.
Pricing: pay for populated columns
Each column has its own pricing event. For each delivered batch:
- Google Place ID is charged once per delivered business.
- Each selected optional column is charged once per populated value.
- NULL, empty strings (
""), and strings containing only whitespace are not charged. - Numeric zero (
0or0.0) is a valid value and is charged. - Unselected columns and skipped rows are not charged.
For example, a batch of 1,000 businesses with name and phone selected might contain 1,000 names and 600 phone numbers. That produces:
| Event | Count |
|---|---|
column-google-place-id | 1,000 |
column-name | 1,000 |
column-phone | 600 |
| Total column events | 2,600 |
At an illustrative rate of $0.05 per 1,000 values for each column, those column events cost $0.13. This is an example, not a guaranteed current price. See the Actor's Pricing section for actual event rates and any other applicable charges.
The Actor checks the remaining run budget using the populated values in each batch. If the budget cannot cover the next complete record with its selected populated fields, it stops before delivering that record. It does not skip that record to deliver cheaper records later in the sequence.
Starting position and result order
Results are ordered by first discovery date, oldest first, then by Google Place ID. start_from_row applies after your filters.
For example, start_from_row: 10001 with max_results: 5000 requests matching positions 10,001 through 15,000, if enough results and budget are available.
Large starting positions may take longer because the database must skip preceding matches. If the starting position exceeds the available matches, the run returns no records.
To split an export across runs, keep the same filters and advance the starting position by the number of records actually delivered. This assumes the underlying dataset stays unchanged: source updates can shift positions between runs, so separate runs are not a frozen snapshot.
Common questions
Why did I receive fewer records than requested?
max_results is an upper limit. There may be fewer matching records after your starting position, or the run may reach its budget limit.
Can I export only Google Place IDs?
No. Select at least one additional output column. Google Place ID is always included and charged.
Does selecting phone or website exclude businesses without that field?
No. Column selection controls the output, not record eligibility. Missing selected values remain in the output and are not charged.
Can I search for a business by name?
The keyword input searches category names only. Business-name search is not available.
Do businesses sharing a website get merged?
No. Records are identified by Google Place ID, so separate locations may share a website, phone number, or business name.
Can I get emails or contact-person details?
This Actor exports the listed Google Maps fields only. It does not provide email or contact-person enrichment.

