Pull every local business in a city with phone, website, rating, and hours from Google Maps. Run it in the browser or one API call. One credit per business, only on a result.
Local lead generation starts with a list. Point a search at a city and a business type, and CrustAPI pulls the Google Maps results back as rows you can drop into a sheet or a CRM. Up to 100 businesses per search, in about a second.
Every field there comes straight off the public Maps listing. Prefer code? The same search is one request.
Want the whole city, not just the first 100? A full-area sweep pulls past Google's roughly-100-per-search cap and returns the whole metro. Our Miami dentist sweep pulled 1,006 practices. And you do not have to touch code at all: the playground at /app runs any search and shows results as a flat table you can copy, and it plugs into Clay, n8n, and MCP.
Google sells this data too, through the Places API. It works, but the pricing tier and the terms are built for map apps, not for building a lead list you keep.
| Google Places API (New) | CrustAPI | |
|---|---|---|
| Ratings, phone, website, hours | $35 per 1,000 requests (Enterprise tier) | from $1.96 per 1,000 businesses |
| Results per call | 20 (up to 60 across 3 billed pages) | up to 100 |
| Keeping the data | place IDs only; lat/lng cached max 30 days | the rows are yours to store |
| What you pay for | every request | each business returned; zero results cost nothing |
| Whole-metro coverage | capped per search | deep sweeps, 1,000+ per metro |
| Star histogram | not available | optional, stars=true |
Both pull from the same public place data. The difference is what you can do with it afterward, and what it costs to cover a full city. Google's terms restrict you to storing place IDs and cap location caching at 30 days. The rows you export here you keep.
Here is the part most tools skip over. Google Maps listings have no email field. Nobody pulling from Maps has emails, no matter how the plan is priced. From Maps you get name, phone, website, address, rating, and hours.
To reach a real person by email, add one step. Take the business or the decision-maker and run the LinkedIn type=profile endpoint, which returns one verified work email per person. So the flow is simple: pull the city from Maps, then enrich the accounts that matter with a verified email. Two endpoints, one bill.
Related: Lead scraper · LinkedIn email finder
One credit equals one business returned. A search that pulls 80 places costs 80 credits. A search that finds nothing costs zero. Credits are prepaid and never expire.
The free tier is 3,000 businesses a month with no card, which covers a small metro or a handful of neighborhoods. Paid packs start at 25,000 credits for $49, about $1.96 per 1,000, and the rate drops to roughly $0.40 per 1,000 on the largest pack. A full Miami-sized sweep of one industry, around 1,000 businesses, runs a little over a dollar at the entry rate.
We are not the right answer for every job. Here is the case where something else fits better.
Named-account contact data: if you need verified emails and direct dials for specific people at hundreds of named companies, plus buying-intent signals, a contact database like Apollo or ZoomInfo is built for that. Apollo publishes per-seat credit tiers; ZoomInfo is quote-based with no public pricing. We are the better call when the job is "give me every business in this city with its phone, site, rating, and hours." They fit better when the job is "find the CFO's cell at these 300 accounts."
Related: Google Maps lead generation · Google Maps scraper API · How to scrape Google Maps
Start with 3,000 free businesses a month, no card. Pull a city in the browser, export the rows, and add verified emails from LinkedIn when you need a person to reach.
Get 3,000 free credits