Auditar datos de contacto
Antes de un cambio de marca, una revisión de cumplimiento o una sincronización de directorio, siempre alguien tiene que responder la misma pregunta: qué datos de contacto están publicados hoy en esta página exactamente. Este endpoint analiza una URL y devuelve los correos, teléfonos y enlaces a perfiles sociales que encuentra en el contenido renderizado, para que esa respuesta tome segundos y no una lectura manual.
Ejecútela online
Ejecute esto en nuestros servidores con su cuenta. Las herramientas gratuitas corren en su navegador; esta cobra de su saldo del KIT según el precio de arriba.
El problema: las páginas cambian, los registros quedan atrás
Una página de contacto pasa por tres personas distintas en dos años, un teléfono cambia cuando se muda la oficina, el correo de un exempleado sigue visible en un pie de página que nadie vuelve a leer. Los equipos responsables de la exactitud, ya sea un revisor legal o de cumplimiento, un webmaster haciendo una auditoría antes de un lanzamiento, o un líder de operaciones consolidando un directorio, necesitan una forma confiable de ver qué hay realmente publicado hoy, en lugar de confiar en lo que dice una hoja de cálculo del año pasado.
Qué devuelve el endpoint
Envía una URL y recibe un task_id; cuando el procesamiento termina, un webhook o un enlace firmado (válido 24 horas) entrega la lista estructurada de señales de contacto encontradas en la página: direcciones de correo, números de teléfono en el formato en que aparecen, y enlaces a perfiles sociales referenciados en el marcado. Los resultados reflejan exactamente lo que está publicado, sin suposiciones ni enriquecimiento de fuentes externas.
Pensado para auditar páginas de las que es responsable
Esto es una herramienta de extracción de contenido de página, no un servicio de búsqueda de personas: lee lo que ya está mostrado públicamente en la URL que proporciona, la misma información que cualquier visitante de esa página ya puede ver. Está construido para auditar su propio sitio, el sitio de un cliente bajo contrato, o la página pública de un socio que necesita verificar, no para armar listas de contacto no solicitadas a partir de sitios de terceros.
Cómo encaja en un flujo recurrente
Como la llamada es asíncrona y se cobra por solicitud, encaja de forma natural en una tarea programada: ejecútela mensualmente sobre cada página de sede o de equipo de un sitio, compare la salida contra la del mes anterior y marque cualquier cambio. Eso convierte la exactitud de los datos de contacto de un ejercicio anual apresurado en una verificación silenciosa y automática que corre en segundo plano.
Qué puede hacer con ella
Auditorías previas al lanzamiento de un sitio
Confirme que cada página de sede en un sitio nuevo muestra el teléfono y correo correctos antes de publicar el rediseño.
Revisiones de cumplimiento y privacidad
Verifique si el correo personal de un exempleado sigue expuesto en una página pública del equipo después de que dejó la empresa.
Verificación de consistencia de directorios
Compare los datos de contacto publicados en la página de una franquicia o sucursal contra el directorio interno para detectar diferencias.
Monitoreo de cambios tras una migración
Vuelva a analizar las páginas después de migrar de gestor de contenido para confirmar que los bloques de contacto sobrevivieron intactos.
Preguntas frecuentes
¿Cómo extraigo los datos de contacto de una página web con esta API?
Envíe una solicitud POST a /web/contacts con la URL de destino; recibe un task_id de inmediato y los datos de contacto extraídos llegan por webhook o por un enlace firmado cuando la tarea termina.
¿Es gratuita la API de extracción de contactos?
No hay capa gratuita: las capas gratis se abusan y ralentizan a todos. El acceso funciona con un saldo prepago de ForHosting KIT: se recarga desde $10.00 (no caduca) y cada solicitud se cobra a su precio publicado, así que una llamada sin saldo devuelve HTTP 402. Sin suscripción, sin tokens ni créditos inventados, y una tarea fallida no se cobra.
¿Qué tipo de datos de contacto devuelve?
Devuelve direcciones de correo, números de teléfono y enlaces a perfiles sociales que están explícitamente presentes en el contenido renderizado de la página.
¿Se puede usar para extraer correos de sitios web de otras personas?
Solo lee lo que ya está publicado públicamente en la URL que envía; está diseñado para auditar páginas propias o bajo su responsabilidad, no para armar listas de contacto a partir de sitios de terceros.
¿Funciona en páginas que cargan los datos de contacto con JavaScript?
La página se renderiza antes de la extracción, así que los datos de contacto inyectados dinámicamente por scripts del lado del cliente se capturan junto con el marcado estático.
¿Cuánto cuesta usarlo en volumen?
Cada solicitud se cobra a una tarifa fija de $0.002, así que el costo de ejecutarlo sobre muchas páginas escala de forma lineal con la cantidad revisada.
¿Cómo recibo los resultados?
Puede elegir un webhook firmado para entrega automática, o consultar el resultado en un enlace firmado que permanece válido durante 24 horas.
¿Se conservan los datos extraídos después?
No, los datos se eliminan al terminar la ventana de retención y nunca se usan para entrenar ningún modelo.
Para desarrolladores — acceso por API
Todo lo de esta página está disponible por programación. Esta sección es para equipos que quieren integrarlo en sus sistemas; el resto puede usar la herramienta de arriba sin más.
Endpoint de API
¿Prefiere automatizarlo? Un POST autenticado crea la tarea; el resultado llega por webhook o enlace firmado. La misma capacidad también se ejecuta aquí en la web, y pronto desde nuestra app, el email y Telegram.
Llámela desde su stack
curl -X POST https://api.kit.forhosting.com/web/contacts \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"url":"https://ejemplo.com"}'const res = await fetch("https://api.kit.forhosting.com/web/contacts", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"url": "https://ejemplo.com"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/web/contacts",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"url": "https://ejemplo.com"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/web/contacts", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"url":"https://ejemplo.com"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"url":"https://ejemplo.com"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/web/contacts", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Ejemplo de solicitud
{
"url": "https://ejemplo.com"
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "web.contacts",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}La API es asíncrona: la llamada devuelve un task_id al instante y el resultado llega por webhook. El polling está limitado a 1 req/s por tarea.
Precio
Precio publicado — sin tokens ni créditos inventados. Una tarea fallida no se cobra.
Límites
timeout_sec | 30 |
max_crawl_pages | 25 |
Errores
| HTTP | Código | Significado |
|---|---|---|
401 | unauthorized | API key ausente o inválida. |
402 | insufficient_balance | El saldo no cubre el precio de la tarea. |
404 | unknown_type | El tipo de tarea no existe. |
429 | rate_limited | Demasiadas peticiones. Use el webhook en vez de sondear. |