CrawlForge
InicioPlaygroundCasos de usoIntegracionesPreciosDocumentaciónBlog
Construye un motor de lead enrichment con CrawlForge
Use Cases
Volver al blog
Casos de uso

Construye un motor de lead enrichment con CrawlForge

C
CrawlForge Team
Equipo de Ingeniería
14 de abril de 2026
10 min de lectura

En esta página

Tu equipo de ventas recibe 200 leads nuevos por semana. Cada lead llega como un nombre, un correo y quizá un nombre de empresa. Antes de que un comercial pueda hacer un contacto con sentido, necesita investigar el tamaño de la empresa, su stack tecnológico, sus noticias recientes y su posible encaje. Esa investigación lleva de 10 a 15 minutos por lead: más de 30 horas a la semana dedicadas a Google y LinkedIn en lugar de a vender.

El lead enrichment automatiza esta investigación. CrawlForge hace scraping de datos públicos de negocio desde sitios web de empresas, perfiles sociales y fuentes de noticias para construir un perfil completo del lead en segundos. Esta guía te muestra cómo construir un motor de lead enrichment que procesa más de 200 leads por hora.

Tabla de contenidos

  • Qué es el lead enrichment
  • Visión general de la arquitectura
  • Paso 1: Análisis del sitio web de la empresa
  • Paso 2: Detección del stack tecnológico
  • Paso 3: Recopilación de inteligencia sobre la empresa
  • Paso 4: Construir el pipeline de enriquecimiento
  • Análisis del coste en credits
  • Resultados y beneficios
  • Preguntas frecuentes

Qué es el lead enrichment

El lead enrichment es el proceso de complementar los datos básicos de un lead (nombre, correo, empresa) con información adicional que ayuda a los equipos de ventas a cualificar y priorizar prospectos. Los datos enriquecidos suelen incluir:

DatoFuenteValor para ventas
Tamaño de la empresaPágina "Quiénes somos"/equipoCualificación
SectorContenido del sitio webSegmentación
Stack tecnológicoAnálisis del código fuenteEncaje de producto
Noticias recientesResultados de búsquedaTemas para iniciar conversación
Estado de financiaciónNotas de prensaSeñales de presupuesto
Temas de contenidoAnálisis del blogMapeo de puntos de dolor

¿Qué es el lead enrichment? Es el proceso automatizado de añadir datos de inteligencia de negocio a los registros de leads en bruto, transformando una simple dirección de correo en un perfil completo de prospecto sobre el que los equipos de ventas pueden actuar de inmediato.

CrawlForge es ideal para equipos de lead enrichment que necesitan datos en tiempo real de los sitios web de las empresas, porque, a diferencia de los proveedores de bases de datos (ZoomInfo, Clearbit) que pueden estar desactualizados por semanas, CrawlForge hace scraping de páginas en vivo para obtener información actual.

Visión general de la arquitectura

El motor de enriquecimiento usa cinco herramientas de CrawlForge:

ComponenteHerramientaCreditsPropósito
Contenido del sitio webextract_content2Descripción y posicionamiento de la empresa
Metadatosextract_metadata1Título, descripción, perfiles sociales
Código fuente de la páginafetch_url1Detectar tecnologías a partir del HTML
Investigación de la empresasearch_web5Noticias recientes, financiación, redes sociales
Análisisanalyze_content3Clasificación de sector y temas

Paso 1: Análisis del sitio web de la empresa

Empieza extrayendo la información principal de la empresa desde su sitio web.

Typescript
import { Client } from '@modelcontextprotocol/sdk/client/index.js';

const client = new Client({
  name: 'lead-enrichment',
  version: '1.0.0',
});

interface CompanyProfile {
  domain: string;
  name: string;
  description: string;
  industry: string;
  topics: string[];
  socialLinks: {
    twitter?: string;
    linkedin?: string;
    github?: string;
  };
  estimatedSize: string;
}

