Google Maps Local SEO Leads Scraper avatar

Google Maps Local SEO Leads Scraper

Pricing

from $2.00 / 1,000 results

Go to Apify Store
Google Maps Local SEO Leads Scraper

Google Maps Local SEO Leads Scraper

Track how businesses rank on Google Maps for specific keywords and locations, useful for local SEO audits, competitor tracking, and agency reporting.

Pricing

from $2.00 / 1,000 results

Rating

0.0

(0)

Developer

Dmytro Paduchak

Dmytro Paduchak

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Categories

Share

Google Maps Local SEO Rank Tracker

Track where target businesses rank in public Google Maps search results for multiple keywords and locations. The Actor combines every keyword with every location, opens Google Maps search results, extracts listing details, and marks rows that match your target business names or website domains.

No Google Maps API key is required.

What You Can Use It For

  • Monitor local SEO visibility across cities, neighborhoods, or service areas
  • Track competitor and client positions for important commercial keywords
  • Export keyword/location ranking snapshots for reporting
  • Audit whether a brand appears in the Google Maps local pack result list

Input

Configure the Actor with keyword and location lists:

{
"keywords": ["coffee shop", "cafe"],
"locations": ["London", "Manchester"],
"targetBusinessNames": ["Example Coffee"],
"targetDomains": ["example.com"],
"maxResults": 20,
"language": "en",
"country": "uk",
"apifyProxy": true,
"apifyProxyGroups": ["RESIDENTIAL"],
"proxyCountries": [],
"proxyUrls": [],
"proxySessionRetries": 2,
"adaptiveThrottle": true
}
FieldTypeDefaultDescription
keywordsstring[]requiredSearch terms to track, such as coffee shop, dentist, or estate agent.
locationsstring[]requiredLocations to combine with every keyword, such as London, Manchester, or Austin TX.
targetBusinessNamesstring[][]Business names to match against Google Maps result names. Matching is case-insensitive and tolerant of punctuation.
targetDomainsstring[][]Website domains to match against listing websites. Values can be plain domains or full URLs.
maxResultsnumber50Maximum number of results to collect per keyword/location search.
languagestring"en"Preferred Google Maps interface language.
countrystring-Optional country hint, such as uk, us, de, or fr.
apifyProxybooleantrueEnable Apify Proxy for more reliable scraping.
apifyProxyGroupsstring[]["RESIDENTIAL"]Proxy pools: RESIDENTIAL, DATACENTER, SERP.
proxyCountriesstring[][]Route through specific countries using ISO 2-letter country codes.
proxyUrlsstring[][]Custom proxy URLs. If provided, these override Apify Proxy.
proxySessionRetriesnumber2Number of retryable browser sessions per search after blocking, empty results, or navigation failures.
adaptiveThrottlebooleantrueAutomatically slows down when Google Maps loads slowly, returns sparse results, or shows blocking signals.
baseThrottleDelayMsnumber250Starting adaptive delay before business-card actions.
maxThrottleDelayMsnumber10000Maximum adaptive delay.
slowLoadThresholdMsnumber12000Load duration that causes the Actor to increase adaptive delay.

Each source query is built as:

{keyword} in {location}

Output

Each Google Maps result is saved to the default Apify Dataset as one rank row.

{
"keyword": "coffee shop",
"location": "London",
"rankPosition": 3,
"businessName": "Example Coffee",
"category": "Coffee shop",
"address": "10 Example Street, London",
"website": "https://example.com/",
"googleMapsUrl": "https://www.google.com/maps/place/Example+Coffee/...",
"placeId": "0x487...",
"latitude": 51.5072,
"longitude": -0.1276,
"isTargetMatch": true,
"matchedTarget": "domain:example.com",
"sourceQuery": "coffee shop in London",
"scrapedAt": "2026-05-13T12:00:00.000Z"
}

The Actor outputs these fields:

keyword, location, rankPosition, businessName, category, address, website, googleMapsUrl, placeId, latitude, longitude, isTargetMatch, matchedTarget, sourceQuery, and scrapedAt.

Some listing fields may be missing when they are not publicly visible on Google Maps.

How Matching Works

targetBusinessNames are matched against the extracted business name using normalized case, whitespace, punctuation, and ampersands. targetDomains are normalized to hostnames, so https://www.example.com/page and example.com match the same target domain.

matchedTarget is prefixed with businessName: or domain: so you can see which target rule matched.

Reliability Notes

Google Maps can show captcha or automated-traffic blocking, especially on repeated runs, high result counts, or datacenter IPs. The Actor detects common blocking pages and fails clearly instead of silently saving bad data.

For larger production runs:

  • Enable apifyProxy
  • Use residential or geographically relevant proxy settings
  • Keep maxResults moderate for each keyword/location pair
  • Increase proxySessionRetries and maxThrottleDelayMs for long batches
  • Review output quality before scaling to many searches

This Actor is intended for academic, educational, and research purposes only. Users are responsible for ensuring that their use of this tool complies with Google's Terms of Service, Google Maps Terms, and any applicable local laws regarding data privacy and scraping.

Automated access to Google services may be restricted. We do not encourage or condone the use of this tool for any activity that violates the rights of others or the service provider.