Google Maps Scraper - Business Leads with Phone & Website
Pricing
from $0.70 / 1,000 results
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
Maintained by CommunityActor stats
0
Bookmarked
3
Total users
2
Monthly active users
21 hours ago
Last modified
Categories
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:
| Field | Example |
|---|---|
name | Parker & Sons |
category | HVAC contractor |
rating | 4.7 |
reviews | 683 (may be null; unknown counts are kept only when minReviews is 0) |
phone | +1 602-424-9619 |
website | https://www.parkerandsons.com/ |
address | 3636 E Anne St A, Phoenix, AZ 85040 |
city_state | Phoenix, AZ 85040 |
lat / lng | 33.4139155 / -112.0022947 |
placeId | 0x872b0faad068d687:0xcb13480c28213ccd |
mapsUrl | https://www.google.com/maps?cid=14633118831306947789 |
searchQuery | hvac 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.
- Enter your search terms and locations.
- Set
countryto one ISO code or English country name (for exampleIT,Italy,US,USA,United States,UKorEngland). Native spellings such asItaliaorDeutschlandwork too. An unrecognized country fails the run with a clear message before any search request is made, so nothing is charged. - Set
maxResultsto cap the total delivered rows. The default, 0, keeps the existing unlimited-total behavior.maxResultsPerQueryremains a separate 1-100 ceiling. - 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. maxResultsPerQueryis a ceiling, not a guarantee. Google returns what it has for that query, and thin niches in small towns return fewer.countrysets the search region and proxy exit country, not a strict geographic filter.languagesets 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
maxResultsor 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. SUMMARYreports 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.
Related
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.
Legal
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.