Google Maps Extractor avatar

Google Maps Extractor

Pricing

from $5.00 / 1,000 place scrapeds

Go to Apify Store
Google Maps Extractor

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

Khadin Akbar

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

0

Monthly active users

a month ago

Last modified

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" with location: "Miami, FL" is all it takes.
  • Paste existing Maps links. startUrls accepts Google Maps search and place URLs when you already have them.
  • Quality filters. minRating keeps only well-rated places, and skipClosedPlaces drops businesses marked permanently closed.
  • Local language and country. language sets the Maps interface language for names and categories, and countryCode routes the browser through that country.
  • Optional website contacts. includeWebsiteContacts scans 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_url values 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
}
FieldTypeWhat it controls
searchQuerystringBusiness type or keyword, such as coffee shops.
locationstringCity, region or country, such as London, UK.
startUrlsarrayGoogle Maps search or place URLs as { "url": "..." } objects.
maxResultsintegerPlaces returned and charged, 1 to 2000. Default 20.
minRatingnumberKeep places at or above this rating, 0 to 5. Default 0 keeps all.
skipClosedPlacesbooleanSkip permanently closed places. Default true.
includeWebsiteContactsbooleanScan listed websites for a public email and social links. Default false.
languagestringGoogle Maps interface language such as en, de or ja. Default en.
countryCodestringTwo-letter proxy country such as US, GB or DE. Default US.

Output

One dataset row per place.

FieldWhat it contains
business_name, categoryPlace name and primary Google Maps category
full_address, phone, websiteAddress, phone and listed website
rating, review_countGoogle rating and total review count
latitude, longitudeCoordinates of the place
google_maps_url, place_idDirect place link and Google feature ID
is_permanently_closedPermanent-closure flag
website_email, facebook_url, instagram_url, linkedin_url, x_urlPublic contact links from the website scan, with includeWebsiteContacts
source_query, scraped_atThe 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 ApifyClient
client = 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 situationHelpful actionExpected outcome
A large market such as a whole stateSplit by city, postal code or neighborhoodFuller coverage per area
A non-English marketSet language and countryCode to match, such as de and DELocal names, categories and addresses
Lead lists with quality barSet minRating, keep skipClosedPlaces onActive, well-rated businesses only
You also want social linksTurn on includeWebsiteContactsPublic email and social profile links where websites list them
A first testStart with maxResults between 5 and 10A 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.