Google Maps Business Profiles Dataset avatar

Google Maps Business Profiles Dataset

Pricing

from $0.10 / 1,000 google place ids

Go to Apify Store
Google Maps Business Profiles Dataset

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

Miso

Maintained by Community

Actor 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

  1. Select one country.
  2. Optionally select a category or enter a category keyword, city, or US state.
  3. Choose your output columns. Select at least one column in addition to the mandatory Google Place ID.
  4. Set the maximum number of results and, optionally, a starting row.
  5. 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

InputRequired / defaultDescription
countryRequiredOne supported ISO country code, such as US or GB. Multiple countries and ALL are not supported.
categoryOptionalSelect an exact business category, such as bakery. The form initially suggests bakery; clear it to export without a category restriction.
keywordOptionalSearches within business category names, such as hvac or teeth whitening. Overrides category when supplied. It does not search business names or addresses.
cityOptionalCity name or prefix. For example, San matches city names beginning with San.
stateAllUS state code, such as CA. Use All for no state restriction and for countries other than the US.
max_results100Maximum businesses to deliver after the starting position. Integer from 1 to 1,000,000.
start_from_row1One-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.

InputOutput fieldDefaultContents
include_namenametrueBusiness name
include_streetstreettrueStreet address
include_citycitytrueCity
include_statestatefalseUS state; NULL outside the US
include_phonephonetruePhone number
include_urlurltrueBusiness website URL
include_google_maps_urlgoogle_maps_urlfalseGoogle Maps link in https://www.google.com/maps?cid=... format
include_latlatfalseLatitude
include_lonlonfalseLongitude
include_review_scorereview_scorefalseReview rating
include_reviews_numberreviews_numberfalseNumber of reviews
include_google_business_categoriesgoogle_business_categoriesfalseCategory 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 (0 or 0.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:

EventCount
column-google-place-id1,000
column-name1,000
column-phone600
Total column events2,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.