Aperçu
Ce workflow recherche sur Google Maps via Scavio des entreprises locales dans une catégorie et une zone géographique cibles, extrait les numéros de téléphone et les détails de l'entreprise, génère des modèles de messages WhatsApp personnalisés et produit une feuille de prospects prête à l'envoi. Chaque prospect inclut le nom de l'entreprise, la catégorie, le téléphone, la note et une ligne d'ouverture personnalisée.
Déclencheur
Manuel (exécuter lors de la création d'une nouvelle liste de prospects)
Planification
À la demande (déclenchement manuel)
Étapes du workflow
Définir les requêtes cibles
Spécifiez les combinaisons catégorie d'activité et emplacement : 'dentist Miami FL', 'plumber Austin TX', 'restaurant Chicago IL'. Chaque combinaison devient une requête de recherche.
Rechercher sur Google Maps via Scavio
Pour chaque requête, appelez Scavio avec la plateforme google et le type maps. Extrayez les local_results avec le nom de l'entreprise, le téléphone, l'adresse, la note et la catégorie.
Filtrer les prospects avec numéros de téléphone
Ignorez les résultats sans numéro de téléphone. Ces entreprises ne peuvent pas être contactées via WhatsApp. Ne conservez que les prospects avec des numéros valides.
Générer des modèles personnalisés
Pour chaque prospect, créez un modèle de message WhatsApp qui mentionne le nom de l'entreprise, la catégorie et l'emplacement. Gardez les messages sous 200 caractères pour une meilleure lisibilité.
Exporter la feuille de prospects
Écrivez la liste finale des prospects dans un fichier CSV ou JSON avec les colonnes : name, phone, address, rating, category, message_template.
Implémentation Python
import requests, os, csv
SCAVIO_KEY = os.environ["SCAVIO_API_KEY"]
H = {"x-api-key": SCAVIO_KEY}
QUERIES = ["dentist Miami FL", "plumber Austin TX", "accountant Denver CO"]
def get_leads(query: str) -> list:
resp = requests.post("https://api.scavio.dev/api/v1/search", headers=H,
json={"platform": "google", "query": query, "type": "maps"}, timeout=10)
results = resp.json().get("local_results", [])
leads = []
for r in results:
if r.get("phone"):
leads.append({
"name": r["title"], "phone": r["phone"],
"address": r.get("address", ""), "rating": r.get("rating", ""),
"category": query.split()[0],
"template": f"Hi {r['title']}, I help {query.split()[0]}s in {' '.join(query.split()[1:])} grow online. Quick question about your website?"
})
return leads
all_leads = []
for q in QUERIES:
all_leads.extend(get_leads(q))
with open("leads.csv", "w", newline="") as f:
w = csv.DictWriter(f, fieldnames=["name", "phone", "address", "rating", "category", "template"])
w.writeheader()
w.writerows(all_leads)
print(f"Exported {len(all_leads)} leads")Implémentation JavaScript
const QUERIES = ["dentist Miami FL", "plumber Austin TX", "accountant Denver CO"];
async function getLeads(query) {
const resp = await fetch("https://api.scavio.dev/api/v1/search", {
method: "POST",
headers: { "x-api-key": process.env.SCAVIO_API_KEY, "Content-Type": "application/json" },
body: JSON.stringify({ platform: "google", query, type: "maps" })
});
const results = (await resp.json()).local_results || [];
const category = query.split(" ")[0];
const location = query.split(" ").slice(1).join(" ");
return results.filter(r => r.phone).map(r => ({
name: r.title, phone: r.phone, address: r.address || "",
rating: r.rating || "", category,
template: `Hi ${r.title}, I help ${category}s in ${location} grow online. Quick question about your website?`
}));
}
const allLeads = [];
for (const q of QUERIES) {
allLeads.push(...await getLeads(q));
}
console.log(`Total leads: ${allLeads.length}`);
console.log(JSON.stringify(allLeads, null, 2));Plateformes utilisées
Recherche web avec graphe de connaissances, PAA et aperçus IA