Google Maps Scraper avatar

Google Maps Scraper

Pricing

from $0.40 / 1,000 results

Go to Apify Store
Google Maps Scraper

Google Maps Scraper

πŸ”₯ $0.40/1K results πŸ”₯ Get πŸ“§ emails, πŸ“ž phones, 🌐 websites, πŸ“± social profiles, addresses, ratings, reviews, hours & more. Find businesses by keyword, category, location, radius or polygon. Super fast & cheapest Google Maps Scraper & API with CSV, Excel, JSON & API export.

Pricing

from $0.40 / 1,000 results

Rating

4.3

(13)

Developer

PoiData

PoiData

Maintained by Community

Actor stats

32

Bookmarked

2.9K

Total users

91

Monthly active users

13 hours ago

Last modified

Categories

Share

Google Maps Scraper extracts structured business and location data from Google Maps using keywords, categories, city or area names, exact coordinates, radius searches, and custom GeoJSON polygons. Collect up to 15,000 results per search with automatic deduplication, advanced filtering, and worldwide coverage.

Use it in the Apify Console for no-code data collection or connect it to your workflow as a Google Maps scraper API. Export results in JSON, CSV, Excel, or XML, schedule recurring runs, trigger webhooks, and integrate the data with CRMs, analytics tools, business intelligence systems, or your own applications.

In short: search Google Maps at scale, target exactly the geographic area you need, filter businesses before saving them, and receive structured business data ready for analysis or integration.

πŸ—ΊοΈ Google Maps Scraper Features

This Google Maps scraper is built for precise local-business discovery rather than broad, uncontrolled crawling. You can search a city, focus on a radius around a coordinate, or define an irregular service area with a polygon.

FeatureWhat it does
Keyword and category searchFind businesses using one or multiple Google Maps search terms.
Location searchTarget a city, area, or named location.
Coordinate searchSearch from exact latitude and longitude coordinates.
Radius filteringLimit coordinate searches to a 1–100 mile radius.
GeoJSON polygon searchSearch within custom geographic boundaries.
Multiple search termsUse up to 100 search terms per request.
Large result setsCollect up to 15,000 results per search.
Advanced filtersFilter by rating, review count, category, photo count, or business name.
Detailed business dataOptionally fetch the complete business profile per place and merge it flat into each result (menu, amenities, hotel booking/pricing, service options, and more).
Website contact enrichmentOptionally add emails, phones, job titles and social links found on each business's official website.
Automatic deduplicationRemove duplicate businesses while collecting results.
Structured business dataExtract contact, address, location, rating, category, opening-hours, identifier, photo, amenity, and other business fields.
Global coverageSearch across 240+ countries with support for 70+ languages.
API and automationRun through the Apify API, schedule jobs, use webhooks, and connect results to other systems.
Multiple export formatsDownload or process results as JSON, CSV, Excel, or XML.

πŸ”Œ Google Maps Scraper API

Yes. This Actor can be used programmatically as a Google Maps scraper API through the Apify API.

Use the API when you want to:

  • run Google Maps searches from your application or backend;
  • automate recurring business-data collection;
  • send different search terms and locations dynamically;
  • collect results into an Apify Dataset;
  • trigger downstream workflows with webhooks;
  • integrate Google Maps business data with a CRM, database, lead-generation system, analytics platform, or internal tool.

The Actor supports REST-based execution through Apify and can be used from common development environments such as Python, JavaScript, CLI, HTTP, OpenAPI, and MCP through the integrations available on the Actor page.

What can you send to the Google Maps scraper API?

At minimum, provide a search term and a location method. You can search by a named location, by coordinates, or by polygon.

Common inputs include:

InputPurpose
termSearch term or array of search terms.
locationCity, neighborhood, region, or other named area.
latitudeLatitude for coordinate-based searches.
longitudeLongitude for coordinate-based searches.
radiusSearch radius in miles, from 1 to 100.
polygonCustom GeoJSON polygon boundary.
totalAroundCoordinateTarget number of unique results for coordinate or area searches.
min_ratingMinimum Google rating from 0 to 5.
min_reviewsMinimum number of reviews.
categories_filterRestrict results to selected business categories.
min_photosMinimum number of photos.
name_filterMatch one or more keywords in business names.
scrape_reviewsAlso collect reviews for each business found.
scrape_place_detailsAlso enrich each business with the detailed business profile.
enrich_contactsAlso add emails, phones and social profiles from each business's website.

