Google Maps Business Leads Scraper - Local Lead Generation avatar

Google Maps Business Leads Scraper - Local Lead Generation

Pricing

from $1.75 / 1,000 results

Go to Apify Store
Google Maps Business Leads Scraper - Local Lead Generation

Google Maps Business Leads Scraper - Local Lead Generation

Search Google Maps and export normalised business name, category, address, phone, website, rating, review count, opening hours, plus code, coordinates and place URL. A local business scraper for lead generation, territory research and CRM enrichment, exporting to JSON, CSV or Excel.

Pricing

from $1.75 / 1,000 results

Rating

0.0

(0)

Developer

Joseph McRell

Joseph McRell

Maintained by Community

Actor stats

0

Bookmarked

5

Total users

1

Monthly active users

16 days ago

Last modified

Share

Google Maps Business Scraper & Leads Extractor

Scrape Google Maps businesses by keyword and location into clean, CSV-ready records. Get separate address, phone, website, rating, review count, category, opening-hours, Plus Code, and coordinate fields instead of a concatenated details blob. No Google API key is required.

What data can I extract?

  • Business name and primary category
  • Separate street address and formatted/dialable phone fields
  • Business website and canonical Google Maps place URL
  • Numeric rating and review count
  • Today's displayed opening hours
  • Plus Code, latitude, and longitude when available
  • Source search URL and Google place identifier when exposed

All 30 columns

Identity — name, place_id

Status — category

Location — address, city, latitude, longitude, open_state, place_url, postal_code, state

Contact — booking_url, image_url, phone, phone_unformatted, search_url, website

Counts and measures — rating, reviews_1_star, reviews_2_star, reviews_3_star, reviews_4_star, reviews_5_star, reviews_count

Other detail — description, located_in, opening_hours, opening_hours_today, plus_code, street

Input example

{
"search_query": "commercial electricians",
"location": "Dallas, Texas",
"max_items": 25,
"include_details": true
}

Use search_queries for a batch of up to 25 terms. max_items is a hard run-wide output ceiling so humans and agents can bound cost before calling the Actor.

Free built-in filters

Unlike scrapers that charge an extra per-place fee for each filter you turn on, filtering here is free — it costs you nothing on top of the per-place price. Filters are applied before results are counted against max_items, so a row that gets filtered out is never billed:

  • min_rating — only businesses at or above this rating.
  • require_website — only businesses with a public website. Turns on include_details automatically, since a website is only known after opening the business page.
  • exclude_closed — drops businesses currently shown as closed or permanently closed.
  • category_exact — only businesses whose category is an exact (case-insensitive) match, e.g. ["Dentist"].

A business with no rating, website, or category shown does not pass a filter that requires one; exclude_closed only drops businesses with a confirmed closed status.

{
"search_query": "dentists",
"location": "Dallas, Texas",
"min_rating": 4.5,
"require_website": true,
"exclude_closed": true,
"max_items": 25
}

Precise targeting