async function analyzeCompanyWebsite(
  domain: string
): Promise<CompanyProfile> {
  // Extract main page content
  const contentResult = await client.callTool({
    name: 'extract_content',
    arguments: { url: `https://${domain}` },
  });

  const content = JSON.parse(contentResult.content[0].text);

  // Get metadata including social links
  const metaResult = await client.callTool({
    name: 'extract_metadata',
    arguments: { url: `https://${domain}` },
  });

  const meta = JSON.parse(metaResult.content[0].text);

  // Analyze content for industry and topics
  const analysis = await client.callTool({
    name: 'analyze_content',
    arguments: { text: content.content },
  });

  const analyzed = JSON.parse(analysis.content[0].text);

  // Try to get team page for company size estimation
  let estimatedSize = 'Unknown';
  try {
    const teamPage = await client.callTool({
      name: 'extract_content',
      arguments: { url: `https://${domain}/about` },
    });
    const teamContent = JSON.parse(teamPage.content[0].text);
    // Simple heuristic: count mentions of team-related terms
    const teamMentions = (teamContent.content.match(/team|employee|people|staff/gi) || []).length;
    if (teamMentions > 20) estimatedSize = '100+';
    else if (teamMentions > 10) estimatedSize = '50-100';
    else if (teamMentions > 5) estimatedSize = '10-50';
    else estimatedSize = '1-10';
  } catch {
    // About page might not exist; that is fine
  }

  return {
    domain,
    name: meta.title?.split(/[|\-]/)[0]?.trim() || domain,
    description: meta.description || analyzed.summary || '',
    industry: analyzed.topics?.[0] || 'Unknown',
    topics: analyzed.topics || [],
    socialLinks: {
      twitter: meta.twitterHandle,
      linkedin: meta.linkedinUrl,
      github: meta.githubUrl,
    },
    estimatedSize,
  };
}

Paso 2: Detección del stack tecnológico

Detecta las tecnologías que usa una empresa analizando el código fuente HTML y las cabeceras de su sitio web.

Typescript
interface TechStack {
  frontend: string[];
  analytics: string[];
  marketing: string[];
  infrastructure: string[];
  cms: string[];
}

async function detectTechStack(domain: string): Promise<TechStack> {
  const result = await client.callTool({
    name: 'fetch_url',
    arguments: {
      url: `https://${domain}`,
      timeout: 10000,
    },
  });

  const page = JSON.parse(result.content[0].text);
  const html = page.body || '';
  const headers = page.headers || {};

  const stack: TechStack = {
    frontend: [],
    analytics: [],
    marketing: [],
    infrastructure: [],
    cms: [],
  };

  // Frontend framework detection
  if (html.includes('__next') || html.includes('_next/static')) {
    stack.frontend.push('Next.js');
  }
  if (html.includes('__nuxt')) stack.frontend.push('Nuxt.js');
  if (html.includes('react')) stack.frontend.push('React');
  if (html.includes('vue')) stack.frontend.push('Vue.js');
  if (html.includes('tailwindcss') || html.includes('tailwind')) {
    stack.frontend.push('Tailwind CSS');
  }

  // Analytics detection
  if (html.includes('gtag') || html.includes('google-analytics')) {
    stack.analytics.push('Google Analytics');
  }
  if (html.includes('segment.com') || html.includes('analytics.js')) {
    stack.analytics.push('Segment');
  }
  if (html.includes('mixpanel')) stack.analytics.push('Mixpanel');
  if (html.includes('hotjar')) stack.analytics.push('Hotjar');

  // Marketing tools
  if (html.includes('hubspot')) stack.marketing.push('HubSpot');
  if (html.includes('intercom')) stack.marketing.push('Intercom');
  if (html.includes('drift')) stack.marketing.push('Drift');
  if (html.includes('mailchimp')) stack.marketing.push('Mailchimp');

  // Infrastructure
  const server = headers['server'] || headers['x-powered-by'] || '';
  if (server.includes('Vercel') || html.includes('vercel')) {
    stack.infrastructure.push('Vercel');
  }
  if (server.includes('cloudflare') || headers['cf-ray']) {
    stack.infrastructure.push('Cloudflare');
  }
  if (html.includes('amazonaws')) stack.infrastructure.push('AWS');

  // CMS
  if (html.includes('wp-content')) stack.cms.push('WordPress');
  if (html.includes('shopify')) stack.cms.push('Shopify');
  if (html.includes('webflow')) stack.cms.push('Webflow');

  return stack;
}

Esta detección se ejecuta con una sola llamada a fetch_url (1 credit), lo que la hace extremadamente rentable para el lead enrichment masivo.

Paso 3: Recopilación de inteligencia sobre la empresa

Usa search_web para encontrar noticias recientes, anuncios de financiación y contexto de mercado.

Typescript
interface CompanyIntel {
  recentNews: Array<{ title: string; url: string; snippet: string }>;
  fundingInfo: string;
  competitorMentions: string[];
}

