Cree una capa de búsqueda de descubrimiento de empresas B2B combinando consultas específicas de la industria con análisis de resultados estructurados para identificar empresas que coincidan con su perfil de cliente ideal. En lugar de depender de bases de datos estáticas que se vuelven obsoletas en cuestión de meses, este enfoque utiliza datos de búsqueda en vivo para descubrir nuevas empresas a medida que aparecen en línea. El punto final de búsqueda de Google de Scavio arroja resultados nuevos que puede filtrar por autoridad de dominio, señales de contenido e indicadores tecnológicos. Este tutorial crea un canal de descubrimiento que toma criterios ICP y devuelve perfiles de empresa enriquecidos.
Requisitos previos
- Python 3.8+ instalado
- solicita biblioteca instalada
- Una clave API de Scavio de scavio.dev
- Un ICP (perfil de cliente ideal) definido con criterios de industria y tamaño
Guia paso a paso
Paso 1: Definir consultas de búsqueda basadas en ICP
Genere consultas de búsqueda a partir de sus criterios ICP que probablemente muestren sitios web de empresas, publicaciones de trabajo y menciones de prensa.
import os, requests
API_KEY = os.environ['SCAVIO_API_KEY']
def generate_discovery_queries(industry: str, signals: list) -> list:
templates = [
f'{industry} companies hiring 2026',
f'{industry} startups series a 2026',
f'best {industry} tools for enterprise',
f'{industry} software company reviews',
]
for signal in signals:
templates.append(f'{industry} {signal}')
return templates
queries = generate_discovery_queries('martech', ['raised funding', 'product launch', 'api integration'])
print(queries)Paso 2: Buscar y extraer dominios de empresas
Ejecute cada consulta a través de Scavio y extraiga dominios de empresa únicos de los resultados.
from urllib.parse import urlparse
def search_companies(query: str) -> list:
resp = requests.post('https://api.scavio.dev/api/v1/search',
headers={'x-api-key': API_KEY},
json={'platform': 'google', 'query': query}, timeout=15)
resp.raise_for_status()
results = resp.json().get('organic_results', [])
domains = set()
for r in results:
domain = urlparse(r.get('link', '')).netloc.replace('www.', '')
if domain and not any(skip in domain for skip in ['google.', 'youtube.', 'linkedin.', 'reddit.', 'wikipedia.']):
domains.add(domain)
return list(domains)
def discover_companies(queries: list) -> list:
all_domains = set()
for q in queries:
all_domains.update(search_companies(q))
return sorted(all_domains)Paso 3: Enriquece cada empresa con una búsqueda de seguimiento
Para cada dominio descubierto, ejecute una búsqueda específica para extraer la descripción de la empresa, información de fundación y señales tecnológicas.
def enrich_company(domain: str) -> dict:
resp = requests.post('https://api.scavio.dev/api/v1/search',
headers={'x-api-key': API_KEY},
json={'platform': 'google', 'query': f'{domain} company about funding'}, timeout=15)
results = resp.json().get('organic_results', [])
snippets = ' '.join(r.get('snippet', '') for r in results[:3])
return {
'domain': domain,
'description': snippets[:300],
'result_count': len(results),
}Paso 4: Filtrar y clasificar por ajuste de ICP
Califique a cada empresa en función de qué tan bien sus datos de enriquecimiento coinciden con sus criterios de ICP y luego genere una lista clasificada.
def score_icp_fit(company: dict, keywords: list) -> float:
text = company.get('description', '').lower()
matches = sum(1 for kw in keywords if kw.lower() in text)
return round(matches / max(len(keywords), 1), 2)
def run_discovery(industry: str, signals: list, icp_keywords: list):
queries = generate_discovery_queries(industry, signals)
domains = discover_companies(queries)
companies = [enrich_company(d) for d in domains[:20]]
for c in companies:
c['icp_score'] = score_icp_fit(c, icp_keywords)
ranked = sorted(companies, key=lambda x: x['icp_score'], reverse=True)
for c in ranked[:10]:
print(f'{c["domain"]:<30} ICP={c["icp_score"]}')
return ranked
run_discovery('martech', ['raised funding'], ['api', 'saas', 'enterprise', 'integration'])Ejemplo en Python
import requests, os
from urllib.parse import urlparse
H = {'x-api-key': os.environ['SCAVIO_API_KEY']}
def discover(industry):
resp = requests.post('https://api.scavio.dev/api/v1/search', headers=H,
json={'platform': 'google', 'query': f'{industry} companies hiring 2026'})
domains = set()
for r in resp.json().get('organic_results', []):
d = urlparse(r.get('link', '')).netloc.replace('www.', '')
if d: domains.add(d)
return sorted(domains)
for d in discover('martech')[:10]: print(d)Ejemplo en JavaScript
const H = {'x-api-key': process.env.SCAVIO_API_KEY, 'Content-Type': 'application/json'};
async function discover(industry) {
const r = await fetch('https://api.scavio.dev/api/v1/search', {
method: 'POST', headers: H,
body: JSON.stringify({platform: 'google', query: `${industry} companies hiring 2026`})
});
const results = (await r.json()).organic_results || [];
const domains = [...new Set(results.map(r => new URL(r.link).hostname.replace('www.', '')))];
return domains.filter(d => !['google.com', 'linkedin.com'].includes(d));
}
discover('martech').then(d => d.slice(0, 10).forEach(x => console.log(x)));Salida esperada
A ranked list of B2B company domains discovered through live search, scored against ICP criteria with enrichment data from follow-up queries.