Aperçu
Les agences qui servent les entreprises locales (restaurants, dentistes, plombiers, salles de sport) ont besoin d'un flux constant de nouveaux prospects. Ce workflow recherche Google quotidiennement pour des entreprises locales dans les villes et verticales cibles, filtre les entreprises ayant une faible présence en ligne (pas de site web, listes obsolètes, mauvais avis) et pousse les prospects qualifiés vers le pipeline de vente. Un appel API par recherche, aucun scraping requis.
Déclencheur
Planification Cron (tous les jours à 9h UTC)
Planification
Tous les jours à 9h UTC
Étapes du workflow
Charger les marchés cibles
Lire la liste des villes cibles, des verticales (dentiste, plombier, restaurant) et des critères de qualification depuis la configuration.
Rechercher des entreprises locales
Pour chaque combinaison ville-verticale, interroger Google via Scavio pour obtenir des listes d'entreprises. Extraire les noms, adresses et URLs.
Identifier une faible présence en ligne
Filtrer les entreprises sans site web, avec de mauvaises notes Google ou des informations obsolètes dans les extraits.
Vérifier les prospections existantes
Comparer avec votre CRM pour ignorer les entreprises déjà contactées.
Noter et prioriser
Noter les prospects selon les signaux d'opportunité : pas de site web = priorité élevée, mauvais avis mentionnant des problèmes réparables = moyenne.
Pousser vers le pipeline de prospection
Formater les prospects avec un contexte (pourquoi ils ont besoin d'aide) et les pousser vers votre CRM ou outil de prospection.
Implémentation Python
import requests, os, json
H = {"x-api-key": os.environ["SCAVIO_API_KEY"]}
MARKETS = [
{"city": "Austin TX", "verticals": ["dentist", "plumber", "restaurant"]},
{"city": "Denver CO", "verticals": ["chiropractor", "gym", "salon"]}
]
def find_local_leads():
leads = []
for market in MARKETS:
for vertical in market["verticals"]:
query = f"{vertical} in {market['city']}"
r = requests.post("https://api.scavio.dev/api/v1/search", headers=H,
json={"platform": "google", "query": query}, timeout=10).json()
for o in r.get("organic", [])[:10]:
snippet = o.get("snippet", "").lower()
has_website = bool(o.get("link"))
low_rating = "rating" in snippet and any(
f"{n}" in snippet for n in ["1.", "2.", "3."])
leads.append({
"business": o.get("title"),
"url": o.get("link"),
"city": market["city"],
"vertical": vertical,
"snippet": o.get("snippet"),
"opportunity": "no_website" if not has_website else
"low_rating" if low_rating else "standard"
})
return leads
for lead in find_local_leads():
print(json.dumps(lead))Implémentation JavaScript
const H = {"x-api-key": process.env.SCAVIO_API_KEY, "Content-Type": "application/json"};
async function findLocalLeads(markets) {
const leads = [];
for (const market of markets) {
for (const vertical of market.verticals) {
const r = await fetch("https://api.scavio.dev/api/v1/search", {
method: "POST", headers: H,
body: JSON.stringify({platform: "google", query: vertical + " in " + market.city})
}).then(r => r.json());
for (const o of (r.organic || []).slice(0, 10)) {
leads.push({
business: o.title, url: o.link, city: market.city,
vertical, snippet: o.snippet
});
}
}
}
return leads;
}Plateformes utilisées
Recherche web avec graphe de connaissances, PAA et aperçus IA