Google Maps Extractor
Pricing
from $5.00 / 1,000 place scrapeds
Google Maps Extractor
Extract Google Maps places by keyword, location, or Maps URL. Returns names, categories, addresses, phones, websites, ratings, reviews, coordinates, and source URLs. MCP optimized for AI agents.
Pricing
from $5.00 / 1,000 place scrapeds
Rating
0.0
(0)
Developer
Khadin Akbar
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
0
Monthly active users
a month ago
Last modified
Categories
Share
What is Google Maps Extractor?
Google Maps Extractor turns a keyword plus location, or a list of Google Maps search and place URLs, into a dataset of places. Each row is one business or place with its name, category, full address, phone, website, Google rating and review count, latitude and longitude, Maps URL, place ID, a permanent-closure flag and the query that found it. Local SEO agencies, B2B sales teams, market researchers and AI agents use it to build local business lists, map competitors and enrich CRMs from a single search.
Why teams use it
- Plain search in, place rows out.
searchQuery: "dentists"withlocation: "Miami, FL"is all it takes. - Paste existing Maps links.
startUrlsaccepts Google Maps search and place URLs when you already have them. - Quality filters.
minRatingkeeps only well-rated places, andskipClosedPlacesdrops businesses marked permanently closed. - Local language and country.
languagesets the Maps interface language for names and categories, andcountryCoderoutes the browser through that country. - Optional website contacts.
includeWebsiteContactsscans each listed website for a public email and Facebook, Instagram, LinkedIn and X links.
Best fit for this Actor
- Designed for place lists by niche and area: dentists in a city, coworking spaces in a district, roofers across a region.
- Best fit for lead lists, local competitor maps, local SEO audits and agent workflows that need structured place records.
- When you need the review text behind each rating, then pass the
google_maps_urlvalues to Google Maps Reviews Scraper. - When email addresses are the main goal, use Google Maps Email Extractor for an email-first workflow.
- To pull deeper contact details from the websites you collect here, continue with Contact Details Scraper.
Example workflow: a local SEO competitor map
A local SEO consultant starts with searchQuery: "dentists", location: "Miami, FL", maxResults at 100 and minRating at 4. The dataset returns every practice's category, address, phone, website, rating and review count with coordinates. She sorts by review_count to see who dominates reviews, compares her client's rating and category with the top ten, plots latitude and longitude on a map to spot underserved neighborhoods, then exports the list as CSV for the client report. A monthly schedule with the same input shows how the competitive set changes.
Input
{"searchQuery": "dentists","location": "Miami, FL","maxResults": 20,"minRating": 4,"skipClosedPlaces": true,"includeWebsiteContacts": false,"language": "en","countryCode": "US"}
With Google Maps URLs instead of a keyword:
{"startUrls": [{ "url": "https://www.google.com/maps/search/coffee+shops+Austin+TX" }],"maxResults": 10}
| Field | Type | What it controls |
|---|---|---|
searchQuery | string | Business type or keyword, such as coffee shops. |
location | string | City, region or country, such as London, UK. |
startUrls | array | Google Maps search or place URLs as { "url": "..." } objects. |
maxResults | integer | Places returned and charged, 1 to 2000. Default 20. |
minRating | number | Keep places at or above this rating, 0 to 5. Default 0 keeps all. |
skipClosedPlaces | boolean | Skip permanently closed places. Default true. |
includeWebsiteContacts | boolean | Scan listed websites for a public email and social links. Default false. |
language | string | Google Maps interface language such as en, de or ja. Default en. |
countryCode | string | Two-letter proxy country such as US, GB or DE. Default US. |
Output
One dataset row per place.
| Field | What it contains |
|---|---|
business_name, category | Place name and primary Google Maps category |
full_address, phone, website | Address, phone and listed website |
rating, review_count | Google rating and total review count |
latitude, longitude | Coordinates of the place |
google_maps_url, place_id | Direct place link and Google feature ID |
is_permanently_closed | Permanent-closure flag |
website_email, facebook_url, instagram_url, linkedin_url, x_url | Public contact links from the website scan, with includeWebsiteContacts |
source_query, scraped_at | The query that found the place and the collection time |
{"business_name": "Relax and Smile Dental Care","website_email": null,"phone": "(786) 983-4812","website": "https://www.relaxandsmile.com/","full_address": "271 NE 2nd St, Miami, FL 33132","category": "Dental clinic","rating": 4.9,"review_count": 932,"latitude": 25.7763227,"longitude": -80.1887702,"google_maps_url": "https://www.google.com/maps/place/Relax+and+Smile+Dental+Care/data=!4m7!3m6!1s0x88d9b69ef54365f1:0x9d56ac0453fc14e!8m2!3d25.7763227!4d-80.1887702","place_id": "0x88d9b69ef54365f1:0x9d56ac0453fc14e","facebook_url": null,"instagram_url": null,"linkedin_url": null,"x_url": null,"is_permanently_closed": false,"scraped_at": "2026-10-01T01:46:20.935Z","source_query": "dentists in Miami, FL"}
Each run also writes an OUTPUT record to the default key-value store with a machine-readable run summary. Export the dataset as JSON, CSV, Excel, XML or HTML.
Pricing
This Actor uses Pay per event plus Apify platform usage. The events are:
- Actor Start, once per run.
- Place scraped, once for each place row returned to the dataset.
Worked example: dentists in Miami, FL with maxResults set to 50 returns up to 50 places, so the run costs one Actor Start event plus one Place scraped event per place returned, plus the browser and proxy usage of the run. maxResults caps both the dataset and the place charges. Check the live Pricing tab on this page for current event prices.
API example
curl -X POST "https://api.apify.com/v2/acts/khadinakbar~google-maps-extractor/run-sync-get-dataset-items?token=YOUR_API_TOKEN" \-H "Content-Type: application/json" \-d '{"searchQuery": "coffee shops", "location": "Austin, TX", "maxResults": 20}'
from apify_client import ApifyClientclient = ApifyClient("YOUR_API_TOKEN")run = client.actor("khadinakbar/google-maps-extractor").call(run_input={"searchQuery": "dentists", "location": "Miami, FL", "maxResults": 20, "minRating": 4})for place in client.dataset(run["defaultDatasetId"]).iterate_items():print(place["business_name"], place["rating"], place["phone"], place["website"])
Use it with AI agents (MCP)
Connect the Actor to Claude, ChatGPT, Cursor or another MCP client through Apify MCP, then ask:
Find 30 coworking spaces in Berlin rated 4 or higher. Return name, address, phone, website and rating, and group them by district.
The agent reads place rows with get-dataset-items, can cite google_maps_url and scraped_at as provenance, and checks the OUTPUT record for the run summary. Cost scales with places returned, so maxResults keeps agent requests scoped.
Best results
| Starting situation | Helpful action | Expected outcome |
|---|---|---|
| A large market such as a whole state | Split by city, postal code or neighborhood | Fuller coverage per area |
| A non-English market | Set language and countryCode to match, such as de and DE | Local names, categories and addresses |
| Lead lists with quality bar | Set minRating, keep skipClosedPlaces on | Active, well-rated businesses only |
| You also want social links | Turn on includeWebsiteContacts | Public email and social profile links where websites list them |
| A first test | Start with maxResults between 5 and 10 | A quick, low-cost sample |
Builder's note
I built this for the most common Maps job: a clean list of places for a niche and an area, with the same columns every time. I designed one row to equal one place and one charge, so maxResults is both the dataset size and the budget. Website contact scanning is optional because I found most local SEO and market-research runs only need the Maps fields, while lead-generation runs can switch it on.
FAQ
Does it collect reviews?
It returns each place's rating and review count. For review text, use the Google Maps Reviews Scraper linked above.
Can I search in other countries and languages?
Yes. Set location to the area, language to the interface language and countryCode to the matching country.
How do I get emails?
Turn on includeWebsiteContacts for public emails and social links listed on business websites, or use the Google Maps Email Extractor for an email-first workflow.
Responsible use
This Actor extracts publicly visible Google Maps place data and, optionally, public links from listed business websites. Use the output in line with Google's terms, privacy rules and anti-spam laws such as CAN-SPAM and the GDPR. Google Maps is a trademark of Google, and this independent Actor is not affiliated with or endorsed by Google. For questions, open a ticket in the Issues tab.