Se stai costruendo un workflow Zapier di lead generation per lead di attività locali, il passaggio dei dati è la parte difficile: trovare attività, i loro siti web, numeri di telefono ed email di contatto senza mantenere uno scraper. biz collect offre a Zapier una via pulita con Webhooks by Zapier. Un'azione fa POST di una località e parole chiave verso /v1/search, ricevi un job_id asincrono, poi un breve schema attendi-e-poll controlla /v1/jobs/:id finché il JSON strutturato è pronto. Questa guida costruisce uno Zap funzionante che trova attività locali, estrae email deduplicate dai loro siti web e invia i risultati a Google Sheets o HubSpot. È anche onesto su dove il modello di polling di Zapier differisce da n8n e Make, perché quella differenza plasma come costruisci lo Zap.
Perché usare un'API per la lead generation in Zapier?
Zapier è la piattaforma di automazione no-code più usata, con migliaia di integrazioni di app, un modello trigger-e-azione pulito e strumenti integrati come Webhooks, Delay, Formatter, Filter e Paths. È eccellente nello spostare dati tra app. Ma la lead generation locale ha un passaggio di acquisizione dati per cui Zapier da solo non è costruito, perché Zapier non ha né automazione del browser né ciclo nativo.
Un approccio scraping-first in Zapier significa chiamare un servizio di scraping esterno, fare parsing di HTML fragile ed eseguire un secondo scraper per trovare le email su ogni sito web. È fragile e costoso da mantenere. L'approccio più pulito è chiamare un'API che restituisce già dati aziendali strutturati con email, così lo Zap deve solo instradare i risultati. Se stai ancora confrontando le fonti, questa guida su quale vince per i dati locali: la Places API, uno scraper o un'API di dati aziendali percorre le opzioni.
biz collect è progettato esattamente per questo. È un'API di contatti aziendali nativa per gli LLM, costruita per agenti, strumenti di workflow, script e arricchimento CRM. Chiami /api/v1/search con parametri come location, keywords, radius_km e scrape_emails. L'API restituisce un job in coda. Fai polling su /api/v1/jobs/:id finché è completo, poi usi i record JSON restituiti nel resto dello Zap.
Questo lascia il tuo Zap concentrarsi sul routing:
- Avviare una ricerca da un modulo, una pianificazione o un webhook.
- Richiedere dati aziendali locali strutturati a biz collect.
- Attendere il job asincrono, poi fare polling sul risultato.
- Suddividere le attività restituite in righe o record.
- Filtrare e pulire i record.
- Inviare i lead qualificati a Google Sheets, HubSpot, Airtable o un'altra app.
Per i dettagli dell'API, parti dai docs API, dagli esempi di integrazione in integrazioni e dai limiti di piano in prezzi. Per vedere il ciclo ricerca-e-polling asincrono prima di costruire, la pagina come funziona biz collect lo percorre. La documentazione di Zapier è utile per gli strumenti usati qui, in particolare Webhooks by Zapier, Delay by Zapier e Formatter by Zapier.
Sii onesto sui vincoli di polling di Zapier
Prima di costruire, vale la pena capire come Zapier differisce da n8n e Make, perché cambia il design.
- Una singola esecuzione di Zap è lineare. Non c'è un "cicla finché una condizione è vera" nativo, come il Wait-e-ciclo di n8n o il Repeater di Make. Ogni esecuzione di Zap scorre una volta dall'alto in basso.
- Delay by Zapier attende, ma non cicla. Puoi inserire un ritardo tra una richiesta e un poll, ma una singola esecuzione ti dà un singolo poll. Per fare polling più volte, riattivi lo Zap o usi Sub-Zap e aiutanti di ciclo, il che aggiunge complessità.
- I limiti di task contano. Ogni passaggio di azione eseguito conta come un task contro il tuo piano, quindi uno schema di polling multi-passaggio consuma rapidamente task a volume.
- Code by Zapier è la via di fuga. Un passaggio JavaScript o Python può fetchare, attendere e ri-pollare in un solo passaggio, aggirando il limite di assenza di ciclo per job moderati.
La conseguenza pratica: il design Zapier più pulito usa o (a) un singolo ritardo generoso dimensionato alla durata abituale dei job, poi fa polling una volta, o (b) un passaggio Code by Zapier che fa polling in un breve ciclo interno. n8n e Make gestiscono il polling multi-tentativo più naturalmente; l'articolo sul workflow n8n di lead generation mostra quel ciclo nativo per confronto. Dentro Zapier, progetti attorno al modello lineare, non contro di esso.
Cosa costruisce questo Zap
Lo Zap di questo tutorial automatizza i lead locali dalla richiesta di ricerca all'output verso la destinazione, con passaggi Zapier standard e biz collect per la ricerca di attività.
Lo Zap finale ha questo aspetto:
- Un trigger avvia lo Zap da un modulo, una pianificazione o un webhook.
- Un'azione Webhooks by Zapier invia un
POSTa biz collect/api/v1/search. - La risposta restituisce un
job_ide lo stato. - Un passaggio Delay by Zapier attende abbastanza a lungo perché il job finisca.
- Una seconda azione Webhooks by Zapier chiama
/api/v1/jobs/:id. - Un Filter verifica che lo stato sia
completed. - Un passaggio Formatter o Code divide e pulisce le attività.
- Un'azione di destinazione invia i lead a Google Sheets, HubSpot o un'altra app.
Puoi adattare lo stesso schema per prospezione occasionale, scansioni ricorrenti, liste di lead per agenzie o arricchimento CRM, inclusi workflow di agenti IA che necessitano di dati di contatto di attività locali verificati.
Prerequisiti
Prima di costruire, ti serve:
- Un account Zapier su un piano che includa gli Zap multi-passaggio (richiesto per Webhooks, Delay e Formatter).
- Una chiave API biz collect.
- Una destinazione come Google Sheets o HubSpot.
- Una definizione di ricerca chiara: località, parole chiave di categoria, raggio e se estrarre le email dai siti web.
biz collect è gratuito da iniziare con 200 crediti di iscrizione e senza carta di credito. È sufficiente per costruire e testare lo Zap prima di metterlo su una pianificazione. Controlla prezzi per i limiti attuali.
Flusso di dati e forma dell'API
biz collect usa un flusso di job asincrono perché la ricerca di attività locali e l'estrazione email dai siti web richiedono più tempo di una normale richiesta sincrona.
La richiesta base è un POST a:
https://bizcollect.dev/api/v1/search
Il body contiene gli input di ricerca:
{
"location": "Denver, CO",
"keywords": ["roofing contractor", "roofer"],
"radius_km": 25,
"scrape_emails": true
}
La risposta contiene l'identificatore di job. Lo Zap ha bisogno solo del job_id e dello stato:
{
"job_id": "job_123456",
"status": "queued",
"poll_url": "/api/v1/jobs/job_123456"
}
Poi Zapier fa polling:
GET https://bizcollect.dev/api/v1/jobs/job_123456
Una volta completo, il risultato contiene record strutturati:
{
"job_id": "job_123456",
"status": "completed",
"businesses": [
{
"name": "Example Roofing Co",
"address": "500 Market St, Denver, CO 80202",
"phone": "+1 303-555-0101",
"website": "https://exampleroofing.com",
"emails": ["office@exampleroofing.com", "info@exampleroofing.com"]
}
]
}
Il contratto è stabile: avviare una ricerca, ricevere un job_id, fare polling sul endpoint del job, poi elaborare JSON strutturato. Per lo schema autorevole, usa il riferimento OpenAPI nei docs di biz collect.
Passo 1: Scegliere il trigger
Scegli il trigger che corrisponde al tuo caso d'uso:
- Schedule by Zapier per prospezione ricorrente, ad esempio ogni lunedì mattina.
- Google Forms, Typeform o Webhook quando una persona o un altro sistema invia una ricerca.
- Trigger di test manuale durante la costruzione.
Per una prima versione, usa un trigger Schedule o un modulo, e passa la località, le parole chiave e il raggio al passaggio di ricerca. Se vuoi che un altro strumento avvii ricerche, usa un trigger Catch Hook (Webhooks by Zapier) e invia:
{
"location": "Vienna, Austria",
"keywords": ["dental clinic", "dentist"],
"radius_km": 10,
"scrape_emails": true
}
Mantieni semplice il primo Zap, conferma la forma della risposta, poi mappa i campi dinamici.
Passo 2: Fare POST verso /api/v1/search con Webhooks by Zapier
Aggiungi un'azione Webhooks by Zapier e scegli l'evento di azione Custom Request. Chiamala Start biz collect Search.
Configurala:
- Method:
POST - URL:
https://bizcollect.dev/api/v1/search - Data Pass-Through: off
- Data: il body JSON
- Headers: autorizzazione e content type
Imposta gli header:
Authorization: Bearer YOUR_BIZCOLLECT_API_KEY
Content-Type: application/json
Imposta i dati (mappando i campi del trigger dove li hai):
{
"location": "{{location}}",
"keywords": ["{{keyword_one}}", "{{keyword_two}}"],
"radius_km": 20,
"scrape_emails": true
}
Usa l'evento Custom Request invece di POST per controllare esattamente il body JSON grezzo e gli header. Se il tuo trigger fornisce le parole chiave come singola stringa separata da virgole, passala prima attraverso un passaggio Formatter "Split Text" e ricostruisci l'array, perché l'API si aspetta un input di parole chiave chiaro.
Dopo questo passaggio, hai un job_id e uno status. Se fallisce, controlla la chiave API, il body e i limiti attuali in prezzi.
Passo 3: Ritardo prima del polling
Aggiungi un passaggio Delay by Zapier, Delay For, dopo l'azione di ricerca. Chiamalo Wait Before Polling.
Imposta un ritardo abbastanza lungo perché il job sia di solito finito nel momento in cui fai polling. L'estrazione email richiede che l'API visiti i siti web delle attività, analizzi le pagine e deduplichi gli indirizzi, quindi un ritardo troppo breve significa che il singolo poll cattura un job ancora in esecuzione. Poiché uno Zap base fa polling solo una volta, dimensiona questo ritardo generosamente:
- Piccoli job di arricchimento: 1-2 minuti.
- Ricerche di estrazione email tipiche: 2-5 minuti.
- Grandi ricerche ampie: 5 minuti o più.
Delay by Zapier può attendere minuti, ore o giorni, quindi una pausa di più minuti rientra bene nella sua portata. Questo singolo ritardo generoso è il modo più semplice ed efficiente in task di lavorare con il modello lineare di Zapier. Se hai bisogno di un vero polling multi-tentativo, vedi l'alternativa Code by Zapier qui sotto.
Passo 4: Fare polling su /api/v1/jobs/:id
Aggiungi una seconda azione Webhooks by Zapier, Custom Request di nuovo. Chiamala Poll biz collect Job.
Configurala:
- Method:
GET - URL:
https://bizcollect.dev/api/v1/jobs/{{job_id}}, mappando iljob_iddal passo 2 - Headers: lo stesso header di autorizzazione
Header:
Authorization: Bearer YOUR_BIZCOLLECT_API_KEY
La risposta include lo stato attuale del job. Il passaggio successivo si ramifica su di esso.
Opzionale: Code by Zapier per un vero polling multi-tentativo
Se un singolo poll ritardato non è abbastanza affidabile per le tue dimensioni di ricerca, sostituisci il Delay e il webhook di poll con un passaggio Code by Zapier che fa polling in un breve ciclo interno. Questo mantiene tutto in un'esecuzione di Zap e usa un task invece di diversi:
// Code by Zapier (JavaScript). inputData.job_id and inputData.api_key are mapped in.
const base = "https://bizcollect.dev/api/v1/jobs/";
const headers = { Authorization: `Bearer ${inputData.api_key}` };
let data = null;
for (let attempt = 0; attempt < 12; attempt++) {
const res = await fetch(base + inputData.job_id, { headers });
data = await res.json();
if (data.status === "completed" || data.status === "failed") break;
await new Promise((r) => setTimeout(r, 10000)); // wait 10s between polls
}
output = { status: data.status, businesses: data.businesses || [] };
Mantieni il ciclo limitato (qui, 12 tentativi a 10 secondi, circa due minuti) così il passaggio non si blocca mai. Code by Zapier ha un proprio limite di tempo di esecuzione, quindi per job molto grandi preferisci lo schema di ritardo singolo generoso o esegui il workflow in n8n o Make, che ciclano nativamente.
Passo 5: Filtrare i job completati
Aggiungi un passaggio Filter by Zapier. Continua solo quando:
status (Text) Exactly matches: completed
Questo ferma lo Zap in modo pulito quando un poll cattura un job ancora queued o running, o quando è failed. Per la produzione, aggiungi un Path separato o una notifica per il caso failed così una persona sa quando un job non è stato completato, invece che lo Zap si fermi silenziosamente.
Passo 6: Dividere e pulire le attività
La risposta completata contiene un array di attività. Zapier gestisce gli array tramite un approccio line-item o Looping by Zapier, o appiattisci i dati in un passaggio Code o Formatter.
L'approccio più affidabile per la maggior parte degli utenti è un piccolo passaggio Code by Zapier che restituisce un oggetto di output per attività, il che fa creare a Zapier un'esecuzione a valle per record:
// Code by Zapier (JavaScript). inputData.businesses is mapped from the poll/Code step.
const businesses = JSON.parse(inputData.businesses || "[]");
return businesses.map((b) => ({
name: b.name || "",
address: b.address || "",
phone: b.phone || "",
website: b.website || "",
primary_email: Array.isArray(b.emails) && b.emails.length ? b.emails[0] : "",
all_emails: Array.isArray(b.emails) ? b.emails.join(", ") : "",
email_count: Array.isArray(b.emails) ? b.emails.length : 0,
}));
Restituire un array da Code by Zapier si dispiega in un'esecuzione per item per i passaggi che seguono, che è esattamente ciò che vuoi prima di scrivere righe.
Se preferisci senza codice, usa le utility Formatter per estrarre la prima email e unire la lista, poi un passaggio Looping sulle attività. In entrambi i casi, aggiungi un Filter dopo la divisione dove primary_email non è vuota se la campagna è solo email. Mantieni i record con telefono quando la chiamata è anche un canale, poiché la copertura email è sempre parziale.
Passo 7: Inviare i lead a Google Sheets
Google Sheets è la destinazione più facile. Aggiungi un'azione Google Sheets: Create Spreadsheet Row dopo la divisione.
Colonne consigliate:
Search Job IDBusiness NameAddressPhoneWebsitePrimary EmailAll EmailsEmail CountCreated At
Mappa i campi di output del passaggio di divisione in quelle colonne. Per una deduplicazione leggera, usa il dominio del sito web o l'email principale come valore univoco; poiché "Create Row" aggiunge soltanto, aggiungi un controllo "Lookup Spreadsheet Row" prima della scrittura se l'unicità rigorosa conta.
Passo 8: Inviare i lead qualificati a HubSpot
Per HubSpot, il flusso comune usa le azioni cerca-e-crea di HubSpot:
- Trovare un'azienda per dominio o sito web.
- Creare l'azienda se non ne esiste.
- Se
primary_emailesiste, trovare un contatto per email. - Creare il contatto se non ne esiste.
- Associare il contatto all'azienda.
Mantieni la prima versione conservativa. Non creare contatti duplicati perché un'attività ha diverse email; inizia con primary_email e memorizza l'intera lista in una proprietà personalizzata o una nota. Un mapping azienda utile:
Name -> Business Name
Domain -> the website with https:// and www. stripped (use Formatter)
Phone -> Phone
Website -> Website
Aggiungi una validazione prima delle azioni di creazione: creare contatti solo quando primary_email è presente, creare aziende solo quando website o phone esiste, e aggiungi un campo di origine come biz collect Zapier più la località di ricerca e le parole chiave come contesto di campagna. Questo rende semplice il reporting su quali ricerche hanno prodotto lead.
Layout di Zap consigliato
Ecco la sequenza completa di passaggi per una versione pratica:
Trigger (Schedule / Form / Catch Hook)
-> Webhooks (Custom Request POST): Start biz collect Search
-> Delay For: Wait Before Polling (or Code by Zapier: poll loop)
-> Webhooks (Custom Request GET): Poll biz collect Job
-> Filter: status is completed
-> Code by Zapier: split + clean businesses (fans out per record)
-> Filter: primary_email is not empty (email-only campaigns)
-> Google Sheets / HubSpot
Questo design rispetta il modello lineare di Zapier: un ritardo generoso (o un ciclo Code di poll limitato) invece di un ciclo aperto, un filtro per fermarsi sui job incompleti e una divisione fan-out prima della scrittura. Se i tuoi job sono grandi o vuoi un polling multi-tentativo nativo, il workflow Make.com di lead generation e il workflow n8n di lead generation gestiscono i cicli più naturalmente, e la guida ai migliori strumenti di lead generation locale nel 2026 mostra dove ciascuno si colloca.
Iniziare a costruire
Il workflow Zapier di lead generation più semplice ma utile è composto da pochi passaggi: trigger, Webhooks POST, Delay, Webhooks GET, Filter, divisione e output. Il valore viene dall'usare un'API che restituisce dati aziendali strutturati ed email di siti web verificate invece di chiedere a Zapier di pilotare uno scraper per cui non è mai stato progettato.
biz collect è costruito esattamente per questo schema: un POST per avviare una ricerca locale, polling asincrono fino al completamento, campi JSON stabili, docs OpenAPI 3.1 ed email di contatto deduplicate estratte dai siti web delle attività. Si adatta a Zapier, Make, n8n, script, strumenti LLM e arricchimento CRM.
Puoi iniziare gratuitamente con 200 crediti di iscrizione e senza carta di credito. Apri i docs API, rivedi le integrazioni, controlla i prezzi e costruisci oggi il tuo primo Zap di lead locali automatizzati.
Domande frequenti
- Come costruisco un workflow di lead generation in Zapier?
- Usa Webhooks by Zapier (Custom Request POST) per inviare una città e parole chiave verso /v1/search, un passaggio Delay by Zapier per attendere, un secondo Webhooks GET per fare polling su /v1/jobs/:id, un Filter su status uguale completed, poi un passaggio di divisione e un'azione Google Sheets o HubSpot per scrivere i lead.
- Zapier può fare polling di un'API asincrona ripetutamente?
- Non nativamente in un'esecuzione. Una singola esecuzione di Zap è lineare senza un passaggio cicla-fino-a, quindi lo schema più semplice è un Delay generoso dimensionato alla durata dei job, poi un singolo poll. Per un vero polling multi-tentativo, usa un passaggio Code by Zapier che fetcha in un breve ciclo limitato, o esegui il workflow in n8n o Make, che ciclano nativamente.
- Quanto dovrebbe durare il Delay prima di fare polling su biz collect?
- Dimensionalo al job. I piccoli job di arricchimento finiscono in 1-2 minuti; le ricerche di estrazione email tipiche in 2-5 minuti; le grandi ricerche ampie possono richiedere più tempo. Poiché uno Zap base fa polling una volta, tendi verso un ritardo più lungo così il poll cattura un job completato.
- Come divido l'array di attività in righe separate in Zapier?
- Restituisci un array di oggetti da un passaggio Code by Zapier, che si dispiega in un'esecuzione per attività per i passaggi successivi, o usa un passaggio Looping by Zapier sull'array. Poi mappa i campi per attività nella tua azione Google Sheets o CRM.
- Funziona anche con Make o n8n?
- Sì. L'API usa richieste HTTP standard, quindi lo stesso schema ricerca-poll-scrittura funziona in Make e n8n. Quegli strumenti ciclano più naturalmente di Zapier, quindi il polling multi-tentativo lì è più semplice, mentre Zapier brilla per il suo enorme catalogo di app.
- C'è un piano gratuito per testare lo Zap?
- Sì. Ottieni 200 crediti di iscrizione più 20 crediti di accesso ogni giorno senza carta di credito, sufficienti per costruire e validare l'intero Zap prima di metterlo su una pianificazione.


