NPM Package: olostep
Aan de slag
import Olostep from 'olostep';
const client = new Olostep({apiKey: process.env.OLOSTEP_API_KEY});
// Minimal scrape voorbeeld
const result = await client.scrapes.create('https://example.com');
console.log(result.id, result.html_content);
De NodeJS SDK accepteert zowel camelCase als snake_case voor alle parameters. Gebruik snake_case als je bouwt voor AI-agenten, het komt overeen met de native veldnamen van de API.
Gebruik
Scraping
Scrape een enkele URL met verschillende opties:
import Olostep, {Format} from 'olostep';
const client = new Olostep({apiKey: 'your_api_key'});
// Eenvoudige scrape
const scrape = await client.scrapes.create('https://example.com');
// Met meerdere formaten
const scrape = await client.scrapes.create({
url: 'https://example.com',
formats: [Format.HTML, Format.MARKDOWN, Format.TEXT],
waitBeforeScraping: 1000,
removeImages: true
});
// Toegang tot de inhoud
console.log(scrape.html_content);
console.log(scrape.markdown_content);
// Scrape ophalen via ID
const fetched = await client.scrapes.get(scrape.id);
Batchverwerking
Verwerk meerdere URLs in één batch:
// Gebruik van URL-strings (aangepaste IDs automatisch gegenereerd)
const batch = await client.batches.create([
'https://example.com',
'https://example.org',
'https://example.net'
]);
// Of met expliciete aangepaste IDs
const batch = await client.batches.create([
{url: 'https://example.com', customId: 'site-1'},
{url: 'https://example.org', customId: 'site-2'}
]);
console.log(`Batch ${batch.id} aangemaakt met ${batch.total_urls} URLs`);
// Wachten op voltooiing
await batch.waitTillDone({
checkEveryNSecs: 5,
timeoutSeconds: 120
});
// Batchinformatie ophalen
const info = await batch.info();
console.log(info);
// Individuele resultaten streamen
for await (const item of batch.items()) {
console.log(item.custom_id);
}
Crawlen
Crawl een volledige website:
const crawl = await client.crawls.create({
url: 'https://example.com',
maxPages: 100,
maxDepth: 3,
includeUrls: ['*/blog/*'],
excludeUrls: ['*/admin/*']
});
console.log(`Crawl ${crawl.id} gestart`);
// Wachten op voltooiing
await crawl.waitTillDone({
checkEveryNSecs: 10,
timeoutSeconds: 300
});
// Crawl-informatie ophalen
const info = await crawl.info();
console.log(`Gecrawld ${info.pages_crawled} pagina's`);
// Gecrawlde pagina's streamen
for await (const page of crawl.pages()) {
console.log(page.url, page.status_code);
}
Site Mapping
Genereer een sitemap van URLs van een website:
const map = await client.maps.create({
url: 'https://example.com',
topN: 100,
includeSubdomain: true,
searchQuery: 'blog posts'
});
console.log(`Map ${map.id} aangemaakt`);
// URLs streamen
for await (const url of map.urls()) {
console.log(url);
}
// Mapinformatie ophalen
const info = await map.info();
AI-gestuurde Antwoorden
Krijg antwoorden van webpagina’s met behulp van AI:
import Olostep from 'olostep';
const client = new Olostep({apiKey: 'your_api_key'});
// Eenvoudige taak: geef een string direct door
const answer = await client.answers.create(
'Wat is het hoofdonderwerp van https://example.com?'
);
console.log(answer.answer);
console.log(answer.sources);
// Met gestructureerde JSON-uitvoer
const structured = await client.answers.create({
task: 'Haal alle productnamen en prijzen van https://example.com',
jsonFormat: {
products: [{name: '', price: ''}]
}
});
console.log(structured.json_content);
// Een eerder gemaakt antwoord ophalen via ID
const fetched = await client.answers.get(answer.id);
console.log(fetched.answer);
Inhoud Terughalen
Haal eerder gescrapete inhoud op:
// Inhoud ophalen in specifiek(e) formaat(en)
const content = await client.retrieve(retrieveId, Format.MARKDOWN);
console.log(content.markdown_content);
// Meerdere formaten
const content = await client.retrieve(retrieveId, [
Format.HTML,
Format.MARKDOWN
]);
Geavanceerde Opties
Aangepaste Acties
Voer browseracties uit voordat je gaat scrapen:
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'}
]
});
Geografische Locatie
Scrape vanuit verschillende landen met behulp van vooraf gedefinieerde landcodes of een geldige landcode als string:
import Olostep, {Country} from 'olostep';
const client = new Olostep({apiKey: 'your_api_key'});
// Gebruik van vooraf gedefinieerde enum-waarden (US, DE, FR, GB, SG)
const scrape = await client.scrapes.create({
url: 'https://example.com',
country: Country.DE // Duitsland
});
// Of gebruik een geldige landcode als string
const scrape2 = await client.scrapes.create({
url: 'https://example.com',
country: 'jp' // Japan
});
Extraheer gestructureerde data met behulp van LLMs:
const scrape = await client.scrapes.create({
url: 'https://example.com',
llmExtract: {
schema: {
title: 'string',
price: 'number',
description: 'string'
},
prompt: 'Extraheer productinformatie van deze pagina'
}
});
Clientconfiguratie
import Olostep from 'olostep';
const client = new Olostep({
apiKey: 'your_api_key',
apiBaseUrl: 'https://api.olostep.com/v1', // optioneel
timeoutMs: 150000, // 150 seconden (optioneel)
retry: {
maxRetries: 3,
initialDelayMs: 1000
},
userAgent: 'MyApp/1.0' // optioneel
});
Belangrijkste kenmerken
- Async-first client met volledige TypeScript-ondersteuning.
- Type-veilige invoer met behulp van TypeScript enums en interfaces (Formats, Countries, Actions, etc.).
- Rijke resource namespaces met zowel verkorte aanroepen (
client.scrapes.create()) als expliciete methoden (client.scrapes.get()).
- Gedeelde transportlaag met retries, timeouts en JSON-decoding.
- Uitgebreide fouthiërarchie