Respuesta rápida
¿Cómo convierto una URL a Markdown con una API?
Envía la URL a GET https://webreaderapi.com/api/v1/read con tu clave API en el header Authorization. WebReaderAPI obtiene la página, conserva el contenido principal y lo devuelve en Markdown con su título, autor, fecha y recuento de palabras. Una página cuesta un crédito (dos si necesita un navegador), desde 0,07 US$/1K páginas a fecha de octubre de 2026. Sin KYC; paga con criptomonedas.
La API en una tabla
| URL base | https://webreaderapi.com/api/v1 |
|---|---|
| Leer una página | GET o POST https://webreaderapi.com/api/v1/read |
| Varias URLs o un sitio | POST https://webreaderapi.com/api/v1/batch y POST https://webreaderapi.com/api/v1/crawl, resultados desde GET https://webreaderapi.com/api/v1/jobs/{job_id} |
| Créditos restantes | GET https://webreaderapi.com/api/v1/credits (gratis) |
| Autenticación | Envía tu clave API en la cabecera Authorization como token Bearer, o en el parámetro de consulta api_key |
| Facturación | 1 crédito = 1 página leída sin navegador; 2 créditos cuando la página necesita un navegador para renderizar JavaScript. Una solicitud que falla, o que el robots.txt de un sitio rechaza, no se cobra |
| Nuestro rastreador | WebReaderAPI/1.0 (+https://webreaderapi.com/bot/), token de robots.txt WebReaderAPI |
| Pack más pequeño | 10.000 páginas por 3,75 US$; los créditos no caducan |
¿Cómo consigo una clave API?
Tres pasos, sin formulario que rellenar. El más lento es la confirmación en la blockchain de tu recarga.
Recarga con criptomonedas
Envía al menos 25 US$ en BTC, USDT, USDC, ETH, SOL, LTC. Inicio de sesión con número de cuenta; el email es opcional.
Comprar un pack de créditos
10.000 páginas por 3,75 US$ es suficiente para probar cada opción con tus propias URLs.
Copia tu clave
Tu clave API está lista en el panel en cuanto se confirma tu recarga con criptomonedas y has comprado un pack. Guárdala en una variable de entorno llamada
WEBREADER_API_KEY.
¿Cómo es la primera petición?
Es un GET HTTPS normal con la dirección de la página en el parámetro url. Codifica la dirección, porque contiene sus propios caracteres : y /; curl lo hace por ti con --data-urlencode. La configuración predeterminada ya sirve para la mayoría de artículos y páginas de documentación: salida en Markdown, solo el contenido principal y un navegador solo cuando la página lo necesita.
curl -sG "https://webreaderapi.com/api/v1/read" \
-H "Authorization: Bearer $WEBREADER_API_KEY" \
--data-urlencode "url=https://example.com/blog/first-post"import os
import requests
resp = requests.get(
"https://webreaderapi.com/api/v1/read",
headers={"Authorization": "Bearer " + os.environ["WEBREADER_API_KEY"]},
params={"url": "https://example.com/blog/first-post"},
timeout=70,
)
resp.raise_for_status()
page = resp.json()
print(page["title"], "-", page["word_count"], "words,", page["credits_used"], "credit(s)")
with open("first-post.md", "w", encoding="utf-8") as f:
f.write(page["markdown"])
const params = new URLSearchParams({ url: 'https://example.com/blog/first-post' });
const res = await fetch(`https://webreaderapi.com/api/v1/read?${params}`, {
headers: { Authorization: `Bearer ${process.env.WEBREADER_API_KEY}` },
});
const page = await res.json();
if (!res.ok) throw new Error(`${page.error.code}: ${page.error.message}`);
console.log(page.title, page.word_count, 'words');
console.log(page.markdown.slice(0, 500));
¿Qué devuelve?
Un objeto JSON con el Markdown en el campo markdown y los metadatos de la página al lado: title, description, author, published_at, language, site_name y word_count. Dos campos te ayudan a comprobar qué ha pasado: final_url es la dirección después de las redirecciones, y rendered te indica si se necesitó un navegador.
credits_used muestra cuánto costó la llamada: 1 para una página normal, 2 cuando rendered es true, uno más si elegiste un country. La página del formato de respuesta enumera cada campo con un ejemplo.
¿Qué opciones usaré más?
Cinco parámetros cubren la mayoría de las necesidades. Todos son opcionales.
| Parámetro | Úsalo para |
|---|---|
format | Obtener text o html limpio en lugar de markdown |
main_content | Establecer false para convertir la página entera, incluidos los menús |
render | Forzar (true) o prohibir (false) el navegador; auto decide |
include_links | Obtener los enlaces de la página como una lista aparte |
max_chars | Recortar páginas largas para que quepan en el presupuesto de contexto de un modelo |
La referencia de lectura describe cada parámetro, incluidos country, include_images y timeout.
¿Cómo compruebo mis créditos restantes?
Llama a GET https://webreaderapi.com/api/v1/credits con la misma clave. Devuelve credits_remaining, credits_used_today y tu concurrency_limit, y no cuesta nada. Ejecútalo al principio de un trabajo largo para que el trabajo se detenga limpiamente en lugar de fallar a mitad por 402 insufficient_credits.
Los créditos prepago nunca caducan: las páginas sin usar permanecen en tu cuenta hasta que las uses, así que un pack comprado para un proyecto conserva su valor para el siguiente.
¿Qué pasa si un sitio no permite robots?
No leemos la página y no se te cobra. Nuestro rastreador se anuncia como WebReaderAPI/1.0 (+https://webreaderapi.com/bot/) y sigue el robots.txt del sitio. Una página no permitida devuelve 403 blocked_by_robots; un sitio que rechaza la petición de otra forma devuelve 502 target_refused con el código de estado propio del sitio.
Si un sitio rechaza nuestra solicitud, devolvemos su respuesta: nunca resolvemos CAPTCHAs, iniciamos sesión en cuentas ni intentamos saltar un bloqueo o un paywall. La página de errores explica qué errores merecen un reintento y cuáles son definitivos.
¿Adónde voy ahora?
- Leer la referencia del endpoint Cada parámetro de /read, con ejemplos
- Batch y rastreo Hasta 100 URLs por lote, o un sitio entero
- Formato de respuesta Cada campo de la respuesta
- Errores y robots.txt Códigos, causas y reglas de reintento
- Python requests, httpx asíncrono, chunking para RAG
- Node.js fetch, un pool pequeño, polling de rastreo
- curl y jq Recetas para la terminal
- Servidor MCP Una herramienta read_url para Claude y Cursor
- LangChain y LlamaIndex Loaders y herramientas para RAG
- function calling de OpenAI Un esquema y bucle de la herramienta read_url
- n8n Herramienta HTTP Request para un Agente de IA
- OpenClaw Añadir el servidor MCP junto a web_fetch
Inicio rápido: preguntas frecuentes
¿Hay un SDK que instalar?
No. WebReaderAPI es una API HTTPS normal, así que cualquier cliente HTTP funciona. La documentación ofrece código listo para copiar y pegar para Python, Node.js y curl, y definiciones de herramientas para MCP, LangChain, LlamaIndex y OpenAI function calling. Nada se publica como paquete.
¿Puedo enviar la clave en la URL en lugar de en una cabecera?
Sí, como parámetro de consulta api_key. La cabecera Authorization: Bearer es más segura, porque las URLs acaban a menudo en registros e historiales del navegador. Crea varias claves API, por ejemplo una por agente o proyecto, y revoca cualquiera de ellas desde tu panel.
¿Una página fallida consume un crédito?
No. 1 crédito = 1 página leída sin navegador; 2 créditos cuando la página necesita un navegador para renderizar JavaScript. Una solicitud que falla, o que el robots.txt de un sitio rechaza, no se cobra. Solo se factura la página que devuelve contenido.
¿Puedo probarlo antes de comprar?
No hay plan gratuito. No hay plan gratuito: el pack más pequeño es la forma de probar, se paga desde la recarga mínima, y el importe añadido solo para alcanzar ese mínimo puede devolverse bajo petición en un plazo de 30 días, en USDT o USDC, mientras no se haya gastado.