πŸ“ Ways to Search Google Maps

Search by location name

Use a city or area name when you want the simplest way to discover businesses in a known place.

{
"term": "restaurants",
"location": "New York"
}

This works well for searches such as:

  • dentists in Austin;
  • coffee shops in London;
  • hotels in Dubai;
  • hardware stores in Manila;
  • restaurants in New York.

Search by exact coordinates and radius

Use latitude and longitude when you need more precise geographic targeting.

{
"term": "restaurants",
"latitude": "40.730610",
"longitude": "-73.935242",
"radius": 5,
"totalAroundCoordinate": 100
}

Coordinate-based search gives you:

  • precise targeting around a known point;
  • 1–100 mile radius control;
  • systematic coverage of the selected area;
  • a target result limit with totalAroundCoordinate;
  • distance information where available.

This is useful for territory analysis, service-area prospecting, store-location research, real estate analysis, and other location-sensitive workflows.

Search inside a GeoJSON polygon

Use a custom polygon when a circle or city boundary is too broad.

{
"term": "coffee shops",
"polygon": {
"type": "Polygon",
"coordinates": [[
[-74.041885, 40.570396],
[-73.855682, 40.570396],
[-73.855682, 40.739234],
[-74.041885, 40.739234],
[-74.041885, 40.570396]
]]
},
"totalAroundCoordinate": 200
}

Polygon searches are designed for:

  • irregular sales territories;
  • neighborhoods;
  • custom delivery areas;
  • franchise territories;
  • administrative or planning zones;
  • market-research boundaries that do not fit a simple radius.

The Actor validates polygon input and processes searches within the supplied boundary.

Search multiple terms at once

Use an array when several related Google Maps queries should be searched in the same request.

{
"term": [
"pizza restaurants",
"Italian restaurants",
"pizzeria"
],
"location": "Chicago"
}

You can use up to 100 search terms per request. Automatic duplicate removal helps prevent the same place from being returned repeatedly when it matches multiple searches.

πŸ” Google Maps Business Filters

Filters help reduce unnecessary results and focus the dataset on businesses that match your requirements.

Minimum rating

Return businesses that meet a minimum star rating.

{
"min_rating": 4.2
}

Supported range: 0–5 stars.

Minimum review count

Exclude businesses with too few reviews.

{
"min_reviews": 100
}

This is useful when you want established or more frequently reviewed businesses.

Category filter

Keep only businesses matching selected Google Maps categories.

{
"categories_filter": [
"Italian restaurant",
"Indian restaurant"
]
}

See the complete Google Maps Categories list when building category-based searches.

Minimum photo count

Filter businesses by the number of available photos.

{
"min_photos": 10
}

Business name filter

Match one keyword or several keywords against business names.

{
"name_filter": "coffee"
}

or:

{
"name_filter": [
"coffee",
"espresso"
]
}

Combine multiple filters

Filters can be combined in one request.

{
"term": "restaurants",
"location": "New York",
"min_rating": 4.5,
"min_reviews": 100,
"categories_filter": [
"Italian restaurant",
"Pizza"
],
"min_photos": 10,
"name_filter": "pizza"
}

πŸ“Š What Data Can the Google Maps Scraper Extract?

The Actor returns structured Google Maps business data that can be used for lead generation, market research, location intelligence, enrichment, analytics, and application development.

Business identity and status

Depending on availability, results can include:

  • searchTerm
  • searchLocation
  • displayRank
  • name
  • localName
  • businessType
  • status
  • isClaimed
  • openNow
  • ownerName
  • shortDescription
  • longDescription
  • reviewSnippet
  • language
  • languageCode
  • displayLanguage
  • regionCode

Address and location data

Available location fields can include:

  • address
  • addressParts
  • fullAddress
  • street
  • city
  • cityRegion
  • state
  • zipCode
  • country
  • countryCode
  • neighborhood
  • latitude
  • longitude
  • distance_miles
  • timezone
  • geoHierarchy

Example:

