Google Maps Leads Extractor API avatar

Google Maps Leads Extractor API

Pricing

from $3.50 / 1,000 lead extracteds

Go to Apify Store
Google Maps Leads Extractor API

Google Maps Leads Extractor API

Extract public Google Maps business leads by search query or place URL. Get name, category, address, phone, website, rating, review count, coordinates, and optional website email/social enrichment.

Pricing

from $3.50 / 1,000 lead extracteds

Rating

0.0

(0)

Developer

Tugelbay Konabayev

Tugelbay Konabayev

Maintained by Community

Actor stats

0

Bookmarked

18

Total users

7

Monthly active users

2 hours ago

Last modified

Share

Google Maps Leads Extractor API — Local Business Data and Optional Email Enrichment

Extract Google Maps business leads by search query or place URL — get business name, category, address, phone, website, rating, review count, coordinates, and Google Maps URL. Fast default mode — first runs use Google Maps data only: maxItems: 10, extractEmails: false, extractSocialMedia: false, and maxConcurrency: 3. Optional website enrichment — turn on email and social discovery only when you need it; enrichment visits business websites and is slower than the default path.

Google Maps Leads Extractor collects public Google Maps business listing data for sales prospecting, local SEO research, competitor analysis, market mapping, and CRM enrichment.

Use it when you want an Apify-native Google Maps lead workflow with datasets, scheduling, webhooks, API access, CSV/Excel/Sheets exports, and MCP/AI compatibility.

What This Actor Does

The actor accepts either:

  • searchQueries, such as ["dentists in Miami FL"]
  • placeUrls, direct Google Maps place URLs

It opens Google Maps in a browser, collects visible place URLs, opens each place, extracts business fields, deduplicates by name, and pushes one structured dataset item per business.

Website enrichment is opt-in:

  • extractEmails: true scans each business website for visible email addresses.
  • extractSocialMedia: true scans each business website for social profile links.

Data You Can Extract

Default Google Maps fields:

  • business name
  • category
  • full address
  • parsed city, state, postal code, and country when parseable
  • phone number when listed
  • website URL when listed
  • rating and review count when visible
  • price level when visible
  • opening-hours summary when visible
  • latitude and longitude from the Google Maps URL
  • Google Maps place URL
  • source search query
  • extraction timestamp

Optional website enrichment fields:

  • email
  • socialMedia.facebook
  • socialMedia.instagram
  • socialMedia.twitter / x
  • socialMedia.linkedin
  • socialMedia.youtube
  • socialMedia.tiktok

Important: email and social fields depend on the business having a website and publicly visible contact links. Many businesses do not expose this data.

Best Use Cases

  1. Local B2B lead generation — find businesses by industry and location, then export names, phone numbers, websites, and Maps URLs.
  2. Agency prospecting — identify local businesses with low review counts, missing websites, or weak online presence.
  3. Local SEO audits — compare ratings, review counts, categories, and locations across a market.
  4. CRM enrichment — start from Google Maps URLs or search queries and append structured contact/location fields.
  5. Market mapping — estimate business density and competitor clusters by category and city.
  6. Recurring monitoring — schedule the same query weekly or monthly to watch local-market changes.

Why Use This Instead of Alternatives?

NeedThis actorOfficial Google Places APILarge Google Maps scrapersManual research
Best fitPay-per-result lead workflows with optional website email/social enrichmentCompliant app integrations using selected Places fieldsHigh-volume maps datasets and reviewsOne-off checks
SetupApify actor input + dataset exportGoogle Cloud project, billing, API key, field masksActor-specific setupBrowser work
Email/social enrichmentOptional website scanNot a direct Places contact-enrichment featureVaries by actorManual clicks
Scheduling/webhooksBuilt in through ApifyBuild it yourselfUsually through ApifyManual
Pricing modelPay per extracted leadPay-as-you-go by SKU/field tierMixed compute/PPE/subscriptionLabor time
AI/MCP workflowsApify API + MCP-friendly PPECustom integrationVariesNo

The useful distinction is not that this replaces every Google Maps scraper. It is a focused paid actor for lead workflows where optional email/social enrichment and Apify automation matter.

Input Examples

Fast first run

{
"searchQueries": ["restaurants in New York"],
"maxItems": 10,
"extractEmails": false,
"extractSocialMedia": false
}

