Indexar un sitio web
Un sitio web es contenido disperso en cientos de URL, y ningún visitante va a recorrerlas todas para encontrar una sola respuesta. Este endpoint rastrea un sitio a partir de una dirección dada y convierte sus páginas en un índice que puede consultar por significado en lugar de por mapa del sitio. Déle una URL de partida y deje que camine por usted.
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.
La distancia entre un mapa del sitio y una respuesta
Un sitio puede tener excelente contenido y aun así ser difícil de usar si la única forma de encontrar algo es un menú de categorías rígido o un buscador que solo coincide con palabras literales. Alguien que busca 'cómo cambio mi ciclo de facturación' debería encontrar esa página aunque se titule 'gestión de suscripción', y ese desajuste no lo resuelve un mapa del sitio por sí solo. search.index_url rastrea las páginas reales e indexa lo que dicen, no solo dónde viven dentro de una estructura de carpetas.
Qué hace realmente el rastreo
Haga POST a /search/index-url con una dirección de partida, reciba un task_id y obtenga confirmación por webhook o mediante un enlace firmado de 24 horas cuando el rastreador haya seguido los enlaces desde esa página, extraído el contenido legible de cada una, dividido en fragmentos, vectorizado y agregado a su índice consultable. Usted no lista página por página: el rastreo las descubre igual que lo haría un visitante siguiendo enlaces.
Rastrear es un problema viejo con apuestas nuevas
El rastreo automatizado de la web es tan antiguo como los propios motores de búsqueda, desde los primeros rastreadores de los años noventa que existían solo para descubrir qué páginas existían. Lo que ha cambiado no es la mecánica básica de seguir enlaces, sino lo que ocurre después de obtener la página: en vez de indexar solo palabras clave, el contenido ahora se convierte en vectores para compararse por significado y no por coincidencia exacta de frases.
Lo que queda fuera de alcance
Esto indexa contenido de página legible, no contenido protegido por inicio de sesión, generado puramente por interacción del lado del cliente tras entradas complejas del usuario, ni bloqueado por las propias reglas de rastreo del sitio. Está pensado para contenido público o accesible —documentación, páginas de marketing, bases de conocimiento, blogs— no como una forma de sortear controles de acceso que un sitio puso deliberadamente.
Dónde encaja en un flujo de trabajo real
Empresas indexan su propio sitio de documentación para que un asistente de soporte responda desde el contenido publicado y vigente, en lugar de una copia desactualizada que alguien mantiene por separado. Equipos de marketing indexan el blog público de un competidor para buscar entre meses de publicaciones cómo se ha tratado un tema con el tiempo. Con precio por solicitud más por página, indexar un sitio de marketing de diez páginas y uno de documentación de doscientas cuestan exactamente lo que el rastreo efectivamente cubre.
Qué puede hacer con ella
Asistente de soporte basado en documentación
Una empresa indexa su propio sitio de documentación para que un asistente de chat responda desde las páginas publicadas y vigentes, no desde una copia mantenida a mano que se desactualiza.
Investigación de contenido de la competencia
Un equipo de marketing indexa el blog público de un competidor para buscar en su historial cómo se ha tratado un tema o una función a lo largo del tiempo.
Mejora del buscador de un portal interno
Una empresa indexa las páginas públicas de su intranet para reemplazar un buscador por palabras clave que solo coincide con títulos exactos de página.
Auditoría de contenido del propio sitio
Un equipo editorial indexa su propio sitio para buscar páginas que traten un tema y que podrían necesitar consolidarse o actualizarse tras un cambio de marca.
Preguntas frecuentes
¿Cómo indexo un sitio web para búsqueda con la API?
Envíe una URL de partida a POST /search/index-url, guarde el task_id devuelto y reciba la confirmación de que el sitio quedó indexado por webhook o mediante un enlace firmado válido por 24 horas.
¿Es gratis la API para indexar sitios web?
No, no hay plan gratuito ni prueba; cuesta $0.040 por solicitud más $0.0025 por página, y una tarea fallida nunca se cobra.
¿Cuántas páginas rastreará a partir de una URL de inicio?
Sigue enlaces hacia afuera desde la página de partida hasta los límites de rastreo vigentes; revise la referencia del endpoint para conocer los topes exactos de páginas y profundidad.
¿Puede indexar páginas que requieren inicio de sesión?
No, indexa páginas de acceso público; el contenido que requiere autenticación o que está bloqueado por las reglas de rastreo del propio sitio queda fuera de alcance.
¿En qué se diferencia esto de search.index_text o search.index_document?
search.index_text y search.index_document parten de contenido que usted ya tiene; search.index_url descubre y obtiene el contenido por su cuenta, rastreando desde una URL.
¿Vuelve a indexar un sitio si el contenido cambia?
Cada llamada es un rastreo nuevo en ese momento; para mantener un índice al día, envíe un nuevo rastreo con la frecuencia que corresponda a cuánto cambia el sitio.
¿Puedo indexar varios sitios web en un solo trabajo?
Envíe una URL de partida por cada tarea de rastreo, y ejecute varias tareas asíncronas en paralelo para varios sitios, recogiendo cada resultado por webhook a medida que se completa.
¿El contenido rastreado se guarda de forma permanente?
No, el contenido rastreado y los resultados se eliminan después del período de retención y nunca se usan para entrenamiento.
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/search/index-url \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"input":"…"}'const res = await fetch("https://api.kit.forhosting.com/search/index-url", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"input": "…"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/search/index-url",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"input": "…"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/search/index-url", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"input":"…"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"input":"…"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/search/index-url", 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
{
"input": "…"
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "search.index_url",
"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
max_chunks | 10000 |
max_tokens | 20000 |
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. |
413 | input_too_large | El archivo supera el límite de tamaño. |
422 | task_failed | La tarea falló tras 3 reintentos. No se cobra. |