{
"name": "Carmine's - Times Square",
"address": "200 W 44th St, New York, NY 10036",
"street": "200 W 44th St",
"city": "New York",
"state": "New York",
"zipCode": "10036",
"country": "US",
"neighborhood": "Manhattan"
}

Contact details

Available contact data can include:

  • phone
  • phoneIsd
  • website
  • websiteDomain

Example:

{
"phone": "(212) 221-3800",
"phoneIsd": "+1 212-221-3800",
"website": "carminesnyc.com"
}

These formats are stable: if a detailed profile refreshes a contact value it is converted to the format shown here, so the columns never change representation.

Google Maps IDs and URLs

The Actor can return identifiers used to reference a business or Google Maps place:

  • url
  • urlSlug
  • placeId
  • fid
  • cid
  • providerId
  • authorId

url is a ready-to-open Google Maps link built from the place's Google Place ID. When a place ID is not available it falls back to the CID (https://www.google.com/maps?cid=…, derived from fid when needed), then to the feature ID (https://www.google.com/maps?ftid=…).

Example:

{
"url": "https://www.google.com/maps/place/?q=place_id:ChIJR9So-lRYwokRX1xEjA0rChA",
"placeId": "ChIJR9So-lRYwokRX1xEjA0rChA",
"fid": "0x89c25854faa8d447:0x100a2b0d8c445c5f",
"cid": "1155783591561813087",
"providerId": "/g/1td59jdq"
}

Ratings, reviews, and photos

Available popularity and media fields can include:

  • rating
  • reviewCount
  • reviewSnippet
  • photoCount
  • photos
  • photo
  • profilePhoto

Example:

{
"rating": 4.5,
"reviewCount": 17231,
"photoCount": 18178
}

Photo objects can include an ID, image URL, thumbnail, caption, and image coordinates where available.

Categories and classification

Businesses can include multiple Google Maps categories.

{
"categories": [
"Italian restaurant",
"Caterer",
"Delivery service",
"Family restaurant"
]
}

Opening hours

Hours-related fields can include:

  • openingHours
  • weeklyHours
  • currentHours
  • openNow
  • timezone

Example:

{
"openingHours": [
{
"day": "Monday",
"hours": "11:30 AM-11 PM"
},
{
"day": "Tuesday",
"hours": "11:30 AM-11 PM"
},
{
"day": "Wednesday",
"hours": "11:30 AM-11 PM"
}
]
}

Services, amenities, and attributes

Additional business details can include:

  • amenities
  • attributes
  • diningOptions
  • orderOnlineAvailable
  • orderOnlineUrl
  • hasDelivery

Depending on the business, these fields may describe options such as:

  • outdoor seating;
  • no-contact delivery;
  • delivery;
  • onsite services;
  • takeout;
  • dine-in;
  • local specialties;
  • breakfast, lunch, and dinner;
  • catering;
  • counter service;
  • table service;
  • coffee and desserts;
  • accessibility;
  • restroom availability;
  • seating;
  • atmosphere;
  • group suitability;
  • tourist popularity;
  • reservations;
  • payment methods;
  • mobile NFC payments;
  • child-friendly options;
  • high chairs;
  • parking.

Example:

{
"amenities": [
{ "id": "/geo/type/establishment_poi/has_seating_outdoors", "name": "Outdoor seating", "value": true },
{ "id": "/geo/type/establishment_poi/has_restroom", "name": "Restroom", "value": true }
]
}

Online ordering and delivery information

Where available, results can include:

  • orderOnlineAvailable
  • orderOnlineUrl
  • hasDelivery

Hotel-specific fields

For hotel results, available fields can include:

  • hotelCheckIn
  • hotelCheckOut
  • hotelStarRating
  • hotelPricePerNight
  • hotelBookingUrl
  • hotelAmenities

Detailed business data

Enable Scrape Detailed Business Data to enrich every result with the full business profile. The extra fields are added as top-level columns on the same record, so the output stays flat and easy to load β€” no nested objects to unpack, and the column set is identical whether or not a profile was found.

What it adds

Beyond the search fields, a details profile can add:

