Zip-code scraping: why one city search misses most of the market
Updated July 22, 2026 · 5 min read
Search “dentist Chicago” on Google Maps and scroll until the results stop. You'll run out somewhere around a hundred listings. Chicago has vastly more dentists than that.
This single fact invalidates more lead lists and more market-size estimates than anything else in local data, and the fix is mechanical.
What the cap is
Google's results feed for one search returns roughly 100–120 places before it stops paginating. The official Places API has its own cap, traditionally 60 results across paged requests. Both are product decisions about how many results a user needs, not statements about how many exist.
The results you do get are ranked — prominence, proximity, relevance — so a truncated search doesn't give you a random sample of the market. It gives you the most established businesses, which are precisely the ones least likely to need what you're selling, and least likely to be your competitive blind spot.
Why subdividing works
The cap is per search, not per area. Run one search per zip code and each search is looking at a small enough population to return everything in it. Twenty zip codes means twenty searches, each comfortably under the ceiling, and the union of them approaches complete coverage.
Adjacent searches overlap, because search results don't respect zip boundaries precisely — a business just over the line still shows up. That's fine as long as you deduplicate on place ID rather than on name, which is one of the main arguments for keeping that column.
Doing it in practice
- 1
Choose the right subdivision
Zip or postal codes are the natural unit in most countries — they're granular, official, and everyone already thinks in them. In dense urban cores you may still hit the cap on a single zip for very common categories, in which case split further by neighbourhood or narrow the category.
- 2
Run one search per code
Category × location, one job. In Hubertino the location picker expands a city into its zip codes for you and runs each as its own search, streaming into one deduplicated table — the manual version of this is copying a zip list into a spreadsheet and running them one at a time.
- 3
Deduplicate on place ID
Overlaps are expected. ID-based deduping collapses them exactly; name-based deduping merges different businesses and misses genuine duplicates.
- 4
Sanity-check the total
If your city-wide count lands suspiciously close to a hundred, you didn't subdivide. If it's several times that, you probably did it right.
What it changes downstream
Market sizing stops being wrong — the guide on counting businesses in an area depends entirely on this. Territory design gets real per-zip counts instead of a truncated top-100. Site-selection saturation maps become comparable between areas rather than all pinned at the same ceiling.
And for lead generation it changes who's on the list: the businesses beyond the first hundred results are the smaller, newer, less-optimised ones. For most agency and service offers, that's the better half of the market.
The cost side, honestly
Complete coverage costs more than a truncated search, because there are more businesses in it and you're billed per business delivered. That's the trade: a hundred-row list is cheap and misleading, a full-market list is priced by the market's actual size. Unused reservations refund automatically, so an over-broad estimate isn't charged.
Common questions
Does this work outside the US?
Yes — postal-code systems differ in granularity, but the principle is identical: subdivide until each search sits comfortably below the feed cap. The location picker covers multiple countries.
Won't I pay for the same business twice across overlapping zips?
No. Deduplication happens before delivery, so one credit is one unique business regardless of how many searches surfaced it.
How many zip codes does a typical city have?
Anywhere from a handful for a small town to well over a hundred for a large metro. The picker expands them for you, so the count affects runtime and cost rather than your effort.