Cree un flujo de trabajo n8n que enriquezca los registros de la empresa con datos de búsqueda en vivo activando nuevas entradas de CRM, consultando la API de Scavio para cada nombre de empresa, extrayendo datos estructurados de los resultados de búsqueda y escribiendo campos enriquecidos en su CRM. La investigación manual de empresas es un cuello de botella en los flujos de trabajo de ventas. Un flujo de enriquecimiento automatizado se ejecuta en segundos por empresa y muestra indicadores de ingresos, noticias recientes, señales de tecnología y actividad de contratación sin ningún esfuerzo humano.
Requisitos previos
- Instancia n8n en ejecución (autohospedada o nube n8n)
- Una clave API de Scavio de scavio.dev
- Un CRM u hoja de cálculo con nombres de empresas
- Conocimientos básicos del flujo de trabajo n8n
Guia paso a paso
Paso 1: Crear el nodo de solicitud HTTP n8n
Configure la llamada API de Scavio como un nodo de solicitud HTTP en n8n.
import os, requests
API_KEY = os.environ['SCAVIO_API_KEY']
# This mirrors the n8n HTTP Request node config:
# Method: POST
# URL: https://api.scavio.dev/api/v1/search
# Headers: x-api-key = {{$env.SCAVIO_API_KEY}}
# Body (JSON): {"platform": "google", "query": "{{$json.company_name}} company overview"}
def search_company(company_name: str) -> dict:
resp = requests.post('https://api.scavio.dev/api/v1/search',
headers={'x-api-key': API_KEY},
json={'platform': 'google', 'query': f'{company_name} company overview'}, timeout=15)
return resp.json()
data = search_company('Stripe')
print(f"Results: {len(data.get('organic_results', []))}")Paso 2: Extraer señales de la empresa
Analice los resultados de búsqueda en busca de indicadores de ingresos, personal, financiación y pila tecnológica.
import re
def extract_signals(company: str, data: dict) -> dict:
results = data.get('organic_results', [])
signals = {
'company': company,
'snippets': [],
'news': [],
'has_careers_page': False,
'linkedin_found': False,
}
for r in results[:8]:
title = r.get('title', '')
snippet = r.get('snippet', '')
link = r.get('link', '')
signals['snippets'].append(snippet[:150])
if 'careers' in link.lower() or 'jobs' in link.lower():
signals['has_careers_page'] = True
if 'linkedin.com/company' in link.lower():
signals['linkedin_found'] = True
if any(word in title.lower() for word in ['raises', 'funding', 'series', 'valuation']):
signals['news'].append(title)
return signals
signals = extract_signals('Stripe', data)
print(f"Careers page: {signals['has_careers_page']}")
print(f"LinkedIn: {signals['linkedin_found']}")
print(f"News: {signals['news'][:2]}")Paso 3: Enriquece con la búsqueda de noticias
Realice una segunda búsqueda centrada en noticias recientes para capturar rondas de financiación y anuncios.
def get_recent_news(company: str) -> list:
resp = requests.post('https://api.scavio.dev/api/v1/search',
headers={'x-api-key': API_KEY},
json={'platform': 'google', 'query': f'{company} news 2026'}, timeout=15)
results = resp.json().get('organic_results', [])
news = []
for r in results[:5]:
news.append({
'title': r.get('title', ''),
'source': r.get('source', ''),
'snippet': r.get('snippet', '')[:120],
'url': r.get('link', ''),
})
return news
news = get_recent_news('Stripe')
for n in news:
print(f"{n['title'][:60]}")Paso 4: Construir el registro de enriquecimiento
Combine todas las señales en un único registro de enriquecimiento listo para la actualización de CRM.
def enrich_company(company: str) -> dict:
search_data = search_company(company)
signals = extract_signals(company, search_data)
news = get_recent_news(company)
return {
'company': company,
'has_careers_page': signals['has_careers_page'],
'linkedin_found': signals['linkedin_found'],
'recent_news': news[:3],
'top_snippets': signals['snippets'][:3],
'funding_signals': signals['news'],
'enriched': True,
}
record = enrich_company('Stripe')
print(json.dumps(record, indent=2)[:500]) if 'json' in dir() else print(record)Paso 5: Lista de empresas de procesos por lotes
Ejecute el enriquecimiento en todas las empresas y genere un resumen.
import json, time
def batch_enrich(companies: list) -> list:
enriched = []
for company in companies:
record = enrich_company(company)
enriched.append(record)
print(f"Enriched: {company} (careers={record['has_careers_page']}, news={len(record['recent_news'])})")
time.sleep(0.5) # Rate limiting
return enriched
companies = ['Stripe', 'Notion', 'Linear']
results = batch_enrich(companies)
with open('enriched_companies.json', 'w') as f:
json.dump(results, f, indent=2)
print(f'\nEnriched {len(results)} companies')Ejemplo en Python
import requests, os
H = {'x-api-key': os.environ['SCAVIO_API_KEY']}
def enrich(company):
data = requests.post('https://api.scavio.dev/api/v1/search', headers=H,
json={'platform': 'google', 'query': f'{company} company overview'}).json()
results = data.get('organic_results', [])[:5]
return {'company': company, 'snippets': [r.get('snippet', '')[:80] for r in results]}
print(enrich('Stripe'))Ejemplo en JavaScript
const H = {'x-api-key': process.env.SCAVIO_API_KEY, 'Content-Type': 'application/json'};
async function enrich(company) {
const r = await fetch('https://api.scavio.dev/api/v1/search', {
method: 'POST', headers: H,
body: JSON.stringify({platform: 'google', query: `${company} company overview`})
});
const results = (await r.json()).organic_results || [];
return {company, snippets: results.slice(0, 5).map(r => (r.snippet || '').slice(0, 80))};
}
enrich('Stripe').then(console.log);Salida esperada
An n8n-ready company enrichment pipeline that pulls company signals, news, and metadata from live search data and outputs structured records for CRM updates.