FieldWhat it contains
popularTimesHow busy the business is by day and hour, with a live busy status
reviewsDetailIndividual reviews with author, avatar, rating, relative date and badge
reviewsReview snippets
photosPhoto and video thumbnails with captions and media type
postsPosts published by the business owner, with text and media
menuMenu sections and items, with descriptions and prices where published
menuUrlLink to the business's menu
priceLevel, priceRangePrice indication, e.g. "$100+" and "$100 or above"
adminDivisionsAdministrative divisions the business sits in, with a relevance score
peopleAlsoSearchRelated businesses
reviewSummaryAn AI-generated summary of what reviewers say
ratingSummaryStar-rating breakdown as [{stars, amount}]
typicalTimeSpentHow long visitors typically stay
openState, hoursLastUpdatedCurrent open/closed state and when the hours were last updated
serviceOptions, placeAttributesOrdering options and place attributes
logoUrl, shareLinkBusiness logo and a shareable Google Maps link
hotelBookingHotel booking and pricing block: dates, star rating, lowest price, booking link, nearby hotels and attractions
areaInfoArea name, description and rankings for the surrounding area
subPlaces, subPlaceHoursDepartments or venues inside the business, with their hours
atThisPlaceOther places located at the same address
admission, experiences, eventsVenue admission, bookable experiences and events
evChargers, fuelPricesCharging and fuel information where applicable

Example

{
"name": "Le Bernardin",
"category": "French restaurant",
"priceLevel": "$100+",
"priceRange": "$100 or above",
"typicalTimeSpent": "People typically spend 3.5 hours here",
"adminDivisions": [
{ "name": "Manhattan", "score": 0.99 },
{ "name": "Midtown Manhattan", "score": 1 }
],
"ratingSummary": [
{ "stars": 1, "amount": 150 },
{ "stars": 2, "amount": 105 },
{ "stars": 3, "amount": 240 }
],
"menu": [
{
"section": "Tuna",
"section_note": null,
"items": [
{
"name": "Layers Of Thinly Pounded Yellowfin Tuna Foie Gras, Toasted Baguette, Chives",
"description": "",
"price": null
}
]
}
],
"menuUrl": "https://www.le-bernardin.com/menus/dining-room/chef-s-tasting",
"popularTimes": {
"weekly": [
{
"day_number": 1,
"hours": [
{ "hour": 18, "busy_percent": 62, "hour_label": "6 PM" }
]
}
],
"live_status": null
},
"reviewsDetail": [
{
"review_id": "ChdDSUhNMG9nS0VJQ0FnSUNRX3RXVDV3RRAB",
"author": {
"name": "Nikhil Sinha",
"avatar_url": "https://lh3.googleusercontent.com/a-/…",
"badge": "Local Guide Β· 62 reviews"
},
"rating": 4,
"relative_date": "2 months ago"
}
],
"photos": [
{
"photo_id": "CIHM0ogKEICAgICau_62Lw",
"caption": "Carmine's wood bar with taps",
"kind": "Photo",
"thumbnail_url": "https://lh3.googleusercontent.com/gps-cs-s/…"
}
],
"posts": {
"owner": "Carmine's - 44th Street - NYC",
"posts": [
{
"description": "Exploring Times Square? Add Carmine's to your NYC plans!",
"post_link": ["https://www.google.com/search?…"]
}
]
},
"peopleAlsoSearch": [
{ "name": "Example Bistro", "rating": 4.5, "review_count": 812 }
],
"reviewSummary": "Visitors say this museum features an incredibly vast and diverse collection of art and historical artifacts…",
"openState": "Closed Β· Opens 11:30 AM"
}

How it behaves

  • The column set never changes. A details profile only adds columns and refreshes values already present. Every record has the same columns with or without a profile, so downstream pipelines do not need to branch on whether details were fetched.
  • Refreshed values keep their format. Where a profile offers a newer figure it replaces the search value in place β€” for example rating and reviewCount. Where the two sources express a value differently, the established output format is preserved: phone stays international format, country stays the two-letter code (the full name is added as countryName), and actionLinks keeps its action/url keys.
  • Identifiers are never replaced. name, fid, placeId, cid and providerId always keep the values from the search result, so joins stay stable.
  • Longer descriptions are kept in longDescription, with the shorter text in shortDescription, so nothing is truncated away.
  • Duplicates are collapsed. Fields that restate data already present are not emitted twice, so a record never carries the same value under two column names.

