Playbooks / Recipe
Local businesses from Google Maps into your CRM
Scrape Maps results by keyword and area, resolve the messy website field into a clean root domain, enrich what you can, and push the rows into your CRM with your own code. The Maps scraper bills per result returned. There is no RichAPI CRM app — the last mile is yours.
Pattern: maps keyword scrape → clean_domain → enrich → your CRM upsert
In short: A RichAPI recipe for building local business lists. POST https://api.richapi.ai/api/v1/google_maps_places_scraper_keyword takes a keyword and location and returns Google Maps places; it bills per result returned with no base call charge, so any cost estimate requires a stated result count. POST /clean_domain normalizes a messy URL to a root domain at a flat per-call rate. Enrichment of the resulting sites bills on any 2xx response including a thin one. RichAPI has no CRM application and no native Salesforce or HubSpot integration; writing rows into a CRM is code the customer writes against their CRM's own API. Note that enrich_company takes a LinkedIn company URL, not a domain, and no public domain-in company enrichment endpoint is exposed today. Authentication uses the x-api-key header. New accounts get 100 free credits and require no credit card.
Last updated November 4, 2026
Credit math
Worked example at stated counts: one keyword-and-area query returning 200 places at 0.1 per result = 20 credits. 140 have a website; clean_domain on those at 0.5 = 70 credits. 140 website_intelligence calls at 5 = 700 credits, billed on every 2xx including a thin one. 0.1 credits per google_maps_places_scraper_keyword result, 0.5 credits per clean_domain call, 5 credits per website_intelligence call
ROI math
Every credit here buys a row you own outright, stored in your own system, with no per-seat licence and no re-rental. Convert at your tier rate on /pricing.
Owned internally by
Agency ops, or a local-services founder building their own territory list
Best for
Selling to businesses that have a storefront and a phone number before they have a LinkedIn presence: trades, clinics, restaurants, gyms, local professional services
- 01
Sign up at app.richapi.ai and copy your key.
100 free credits, no card.
- 02
Run google_maps_places_scraper_keyword with one keyword and one tight area.
Tight areas beat wide ones for both cost and relevance.
- 03
Split the results: rows with a website go down the enrichment path, rows without one are already usable as name, address and phone.
- 04
Run clean_domain on every website field before anything else touches it.
Maps returns booking-platform links, tracking parameters and redirects.
- 05
Enrich the clean domains, then write your own upsert into your CRM, keyed on the clean domain or the phone number.
Find dental clinics in Austin, Texas from Google Maps. For the ones with a
website, clean the domain and pull the site's contact details. Give me a table
of name, address, phone, clean domain and any email you find.
The last mile is your code
We have no CRM app. No Salesforce package, no HubSpot listing, no "connect your CRM" button. The gap is on our own product-gaps list and this page is not going to route around it.
So the ending of this recipe is a function you write, in your codebase. Twenty lines that take the enriched rows, key them on something stable, and call your CRM's API. That is genuinely the whole last mile, and if you were expecting a sync toggle you should know that now rather than after you have spent credits.
What we do is the four steps before it, and those are the steps that are actually hard.
Scrape, clean, enrich
google_maps_places_scraper_keyword takes a keyword and an area and returns places: name, address, phone, website, and the rest of the listing. It bills per result returned with no base charge, which means a broad query across a metro area is a bigger invoice than a tight one across a neighbourhood, and you should size it deliberately.
clean_domain is the step people skip and then regret. The website field on a Maps listing is whatever the owner typed: a Linktree, a booking platform, a Facebook page, a URL with four tracking parameters, a redirect through an agency's domain. Half a credit resolves that to a root domain you can deduplicate and key on. Skip it and you will discover you enriched the same booking platform forty times.
Enrichment is where you should read the constraints rather than the marketing. enrich_company takes a LinkedIn company URL, not a domain, and a plumbing business with four employees very often has no LinkedIn page at all. There is no public domain-in company enrichment endpoint exposed today — that is a real gap, not an omission on this page. For local rows the useful move is pulling what the site itself exposes with website_intelligence or the website email extractor, and accepting that name, address and phone are already a complete record for a lot of local outreach.
What Maps local leads costs, at stated counts
| Step | Count | Rate | Credits |
|---|---|---|---|
google_maps_places_scraper_keyword |
200 places | 0.1 / result | 20 |
clean_domain |
140 with a website | 0.5 / call | 70 |
website_intelligence |
140 calls | 5 / call | 700 |
Rates used above: 0.1 credits per google_maps_places_scraper_keyword result, 0.5 credits per clean_domain call, 5 credits per website_intelligence call.
None of these are waterfall endpoints endpoints. They bill on any 2xx, including a site that turns out to be a one-page template with no contact details on it. The miss-free rule applies to email_finder, email_verifier and phone_finder only, and none of them are in this chain. Convert credits at your tier rate on the pricing page.
Where Maps local leads go wrong
Chains and franchises. Forty locations of the same brand come back as forty rows with one shared domain. Deduplicate on the clean domain before enrichment or you will pay forty times to learn one thing. Whether those forty rows are forty accounts or one account with forty sites is a decision about your business, and you have to make it before the upsert, not after.
Listings with no website. A meaningful share of local businesses have a phone number and nothing else. They are not bad rows, they are rows for a different channel. Do not push them down the enrichment path and do not count them as failures.
Closed and moved. Maps carries listings that have been dead for a while. Anything you scrape needs a freshness assumption and a re-check cadence, and neither of those is something we can do for you.
Upserting on the wrong key. Business name is not a key — punctuation, "LLC", and "& Sons" will defeat you. Key on the clean domain where one exists and a normalized phone number where one does not.
Plays related to Maps local leads
For B2B accounts that do have a LinkedIn presence, list build and verify is the better chain. To score the rows you keep, see ICP filter with AI enrich. If you are building this as a feature inside your own product rather than a list for your own reps, enrichment backend for platforms covers that shape. The company endpoint's real input is documented on the company enrichment API, and the use-case index lists the other chains.
Maps local leads FAQ
Do you have a HubSpot or Salesforce app?
No. Integrations go through the API. You write the upsert, or you wire it in a tool that already speaks both — n8n, Make, Clay, whatever you already run.
What does the Maps scraper cost?
It bills per result returned with no base call charge, so the only honest answer includes a count: 200 places at 0.1 credits is 20 credits. 0.1 credits per result
Are misses free here?
No. Nothing in this chain is a waterfall endpoint. All three calls bill on a 2xx even when the result is thin. A non-2xx never bills.
Can I enrich a local business from its domain?
Not through enrich_company — that takes a LinkedIn company URL. There is no public domain-in company enrichment endpoint today, so for local rows you pull what the website exposes.
How many results will one query return?
That depends on the keyword and the area, which is exactly why the cost is per result. Run one narrow query first and look at the count before you scale the query out.
Do I need a credit card?
No. 100 free credits on signup.
Try Maps local leads: 100 free credits, no card
Scrape one neighbourhood, clean the domains, and see what a real local row looks like before you build the upsert. Get 100 free credits
FAQ