Everything written about scraping Google Maps for leads is written by someone selling a scraper, and it all names the same failure: you will get blocked. That is true and it is the least interesting thing that goes wrong, because a blocked request announces itself.
The failures that cost you are silent. A run finishes, the row count looks plausible, and the data is wrong in ways you will not notice for weeks. Here are the three that matter at scale, in the order you will hit them.
What breaks first: the result cap
A single Maps search returns roughly 120 results and then stops, no matter how many businesses match. Search restaurants in a city of three million and you get 120 of them.
So you tile. The city gets cut into neighbourhoods or a grid, and each cell is searched separately. This works, and it is what any serious index does — but understand what it costs you, because it is the decision everything else follows from:
The third one is the trap. A uniform grid feels rigorous and quietly under-samples exactly the areas with the most businesses in them — which are the areas you most wanted.
The taxonomy mismatch that eats half a run
This is the one that has cost us the most, and we have never seen it mentioned anywhere.
The category label shown on a Maps listing and the category taxonomy an API returns are not the same vocabulary. A listing that reads "Sweet Shop" or "Cake Shop" to a human does not necessarily arrive as anything your pipeline recognises, and if your ingest keys on a fixed list of category names, everything unmapped is dropped on the floor.
It fails silently. The run completes, the rows are real, and a large share of what you paid to fetch never lands. The only way to catch it is to count what you discarded — log every unrecognised label, and read that log. Ours turns into a mapping table that gets extended every time a scan runs into something new.
The one metric that catches this
Track discovered-versus-stored per run. If a scan discovers 900 listings and stores 500, you do not have a scraping problem, you have a mapping problem — and no amount of proxy work fixes it.
Why the website field changes the economics
This is the point where scraping and the official API stop being interchangeable, and it is specific to this use case.
If you only want names and addresses, discovery is cheap on any path. But the entire premise here is the website field — you are looking for businesses that do not have one. On Google's official Places API, asking for `websiteUri` alongside rating and review count moves the request onto the Enterprise field tier: $0.035 a call, about ₹3.08.
That single field is what sets the cost floor of the whole operation. And because Places bills per call rather than per result, cost tracks the *shape* of the query rather than its yield — a narrow neighbourhood query is around six calls, a broad city-wide filtered one around forty, and both can return roughly twenty usable businesses. Same output, seven times the cost.
| Query shape | Approx. calls | Usable leads | Cost per lead |
|---|---|---|---|
| One category, one neighbourhood | ~6 | ~20 | ≈ ₹0.92 |
| One category, whole city, filtered | ~40 | ~20 | ≈ ₹6.16 |
At ₹3.08 a billed call. The lesson is not that one is wrong — it is that yield per call, not leads per hour, is the number to optimise.
Anyone quoting you a flat cost per lead for this data either has a different cost structure or has not measured theirs.
The data starts decaying immediately
A scrape is a photograph, and the thing you photographed is the one field most likely to change. Businesses add websites. Sites die and the listing keeps the dead URL. Listings get claimed and edited. A business closes and stays on the map for months.
If your list is three months old, some meaningful share of it is now wrong in the direction that embarrasses you — you will tell someone they have no website while looking at the one they launched in March.
Which makes re-checking, not discovery, the ongoing cost of running an index. When a later check reveals a site we did not know about, we correct the record rather than leaving it, specifically so the published gap figures do not drift upward over time. Every number on this site is 285,554 businesses read that way.
The part worth being sober about
Scraping Google Maps is against Google's terms of service. That is not a technical constraint and no amount of engineering resolves it — it is a business risk you are choosing to carry, and it is worth knowing you are choosing it rather than discovering it later.
The official Places API is the licensed path for exactly this data, which is why our own index is built on it and why the cost figures above are real numbers off our own bill rather than estimates. It is more expensive per call than a scraper and it is the reason we can publish the methodology at all.
None of which is an argument that you should never scrape anything. It is an argument for knowing which of the two you are doing, and for not being surprised by the bill or the terms.
What a maintained index looks like
Live from the same index the product searches — 2,485 businesses in Gurgaon currently have an active Google listing and no website.
Shyam Vihari Food
Sahara Mall
HUDA Market, Sector 14
Galleria Market
Skip the pipeline.
285,554 businesses across 98 cities, already checked, already deduplicated, already re-verified.
Search instead of scrapingFrequently asked questions
How many results does a Google Maps search return?
Around 120, regardless of how many businesses match. Covering a real city means splitting it into smaller areas and searching each one, which multiplies your request volume and introduces duplicates at every boundary.
What actually breaks when scraping Google Maps at scale?
Blocking is the visible failure. The expensive ones are silent: the result cap forcing uneven tiling, category labels that do not map to your taxonomy so rows are dropped without warning, and the data decaying from the day it is collected.
Why is the website field expensive to collect?
On the official Places API, requesting websiteUri alongside rating and review count puts the call on the Enterprise field tier at $0.035 — about ₹3.08 a call. Since billing is per call rather than per result, a broad query can cost seven times a narrow one for the same twenty leads.
Is scraping Google Maps legal?
It is against Google's terms of service, which is a business risk rather than a technical one. The Places API is the licensed route to the same data and costs more per call, which is the trade being made.
How quickly does scraped lead data go stale?
Immediately, and in the worst field. Businesses add websites, sites die while the listing keeps the dead URL, and closed businesses linger for months. Re-checking is the ongoing cost of an index — discovery is the one-off.
Related reading
why B2B databases miss these businesses · the free alternatives, costed · what to do with the list · buying it instead of building it · what the tools charge · why maintaining it is the cost