Category-specific blocks

  • Restaurants, cafes, bars β€” menu, menuUrl, diningOptions, serviceOptions, priceLevel, typicalTimeSpent.
  • Hotels β€” hotelBooking (check-in/out dates, star rating, lowest price, booking link, nearby hotels and attractions), hotelPriceRange, checkInTime, checkOutTime, areaInfo.
  • Hospitals, clinics, gas stations β€” subPlaces, subPlaceHours, openState, hoursLastUpdated, serviceOptions.
  • Museums, arenas and other venues β€” admission, experiences, events, atThisPlace, typicalTimeSpent.
  • Charging and fuel stations β€” evChargers, fuelPrices.

Two fields are best-effort: the provider returns menu and popularTimes for most β€” but not all β€” businesses, so treat an empty value as "not published" rather than an error.

Contact enrichment

Enable Enrich Contact Details to add the emails, phone numbers, job titles and social profiles published on each business's own website. Only businesses that have a website can be enriched; the rest are saved unchanged with the same columns.

What it adds

ColumnWhat it contains
contactEmailsEmail addresses found on the site, deduplicated
contactPhones, contactMobiles, contactLandlinesPhone numbers, split by kind where the site distinguishes them
contactJobTitles, contactNamesJob titles and people found on the site
facebookUrl, instagramUrl, twitterUrl, youtubeUrl, linkedinUrlOne column per major social platform
socialLinksAll social profiles as {platform, url}, including platforms beyond the five above
contactSocialLinksSocial profiles attached to individual contacts
contactStatusOutcome of the lookup: enriched, no_contacts or dns_failed
contactBusinessName, contactPagesCrawledBusiness name found on the site and how many pages were read
techStack, adStackTechnologies and advertising tools detected on the site
contactEnrichmentThe complete contact record, including every contact with a confidence level

Example

{
"name": "OnceHub",
"contactStatus": "enriched",
"contactBusinessName": "OnceHub",
"contactEmails": ["support@oncehub.com"],
"contactPhones": ["+1 (201) 547-1565"],
"contactLandlines": ["+1 (201) 547-1565"],
"contactNames": ["Jane Diaz"],
"contactJobTitles": ["Head of Support"],
"facebookUrl": "https://www.facebook.com/oncehub",
"instagramUrl": "https://www.instagram.com/oncehub",
"twitterUrl": "https://twitter.com/oncehub",
"youtubeUrl": "https://www.youtube.com/oncehub",
"linkedinUrl": "https://www.linkedin.com/company/2277459",
"socialLinks": [
{ "platform": "linkedin", "url": "https://www.linkedin.com/company/2277459" },
{ "platform": "youtube", "url": "https://www.youtube.com/oncehub" }
],
"techStack": [
{ "name": "Cloudflare", "category": "cdn", "confidence": "high" }
],
"contactPagesCrawled": 30
}

A business with no website, or one whose site cannot be reached, is saved with the search fields only β€” contactStatus, when present, tells you which case it is.

How it behaves

  • Billing is per outcome. Every business whose website was actually looked up is charged on the contact-enrichment-try event, whatever the result. A business is charged on contact-enrichment only when at least one real contact detail was found β€” an email, a phone number, a social link or a person contact. Businesses with no website are never looked up and never charged.
  • Throughput is bounded so large runs stay stable: lookups are issued at up to 12 requests per second, one website per request, and each request is allowed a generous time budget so slow sites still complete.
  • Data quality varies. The details come from whatever the site publishes, so results can include role addresses rather than named contacts. Each entry in contactEnrichment carries a confidence level and the supporting evidence, which is the right signal to filter on.

πŸ“ Example Google Maps Scraper Output

The exact fields returned depend on the business and what information is available for that place.

