Google Maps Local SEO Scraper
Pricing
Pay per usage
Google Maps Local SEO Scraper
Google Maps Local SEO Scraper helps agencies, marketers, and lead generation teams extract public Google Maps business data for local SEO, competitor analysis, and local lead discovery. It turn Google Maps results into structured business intelligence you can export, filter, and market research.
Pricing
Pay per usage
Rating
0.0
(0)
Developer
Shahab Uddin
Actor stats
0
Bookmarked
1
Total users
0
Monthly active users
a day ago
Last modified
Categories
Share
Google Maps Scraper for Local SEO
Extract public Google Maps business data into structured local SEO datasets for lead generation, competitor research, citation discovery, and market analysis.
This Apify Actor helps agencies, local businesses, and growth teams collect structured Google Maps results without needing a Google Maps API key. It is designed for public business listing intelligence, not private Google Business Profile owner analytics.
Why teams use this Actor
- Build local SEO audit datasets for a city, service area, or niche
- Compare top ranking businesses by reviews, ratings, category usage, and profile completeness
- Create lead lists from businesses with weak websites, low review counts, or incomplete listings
- Benchmark a target business across related local keywords
- Export agency-ready data to CSV or JSON for dashboards, reporting, and outreach workflows
Who this Actor is for
- Local SEO agencies running competitor audits and recurring client reports
- Lead generation teams sourcing local businesses with visible optimization gaps
- Consultants mapping category saturation and city-by-city competition
- Multi-location brands reviewing how local markets differ by query and region
What this Actor extracts
For each Google Maps result, the Actor can collect public fields such as:
- Business name
- Category
- Address
- Phone number
- Website
- Rating
- Review count
- Review snippets
- Opening hours
- Coordinates
- Images or photo availability
- Google Maps URL
- Ranking position for the query
Depending on public availability, the Actor may also return:
- Review text snippets
- Competitor profile completeness signals
- Keyword relevance indicators
- Authority and health scores
- Citation sources discovered from public web pages
Best use cases
Local SEO
Use this Actor to analyze businesses ranking for a keyword in a city or service area and quickly spot where profiles are strong, weak, or under-optimized.
Examples:
- dentists in chicago
- real estate agents in toronto
- mobile repair near me
- plumbers in dubai
Lead generation
Find local businesses missing key profile elements such as:
- no website
- low review count
- weak ratings
- incomplete business information
Competitor research
Compare top Google Maps competitors by:
- ratings
- review count
- website presence
- category usage
- profile completeness
Agency reporting
Export structured Google Maps data to CSV or JSON and plug it into dashboards, client reports, prospecting systems, or internal scoring workflows.
How it works
- Enter a search query, such as a keyword, business type, or location-based phrase.
- The Actor requests public Google local results HTML.
- It extracts visible Google Maps business cards.
- It can optionally enrich businesses with extra public website, citation, and coordinate signals.
- It stores normalized business rows in the default dataset.
- It stores the full summary payload in the default key-value store as
OUTPUT.
Input
The Actor accepts these main inputs:
query- required primary search termlocation- optional city, area, or geo modifierbusinessName- optional target business for benchmarkingkeywords- optional extra keywords for rank checkscountry- Google country code such asus,gb,calanguage- Google language code such asenmaxResults- number of Google Maps results to collect, up to20includeBusinessEnrichment- whether to enrich results from public web sourcesincludeKeywordGeoRankings- whether to check the target business across extra keywordsuseGoogleSerpProxy- whether to use the ApifyGOOGLE_SERPproxy group for Google requests
Output
The Actor stores one business per dataset item in the default dataset and now includes Apify output metadata for cleaner Console and API presentation.
Each dataset row includes fields such as:
querylocationrankorganicRankbusinessNamecategoryaddressphonewebsitewebsiteUrlratingreviewCountopeningHourscoordinatesphotosrelevanceScoreauthorityScorehealthScoreprofileClassificationgoogleBusinessProfileUrlgoogleReviewsUrlfetchedAt
The Actor also writes richer run-level outputs to the default key-value store:
OUTPUT- full actor payloadSUMMARY- condensed summary, opportunities, competitors, and keyword rank checks
Apify metadata files in .actor/ also define:
- dataset schema for the default output table
- output schema for dataset and key-value store links
- key-value store collections for
SUMMARYandOUTPUT
Example dataset item
{"query": "dentist","location": "Chicago, IL","searchQuery": "dentist, Chicago, IL","country": "us","language": "en","fetchedAt": "2026-04-15T12:00:00.000Z","source": "google-local-results-html","usedGoogleSerpProxy": true,"rank": 1,"organicRank": 1,"sponsored": false,"businessName": "Smile Dental","category": "Dentist","address": "123 N Michigan Ave, Chicago, IL 60601","phone": "+1 312-555-0148","website": "smiledentalchicago.com","websiteUrl": "https://www.smiledentalchicago.com/","rating": 4.7,"reviewCount": 186,"reviews": [{"snippet": "Friendly staff and same-day appointments.","source": "google-local-card"}],"openingHours": {"summary": "Open until 7 PM","currentStatus": "Open now","note": "Closes 7 PM","weeklyHours": null},"coordinates": {"lat": 41.8837,"lng": -87.6233},"photos": [{"id": "photo-1","url": "https://lh3.googleusercontent.com/p/example-photo","source": "google-local-card"}],"priceLevel": "$$","serviceMentions": ["Emergency dentist", "Dental implants"],"googleBusinessProfileUrl": "https://www.google.com/maps/search/?api=1&query=Smile%20Dental%2C%20123%20N%20Michigan%20Ave%2C%20Chicago%2C%20IL%2060601%2C%20Chicago%2C%20IL","googleReviewsUrl": "https://www.google.com/search?tbm=lcl&hl=en&gl=us&q=Smile%20Dental%20123%20N%20Michigan%20Ave%20Chicago%20IL%2060601%20Chicago%20IL%20reviews","phoneUrl": "tel:+13125550148","citationSources": ["https://www.yelp.com/biz/smile-dental-chicago","https://www.healthgrades.com/dentist/dr-example"],"relevanceScore": 60,"relevanceLabel": "Strong Match","completenessScore": 85,"authorityScore": 81,"healthScore": 75,"healthLabel": "Strong","profileClassification": "Leader"}
Example SUMMARY record
{"query": "dentist","location": "Chicago, IL","fetchedAt": "2026-04-15T12:00:00.000Z","summaryMetrics": {"totalResults": 10,"averageRating": 4.5,"averageReviewCount": 92,"businessesWithWebsite": 8,"businessesWithPhone": 9,"openNowCount": 7,"exactMatchCount": 1,"businessesMissingWebsite": 2,"businessesMissingReviews": 1},"groupedInsights": {"topCategories": [{ "category": "Dentist", "count": 7 },{ "category": "Cosmetic Dentist", "count": 2 }],"keywordMatchDistribution": {"Strong Match": 6,"Partial Match": 3,"Weak Match": 1},"averageCompletenessScore": 72,"averageAuthorityScore": 69,"openNowVsClosed": {"open": 7,"closed": 2}},"opportunities": [{"type": "Missing Website","businessName": "City Dental Care","description": "Has no linked website. Could easily be overtaken by a competitor with a strong localized landing page.","impact": "High Impact","rank": 3}],"competitors": [{"businessName": "City Dental Care","category": "Dentist","organicRank": 2}],"keywordGeoRankings": [{"keyword": "emergency dentist","location": "Chicago, IL","rank": 1,"found": true,"topResults": [{ "rank": 1, "businessName": "Smile Dental", "category": "Dentist" },{ "rank": 2, "businessName": "City Dental Care", "category": "Dentist" }]}]}
Apify project structure
.├── .actor/│ ├── actor.json│ ├── INPUT_SCHEMA.json│ ├── dataset_schema.json│ ├── key_value_store_schema.json│ └── output_schema.json├── assets/│ ├── apify-store-image.png│ └── apify-store-image.svg├── src/│ ├── google_maps.js│ ├── intelligence.js│ └── main.js├── Dockerfile├── package.json└── README.md
The assets/ folder includes an editable SVG plus an upload-ready PNG for the Apify Store listing image.
Run on Apify
Open the Actor on Apify Store, fill in the input form, and start the run.
If you are scraping Google results on the Apify platform, keeping useGoogleSerpProxy enabled is recommended when your plan supports the GOOGLE_SERP proxy group.
Run locally
Install dependencies:
$npm install
Start the actor:
$npm start
For local runs with the Apify CLI:
$apify run
Example input
{"query": "dentist","location": "Chicago, IL","businessName": "Smile Dental","keywords": ["emergency dentist", "family dentist"],"country": "us","language": "en","maxResults": 10,"includeBusinessEnrichment": true,"includeKeywordGeoRankings": true,"useGoogleSerpProxy": true}
Recommended searches
- restaurant in london
- real estate agency in mississauga
- mobile phone repair in peshawar
- dentist near me
- car dealer in houston
- gym in dubai
Important limitations
This Actor is intended for public Google Maps data.
It does not provide private business-owner metrics such as:
- Google Business Profile views
- Calls from owner dashboard
- Website clicks from owner dashboard
- Direction requests from owner dashboard
- Private profile performance analytics
Public Google HTML structure can change over time, so selectors may require updates if Google changes the layout. Some enrichment fields are best-effort and may be empty depending on what is publicly visible.
FAQ
Do I need a Google Maps API key?
No. This Actor is built for public Google Maps result extraction and does not rely on a Google Maps API key.
Does it scrape private Google Business Profile analytics?
No. It only works with publicly visible listing data.
Can I use it for local SEO?
Yes. This Actor is built specifically for local SEO research, local competitor analysis, and local business discovery.
Can I export the results?
Yes. Results are stored in the default dataset and can be exported in multiple formats.
Why did Apify say .actor/.actor/INPUT_SCHEMA.json does not exist?
That happens when the input field inside .actor/actor.json points to .actor/INPUT_SCHEMA.json. The correct path from inside .actor/actor.json is ./INPUT_SCHEMA.json.
Support
If you need custom features such as:
- keyword clustering
- review intelligence
- local rank tracking workflows
- competitor scoring
- white-label exports
contact the Actor maintainer through the Apify Store page.