Google Maps Scraper - Business Leads with Phone & Website avatar

Google Maps Scraper - Business Leads with Phone & Website

Pricing

from $0.70 / 1,000 results

Go to Apify Store
Google Maps Scraper - Business Leads with Phone & Website

Google Maps Scraper - Business Leads with Phone & Website

Scrape Google Maps business listings: name, category, rating, review count, phone, website, address and coordinates. Filter by review count, pay only for places delivered.

Pricing

from $0.70 / 1,000 results

Rating

0.0

(0)

Developer

Lead Proof

Lead Proof

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

2

Monthly active users

21 hours ago

Last modified

Share

Extract business listings from Google Maps: name, category, star rating, review count, phone number, website, full address and coordinates.

You pay per place delivered. Places filtered out by your own settings are never charged, and a query that returns nothing costs nothing.

What you get

Every place is one row:

FieldExample
nameParker & Sons
categoryHVAC contractor
rating4.7
reviews683 (may be null; unknown counts are kept only when minReviews is 0)
phone+1 602-424-9619
websitehttps://www.parkerandsons.com/
address3636 E Anne St A, Phoenix, AZ 85040
city_statePhoenix, AZ 85040
lat / lng33.4139155 / -112.0022947
placeId0x872b0faad068d687:0xcb13480c28213ccd
mapsUrlhttps://www.google.com/maps?cid=14633118831306947789
searchQueryhvac contractor Phoenix, AZ

Export as CSV, JSON, Excel or feed it straight into your CRM through the Apify API.

Input

{
"searchTerms": ["hvac contractor", "plumber"],
"locations": ["Phoenix, AZ", "Dallas, TX"],
"maxResultsPerQuery": 40,
"maxResults": 100,
"country": "US",
"minReviews": 20,
"requireWebsite": true
}

Every search term is combined with every location, so the example above schedules four searches and stops early if it delivers 100 places. Leave locations empty if your terms already name a place. Blank and repeated terms/locations are removed.

  1. Enter your search terms and locations.
  2. Set country to one ISO code or English country name (for example IT, Italy, US, USA, United States, UK or England). Native spellings such as Italia or Deutschland work too. An unrecognized country fails the run with a clear message before any search request is made, so nothing is charged.
  3. Set maxResults to cap the total delivered rows. The default, 0, keeps the existing unlimited-total behavior. maxResultsPerQuery remains a separate 1-100 ceiling.
  4. Start the Actor, follow the processed-query and delivered-place counts in the run status, and export your dataset.

Filters that save you money

  • minReviews - keep only businesses with a known review count at or above your threshold. Google answers the same request with or without review counts at random, so when counts are missing the Actor refetches the query up to three times (fresh session each time) and merges by place ID, keeping existing records and known fields. Counts still unknown are skipped. Set 0 to include unknown counts without any refetch. Behavior change: older builds kept unknown-count rows even with a positive minimum; they are now excluded before billing.
  • requireWebsite - skip businesses with no website, which is usually what you want if the next step is finding an email address.

Both filters run before charging, so you are not billed for rows you asked to exclude.

Notes

  • Results are deduplicated by Google place ID, falling back to name/address, then phone plus name when no address is present. Different branches sharing a phone number are preserved. dedupeScope: "run" deduplicates across queries; "query" deliberately allows the same place in different queries.
  • maxResultsPerQuery is a ceiling, not a guarantee. Google returns what it has for that query, and thin niches in small towns return fewer.
  • country sets the search region and proxy exit country, not a strict geographic filter. language sets the result language. Phone, website and review count can be missing when Google does not supply them; the Actor does not invent values.
  • Requests rejected by the upstream service, transport failures and malformed responses are retried up to three times with a fresh proxy URL. If every query fails, the run fails with no delivered rows. If some queries fail, valid results from other queries remain available and billable.
  • The Actor stops fetching when it reaches maxResults or the Apify run charge limit. An aborted run can still contain billable results already delivered. Automatic resume/checkpoint recovery is not implemented in this version.
  • SUMMARY reports queries planned/processed/failed, places delivered, review/website filter exclusions, delivered rows with unknown review counts, how many review-count refetches were made (reviewRefetches), and whether a result or charge limit ended the run. It is saved every 10 processed queries and on normal completion; after an abrupt stop it may lag behind the dataset. Filter counters count candidate rows, not unique businesses.

Development checks

From this Actor directory, install requirements.txt and run python -m unittest discover -s test. Tests use synthetic Maps responses and mocked transport; they do not contain customer data or run paid searches. Live upstream completeness still requires a bounded smoke test after deployment.

Need verified email addresses rather than just websites? Google Maps Leads with Verified Emails runs this sourcing step, crawls each website for a contact address, verifies deliverability over SMTP, and charges only for leads with a confirmed-deliverable email.

This Actor collects information that businesses publish publicly on Google Maps. It does not collect personal data, log in to anything, or bypass access controls. You are responsible for using the output lawfully, including under GDPR, CCPA and any marketing or anti-spam rules that apply where you operate.


Built by LeadProof - verified local-business lead lists, built to order.