Documentation Index
Fetch the complete documentation index at: https://docs.olostep.com/llms.txt
Use this file to discover all available pages before exploring further.
Paquete NPM: olostep
Comenzando
import Olostep from 'olostep';
const client = new Olostep({apiKey: process.env.OLOSTEP_API_KEY});
// Ejemplo mínimo de scraping
const result = await client.scrapes.create('https://example.com');
console.log(result.id, result.html_content);
El SDK de NodeJS acepta tanto camelCase como snake_case para todos los parámetros. Usa snake_case si estás desarrollando para agentes de IA, ya que coincide con los nombres de campo nativos de la API.
Uso
Scraping
Realiza scraping de una sola URL con varias opciones:
import Olostep, {Format} from 'olostep';
const client = new Olostep({apiKey: 'your_api_key'});
// Scraping simple
const scrape = await client.scrapes.create('https://example.com');
// Con múltiples formatos
const scrape = await client.scrapes.create({
url: 'https://example.com',
formats: [Format.HTML, Format.MARKDOWN, Format.TEXT],
waitBeforeScraping: 1000,
removeImages: true
});
// Accede al contenido
console.log(scrape.html_content);
console.log(scrape.markdown_content);
// Obtén el scrape por ID
const fetched = await client.scrapes.get(scrape.id);
Procesamiento por lotes
Procesa múltiples URLs en un solo lote:
// Usando cadenas de URL (IDs personalizados generados automáticamente)
const batch = await client.batches.create([
'https://example.com',
'https://example.org',
'https://example.net'
]);
// O con IDs personalizados explícitos
const batch = await client.batches.create([
{url: 'https://example.com', customId: 'site-1'},
{url: 'https://example.org', customId: 'site-2'}
]);
console.log(`Lote ${batch.id} creado con ${batch.total_urls} URLs`);
// Espera a que se complete
await batch.waitTillDone({
checkEveryNSecs: 5,
timeoutSeconds: 120
});
// Obtén información del lote
const info = await batch.info();
console.log(info);
// Transmite resultados individuales
for await (const item of batch.items()) {
console.log(item.custom_id);
}
Rastreo
Rastrea un sitio web completo:
const crawl = await client.crawls.create({
url: 'https://example.com',
maxPages: 100,
maxDepth: 3,
includeUrls: ['*/blog/*'],
excludeUrls: ['*/admin/*']
});
console.log(`Rastreo ${crawl.id} iniciado`);
// Espera a que se complete
await crawl.waitTillDone({
checkEveryNSecs: 10,
timeoutSeconds: 300
});
// Obtén información del rastreo
const info = await crawl.info();
console.log(`Se rastrearon ${info.pages_crawled} páginas`);
// Transmite páginas rastreadas
for await (const page of crawl.pages()) {
console.log(page.url, page.status_code);
}
Mapeo del sitio
Genera un mapa del sitio de URLs de un sitio web:
const map = await client.maps.create({
url: 'https://example.com',
topN: 100,
includeSubdomain: true,
searchQuery: 'blog posts'
});
console.log(`Mapa ${map.id} creado`);
// Transmite URLs
for await (const url of map.urls()) {
console.log(url);
}
// Obtén información del mapa
const info = await map.info();
Respuestas impulsadas por IA
Obtén respuestas de páginas web usando IA:
import Olostep from 'olostep';
const client = new Olostep({apiKey: 'your_api_key'});
// Tarea simple: pasa una cadena directamente
const answer = await client.answers.create(
'¿Cuál es el tema principal de https://example.com?'
);
console.log(answer.answer);
console.log(answer.sources);
// Con salida JSON estructurada
const structured = await client.answers.create({
task: 'Extrae todos los nombres de productos y precios de https://example.com',
jsonFormat: {
products: [{name: '', price: ''}]
}
});
console.log(structured.json_content);
// Recupera una respuesta previamente creada por ID
const fetched = await client.answers.get(answer.id);
console.log(fetched.answer);
Recuperación de contenido
Recupera contenido previamente extraído:
// Obtén contenido en formato(s) específico(s)
const content = await client.retrieve(retrieveId, Format.MARKDOWN);
console.log(content.markdown_content);
// Múltiples formatos
const content = await client.retrieve(retrieveId, [
Format.HTML,
Format.MARKDOWN
]);
Opciones avanzadas
Acciones personalizadas
Realiza acciones del navegador antes de hacer scraping:
const scrape = await client.scrapes.create({
url: 'https://example.com',
actions: [
{type: 'wait', milliseconds: 2000},
{type: 'click', selector: '#load-more'},
{type: 'scroll', distance: 1000},
{type: 'fill_input', selector: '#search', value: 'query'}
]
});
Ubicación geográfica
Realiza scraping desde diferentes países usando códigos de país predefinidos o cualquier cadena de código de país válida:
import Olostep, {Country} from 'olostep';
const client = new Olostep({apiKey: 'your_api_key'});
// Usando valores de enumeración predefinidos (US, DE, FR, GB, SG)
const scrape = await client.scrapes.create({
url: 'https://example.com',
country: Country.DE // Alemania
});
// O usa cualquier código de país válido como cadena
const scrape2 = await client.scrapes.create({
url: 'https://example.com',
country: 'jp' // Japón
});
Extrae datos estructurados usando LLMs:
const scrape = await client.scrapes.create({
url: 'https://example.com',
llmExtract: {
schema: {
title: 'string',
price: 'number',
description: 'string'
},
prompt: 'Extrae información del producto de esta página'
}
});
Configuración del cliente
import Olostep from 'olostep';
const client = new Olostep({
apiKey: 'your_api_key',
apiBaseUrl: 'https://api.olostep.com/v1', // opcional
timeoutMs: 150000, // 150 segundos (opcional)
retry: {
maxRetries: 3,
initialDelayMs: 1000
},
userAgent: 'MyApp/1.0' // opcional
});
Características destacadas
- Cliente asíncrono con soporte completo para TypeScript.
- Entradas seguras en tipos usando enumeraciones e interfaces de TypeScript (Formatos, Países, Acciones, etc.).
- Espacios de nombres de recursos ricos con llamadas abreviadas (
client.scrapes.create()) y métodos explícitos (client.scrapes.get()).
- Capa de transporte compartida con reintentos, tiempos de espera y decodificación JSON.
- Jerarquía de errores completa