Google Maps scraper business data output with phone and location details
{
"count": 20,
"query": "pizza in Chicago",
"results": [
{
"searchTerm": "pizza",
"searchLocation": "Chicago",
"displayRank": 14,
"name": "Fontano's Subs & Pizzeria",
"localName": "Carmine's - Times Square",
"businessType": "PIZZA_RESTAURANT",
"placeId": "ChIJtVc3Y-QtDogRUuc-XoS3eUY",
"fid": "0x880e2de4633757b5:0x4679b7845e3ee752",
"cid": "5101835467671982803",
"providerId": "/g/11fks6jzjr",
"status": "Open",
"isClaimed": "Yes",
"openNow": true,
"ownerName": "Fontano's Subs & Pizzeria (Owner)",
"address": "332 S Michigan Ave, Chicago, IL 60604",
"city": "Chicago",
"state": "Illinois",
"zipCode": "60604",
"countryCode": "US",
"neighborhood": "Chicago Loop",
"latitude": 41.8772942,
"longitude": -87.624614,
"phone": "+13126633061",
"website": "http://fontanosonmichigan.com/",
"websiteDomain": "fontanosonmichigan.com",
"rating": 4.6,
"reviewCount": 587,
"photoCount": 1,
"categories": [
"Pizza restaurant",
"Breakfast restaurant",
"Fast food restaurant",
"Delivery Restaurant",
"Takeout Restaurant",
"Pizza delivery",
"Pizza Takeout",
"Restaurant",
"Sandwich shop"
],
"currentHours": "Open Β· Closes 7 PM",
"timezone": "America/Chicago",
"orderOnlineAvailable": true,
"hasDelivery": false
}
]
}

🎯 Google Maps Scraper Use Cases

Lead generation and sales prospecting

Build targeted lists of local businesses using search terms, geographic boundaries, ratings, categories, and other filters.

Typical workflows include:

  • finding businesses in a sales territory;
  • creating prospect lists by industry and city;
  • locating high-rated businesses;
  • identifying businesses with websites or phone numbers;
  • collecting local business data for account-based marketing;
  • planning sales territories.

Market research and competitive intelligence

Use Google Maps data to understand local market structure and business density.

You can use the dataset to:

  • compare competitor distribution;
  • identify areas with high or low business density;
  • analyze category coverage;
  • research local market penetration;
  • discover underserved areas;
  • support geographic expansion decisions.

Real estate, site selection, and development

Combine location, category, rating, and density data to research commercial areas.

Common uses include:

  • comparing potential store locations;
  • analyzing nearby businesses;
  • evaluating local competition;
  • researching commercial real estate;
  • studying neighborhood business composition;
  • identifying opportunity areas.

Location-based applications

Use the Google Maps scraper API to populate or enrich applications with structured local-business information.

Examples include:

  • local search tools;
  • directories;
  • maps;
  • market-intelligence applications;
  • sales platforms;
  • territory-management tools;
  • business-discovery products.

Database enrichment

Match scraped businesses with existing records to add or refresh:

  • addresses;
  • coordinates;
  • phone numbers;
  • websites;
  • categories;
  • ratings;
  • review counts;
  • opening hours;
  • Google Maps identifiers.

πŸ§ͺ Google Maps Scraper Examples

Market research across a custom area

{
"term": [
"coffee shops",
"cafes",
"espresso bars"
],
"polygon": {
"type": "Polygon",
"coordinates": [[
[-74.041885, 40.570396],
[-73.855682, 40.570396],
[-73.855682, 40.739234],
[-74.041885, 40.739234],
[-74.041885, 40.570396]
]]
},
"min_rating": 4.0,
"min_reviews": 50,
"totalAroundCoordinate": 500
}

Competitive intelligence around a coordinate

{
"term": "pizza restaurants",
"latitude": "40.730610",
"longitude": "-73.935242",
"radius": 10,
"min_rating": 4.2,
"categories_filter": [
"Italian restaurant",
"Pizza"
],
"totalAroundCoordinate": 200
}

Site-selection research in a city

{
"term": [
"restaurants",
"retail stores",
"services"
],
"location": "Austin, TX",
"min_rating": 3.5,
"min_reviews": 20,
"totalAroundCoordinate": 1000
}

⚑ Performance, Scale, and Reliability

The Google Maps scraper is designed for large searches while keeping the workflow straightforward.

Scale

  • Up to 100 search terms per request.
  • Up to 15,000 results per search.
  • Efficient handling of large result sets.
  • Target-based stopping when the requested result count is reached.
  • Automatic duplicate removal.

Reliability

The Actor includes:

  • accurate, structured extraction of available business information;
  • automatic retries for failed requests;
  • graceful recovery from network issues;
  • input and output validation;
  • progress tracking;
  • memory-efficient processing;
  • systematic area coverage.

