One thousand verified B2B leads. Sixty minutes. Zero spreadsheets. If you've never seen this workflow before, the number sounds inflated. It isn't. Once you understand how Google's Places API works, the only real constraint is keyword construction β and we'll build the formula in this post.
This is the actual sequence we run inside DigiStreet Media when a new B2B client comes on board and we need to assemble a starter prospect list for the first cold campaign. It also happens to be the workflow the DigiStreet Lead Extractor automates end-to-end.
Why one keyword caps you at 60
The Google Places Text Search API returns a maximum of 60 results per query, served as three paginated calls of 20. That's a hard ceiling β there's no flag, plan or trick to lift it. Search "real estate agency in Mumbai" and you get the top 60 matches by Google's relevance score, period.
This is why every "scraper" you've tried in the past topped out around the same number. They all hit the same wall.
The way past 60: keyword expansion
The trick is to ask Google the same business question in different words, then deduplicate the responses by Google Place ID. Each rephrasing returns up to 60 results, and the overlap is usually 20β35%. So three rephrasings yield roughly 110β140 unique businesses. Fifteen rephrasings push you past 600 unique results consistently β and in dense markets, past 1,000.
place_id. Two queries returning the same business will return the same Place ID. Add each one to a Set as you go and skip duplicates β that's the entire dedup logic.
Building your variant list
Three layers, in order:
Layer 1: Direct synonyms (5β8 variants)
How else would a business describe itself on Google Maps? For "real estate agency":
- real estate broker
- real estate consultant
- property dealer
- realtor
- real estate firm
- property consultant
- estate agent
Layer 2: Sub-categories (5β8 variants)
What are the specialities within the category? For real estate:
- commercial real estate
- residential real estate
- luxury real estate
- real estate investment firm
- property management company
- vacation rental
Layer 3: Adjacent industries (3β5 variants)
What businesses serve the same buyer journey? For real estate:
- mortgage broker
- home loan consultant
- property valuation
- real estate photographer
Run all three layers, dedup by Place ID, and you have a workable list. The DigiStreet Extractor automates layer construction with a Claude-powered keyword expander β paste in "real estate agency" and it generates the variants for you. (See our complete extraction guide for the underlying mechanics.)
The 60-minute workflow
Minute 0β5: Define and configure
Decide your keyword and geography. For a 1,000-lead target, choose a city or country with reasonable business density. "Real estate agency in Mumbai" will easily hit 1,000. "Cobblers in Antarctica" will not.
Minute 5β10: Variant generation
If you're using DigiStreet Extractor, this happens automatically. If you're rolling your own: write 12β15 variants by hand using the three-layer framework above. Time-cost is real but worth it on day one.
Minute 10β35: Extraction
Run all 15 variants in sequence. Each takes 8β12 seconds (Google enforces a 2-second delay between paginated calls). With 15 variants Γ 3 pages each = 45 API calls Γ ~9 seconds = roughly 7 minutes of pure API time, plus dedup overhead.
The DigiStreet Extractor parallelises where possible and shows live progress: "Pass 7 of 15 β 487 unique leads so far". Watch the counter. If it stalls below 200 with five passes left, your keywords are too narrow β abort and broaden.
Minute 35β55: Email enrichment
For every result with a website, the extractor visits the homepage, /contact and /about pages and scrapes any publicly listed email. This is the slowest phase β typically 0.4β0.8 seconds per site, run in parallel batches of 10. Plan on 15β20 minutes for a 1,000-lead list.
Expect a 25β45% email find rate. Manufacturing tends higher (45β55%), services lower (20β30%). Phone numbers come from Google Place Details and almost always populate.
Minute 55β60: Filter, verify, export
Apply the "contacts only" filter to drop rows missing both phone and email. Export as CSV with UTF-8 BOM. Run the email column through a verification service like ZeroBounce or NeverBounce before sending β see our deliverability checklist for the why.
Skip the manual variant work
The DigiStreet Extractor handles keyword expansion, dedup, enrichment and CSV export in one workflow. First 200 leads free.
Launch the Extractor βWhat 1,000 leads looks like in practice
For a recent automotive dealership client, we ran "used car dealer" across Pune, Mumbai, Bangalore, Hyderabad and Chennai. The variant list:
- used car dealer / pre-owned car dealer / second-hand car dealer
- certified pre-owned cars / used car showroom
- car dealership / auto dealership
- used vehicle dealer / used car broker
Final numbers across all five cities:
- Total unique leads: 1,427
- With phone: 1,401 (98%)
- With email: 482 (34%)
- Complete (phone + email): 461 (32%)
That 461-row CSV became a 12-week cold outreach campaign that closed 38 partnership conversations. Cost of extraction: roughly $11 in Google Places API spend. Cost-per-conversation: $0.29.
For comparison, the same client had previously paid an industry database $4,500 for a similar list. The Google Maps version was fresher and 60% larger.
Quality controls before you send
A 1,000-row list is only valuable if it converts. Three quick checks:
- Spot-check 20 random rows. Open the Google Maps listing for each. If >3 are dead businesses or obvious mismatches, your keyword set is wrong β refine and re-run.
- De-duplicate by phone, not just Place ID. Some businesses have multiple Place IDs (one per location). Decide if you want to consolidate.
- Email-verify before sending. Anything above a 3% bounce rate damages your sender reputation.
Turning the list into pipeline
This guide ends at "you have a CSV." The real work is what you do with it. Two paths:
- Cold email. Templates, subject lines and a follow-up cadence. Read the playbook.
- Cold calling. Scripts, opening lines, objection handlers. Read the scripts.
Most teams run both, sequentially: email first, call the non-responders ten days later. Industry choice matters too β some verticals respond 5Γ better than others. See our breakdown of where lead extraction delivers the highest ROI.
Final word
If you've ever paid $300/month for an industry-database seat, you already know what 1,000 fresh, verified B2B leads cost. Google Maps offers them for $11 in API fees and an hour of structured effort. The only requirement is a workflow disciplined enough to actually run it. This guide is that workflow.
The team behind it β DigiStreet Media's B2B division β has been refining this exact motion since 2013. The tool is the public version of our internal stack.
Run it yourself in the next 60 minutes
Sign in, pick a keyword, watch the counter climb past 1,000.
Sign In to DigiStreet Extractor β