Convierte cualquier URL en Markdown, HTML, capturas de pantalla, PDFs o JSON estructurado listo para LLM.
A través del endpoint /v1/scrapes de Olostep puedes extraer Markdown, HTML, texto, capturas de pantalla o JSON estructurado amigable para LLM de cualquier URL en tiempo real.
Genera markdown limpio, datos estructurados, capturas de pantalla o html
Puedes usar el endpoint para raspar una sola URL y elegir formatos de salida. Los parámetros obligatorios son url_to_scrape y formats.Algunos otros parámetros comunes son wait_before_scraping (en milisegundos), remove_css_selectors (por defecto, ninguno, o un array de selectores), y country.
El API devuelve un objeto scrape en respuesta.El scrape tiene algunas propiedades como id y result.El objeto result tiene los siguientes campos (según el parámetro formats algunos podrían ser nulos):
html_content: el contenido HTML de la página. Pasa formats: ["html"] para obtener esto.
markdown_content: el contenido MD de la página. Pasa formats: ["markdown"] para obtener esto.
text_content: el contenido de texto de la página. Pasa formats: ["text"] para obtener esto.
json_content: el contenido JSON de la página. Pasa formats: ["json"] para obtener esto y también proporciona un parámetro parser o llm_extract.
screenshot_hosted_url: la URL alojada de la captura de pantalla.
html_hosted_url: la URL alojada del contenido HTML
markdown_hosted_url: la URL alojada del contenido Markdown
json_hosted_url: la URL alojada del contenido JSON
text_hosted_url: la URL alojada del contenido de texto
Cuando se solicita un raspado, Olostep verifica si ya existe un raspado coincidente con los mismos parámetros. Si se encuentra una coincidencia lo suficientemente reciente, el contenido se sirve instantáneamente desde el almacenamiento de Olostep sin iniciar un nuevo raspado del navegador.
Caché compartida: La caché se comparte globalmente. Si otra solicitud raspó exactamente la misma URL con la misma configuración dentro de tu ventana de frescura, te beneficias de la aceleración.
El post-procesamiento sigue en vivo: Operaciones como llm_extract y filtros links_on_page se ejecutan en el momento sobre el documento en caché. Solo almacenas en caché la recuperación de la página principal, manteniendo tus extracciones estructuradas dinámicas.
Por defecto, el API de producción siempre realiza un raspado en vivo para garantizar la precisión en tiempo real. Puedes optar por el almacenamiento en caché usando el parámetro max_age.
Parámetro
Tipo
Predeterminado
Descripción
max_age
integer
0
Edad aceptable del contenido en segundos. Si existe una copia en caché y es más reciente que max_age segundos, se sirve desde la caché.
Comportamiento predeterminado del API (max_age: 0): Cada solicitud al API desencadena un raspado nuevo.
Comportamiento predeterminado del Playground: En el playground del panel, max_age predetermina a 24 horas (86400 segundos) para evitar raspados redundantes y ahorrar créditos mientras construyes y pruebas.
Edad máxima: La caché tiene un límite máximo de 7 días (604800 segundos). Cualquier max_age solicitado por encima de este límite volverá a un máximo de 7 días.
from olostep import Olostepclient = Olostep(api_key="YOUR_REAL_KEY")# Optar por el almacenamiento en caché: Aceptar resultados de hasta 1 día (86400 segundos) de antigüedadresult = client.scrapes.create( url_to_scrape="https://example.com", formats=["markdown"], max_age=86400)
La caché se omite automáticamente (forzando un raspado en vivo) para funciones que requieren sesiones únicas, salidas visuales en tiempo real o manejo de archivos personalizados:
Sesiones interactivas: Solicitudes que usan session_id o cargan un context de navegador personalizado.
Visuales: Herramientas de visualización y capturas de pantalla (htmlVisualizer).
Tipos de archivos especiales: Descargas de archivos binarios o renderizado de PDF en bruto.
Depuración y Red: Captura de network_calls o uso de trabajos de parser asíncronos.
include_links / exclude_links: patrones glob que se comparan con la ruta de la URL de cada enlace.
query_to_order_links_by: reordena los enlaces devueltos por relevancia a este texto.
Los patrones glob coinciden con segmentos de ruta. Un solo *no cruza /, por lo que "/blog/*" coincide con "/blog/post-1" pero no con el índice "/blog" en sí mismo — y nunca coincide con "/blog?tag=x" porque las cadenas de consulta no son parte de la ruta. Para incluir también el índice, usa "/blog*" o "{/blog,/blog/**}".
Olostep tiene algunos parsers preconstruidos para sitios web populares pero también puedes crear tus propios parsers a través del panel o pedirle a nuestro equipo que lo haga por ti.Los parsers son auto-reparables y se actualizarán a la última versión del sitio web.
Proporciona llm_extract con un Esquema JSON (schema) y/o una instrucción en lenguaje natural (prompt). Puedes pasar ambos parámetros, pero si ambos se proporcionan, schema tiene prioridad.En cambio, si solo pasas un prompt, el LLM extraerá los datos basándose en el prompt y decidirá la estructura de datos por sí mismo.
Nota: result.json_content devuelve un JSON en forma de cadena. Analízalo en tu código si necesitas un objeto.Precios:llm_extract cuesta 10 créditos por raspado. Para reducir el costo, puedes traer tus propias claves de API o habilitar precios basados en uso. Contacta a info@olostep.com para obtener acceso.
Con la opción links_on_page, puedes extraer todos los enlaces presentes en la página que raspas. Acepta los siguientes parámetros para ayudar a filtrar y ordenar los enlaces extraídos:
absolute_links (booleano, por defecto: true): Cuando es verdadero, devuelve URLs completas (por ejemplo, https://example.com/page) en lugar de rutas relativas (por ejemplo, /page).
query_to_order_links_by (cadena): Ordena los enlaces devueltos por su similitud con el texto de consulta proporcionado, priorizando las coincidencias más relevantes primero.
include_links (array de cadenas): Filtra los enlaces extraídos usando patrones glob. Usa patrones como *.pdf para coincidir con extensiones de archivo, /blog/* para rutas específicas, o URLs completas como https://example.com/*. Soporta comodines (*), clases de caracteres ([a-z]), y alternancia ({pattern1,pattern2}).
exclude_links (array de cadenas): Excluye enlaces específicos usando patrones glob, siguiendo la misma sintaxis que include_links.
El dominio no se resuelve. Verifica la URL por errores tipográficos.
{ "error": { "type": "invalid_request_error", "code": "dns_resolution_failed", "message": "La URL contiene un error tipográfico, o el dominio no existe." }}
El sitio web de destino tiene una configuración HTTPS rota o incompatible. error.detail proporciona el código de error SSL específico para diagnósticos; error.code siempre es tls_error.
{ "error": { "type": "invalid_request_error", "code": "tls_error", "detail": "err_ssl_tlsv1_alert_internal_error", "message": "El sitio web cerró o rechazó el handshake TLS. El servidor puede estar mal configurado o usar una versión SSL/TLS no compatible." }}
El raspado no se completó dentro del presupuesto de espera. La página puede ser lenta, estar protegida contra bots o estar temporalmente no disponible. Esta respuesta es segura para reintentar.
{ "error": { "type": "request_timeout", "code": "scrape_poll_timeout", "message": "La solicitud agotó el tiempo de espera mientras se esperaba el resultado del raspado. La página puede ser lenta, bloqueada para nuestros fetchers, o estar temporalmente no disponible." }}
El raspado cuesta 1 crédito por defecto. Si también pasas parsers, los costos varían según el parser (1-5 créditos). Si usas extracción LLM, cuesta 10 créditos.