Google Maps Extractor ✅ $1.5/1k places avatar

Google Maps Extractor ✅ $1.5/1k places

Pricing

from $1.50 / 1,000 scraped places

Go to Apify Store
Google Maps Extractor ✅ $1.5/1k places

Google Maps Extractor ✅ $1.5/1k places

From $1.50 / 1,000 saved places. Fast Google Maps Extractor for Google Places data, local business listings, addresses, phones, websites, ratings, review counts, opening hours, coordinates, Place IDs, CIDs, and public website contacts from keywords, URLs, Place IDs, or map areas.

Pricing

from $1.50 / 1,000 scraped places

Rating

0.0

(0)

Developer

Hundevmode Labs

Hundevmode Labs

Maintained by Community

Actor stats

1

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Share

Google Maps Extractor: Scrape Google Places, Business Details and Contacts

Google Maps Extractor collects structured Google Maps place data from search terms, locations, Google Maps URLs, Google Place IDs, and selected map areas. Use it to scrape Google Places data, local business listings, addresses, websites, phone numbers, ratings, review counts, opening hours, popular times, coordinates, Place IDs, CIDs, and public website contacts.

It is built for fast Google Maps data extraction, local business lead lists, local SEO research, competitor mapping, store locator datasets, and CRM enrichment from existing Google Maps URLs or Place IDs.

Real Google Maps search results for bike repair shops in Portland

AI agent skill

Use the dedicated Google Maps Extractor Apify agent skill when you want AI agents to build Google Maps extraction inputs, run this actor through Apify, control spend with maxTotalChargeUsd, and return structured place, business detail, and contact rows for CRM, Sheets, n8n, BI, or enrichment workflows.

Install with skills.sh-compatible agents:

npx skills add hundevmode/apify-google-maps-extractor-agent-skill \
--skill google-maps-extractor-apify

ClawHub skill slug: google-maps-extractor-apify.

At a glance

NeedUse this actor for
Google Maps place extractionNames, categories, ratings, addresses, phones, websites, coordinates, Place IDs, CIDs
Local leadsBusiness websites, phone numbers, public emails, and social profile links
Local SEOCompetitor lists by category, city, rating, review count, website availability, and opening status
Store locator dataAddresses, coordinates, Google Maps URLs, plus codes, and opening hours
CRM enrichmentEnrich existing Google Maps URLs or Place IDs with place details and contacts
Google Places API alternativesExport Google Maps business data to JSON, CSV, Excel, or API workflows

Pricing

The actor uses the same place, filter, details, and contacts pricing as our main Google Maps Scraper.

EventFreePaid plans
Scraped place$3.00 / 1,000 saved places$1.50 / 1,000 saved places
Add-on: filter applied$0.80 / 1,000 saved places$0.35 / 1,000 saved places
Add-on: additional place details scraped$1.50 / 1,000 enriched places$0.75 / 1,000 enriched places
Add-on: company contacts enrichment$1.50 / 1,000 enriched places$0.45 / 1,000 enriched places
Actor start$0.00005 per start event$0.00001 per start event

Set a maximum run cost before starting a run. The actor respects the Apify spending limit and exits gracefully when no paid results can be saved.

Quick start

Search by keyword and location:

{
"searchStringsArray": ["bike repair shop"],
"locationQuery": "Portland, Oregon, USA",
"maxCrawledPlacesPerSearch": 100,
"language": "en"
}

Filter by categories, rating, and website availability:

{
"searchStringsArray": ["restaurant"],
"locationQuery": "Austin, Texas, USA",
"maxCrawledPlacesPerSearch": 50,
"categoryFilterWords": ["Italian restaurant", "pizza"],
"placeMinimumStars": "four",
"website": "withWebsite",
"language": "en"
}

Scrape from a Google Maps URL:

{
"startUrls": [
{
"url": "https://www.google.com/maps/search/restaurants+near+New+York,+NY"
}
],
"maxCrawledPlacesPerSearch": 100,
"language": "en"
}

Enrich exact Place IDs with details and website contacts:

{
"placeIds": ["ChIJN1t_tDeuEmsRUsoyG83frY4"],
"maxCrawledPlacesPerSearch": 1,
"scrapePlaceDetailPage": true,
"scrapeContacts": true
}

Input options

FieldWhat it does
searchStringsArrayOne or more Google Maps search terms, such as restaurant, dentist, hotel, or bike repair shop.
locationQueryFree-text location, such as Portland, Oregon, USA or Berlin, Germany.
maxCrawledPlacesPerSearchTarget number of places per search term or Google Maps URL.
languageGoogle Maps language code used for localized result text.

Google Maps URLs and Place IDs

FieldWhat it accepts
startUrlsGoogle Maps search URLs, direct place URLs, cid URLs, and Google Maps app/share URLs.
placeIdsGoogle Place IDs, values prefixed with place_id:, and URLs containing query_place_id.

Result filters

