Resumen
Online directories like Clutch, G2, y Capterra tienen hundreds of paginas of listings. Manualmente browsing es slow y incomplete. Este n8n flujo de trabajo automatiza paginated consultas de busqueda to extraer todos listings in un categoria, deduplicates resultados, y construye un master prospect lista. Cada pagina of resultados de busqueda costs $0.005.
Desencadenador
Semanal cron on Monday at 3 AM UTC o on-demand for nuevo categorias.
Programación
Semanal (Monday 3 AM UTC)
Pasos del flujo de trabajo
Configurar Directory y Category Targets
Define cual directories to search y cual categorias to extraer. Cada objetivo incluye el directory dominio y categoria palabras clave.
Ejecutar Paginated Search Consultas
For cada directory-category pair, ejecutar multiples consultas de busqueda con pagina offsets to capture todos listings. Continue hasta resultados son empty o reach max paginas.
Extraer Company Datos de Resultados
Analizar company names, descriptions, y URLs de resultados organicos. Extraer additional senales de fragmentos (ratings, resena counts, specialties).
Deduplicate Against Master List
Comparar nuevo resultados contra el existing master lista. Add solo nuevo companies. Marcar companies ese appeared in anterior ejecuta pero son ahora missing.
Exportar to Google Sheets o CRM
Agregar nuevo companies to el master hoja de calculo o crear nuevo CRM contacts. Tag con directory fuente, categoria, y extraccion date.
Implementacion en Python
import requests, os, json
API_KEY = os.environ["SCAVIO_API_KEY"]
def paginated_directory_search(directory: str, category: str, max_pages: int = 5) -> list:
"""Search a directory with pagination."""
all_results = []
for page in range(max_pages):
resp = requests.post(
"https://api.scavio.dev/api/v1/search",
headers={"x-api-key": API_KEY, "Content-Type": "application/json"},
json={"query": f"site:{directory} {category}", "country_code": "us", "start": page * 10},
timeout=15,
)
data = resp.json()
results = data.get("organic_results", [])
if not results:
break
for r in results:
all_results.append({"title": r.get("title", ""), "url": r.get("link", ""), "snippet": r.get("snippet", "")})
# Deduplicate by URL
seen = set()
unique = []
for r in all_results:
if r["url"] not in seen:
seen.add(r["url"])
unique.append(r)
return unique
listings = paginated_directory_search("clutch.co", "seo agencies", max_pages=5)
print(f"Extracted {len(listings)} unique listings from Clutch")Implementacion en JavaScript
const H = {'x-api-key': process.env.SCAVIO_API_KEY, 'Content-Type': 'application/json'};
async function paginatedSearch(directory, category, maxPages=5) {
const all = [];
for (let page=0; page<maxPages; page++) {
const r = await fetch('https://api.scavio.dev/api/v1/search', {method:'POST', headers:H, body:JSON.stringify({query:'site:'+directory+' '+category, country_code:'us', start:page*10})});
const d = await r.json();
if (!(d.organic_results||[]).length) break;
d.organic_results.forEach(r => all.push({title:r.title, url:r.link, snippet:r.snippet}));
}
const seen = new Set();
return all.filter(r => { if (seen.has(r.url)) return false; seen.add(r.url); return true; });
}
const listings = await paginatedSearch('clutch.co', 'seo agencies', 5);
console.log(listings.length + ' unique listings extracted');Plataformas utilizadas
Búsqueda web con grafo de conocimiento, PAA y resúmenes de IA