Actual run time depends on the query, target area, filters, requested result volume, and the amount of data available.

🌍 Global Google Maps Data Coverage

Search worldwide using country-, region-, and language-specific targeting.

Current functionality includes:

  • 240+ countries;
  • 70+ languages;
  • country and language-specific results;
  • precise coordinate targeting;
  • radius calculations;
  • custom polygon boundaries;
  • systematic coverage of defined geographic areas.

πŸ”„ Automation, Integrations, and Export Formats

API integration

Run the Actor through the Apify API using standard HTTP requests or supported client integrations.

Webhooks

Use webhooks to trigger another service when a run reaches a relevant state.

Scheduling

Schedule repeated Google Maps scraping jobs for recurring data collection or refresh workflows.

Batch processing

Run large searches and process the resulting dataset at scale. Results become available during the run, supporting immediate downstream processing and monitoring.

Export options

Results can be exported in:

  • JSON
  • CSV
  • Excel
  • XML

Workflow integrations

Google Maps business data can be used with:

  • CRM systems;
  • analytics platforms;
  • business intelligence tools;
  • marketing automation workflows;
  • internal databases;
  • custom applications.

πŸš€ How to Use the Google Maps Scraper

1. Choose what you want to find

Enter one or more search terms such as restaurant, dentist, hotel, coffee shop, or another business category.

2. Choose a geographic targeting method

Use one of the supported methods:

  • a named location;
  • latitude and longitude;
  • a GeoJSON polygon.

For coordinate searches, set a radius from 1 to 100 miles when needed.

3. Add filters

Optionally narrow the results with:

  • min_rating;
  • min_reviews;
  • categories_filter;
  • min_photos;
  • name_filter.

4. Set your target result count

Use totalAroundCoordinate where applicable to control how many unique results you want to collect.

5. Run and monitor the Actor

Start the Actor from Apify Console or call it through the Google Maps scraper API.

6. Export or integrate the results

Download the dataset or send it into your application, database, CRM, analytics workflow, or other system.

βœ… Best Practices for Better Google Maps Scraping

Use specific search terms

A precise query such as Italian restaurant or used car dealer usually produces a more focused dataset than a very broad term.

If businesses may be categorized in different ways, search several related phrases and rely on automatic deduplication.

Use coordinates for precision

Coordinates are useful when the center point of a market or territory matters.

Use polygons for irregular areas

A polygon is better than a radius when you need to stay inside a custom boundary.

Apply filters before collecting large datasets

Filtering by rating, review count, category, photos, or name can reduce irrelevant results.

Set realistic result targets

Choose a target that matches the expected density of businesses in the selected geographic area.

Schedule refreshes when freshness matters

For recurring research, schedule new runs rather than relying indefinitely on an old export.

Data management

For large or recurring datasets:

  • validate important fields before using them in production workflows;
  • store exports efficiently for the format and query pattern you need;
  • keep backups when the dataset is business-critical;
  • schedule periodic refreshes when current business information matters.

❓ Google Maps Scraper FAQ

What is a Google Maps scraper?

A Google Maps scraper is a data-extraction tool that converts business information visible on Google Maps into structured records. This Actor can collect business names, addresses, coordinates, phone numbers, websites, ratings, review counts, categories, hours, identifiers, photos, amenities, and other available fields.

Does this Actor provide a Google Maps scraper API?

Yes. You can run the Actor programmatically through the Apify API and use it as a Google Maps scraper API in automated applications and data workflows.

Is this the official Google Maps API?

No. This is an Apify Actor for extracting Google Maps business data; it is not the official Google Maps Platform API.

How many Google Maps results can I scrape?

The Actor supports up to 15,000 results per search.

Can I scrape multiple Google Maps search terms in one run?

Yes. The Actor supports up to 100 search terms per request.

Can I search Google Maps by latitude and longitude?

Yes. Provide latitude and longitude, then optionally set a radius from 1 to 100 miles and a target result count.

Can I scrape businesses inside a custom polygon?

Yes. The Actor accepts a GeoJSON polygon so you can target custom or irregular geographic boundaries.

Can I filter Google Maps results by rating?

Yes. Use min_rating to set a minimum star rating from 0 to 5.