async function gatherIntelligence(
  companyName: string,
  domain: string
): Promise<CompanyIntel> {
  // Search for recent company news
  const newsResult = await client.callTool({
    name: 'search_web',
    arguments: {
      query: `"${companyName}" OR "${domain}" news funding`,
      limit: 10,
      time_range: 'month',
    },
  });

  const news = JSON.parse(newsResult.content[0].text);

  return {
    recentNews: (news.results || []).slice(0, 5).map(
      (r: { title: string; url: string; snippet: string }) => ({
        title: r.title,
        url: r.url,
        snippet: r.snippet,
      })
    ),
    fundingInfo: news.results?.find(
      (r: { title: string }) =>
        r.title.toLowerCase().includes('funding') ||
        r.title.toLowerCase().includes('raises') ||
        r.title.toLowerCase().includes('series')
    )?.snippet || 'No recent funding news found',
    competitorMentions: news.results
      ?.filter((r: { title: string }) =>
        r.title.toLowerCase().includes('vs') ||
        r.title.toLowerCase().includes('alternative')
      )
      .map((r: { title: string }) => r.title) || [],
  };
}

Paso 4: Construir el pipeline de enriquecimiento

Combina todos los pasos de enriquecimiento en un único pipeline que procesa leads en masa.

Typescript
interface Lead {
  email: string;
  name: string;
  company?: string;
}

interface EnrichedLead extends Lead {
  companyProfile: CompanyProfile;
  techStack: TechStack;
  intelligence: CompanyIntel;
  enrichedAt: string;
  qualityScore: number;
}

function extractDomain(email: string): string {
  return email.split('@')[1];
}

function calculateLeadScore(enriched: Omit<EnrichedLead, 'qualityScore'>): number {
  let score = 0;

  // Company has a real website with content
  if (enriched.companyProfile.description.length > 50) score += 20;

  // Company uses modern tech stack (potential product fit)
  if (enriched.techStack.frontend.length > 0) score += 15;

  // Company uses analytics/marketing tools (signals budget)
  if (enriched.techStack.analytics.length > 0) score += 10;
  if (enriched.techStack.marketing.length > 0) score += 15;

  // Recent news/activity
  if (enriched.intelligence.recentNews.length > 0) score += 10;

  // Funding signals
  if (!enriched.intelligence.fundingInfo.includes('No recent')) score += 20;

  // Company size signals
  const size = enriched.companyProfile.estimatedSize;
  if (size === '50-100' || size === '100+') score += 10;

  return Math.min(score, 100);
}

async function enrichLeads(leads: Lead[]): Promise<EnrichedLead[]> {
  const enriched: EnrichedLead[] = [];

  for (const lead of leads) {
    const domain = lead.company
      ? lead.company.toLowerCase().replace(/\s+/g, '') + '.com'
      : extractDomain(lead.email);

    // Skip free email providers
    if (['gmail.com', 'yahoo.com', 'hotmail.com', 'outlook.com'].includes(domain)) {
      continue;
    }

    try {
      console.log(`Enriching ${lead.email} (${domain})...`);

      const companyProfile = await analyzeCompanyWebsite(domain);
      const techStack = await detectTechStack(domain);
      const intelligence = await gatherIntelligence(
        companyProfile.name,
        domain
      );

      const partial = {
        ...lead,
        companyProfile,
        techStack,
        intelligence,
        enrichedAt: new Date().toISOString(),
      };

      enriched.push({
        ...partial,
        qualityScore: calculateLeadScore(partial),
      });
    } catch (error) {
      console.error(`Failed to enrich ${lead.email}:`, error);
    }
  }

  // Sort by quality score (highest first)
  return enriched.sort((a, b) => b.qualityScore - a.qualityScore);
}

Análisis del coste en credits

Coste de enriquecimiento por lead:

OperaciónHerramientaCredits
Contenido del sitio webextract_content2
Página "Quiénes somos"extract_content2
Metadatosextract_metadata1
Detección de tecnologíasfetch_url1
Análisis de contenidoanalyze_content3
Búsqueda de noticiassearch_web5
Por lead14 credits

Coste mensual a escala:

VolumenCredits/mesPlan recomendado
50 leads/mes700Plan gratuito (1.000 credits)
200 leads/mes2.800Hobby ($19/mo, 5.000 credits)
1.000 leads/mes14.000Professional ($99/mo, 50.000 credits)
5.000+ leads/mes70.000Business ($399/mo, credits personalizados)

Resultados y beneficios

Un motor de lead enrichment con CrawlForge ofrece:

  • Velocidad: Enriquece un lead en 15-30 segundos en lugar de 10-15 minutos
  • Consistencia: Cada lead recibe la misma profundidad de investigación
  • Priorización: Las puntuaciones de calidad permiten a los comerciales centrarse primero en los leads de mayor valor
  • Eficiencia de costes: $0.07-0.13 por lead frente a $0.50-2.00 de los proveedores de bases de datos