Service businesses in one city

{
"searchQueries": ["plumber in Chicago IL"],
"maxItems": 100,
"extractEmails": false,
"extractSocialMedia": false
}

Enriched lead list

{
"searchQueries": ["dentist in Miami FL"],
"maxItems": 50,
"extractEmails": true,
"extractSocialMedia": true,
"maxConcurrency": 3
}

Direct place URLs

{
"placeUrls": [
{
"url": "https://www.google.com/maps/place/Joe's+Pizza/@40.7303,-74.0021,17z/"
}
],
"extractEmails": false,
"extractSocialMedia": false
}
{
"searchQueries": ["restaurant in Tokyo"],
"maxItems": 25,
"language": "ja",
"extractEmails": false
}

Input Parameters

ParameterTypeDefaultDescription
searchQueriesArray["restaurants in New York"] as prefillSearch terms with location, such as ["restaurants in New York"] or ["plumber in Chicago IL"].
placeUrlsArraynoneDirect Google Maps place URLs to scrape instead of search queries.
maxItemsInteger10Maximum places to extract per search query. Start small, then increase after checking quality and runtime.
extractEmailsBooleanfalseVisit business websites and scan visible HTML for email addresses. Slower and best-effort.
extractSocialMediaBooleanfalseVisit business websites and scan for social media links. Slower and best-effort.
languageStringenGoogle Maps interface language, ISO 639-1 code.
maxConcurrencyInteger3Number of parallel browser pages. Higher can be faster but less stable.
proxyConfigurationObjectApify proxyProxy settings for website enrichment and CAPTCHA fallback.

Output Format

Each lead in the dataset can include:

FieldTypeDescription
nameStringBusiness name.
categoryString or nullGoogle Maps category.
addressString or nullFull address text.
cityString or nullParsed city when available.
stateString or nullParsed state/province when available.
postalCodeString or nullParsed postal code when available.
countryString or nullParsed country when available.
phoneString or nullPhone number when listed.
websiteString or nullBusiness website when listed.
emailString or nullEmail found on the business website when enrichment is enabled.
socialMediaObjectSocial links found on the website when enrichment is enabled.
ratingNumber or nullGoogle Maps rating.
reviewsCountInteger or nullNumber of Google reviews.
priceLevelString or nullPrice level when visible.
openingHoursString or nullOpening-hours summary when visible.
latitudeNumber or nullLatitude from Maps URL.
longitudeNumber or nullLongitude from Maps URL.
placeUrlStringGoogle Maps place URL.
searchQueryStringQuery that found the business, or direct for URL inputs.
extractedAtStringISO timestamp.

Example Output

{
"name": "Joe's Pizza Broadway",
"category": "Pizza restaurant",
"address": "1435 Broadway, New York, NY 10018",
"city": "New York",
"state": "NY",
"postalCode": "10018",
"country": null,
"phone": "(646) 559-4878",
"website": "https://www.joespizzanyc.com",
"email": null,
"socialMedia": {},
"rating": 4.4,
"reviewsCount": 5847,
"priceLevel": "$",
"openingHours": "Open 24 hours",
"latitude": 40.7555,
"longitude": -73.9862,
"placeUrl": "https://www.google.com/maps/place/...",
"searchQuery": "pizza in Manhattan",
"extractedAt": "2026-04-26T10:00:00+00:00"
}

Cost Estimation

This actor uses Pay-Per-Event (PPE) pricing. Each successfully extracted business lead is one primary event.

Current Store pricing is tiered by Apify plan:

Plan tierPrice per leadApprox. per 1,000 leads
Free$0.0050$5.00
Bronze$0.0045$4.50
Silver$0.0040$4.00
Gold+$0.0035$3.50

Example PPE costs:

Run sizeEstimated actor event cost
10 leads~$0.035-$0.05
100 leads~$0.35-$0.50
1,000 leads~$3.50-$5.00
3,000 leads/month~$10.50-$15.00

Your total Apify account spend can also include compute and proxy usage. Email/social enrichment is slower because it visits external business websites.

Integrations

Python

from apify_client import ApifyClient
client = ApifyClient("YOUR_API_TOKEN")
run = client.actor("tugelbay/google-maps-leads").call(
run_input={
"searchQueries": ["pizza in Manhattan"],
"maxItems": 25,
"extractEmails": False,
"extractSocialMedia": False,
}
)
for lead in client.dataset(run["defaultDatasetId"]).iterate_items():
print(lead["name"], lead.get("phone"), lead.get("website"))

