Saltar al contenido
Herramienta avanzada2 credits

extract_content

Descargue una página, descarte la envoltura y obtenga lo que realmente contiene. Se eliminan la navegación, las cabeceras, los pies, las barras laterales, los scripts, los estilos y los contenedores de anuncios; después se localiza el cuerpo del artículo y se devuelve como texto limpio o como HTML, junto con el título, la autoría y la fecha de publicación que declara la página.

Casos de uso

Ingesta para RAG

Convierta un artículo en texto limpio antes de dividirlo en fragmentos y generar embeddings, sin que el menú de navegación contamine cada fragmento.

Vistas de lectura

Muestre una versión sin distracciones de una página, conservando la estructura HTML poniendo clean_html en false.

Extracción de la autoría

Recopile el autor y la fecha de publicación de las propias metaetiquetas de la página para atribución o comprobaciones de actualidad.

Recolección de imágenes

Obtenga cada imagen del artículo como URL absoluta, ya resuelta respecto a la dirección de la propia página.

Grafos de citas

Active include_links para capturar los enlaces salientes dentro del cuerpo del artículo, no los de la navegación del sitio.

Migración de contenido

Extraiga el HTML del artículo de un sitio antiguo y cárguelo en otro lugar, sin arrastrar la plantilla antigua.

Endpoint

POST/api/v1/tools/extract_content
Auth Required
1 req/s en el plan Free
2 credits

Parameters

NameTypeRequiredDefaultDescription
url
stringRequired-
La página de la que se extraerá. Debe ser una URL http o https absoluta y válida.
Example: https://example.com/blog/crawl-budgets
include_images
booleanOptionaltrue
Devuelve cada `<img>` dentro de la región extraída como URL absoluta, además de `image_count`. Se omiten las fuentes que no se pueden resolver respecto a la URL de la página. Si lo pone en false, ambas claves desaparecen.
Example: true
include_links
booleanOptionalfalse
Devuelve cada `<a href>` dentro de la región extraída como `{ href, text }` con hrefs absolutos, además de `link_count`. Desactivado por defecto: al activarlo aparecen ambas claves.
Example: true
clean_html
booleanOptionaltrue
True devuelve texto plano, una línea por elemento de bloque (encabezado, párrafo, elemento de lista, fila de tabla) con los espacios colapsados dentro de cada línea, y pone `content_type` en `text`. False devuelve el HTML interno de la región y pone `content_type` en `html`, igualmente sin los elementos repetitivos.
Example: true
extract_main_content
booleanOptionaltrue
Acota al cuerpo del artículo probando `<article>`, luego `<main>`, luego `.content`, luego `#content`, y recurriendo a `<body>` cuando ninguno coincide. Póngalo en false para conservar todo el body.
Example: true
timeout
numberOptional10000
Tiempo de espera de la descarga en milisegundos, entre 1000 y 30000.
Example: 10000
respect_robots
booleanOptionaltrue
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
max_inline_chars
numberOptional40000
Tamaño máximo del resultado que se devuelve en línea, en caracteres de su JSON (de 1.000 a 10.000.000). Por encima, la respuesta incluye `preview` (los primeros `max_inline_chars` caracteres del campo de texto principal del resultado), `result_handle`, `total_chars`, `truncated: true` y `expires_at`, y [read_result](/docs/api-reference/tools/read-result) lee el resto por 1 credit por llamada. Los resultados almacenados se conservan 1 hora.
Example: 40000
redact_pii
boolean | objectOptionalfalse
Elimine los datos personales del texto que devuelve esta llamada, antes de que el resultado se almacene o se envíe de vuelta. `true` es la forma abreviada de `{ mode: "fast" }`: las cuatro clases de expresiones regulares, etiquetadas. Siempre que pida redacción, la respuesta lleva `redaction: { entities, count, mode }` dentro de `data`, incluso cuando no hubo coincidencias (`count: 0`), de modo que «no se encontró nada» nunca se confunde con «se ignoró el parámetro»; una clase sin coincidencias se omite en lugar de informarse como `0`. La redacción se ejecuta **antes** de almacenar el resultado, así que un resultado grande que se lea después con [read_result](/docs/api-reference/tools/read-result) ya viene redactado. Dos límites deliberados: las direcciones (`url`, `link`, `href`, `canonical_url`) nunca se redactan, y los contadores derivados del texto (`content_length`, `word_count`, `character_count`) lo describen tal como se extrajo, antes de la redacción.
Example: true

