Google Maps Lead Scraper avatar

Google Maps Lead Scraper

Pricing

Pay per usage

Go to Apify Store
Google Maps Lead Scraper

Google Maps Lead Scraper

Extracts business leads (name, phone, address, website, rating, reviews) from Google Maps search results for any search term and location.

Pricing

Pay per usage

Rating

0.0

(0)

Developer

Ayush Khatiwada

Ayush Khatiwada

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Share

Turn any Google Maps search into a clean, structured list of business leads — names, phone numbers, websites, addresses, and ratings — ready for cold outreach, CRM import, or market research.

Give it a search like dentists in Austin, TX and it returns every listing it finds as a row of structured data. No manual copy-paste, no browser extensions.

What you get

Each result is one business, with these fields:

FieldTypeDescription
namestringBusiness name as shown on the listing
categorystringPrimary Google category (e.g. "Dentist", "Coffee shop")
phonestringPublic phone number, when the listing shows one
websitestringBusiness website URL, when linked
addressstringFull street address
ratingnumberAverage star rating (e.g. 4.5)
reviewsCountintegerTotal number of reviews
googleMapsUrlstringDirect link back to the listing
searchQuerystringThe query this lead came from
scrapedAtstringISO 8601 timestamp of extraction

Fields that a listing doesn't publish come back as null rather than being omitted — so your rows always have the same shape and import cleanly into spreadsheets and CRMs.

Export as JSON, CSV, Excel, or XML from the console, or pull it straight from the API.

Input

OptionTypeDefaultDescription
searchQueriesarray of stringsrequiredOne search per line. Include the location for best results.
maxResultsPerQueryinteger30Cap on listings per query (1–500).
maxConcurrencyinteger2Queries processed in parallel (1–10). Lower is more reliable.
proxyConfigurationobjectApify Proxy onStrongly recommended — Google rate-limits datacenter IPs quickly.

Example input

{
"searchQueries": [
"dentists in Austin, TX",
"plumbers near Chicago, IL"
],
"maxResultsPerQuery": 50,
"maxConcurrency": 2,
"proxyConfiguration": { "useApifyProxy": true }
}

Example output

{
"name": "Congress Avenue Dental",
"category": "Dentist",
"phone": "+1 512-555-0142",
"website": "https://example-dental.com",
"address": "1100 Congress Ave, Austin, TX 78701",
"rating": 4.7,
"reviewsCount": 312,
"googleMapsUrl": "https://www.google.com/maps/place/...",
"searchQuery": "dentists in Austin, TX",
"scrapedAt": "2026-08-24T09:15:22.104Z"
}

Typical uses

  • Cold outreach lists — pull every plumber, dentist, or gym in a metro with a phone number attached.
  • Finding businesses without websites — filter for website: null to spot prospects for web design or SEO services.
  • Competitor and market mapping — see how many competitors operate in an area and how they rate.
  • Enriching an existing CRM — match on name and address to backfill missing phone numbers and ratings.

Tips for good results

  • Put the location in the query. "dentists in Austin, TX" works far better than "dentists", which leaves the location up to Google's guess.
  • Split large areas into several queries rather than raising maxResultsPerQuery — Google's results feed stops loading after a few hundred entries per search, so ten city-level queries beat one state-level query.
  • Keep maxConcurrency at 1–3. Higher values scrape faster but raise the chance of being rate-limited, which costs you more in retries than it saves.
  • Leave Apify Proxy enabled. Without rotating IPs, Google will start serving blocks partway through a run.

Limitations — please read

  • Only publicly visible listing data is extracted. No emails, no personal profiles, no data behind a login.
  • Google changes its page structure periodically. If fields suddenly come back null, the selectors likely need an update — please report it and it will be fixed.
  • Not every listing has every field. Many small businesses never add a website or phone number; those come back null.
  • Result counts are approximate. Google decides how many listings it will load for a given search, so a query capped at 100 may legitimately return fewer.
  • Review the terms that apply to you. This extracts public data, but large-scale commercial scraping of Google properties runs against Google's Terms of Service. You are responsible for how you use the output, including compliance with GDPR/CCPA and local marketing regulations when contacting businesses.

Support

Found a broken selector or want a field added? Open an issue on the Actor's issues tab with the search query you used and what you expected — that's the fastest path to a fix.