En comparación con proveedores de bases de datos de enriquecimiento como Clearbit ($99/mo por 1.000 búsquedas) o ZoomInfo ($15.000+/año), CrawlForge ofrece datos actuales a una fracción del coste. La contrapartida es que CrawlForge hace scraping de datos en vivo (siempre actuales), mientras que las bases de datos proporcionan campos preestructurados (menos procesamiento necesario).

Preguntas frecuentes

¿Qué precisión tiene la detección del stack tecnológico a partir del HTML?

La detección basada en HTML capta las herramientas más populares con alta precisión (90 %+) para tecnologías del lado del cliente. Las tecnologías del lado del servidor son más difíciles de detectar. Para una detección completa, combina CrawlForge con datos de BuiltWith o Wappalyzer.

¿Puedo enriquecer leads de dominios de correo personales?

Los leads de gmail.com u outlook.com no tienen dominios de empresa que analizar. Para estos, usa search_web para encontrar sus perfiles profesionales a partir del nombre. Esto cuesta 5 credits por búsqueda en lugar del pipeline completo de 14 credits.

¿Cómo manejo el límite de velocidad al enriquecer en masa?

La herramienta batch_scrape de CrawlForge maneja el límite de velocidad automáticamente. Para llamadas individuales, añade un retraso de 500 ms entre solicitudes al mismo dominio. Procesa diferentes dominios en paralelo para obtener el máximo rendimiento.


Enriquece tus primeros 50 leads gratis. Empieza con 1.000 credits, suficientes para enriquecer por completo más de 70 leads sin necesidad de tarjeta de crédito.

Recursos relacionados:

  • Documentación de CrawlForge
  • Inteligencia competitiva con agentes de IA
  • Extracción de datos de e-commerce
  • Planes de precios

Pruébalo tú mismo — sin necesidad de registrarte

Ejecuta cualquiera de las 27 herramientas de scraping y extracción de CrawlForge en el playground y luego empieza gratis con 1,000 credits.

1,000 credits gratis • Se recargan cada mes • No se requiere tarjeta de crédito

Etiquetas

lead-enrichmentsalesweb-scrapingautomationcrmb2bmcp

Sobre el autor

C

CrawlForge Team

Equipo de Ingeniería

Construimos el MCP server de web scraping más completo. Creamos herramientas que ayudan a los desarrolladores a extraer, analizar y transformar datos web para aplicaciones de IA.

Mantente al día con los últimos artículos

Recibe tutoriales, novedades del producto y consejos de web scraping en tu bandeja de entrada.

Sin spam. Cancela tu suscripción cuando quieras.

Ponlo en práctica

Prueba las herramientas de CrawlForge en cualquier URL — gratis, sin registro.

En esta página

Artículos relacionados

Crea un agente de investigación con CrawlForge Deep Research
Use Cases

Crea un agente de investigación con CrawlForge Deep Research

Crea un agente de investigación con IA que recopila, verifica y sintetiza información de decenas de fuentes en minutos usando deep_research de CrawlForge.

C
CrawlForge Team
|
16 abr
|
10m
Automatización de migración de contenido con CrawlForge
Use Cases

Automatización de migración de contenido con CrawlForge

Migra el contenido de un sitio web entre plataformas de CMS automáticamente. Extrae páginas, preserva la estructura y reconstruye el contenido en tu nuevo sistema sin reescribir nada.

C
CrawlForge Team
|
12 abr
|
9m
Inteligencia competitiva en tiempo real con agentes de IA
Use Cases

Inteligencia competitiva en tiempo real con agentes de IA

Crea un sistema de inteligencia competitiva impulsado por IA usando CrawlForge y Claude. Monitoriza a la competencia, rastrea cambios y genera insights estratégicos cada semana.

C
CrawlForge Team
|
8 abr
|
9m

Pie de página

CrawlForge

Web scraping empresarial para agentes de IA. 27 herramientas MCP especializadas diseñadas para desarrolladores modernos que crean sistemas inteligentes.

Producto

  • Funciones
  • Playground
  • Precios
  • Casos de uso
  • Integraciones
  • Alternativas
  • Registro de cambios

Recursos

  • Primeros pasos
  • Referencia de la API
  • Plantillas
  • Guías
  • Blog
  • Glosario
  • Preguntas frecuentes
  • Mapa del sitio

Desarrolladores

  • Protocolo MCP
  • Claude Desktop
  • Cursor IDE
  • LangChain
  • LlamaIndex

Empresa

  • Acerca de
  • Contacto
  • Privacidad
  • Términos
  • Uso aceptable
  • Cookies

Mantente al día

Recibe las últimas novedades sobre nuevas herramientas y funciones.

Creado con Next.js y el protocolo MCP

© 2025-2026 CrawlForge. Todos los derechos reservados.