extract_links
Descubra y extraiga todos los enlaces de una página web. Ideal para la generación de mapas de sitio, el análisis de enlaces y los flujos de trabajo de rastreo.
Casos de uso
Generación de mapas de sitio
Cree mapas de sitio completos extrayendo todos los enlaces internos
Descubrimiento de enlaces para rastreo
Encuentre todas las URLs que visitar en un flujo de trabajo de rastreo web
Análisis de enlaces internos
Analice la estructura de enlaces internos para optimizar el SEO
Detección de enlaces rotos
Encuentre y valide todos los enlaces de una página
Endpoint
/api/v1/tools/extract_linksParameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
url | string | Optional | - | Página que se descargará para extraer los enlaces. Se requiere `url` o `html`. Example: https://example.com |
html | string | Optional | - | HTML sin procesar que se analizará en lugar de descargar. Combínelo con `base_url` para que los href relativos se resuelvan. Example: <a href='/about'>About</a> |
base_url | string | Optional | - | Base para resolver enlaces relativos. Por defecto es `url` al descargar; indíquela al pasar `html`. Example: https://example.com |
include_internal | boolean | Optional | true | Incluye los enlaces que apuntan al mismo host. Example: true |
include_external | boolean | Optional | true | Incluye los enlaces que apuntan a otros hosts. Póngalo en false para conservar solo los internos. Example: true |
filter_domains | array | Optional | - | Conserva solo los enlaces cuyo host coincida con uno de estos dominios. Example: ["docs.example.com"] |
include_anchors | boolean | Optional | false | Incluye los enlaces que son solo un fragmento, como `#section`. Example: false |
deduplicate | boolean | Optional | true | Colapsa las URL repetidas en una sola entrada. Example: true |
include_metadata | boolean | Optional | true | Incluye el texto del ancla y los atributos de cada enlace junto a la URL. Example: true |
respect_robots | boolean | Optional | true | Respeta el robots.txt del sitio de destino. Con el valor `true`, una ruta que robots.txt no permita a `CrawlForge` se rechaza con un 403 antes de descargar nada y no se cobran credits. Póngalo en `false` solo para destinos con los que tenga su propio acuerdo: la respuesta incluye entonces una entrada `warnings` y la anulación queda registrada en su API key. Example: true |
Ejemplos de solicitud
cURL - Extraer todos los enlaces
curl -X POST https://crawlforge.dev/api/v1/tools/extract_links \
-H "X-API-Key: cf_test_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{
"url": "https://example.com",
"include_internal": true,
"include_external": false,
"deduplicate": true
}'TypeScript - Solo enlaces internos
const response = await fetch('https://crawlforge.dev/api/v1/tools/extract_links', {
method: 'POST',
headers: {
'X-API-Key': process.env.CRAWLFORGE_API_KEY!,
'Content-Type': 'application/json',
},
body: JSON.stringify({
url: 'https://example.com',
// Internal-only: keep include_internal, switch include_external off.
include_internal: true,
include_external: false,
deduplicate: true,
}),
});
const payload = await response.json();
if (!response.ok) {
throw new Error(payload.error.code + ': ' + payload.error.message);
}
const result = payload.data;
console.log('Base URL:', result.base_url);
console.log('Extracted from:', result.extracted_from);
for (const link of result.links) console.log(link);
// Narrow to specific hosts instead of a blanket internal/external split.
const docsOnly = await fetch('https://crawlforge.dev/api/v1/tools/extract_links', {
method: 'POST',
headers: {
'X-API-Key': process.env.CRAWLFORGE_API_KEY!,
'Content-Type': 'application/json',
},
body: JSON.stringify({
url: 'https://example.com',
filter_domains: ['docs.example.com'],
}),
});Ejemplo de respuesta
{ "success": true, "data": { "url": "https://example.com", "links": [ { "text": "Home", "url": "https://example.com/", "internal": true }, { "text": "About", "url": "https://example.com/about", "internal": true }, { "text": "Products", "url": "https://example.com/products", "internal": true }, { "text": "External Resource", "url": "https://other-site.com", "internal": false } ], "total_links": 4, "internal_links": 3, "external_links": 1 }, "credits_used": 1, "credits_remaining": 999, "processing_time": 210}data.linksArray de todos los enlaces descubiertos con texto y URLdata.total_linksNúmero total de enlaces encontradosdata.internal_linksNúmero de enlaces al mismo dominiodata.external_linksNúmero de enlaces a dominios externosManejo de errores
Bloqueado por robots.txt (403 Forbidden)
El robots.txt del sitio de destino no permite esta ruta a CrawlForge. Establezca respect_robots: false para anularlo si tiene su propio acuerdo con el destino: la anulación queda registrada en su API key. La anulación no alcanza a un host incluido en la lista de exclusión permanente de CrawlForge, que se rechaza sea cual sea el valor de respect_robots.