Ejemplos de solicitud

terminalBash
curl -X POST https://crawlforge.dev/api/v1/tools/extract_content \
  -H "X-API-Key: cf_test_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://example.com/blog/crawl-budgets",
    "include_links": true
  }'

Ejemplo de respuesta

200 OK680ms
{
"success": true,
"data": {
"url": "https://example.com/blog/crawl-budgets",
"content": "Why crawl budgets matter\nSearch engines allocate a finite number of requests to each site. See the sitemap guide for the mechanics.",
"content_length": 131,
"content_type": "text",
"title": "Why crawl budgets matter — Acme Blog",
"author": "Dana Reyes",
"publish_date": "2026-08-14T09:30:00Z",
"images": [
"https://example.com/img/crawl-budget.png"
],
"image_count": 1,
"links": [
{
"href": "https://example.com/docs/sitemaps",
"text": "sitemap guide"
}
],
"link_count": 1
},
"credits_used": 2,
"credits_remaining": 998,
"processing_time": 680
}
Field Descriptions
data.contentLa región extraída. Texto plano, una línea por elemento de bloque, o HTML interno cuando `clean_html` es false
data.content_lengthNúmero de caracteres de `content`: un valor bajo suele indicar que la página se renderiza en el cliente
data.content_type`text` o `html`, reflejando `clean_html`
data.titleEl elemento `<title>` de toda la página, no un encabezado dentro del artículo
data.authorDe la etiqueta `meta[name=author]` de la página. `null` cuando la página no declara ninguna
data.publish_dateDe `meta[property=article:published_time]`, devuelto tal cual. `null` cuando no existe
data.imagesURL absolutas, resueltas respecto a la dirección de la página. Aparece cuando `include_images` es true
data.linksSolo los enlaces dentro de la región extraída. Aparece cuando `include_links` es true
credits_used2 credits fijos por página

Manejo de errores

URL no válida (400 Bad Request)

VALIDATION_ERROR. url es obligatorio y debe analizarse como una URL absoluta. El mismo estado cubre un timeout fuera de 1000-30000.

Página demasiado grande (413 Payload Too Large)

RESPONSE_TOO_LARGE. La página superó el límite de lectura de 25MB y se rechazó en lugar de almacenarse en memoria.

El destino agotó el tiempo de espera (504 Gateway Timeout)

FETCH_TIMEOUT. La página dejó de responder mientras enviaba su cuerpo. Aumente timeout, hasta 30000 ms.

Fallo en la descarga (502 Bad Gateway)

FETCH_FAILED. No se pudo leer el cuerpo de la respuesta: conexión reiniciada, o un cuerpo que no es texto decodificable.

La extracción falló (500 Internal Server Error)

TOOL_ERROR. Una llamada fallida no se cobra; los credits solo se descuentan después de que la extracción tiene éxito.

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.

Costo en credits

2 credits
2 credits por página
Tarifa plana con independencia del tamaño de la página o de las opciones que active. Las llamadas fallidas no se cobran.

Qué incluye:

Eliminación de elementos repetitivos (nav, header, footer, aside, anuncios, scripts, estilos)

Detección del contenido principal con <body> como alternativa

Texto limpio o HTML del artículo

Título, autor y fecha de publicación de las metaetiquetas de la página

URL absolutas de imágenes y enlaces del interior del artículo

Recomendaciones por plan:

Plan Free: 1,000 credits de prueba por única vez = 500 páginas

Plan Hobby: 5,000 credits = 2,500 páginas ($19/mo)

Plan Professional: 100,000 credits = 50,000 páginas ($99/mo)

Herramientas relacionadas