Google Maps lead generation

Google Maps lead generation, done as an API call. Pull every business in a city with phone, website, rating, and review count as clean JSON in about a second. This page walks the whole workflow, including the two parts most guides skip: verified emails from LinkedIn and the outreach rules.

3,000 free credits / month, no card 1 credit per business returned ~1 second searches
STEP 1 OF 4 · PULLED LIVE JULY 17, 2026

Pull the list

Pick a niche and a city, and ask for it the way you would type it into the map. I ran this exact request today with limit=3 to keep the sample short. It came back in about a second.

# every business returned costs 1 credit; a search that finds nothing is free curl "https://crustapi.com/v1/search?type=maps&q=hvac%20contractors%20in%20Phoenix,%20AZ" -H "x-api-key: YOUR_KEY"
# CSV view of the first business, trimmed to the lead-list fields title,address,phone,website,categoryName,totalScore,reviewsCount,lat,lng "Parker & Sons","3636 E Anne St A, Phoenix, AZ 85040","(602) 4**-**19","https://www.parkerandsons.com/...","HVAC contractor",4.7,34328,33.4139155,-112.0022947 # 2 more rows
// the same record as JSON, trimmed to the lead-list fields: { "query": "hvac contractors in Phoenix, AZ", "count": 3, "tookMs": 518, "places": [ { "title": "Parker & Sons", "placeId": "ChIJh9Zo0KoPK4cRzTwhKAxIE8s", "address": "3636 E Anne St A, Phoenix, AZ 85040", "phone": "(602) 4**-**19", "website": "https://www.parkerandsons.com/...", "categoryName": "HVAC contractor", "totalScore": 4.7, "reviewsCount": 34328, "openingHours": { "Monday": "Open 24 hours", ... }, "location": { "lat": 33.4139155, "lng": -112.0022947 } } // 2 more ] }

Phone digits are masked on this page; the API returns the full number. Each record also carries street, city, state, zip, all categories, and open or closed flags. The full field reference is on the Google Maps scraper API page.

Set limit up to 100 businesses per search. For a whole metro, CrustAPI sweeps the whole area in a single call and returns every business, deduplicated for you, well past the 100-per-search cap.

STEP 2 OF 4

Qualify with the signals in the record

A raw list is not a lead list yet. The useful part is that every record carries the signals you would otherwise check by hand, so you can sort and cut in a spreadsheet before anyone writes an email.

Size proxyreviewsCount ReputationtotalScore Pitch filterwebsite missing Segmentingcategories List hygienepermanentlyClosed

From the live pull above: Parker & Sons has 34,328 reviews at 4.7 stars, and the second result, Day & Night, has 9,669 at 4.9. Those are large, established shops, the wrong target for a "we'll get you found on Google" pitch and the right one for enterprise tooling. Flip the sort and the businesses with 15 reviews are your local-SEO prospects. A missing website field is the classic web-design filter. A totalScore under 4.0 is the reputation-management filter. None of this needs another API call; it is all in the record you already paid one credit for.

STEP 3 OF 4 · THE CATCH

Add a decision maker and a verified email

Google Maps records do not contain email addresses. No scraper can change that, because the email is not on the map. Any tool that claims Maps gives you emails is guessing from the website, or making it up. What a Maps record gives you is the business name, phone, and website. The email comes from a second step: find the person who runs the place on LinkedIn, through the same API key.

# find owners and managers in the niche; results include a verified email where one passes checks curl "https://crustapi.com/v1/linkedin?type=search&keywords=owner hvac company phoenix" \ -H "x-api-key: YOUR_KEY"
// the shape of the response; rows shown here are masked examples of the fields: { "type": "linkedin-search", "people": [ { "name": "Marcus T.", "currentTitle": "Owner", "currentCompany": "D***** Air LLC", "location": "Phoenix, Arizona, United States", "profileUrl": "https://www.linkedin.com/in/m******t", "email": "m.t*****@d*****air.com", "emailStatus": "verified" }, { "name": "Elena R.", "currentTitle": "General Manager", "email": null, "emailStatus": null } ] }

The second row is the fallback: when no address passes verification, email is null and the profile data still comes back. Full parameters on the LinkedIn people search API page; the same endpoint also pulls full profiles and company pages, covered on the LinkedIn scraper API page.

STEP 4 OF 4

Personalize with their own reviews

The placeId from step 1 unlocks the reviews for any business on your list: rating, text, author, and date, sorted and paginated, in about 0.3 seconds. A first line that mentions something a real customer said last week beats a template every time, and it is the cheapest personalization there is.

# the newest reviews for that first Phoenix HVAC company curl "https://crustapi.com/v1/search?type=reviews&placeId=ChIJh9Zo0KoPK4cRzTwhKAxIE8s&sortBy=newest" -H "x-api-key: YOUR_KEY"

More on sorting and pagination on the Google Reviews API page.

Run the whole workflow free
3,000 credits a month. No card, no contract.
Get started →
THE PART MOST GUIDES SKIP

Outreach rules, in plain English

A lead list is only worth something if you can contact it without getting fined or blocked. The short version, for the US:

This is a summary from a builder, not legal advice. If you send at real volume, spend an hour with the actual rules first.

THE WORKED MATH

What a lead list costs

One credit is one business returned. A 1,000-business list is 1,000 credits, and the free tier covers three lists that size every month, no card. Paid packs are prepaid and self-serve: $49 for 25,000 credits (about $1.96 per 1,000 leads), $149 for 100,000, $549 for 500,000, $1,999 for 2.5 million (about $0.80 per 1,000). Credits never expire, so a pack you buy for one client project waits for the next one. And you are only charged when a query returns results; an empty search costs nothing.

FAIR PLAY

When you do not need this: if you want 20 leads once, the map in your browser is free and fine. If you want a managed data feed with an account team and support contracts, Bright Data sells that and is good at it. An API earns its keep when lists are a repeat thing: new niche, new city, new client, same three calls.

Related: Lead scraper · Google Maps scraper API · Google Reviews API · Phoenix dentist database (a ready-made example of the output)

BEFORE YOU ASK

Common questions

WORKS WITH YOUR STACK

Build your first list tonight

3,000 free credits covers a real lead list, qualified and enriched. Run one search on your own city and look at what comes back.

Get 3,000 free credits
No credit card required