Can I filter by the number of Google reviews?

Yes. Use min_reviews to exclude businesses below your required review count.

Can I filter businesses by Google Maps category?

Yes. Use categories_filter with one or more business categories.

Can I filter businesses by name?

Yes. name_filter supports a single keyword or multiple keywords.

Can I scrape phone numbers and websites from Google Maps?

Yes, when those details are available for the business. Relevant output fields include phone, phoneIsd, website, and websiteDomain.

Can I get emails and social profiles for a business?

Yes. Enable Enrich Contact Details and the Actor looks up each business's official website and adds the emails, phone numbers, job titles and social profiles it publishes, described in Contact enrichment. It works for any business that has a website, not just those with full detail data. It is billed on two pay-per-event charges: contact-enrichment-try for every website actually looked up, and contact-enrichment when a real contact detail is found.

Can I get the complete profile of a business?

Yes. Enable Scrape Detailed Business Data and the full profile is merged flat into every result β€” menus, amenities, hotel booking and pricing, service options, popular times, place attributes, photos, posts, and the category-specific blocks described in Detailed business data. Duplicates between the two sources are removed. This option is billed separately on the place-details event.

What geographic areas are supported?

The Actor supports worldwide searches across 240+ countries and 70+ languages.

What output formats are available?

You can work with or export results in JSON, CSV, Excel, and XML.

Does the scraper remove duplicate businesses?

Yes. The Actor includes automatic duplicate removal to reduce repeated results, including when several search terms return the same business.

Can I schedule recurring Google Maps scraping jobs?

Yes. Use Apify scheduling to automate recurring data-collection runs.

Can I connect the scraper to another application?

Yes. Use the Apify API, webhooks, and dataset exports to connect results to CRMs, analytics platforms, databases, business intelligence tools, marketing automation systems, and custom software.

Can I use the data for market research or lead generation?

Yes. Common use cases include lead generation, market analysis, competitor research, territory planning, geographic expansion, site selection, database enrichment, and location-based applications.

πŸ”’ Security and Compliance

The existing Actor functionality includes security and compliance measures described as:

  • encrypted data transmission;
  • GDPR and CCPA compliance;
  • secure API access management;
  • activity logging and audit trails;
  • data validation and quality assurance;
  • performance monitoring.

Users are responsible for ensuring that their own collection, storage, and use of scraped data complies with applicable laws, contractual requirements, and platform terms.

πŸ“š Support and Documentation

Resources for working with the Actor include:

  • API documentation;
  • implementation examples;
  • optimization and best-practice guidance;
  • troubleshooting information.

Support options include:

  • technical support;
  • custom solutions;
  • training and onboarding;
  • consulting for business use cases.

πŸ“§ Need Emails and Social Profiles Too?

For deeper contact enrichment, use the Google Maps Email Extractor.

It is designed to enrich Google Maps businesses with additional contact information from their websites, including:

  • email addresses;
  • phone numbers;
  • website information;
  • Facebook profiles;
  • Instagram profiles;
  • LinkedIn profiles;
  • YouTube profiles.

It also supports coordinate-radius searches and GeoJSON polygon targeting, concurrent email extraction at 5 RPS, and deduplication by Google ID.

Typical use cases include lead generation, contact-database building, social outreach, and email marketing research.

πŸ› οΈ Create a GeoJSON Polygon

Need a custom boundary for a polygon search? Use the free Keene College Polyline Tool.

It provides:

  • an interactive map for drawing polygon vertices;
  • GeoJSON coordinate output;
  • right-hand-rule coordinate ordering;
  • a simple interface with no registration required.

How to create a polygon

  1. Open the Polyline Tool.
  2. Right-click on the map to begin drawing.
  3. Click to add polygon vertices.
  4. Select Close Shape to complete the boundary.
  5. Copy the generated GeoJSON coordinates.
  6. Paste the coordinates into the Actor's polygon input.

This is useful for neighborhoods, sales territories, service areas, and other custom geographic boundaries.

πŸ“© Need a Custom Google Maps Dataset?

For bulk datasets by city, country, category, or global coverage, contact Poidata.io.

Use the Google Maps Scraper when you need flexible self-service extraction. For larger one-off datasets or custom requirements, Poidata can provide a tailored data solution.