Same write-to-sheet path. Richer Maps data — 40 listings per keyword.
Version 2 replaces the Google Places API with Apify’s Google Maps extractor. Closed businesses are skipped. Contact detail comes off the listing. Claude still researches the site and writes subject, body, and PS into the sheet.
Places is clean. It is also capped.
Version 1 talks to Places API v1 — fast, structured, and limited to 20 results per search with basic fields. Teams that need more volume per keyword, contact detail from the listing itself, and a filter for permanently closed places move to this extractor.
This is not a different product category. It is the upgraded scrape. After Apify returns the dataset, the path is the same class of work as v1: dedupe, MillionVerifier, Haiku, Sonnet, Sheets. Read Maps Lead Scraper if you want the Places version.
What actually changed in the scrape
v1 — Google Places API
- 20 results maximum per keyword
- Basic fields: name, website, phone, rating
- Google Cloud API key required
- Direct HTTP to Places v1
- No closed-business filter
- 29 nodes
v2 — Apify Google Maps scraper
- 40 results per keyword — double the pull
- Richer listing data, including contact details
- Apify bearer token — simpler credentials
- Run-sync: dataset returns before the next node
- skipClosedPlaces: true — only active businesses
- 25 nodes
Operators who already outgrew a 20-result Places pull
Same audience as version 1 — local-service agencies and B2B teams — with a higher raw-lead ceiling per run. Three keywords at 40 each is up to 120 listings before email extract and verification thin the list.
Agencies running multi-city batches
More listings per keyword means fewer form submits when you are covering several metros in a week.
Niches with lots of closed pins
skipClosedPlaces drops dead storefronts before you spend MillionVerifier or Claude tokens on them.
Teams without a Google Cloud project
Apify bearer auth replaces Places key setup. The rest of the stack (Claude, Sheets, verifier) stays the same.
Anyone attaching the outbound loop
Rows still land as status “pending” for the 5pm sender. v2 is a better intake, not a different CRM.
Maps Scraper v2 — n8n canvas
The live Apify Maps extractor on the canvas — 40 listings per keyword, then verify, Claude write, and Google Sheet out.
25 nodes. One form. Apify first.
Form — five fields
Product description, target location, up to three keywords, sender name. The workflow builds one search string per keyword — e.g. “roofing contractor in Dallas, Texas” — and sends them to Apify together.
Apify run-sync scrape
Actor lukaskrivka~google-maps-with-contact-details. maxCrawledPlacesPerSearch: 40. skipClosedPlaces: true. language: en. Run-sync waits for the full dataset so the workflow does not need a webhook callback.
Sheet + suppression cross-check
Before any site is fetched, each lead is checked against the existing leads sheet and the suppression list. Duplicate emails inside the current batch are dropped too. Already-contacted or opted-out rows never reach Claude.
Extract + MillionVerifier
Homepage scrape, regex extract, then verification. Only emails classified safe, ok, or role_account continue. Risky, invalid, and disposable addresses are dropped before AI spend.
Haiku then Sonnet
Haiku 4.5 writes a 3–4 sentence research note. Sonnet 4.6 returns JSON: subject (under 6 words, lowercase, curiosity-based), 50–90 word body with one research detail and a reply-only CTA, plus a short PS. Same writing rules as v1.
Append — status pending
Name, email, website, subject, body, PS, verification. Status starts pending so the Email Sender can pick the row up at 5pm. This page does not send mail.
Apify on the scrape. Your sheet as the CRM.
You own the n8n workflow, the Apify token, and the sheet. Hyxil does not rent a black-box lead tool.
Published v2 stack
Apify Google Maps with contact details, Claude Haiku 4.5 + Sonnet 4.6, MillionVerifier, Google Sheets. Language locked to English on the actor. Closed places skipped at source.
This build
Compared with v1
The other seven in this portfolio
Maps Scraper v2 — short answers
Why not just raise the Places page size?
What actor does it call?
Does v2 write a different email than v1?
Will it re-contact someone already in the sheet?
Is this SaaS I can subscribe to?
Want the Apify scrape on your keywords?
We will walk the 25-node canvas — form, actor, skip-closed, verify, Claude, Sheet — and map it to the cities you actually sell into.