Google Maps Scraper Goat avatar

Google Maps Scraper Goat

Pricing

from $3.00 / 1,000 lead scrapeds

Go to Apify Store
Google Maps Scraper Goat

Google Maps Scraper Goat

Extract business leads from Google Maps search results with emails and social media profiles

Pricing

from $3.00 / 1,000 lead scrapeds

Rating

0.0

(0)

Developer

Goutam Soni

Goutam Soni

Maintained by Community

Actor stats

0

Bookmarked

5

Total users

3

Monthly active users

17 days ago

Last modified

Share

Google Maps Extractor

Extract business leads from Google Maps at scale — names, phones, emails, websites, full addresses (structured), ratings, review counts, GPS coordinates, Knowledge Graph IDs, and 10 social platforms. No browser needed, runs on pure HTTP for maximum speed and minimal cost.

What it does

Enter search queries and locations. The actor scrapes Google Maps results with automatic pagination, then optionally visits each business website to harvest emails and social profiles across 10 networks.

Each query × location pair runs in parallel for fast bulk extraction.

Extracted fields

From the Maps search response (always)

FieldDescription
nameBusiness name
nameLocalName in the local language (e.g. Hindi, Arabic)
categoryCategories (semicolon-separated)
categoryListCategories as an array
addressFullFull formatted address
addressNeighborhoodNeighborhood / short locality
addressJoinedAddress parts comma-joined (legacy form)
structuredAddress{neighborhood, addressLine1, addressLine2, city, state, postalCode, countryCode}
regionDisplayHuman-readable region (e.g. "Jaipur, Rajasthan, India")
countryCodeISO country code
phonePhone in display format
phoneE164Phone in E.164 format (e.g. +917665552345)
websiteBusiness website URL
averageRatingStar rating (1.0 - 5.0)
reviewCountTotal number of reviews
latitude, longitudeGPS coordinates
placeIDGoogle Place ID (ChIJ...)
kgIDKnowledge Graph ID (/g/...)
cIDCustomer ID in hex (0x...:0x...)
cidDecimalCID as a decimal string
ownerUserIDGoogle account ID of the GMB owner
profilePhotoURL of the business profile photo
timezoneIANA timezone (e.g. Asia/Calcutta)
languagePrimaryPrimary language (e.g. en)
languageSecondarySecondary language (e.g. hi)
0_Sunday...6_SaturdayWorking hours per weekday

From the Place Details endpoint (when Extract Place Details is enabled)

Adds 1 HTTP request per business. Enriches every record with:

FieldDescription
descriptionFull business description ("From the owner")
plusCodeGoogle Plus Code (e.g. "VQ7Q+G8 Jaipur")
displayedReviewCountCanonical review count shown on the place page
reviewsPerStarCounts per star — {"1": 11, "2": 1, "3": 1, "4": 6, "5": 145}
reviewTopicsTopic chips from reviews (pre-wedding shoot, professional team, etc.)
popularTimesHourly busy percentages per day of week
featuresService options, accessibility, amenities, crowd attributes
inlineReviewsFirst batch of reviews (8) embedded in the place page
previewQuotesShort review snippets shown in the place panel
owner{name, userID, link} to the owner's Maps contributor page
canonicalMapsURLCanonical place URL on Google Maps
categoryIDsMachine-readable category IDs with weights
addrNeighborhood, addrLine1, addrLine2, addrCity, addrPostalCode, addrState, addrCountryCodeGranular address parts

From the Reviews endpoint (when Extract Full Review Text is enabled)

Marquee feature — most Apify Maps actors return only the review count. We return every review.

Adds 1+ HTTP requests per business (paginated, default page size 10). Each review record contains:

FieldDescription
reviewIDStable Google review identifier
authorNameReviewer display name
authorPhotoReviewer profile photo URL
authorProfileURLReviewer's Maps contributor page
authorIDGoogle account ID
authorReviewCountTotal reviews this author has written
authorPhotoCountTotal photos this author has uploaded
rating1-5 star rating
textFull review text
relativeTime"3 months ago"
timestampUnix seconds since epoch
photosURLs of photos posted with the review
ownerReply{text, relativeTime, timestamp} when owner replied