FieldWhat it does
categoryFilterWordsFree-text category keywords matched against categoryName and categories.
placeCategoriesPredefined Google Business Profile categories from the built-in category list.
searchMatchingKeep all places, only names that include the search term, or exact name matches.
placeMinimumStarsMinimum Google rating.
websiteKeep all places, only places with websites, or only places without websites.
skipClosedPlacesRemove places Google marks as temporarily or permanently closed.

Add-on: Place details

Enable scrapePlaceDetailPage to collect richer details when Google exposes them:

  • opening hours
  • additional opening hour groups
  • popular times
  • menu and services links
  • table reservation URLs
  • order-online URLs
  • related web links
  • inside places
  • plus code
  • review count and rating distribution
  • hotel and fuel fields when available

Related fields:

  • scrapePlaceDetailPage
  • scrapeTableReservationProvider
  • scrapeOrderOnline
  • includeWebResults
  • scrapeDirectories

Add-on: Company contacts enrichment

Enable scrapeContacts to visit public business websites after places are collected and extract available:

  • emails
  • additional phone numbers
  • Facebook URLs
  • Instagram URLs
  • LinkedIn URLs
  • X/Twitter URLs
  • YouTube URLs
  • TikTok URLs

Use website: "withWebsite" when running large contact-enrichment jobs to avoid spending time on places without websites.

Search area

Use these fields when you need structured geographic control:

  • countryCode
  • city
  • state
  • county
  • postalCode
  • customGeolocation
  • strictLocationBounds

Free-text locationQuery has priority when provided.

All visible places

Use allPlacesNoSearchAction when you want visible-map coverage for a concrete local area instead of a category search:

{
"locationQuery": "SoHo, New York, USA",
"allPlacesNoSearchAction": "all_visible",
"allPlacesZoom": 16,
"maxCrawledPlacesPerSearch": 500
}

This mode requires a concrete area. Country-only and very broad locations should be split into smaller runs.

Output

Each dataset item is one Google Maps place.

GroupExample fields
Basic place datatitle, subTitle, description, categoryName, categories, price, rank, isAdvertisement
Address and locationaddress, street, neighborhood, city, state, postalCode, countryCode, location, plusCode, locatedIn, floor
Contact datawebsite, phone, phoneUnformatted, emails, additionalPhones
Social linksfacebooks, instagrams, linkedIns, twitters, youtubes, tiktoks
Status and ownershippermanentlyClosed, temporarilyClosed, claimThisBusiness
RatingstotalScore, reviewsCount, reviewsDistribution, reviewsTags
Place detailsopeningHours, additionalOpeningHours, popularTimesLiveText, popularTimesLivePercent, popularTimesHistogram, menu, servicesLink, reserveTableUrl, googleFoodUrl, peopleAlsoSearch, placesTags
Hotels and fuelhotelStars, hotelDescription, checkInDate, checkOutDate, hotelAds, gasPrices
Google identifiersplaceId, cid, fid, kgmid, url, searchPageUrl, searchPageLoadedUrl, searchString, language
Add-on dataadditionalInfo, including nested data such as companyContacts, webResults, and insidePlaces when enabled

Example output item:

{
"title": "Example Bike Repair",
"categoryName": "Bicycle repair shop",
"address": "123 Main St, Portland, OR 97205",
"city": "Portland",
"countryCode": "US",
"website": "https://example.com",
"phone": "+1 503-555-0100",
"totalScore": 4.8,
"reviewsCount": 142,
"placeId": "ChIJ...",
"cid": "1234567890",
"url": "https://www.google.com/maps/place/...",
"location": {
"lat": 45.5152,
"lng": -122.6784
}
}

You can export the dataset from Apify as JSON, CSV, Excel, XML, HTML table, or access it through the Apify Dataset API.

API usage

curl -X POST "https://api.apify.com/v2/acts/x_guru~google-maps-extractor/runs?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"searchStringsArray": ["plumber"],
"locationQuery": "Phoenix, Arizona, USA",
"maxCrawledPlacesPerSearch": 100,
"language": "en",
"scrapeContacts": true
}'

Best practices

  • Use one clear business category per search term.
  • Use a concrete city, neighborhood, postal code, or custom area.
  • Start with a small limit, check quality, then scale.
  • Enable only the add-ons you need.
  • Use maxTotalChargeUsd in Apify run options for budget control.
  • Use the website filter before website contact enrichment on large jobs.
  • Use categoryFilterWords for fast category matching and placeCategories when you want a predefined Google Business Profile category.
  • Use direct startUrls or placeIds when you already know the exact businesses you want to enrich.

FAQ

Is this different from the main Google Maps Scraper?

Yes. This actor is focused on fast place extraction, business details, and website contacts with a simpler input.

Can it extract emails?

Yes, when scrapeContacts is enabled and the business has a public website with reachable contact information.

Can it scrape exact businesses?

Yes. Use direct Google Maps place URLs in startUrls or Google Place IDs in placeIds.

Google Maps extractor, Google Maps data extractor, Google Maps scraper, Google Places scraper, Google Places data, Google Maps business data, local business extractor, Google Maps leads, business contacts extractor, Google Maps emails, local SEO data, competitor research, store locator data, Apify Google Maps actor, scrape Google Maps places.