JavaScript

import { ApifyClient } from "apify-client";
const client = new ApifyClient({ token: "YOUR_API_TOKEN" });
const run = await client.actor("tugelbay/google-maps-leads").call({
searchQueries: ["dentist in Miami FL"],
maxItems: 50,
extractEmails: true,
extractSocialMedia: true,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
for (const lead of items) {
console.log(lead.name, lead.phone, lead.email);
}

Export Options

  • CSV / Excel from Apify datasets
  • Google Sheets through Apify integrations
  • Webhooks for CRM workflows
  • Apify API for custom apps
  • Apify MCP Server for agent workflows
  • Scheduled runs for recurring lead collection

Practical Workflow

  1. Start with maxItems: 10 and enrichment off.
  2. Check if the query returns the right business type and location.
  3. Increase maxItems gradually.
  4. Turn on extractEmails and extractSocialMedia only for categories where website enrichment is worth the slower runtime.
  5. Export to Sheets/CSV or push results into your CRM.

FAQ

Does it extract email addresses?

Yes, when extractEmails is enabled and the business has a website with a visible email address in the HTML. Coverage varies by category, country, and website quality. Many businesses do not publish emails.

Yes, when extractSocialMedia is enabled and the business website links to social profiles. It scans for Facebook, Instagram, Twitter/X, LinkedIn, YouTube, and TikTok links.

Does it work outside the US?

Yes, Google Maps works globally. Set language for the Maps interface. Address parsing is strongest for US-style addresses and partial for international formats.

Why are some fields empty?

Google Maps profiles vary. Some businesses do not list phone numbers, websites, hours, prices, or full addresses. Enrichment fields also require a reachable business website.

How many leads can I request?

The input allows up to 500 per query. Google Maps visible-result limits vary by query and location. For better coverage, use several specific searches instead of one broad query.

Is this a replacement for the Google Places API?

No. Use the official Google Places API when you need a compliant app integration with Google-managed SKUs, field masks, quotas, and platform terms. Use this actor when you need an Apify scraping workflow, dataset exports, scheduling, and optional website enrichment.

Does it handle CAPTCHAs?

The actor detects CAPTCHA/blocking states and retries with proxy fallback. Very large or aggressive runs can still be affected by Google rate limiting. Smaller batches and conservative concurrency are more stable.

Troubleshooting

No results returned

  • Try a broader query, such as restaurant in New York instead of a street-level query.
  • Make sure the search has a location.
  • Try fewer maxItems first.
  • If Google blocks the search, retry later or use proxy settings.

Run is slow

  • Keep extractEmails and extractSocialMedia off unless needed.
  • Keep maxConcurrency near the default 3.
  • Reduce maxItems.
  • Split very large lead lists into multiple smaller runs.

Email extraction returns many null values

  • Many businesses do not have websites.
  • Many websites do not publish emails.
  • Some sites block automated HTTP requests.
  • Use extracted website URLs with a dedicated email finder if email coverage is mission-critical.

Only a few results when requesting more

  • Google Maps may show only a limited visible set for a query.
  • Use more specific category/location combinations.
  • Run multiple related queries.

Limitations

  • Maximum 500 requested results per search query.
  • Actual visible results depend on Google Maps and the query.
  • Email and social extraction are best-effort website scans.
  • Google may show CAPTCHAs or rate-limit large runs.
  • Address parsing is strongest for US-style addresses.
  • Review text is not extracted; only rating and review count are returned when visible.
  • Output reflects current Google Maps pages at extraction time; it is not historical data.

Changelog

v2.0 (2026-04-03)

  • Fixed browser/proxy behavior and CAPTCHA retry paths.
  • Added safer first-run defaults: maxItems: 10, extractEmails: false, extractSocialMedia: false, maxConcurrency: 3.
  • Added YouTube and TikTok social media detection.
  • Improved stale-scroll detection and retry behavior.
  • Updated PPE pricing.

v1.0 (2026-03-30)

  • Initial Google Maps search extraction.
  • Place detail extraction.
  • Optional website email and social discovery.
  • Address parsing, coordinates, deduplication, and PPE pricing.

See all actors: apify.com/tugelbay