Already have exact listings to pull, instead of a keyword search? Pass place_urls (direct Google Maps place URLs, e.g. from a listing's Share link) and/or place_ids (Google place identifiers) and the Actor opens each place page directly — search_query, search_queries, and location are ignored. Business details are always fetched for these, regardless of include_details.

{
"place_urls": ["https://www.google.com/maps/place/..."],
"place_ids": ["ChIJN1t_tDeuEmsRUsoyG83frY4"]
}

Output example

{
"name": "Example Dental Group",
"place_url": "https://www.google.com/maps/place/...",
"place_id": "ChIJ...",
"category": "Dentist",
"address": "123 Main St, New York, NY 10001",
"street": "223 W Jackson Blvd",
"city": "Chicago",
"state": "IL",
"postal_code": "60606",
"phone": "+1 212-555-0199",
"phone_unformatted": "+12125550199",
"website": "https://example.com",
"rating": 4.7,
"reviews_count": 1907,
"reviews_5_star": 9616,
"reviews_4_star": 2324,
"reviews_3_star": 750,
"reviews_2_star": 241,
"reviews_1_star": 359,
"open_state": "Open 24 hours",
"opening_hours_today": "Open until 6 PM",
"opening_hours": "Saturday, Open 24 hours; Sunday, Open 24 hours; Monday, Open 24 hours; Tuesday, Open 24 hours; Wednesday, Open 24 hours; Thursday, Open 24 hours; Friday, Open 24 hours",
"description": "Known for deep-dish pizza, this casual chain serves other classic Italian food, plus beer & wine.",
"booking_url": "https://tables.toasttab.com/restaurants/bedbc320-282f-4ef5-9ae8-b8ed91a0aa6e/findTime",
"image_url": "https://lh3.googleusercontent.com/gps-cs-s/AHRPTWlWThG54-6_6AjfPKg1HsO84haihAsRBjlD9H4gxocCAITqfwFzkSfzHCKFyCyiS-79pm1V9lRY2kBuB_FvVBQNeh4wUzewlgRXUlXdoA-1ehQIQDXZKo7uqWBGY97PlEV_BoWKF1yaJjmd=w408-h270-k-no",
"located_in": "Floor 1 · Brooks Building",
"plus_code": "Q2X4+9C New York",
"latitude": 40.7484
}

2 further columns are omitted here for length — the full list is above, and every column appears in the export whether or not the source populated it.

Common use cases

  • Build local-business lead lists with phone numbers and websites
  • Find service providers, branches, stores, restaurants, or competitors by city
  • Compare ratings and review counts across local markets
  • Enrich CRM records with public business contact and location data
  • Supply structured local-business context to AI agents

Use with AI agents and MCP

Apify's MCP server can discover and call this Actor. Give the agent a bounded intent, for example:

Find 50 HVAC companies in Phoenix and return business name, address, phone, website, rating, and review count.

Equivalent input:

{
"search_query": "HVAC companies",
"location": "Phoenix, Arizona",
"max_items": 50,
"include_details": true
}

Pricing and cost control

Output is billed per result at $0.0025 per result (about $2.50 per 1,000 results), plus a $0.001 Actor-start charge billed once per gigabyte of memory at run start. Use max_items to cap both output volume and charges. The price shown on the Apify Store listing is authoritative.

Reliability

The Actor scrolls result feeds, deduplicates places, and enriches individual place pages. Search-result selectors are monitored by the fleet's contract canaries and self-healing workflow. Required output fields are validated before repaired selectors are promoted.

Limitations and responsible use

  • Public Google Maps data only; some profiles omit phone, website, hours, or coordinates.
  • Search results vary by query, geography, language, and upstream personalization.
  • A displayed field may change or disappear when the source profile changes.
  • Comply with applicable law, Google terms, privacy obligations, and outreach rules.

Integrate with No-Code, Webhooks & Spreadsheets

  • Google Sheets & Excel: In Apify Console under the Actor's Dataset tab, click Export, select CSV, and paste the permanent API URL into =IMPORTDATA("https://api.apify.com/v2/datasets/DATASET_ID/items?format=csv") for auto-refreshing lead lists.
  • Zapier & Make: Connect your Apify account to Zapier or Make. Use the "Actor run finished" trigger to automatically post leads into HubSpot, Salesforce, Airtable, or your CRM.
  • Webhooks: Under the Actor's Integrations tab, attach a webhook targeting your custom endpoint or Slack channel whenever a run completes.
  • Python / Node.js: Query leads directly into pandas DataFrames or backend services using the official apify-client SDK in under 5 lines of code.
  • Tech Stack Detector (captainhandsome/tech-stack-detector): Inspect websites extracted from Google Maps to identify which CMS, CRM, e-commerce, or analytics tools each business uses.
  • US Business Entity Search (captainhandsome/us-business-entity-search): Verify official state corporate registrations, legal names, and good standing for extracted businesses.
  • US Contractor License Search (captainhandsome/us-contractor-license-search): Cross-reference contractor licenses, classifications, and insurance status for trade leads.

FAQ

How do I scrape phone numbers from Google Maps?

Set include_details to true. The Actor opens each public place page and returns phone and phone_unformatted separately when available.

Can I export Google Maps businesses to CSV?

Yes. Run the Actor, open its default dataset, and choose CSV or Excel export.

Can I search several business categories in one run?

Yes. Supply search_queries and a single location. Results are deduplicated and constrained by the run-wide max_items ceiling.

Does this use the Google Places API?

No Google API key is required. The Actor extracts publicly displayed Google Maps data.

Do the filters cost extra?

No. min_rating, require_website, exclude_closed, and category_exact are free. They run before max_items is applied, so you are never billed for a row that got filtered out.

Can I scrape a specific business instead of searching by keyword?

Yes. Pass place_urls and/or place_ids to fetch exact listings directly, skipping keyword search entirely.

See CHANGELOG.md for maintained schema changes.