Configurable via maxReviewsPerPlace (default 20, set to 0 for every review).

From the website crawl (when Extract Emails & Social Profiles is enabled)

FieldDescription
emailBusiness email addresses (domain-prioritized)
instagramInstagram profile URLs
facebookFacebook page URLs
linkedinLinkedIn page URLs
twitterTwitter/X profile URLs
youtubeYouTube channel URLs
tiktokTikTok profile URLs
threadsThreads profile URLs
whatsappWhatsApp click-to-chat URLs
telegramTelegram username URLs

All website-crawl fields are arrays. The crawler handles Cloudflare email obfuscation, parses mailto: and whatsapp: href schemes, and (with deep search enabled) follows /contact, /about, /team, /help, etc. up to one level.

Output example

{
"name": "Jaipur Pixel Photography",
"nameLocal": "जयपुर पिक्सेल फोटोग्राफी",
"category": "Wedding photographer;Aerial photographer;Photo booth",
"categoryList": ["Wedding photographer", "Aerial photographer", "Photo booth"],
"addressFull": "P-60-B, Chandra Nagar, Muktanand Nagar, Gopal Pura Mode, Jaipur, Rajasthan 302018, India",
"structuredAddress": {
"neighborhood": "Chandra Nagar, Muktanand Nagar, Gopal Pura Mode",
"addressLine1": "P-60-B",
"addressLine2": "P-60-B",
"city": "Jaipur",
"postalCode": "302018",
"state": "Rajasthan",
"countryCode": "IN"
},
"phone": "+91 76655 52345",
"phoneE164": "+917665552345",
"website": "https://example.com/",
"email": ["info@example.com"],
"averageRating": 4.7,
"reviewCount": 489,
"instagram": ["https://www.instagram.com/jaipurpixel"],
"facebook": ["https://www.facebook.com/jaipurpixel"],
"whatsapp": ["https://wa.me/917665552345"],
"latitude": 26.8637701,
"longitude": 75.7883492,
"timezone": "Asia/Calcutta",
"placeID": "ChIJKwwR99a1bTkRoZJquuye2NU",
"kgID": "/g/11hj4wlv0_",
"cID": "0x396db5d6f7110c2b:0xd5d89eecba6a92a1",
"1_Monday": "7 AM–7 PM"
}

Pricing

This actor uses pay-per-event pricing. You only pay for results you receive.

What you pay forPrice
Per business lead$0.005

This includes all available data: business info, working hours, structured address, Knowledge Graph IDs, profile photo, and — when enabled — emails and 10-platform social profiles. No hidden fees.

Example costs:

  • 100 leads without emails: $0.50
  • 500 leads with emails + socials: $2.50
  • 1,000 leads with full data: $5.00

Set a spending limit before each run to control your budget. The actor stops automatically when your limit is reached.

Residential proxies recommended (available on all Apify plans including free). The actor automatically falls back to datacenter or direct connection if residential isn't available. Email extraction uses direct connections at no extra proxy cost.

How it works

  1. Constructs optimized API requests to Google Maps (no browser overhead)
  2. Automatically paginates to collect all matching results
  3. Optionally visits each business website to extract emails and social profiles across 10 platforms
  4. Deduplicates results across queries using Google Place IDs

Email extraction crawls each business website and its contact/about pages to find:

  • Email addresses (prioritizes emails matching the business domain)
  • Social media profiles (Instagram, Facebook, LinkedIn, Twitter/X, YouTube, TikTok, Threads, WhatsApp, Telegram)
  • Direct mailto: and whatsapp: href links
  • Cloudflare email obfuscation (decodes data-cfemail attributes)

Tips

  • Unlimited results: Set max results to 0
  • Parallel queries: Multiple query × location pairs run concurrently
  • Better emails: Enable both email extraction and deep search
  • Geographic precision: Use direct Google Maps URLs with zoom level
  • Budget control: Set a spending limit — the actor stops when reached

Architecture & customization

The actor is built on a declarative, schema-driven extraction model. Adding a new field, swapping an extraction source, or fixing a broken index after a Google response change is typically a one-line edit in a single file. See docs/EXTRACTORS.md and docs/SCHEMA_UPDATES.md for details.