Thunderbit Open API
Aan de slag
Thunderbit Open API biedt krachtige web distillatie en intelligente data-extractie mogelijkheden, waarmee elke webinhoud wordt omgezet naar LLM-klare formaten.
Belangrijkste Functies
🔥 Web Distillatie - Converteer webpagina's naar schoon Markdown-formaat, perfect voor AI-toepassingen
đź§ AI-gestuurde Extractie - Extraheer gestructureerde data met behulp van schema's of natuurlijke taal prompts
⚡ Batchverwerking - Verwerk meerdere URL's tegelijkertijd met asynchrone taakbeheer
🛡️ Enterprise-gereed - Verwerkt automatisch JavaScript-rendering, anti-bot maatregelen, proxy's en dynamische inhoud
Wat Wij Voor U Regelen
- Dynamische Inhoud: JavaScript-gerenderde pagina's, SPA's en AJAX-geladen inhoud
- Anti-Bot Bescherming: Automatische afhandeling van CAPTCHA's en bot-detectiesystemen
- Inhoudsverwerking: Intelligente opschoning en formattering voor optimaal AI-verbruik
- Metadata-extractie: Automatische extractie van titels, beschrijvingen en gestructureerde metadata
Authenticatie
Alle API-verzoeken vereisen een API-sleutel in de Header:
Authorization: Bearer <UW_API_SLEUTEL>
Verkrijg uw API-sleutel via het Thunderbit Dashboard.
Snelheidslimieten
| Plan | Verzoeklimiet | Gelijktijdigheid | Geschikt Voor |
|---|
| Gratis | 10 verzoeken/min | 2 gelijktijdig | Testen & prototyping |
| Pro | 100 verzoeken/min | 10 gelijktijdig | Productie-apps |
| Enterprise | 1000 verzoeken/min | 50 gelijktijdig | Grootschalige operaties |
Uitvoerformaten
- Markdown: Schoon, LLM-geoptimaliseerd markdown-formaat
- Gestructureerde Data: JSON-uitvoer gebaseerd op uw schema
- Metadata: Automatische extractie van pagina-metadata
Base URL
https://open.thunderbit.com/v1 — Productieserver
Authentication
Type: HTTP Bearer (JWT). Header format: Authorization: Bearer YOUR_API_KEY
Voer uw API-sleutel in van het Thunderbit Dashboard. Het headerformaat is: `Authorization: Bearer UW_API_SLEUTEL`
Error Responses
BadRequest
Ongeldige verzoekparameters
Unauthorized
Authenticatie mislukt, ongeldige API-sleutel
RateLimited
Te veel verzoeken, snelheidslimiet bereikt
- X-RateLimit-Limit: Snelheidslimiet plafond
- X-RateLimit-Remaining: Resterende verzoeken
- X-RateLimit-Reset: Reset-tijdstempel
Schemas
Error
Standaard foutresponsformaat
- success (boolean):
- error (object):
- code (string): Foutcodes:
- INVALID_URL: Ongeldig URL-formaat
- URL_NOT_ACCESSIBLE: Kan doel-URL niet bereiken
- TIMEOUT: Verzoek-timeout
- QUOTA_EXCEEDED: Quotum uitgeput
- RATE_LIMITED: Snelheidslimiet bereikt
- INVALID_SCHEMA: Ongeldig Schema-formaat
- EXTRACTION_FAILED: AI-extractie mislukt
- BATCH_SIZE_EXCEEDED: Batch-verzoekenlimiet overschreden
- INVALID_WEBHOOK_URL: Ongeldig Webhook URL-formaat of niet HTTPS
- WEBHOOK_DELIVERY_FAILED: Webhook callback-levering mislukt
- message (string): Foutbeschrijvingsbericht
Metadata
Paginametadata geëxtraheerd uit HTML-metatags, Open Graph en Twitter Cards
DistillResult
Resultaat van het distilleren van een webpagina naar schoon Markdown-formaat
ExtractResult
Resultaat van AI-aangedreven gestructureerde data-extractie
BatchJob
Status en resultaten van een batchverwerkingstaak
Distilleren
Converteer webpagina's naar schoon, LLM-klaar Markdown-formaat. Verwerkt automatisch JavaScript-rendering, dynamische inhoud en anti-bot bescherming.
POST /distill — Distilleer Enkele Pagina
Converteer een webpagina naar schoon, LLM-klaar Markdown-formaat.
Toepassingen:
- Bereid webinhoud voor op RAG (Retrieval-Augmented Generation)
- Extraheer artikelinhoud voor AI-verwerking
- Converteer documentatiepagina's naar markdown
- Verwerk dynamische webapplicaties
Wat Is Inbegrepen:
- Schone markdown-inhoud met behouden structuur
- Automatische verwijdering van advertenties, navigatie en boilerplate
- Metadata-extractie (titel, beschrijving, taal)
- JavaScript-rendering voor dynamische inhoud
- Automatische afhandeling van anti-bot maatregelen
Uitvoerformaat:
Retourneert markdown geoptimaliseerd voor LLM-verbruik met minimale ruis en maximaal signaal.
Request Body
- url (string) *required: De URL van de webpagina om te distilleren
- timeout (number): Verzoek-timeout in milliseconden (standaard: 30000, max: 60000)
- waitFor (number): Wachttijd (in milliseconden) na het laden van de pagina voor dynamische inhoud om te renderen voordat inhoud wordt geextraheerd
- includeTags (string[]): Alleen inhoud van deze HTML-tags opnemen (bijv. ['article', 'main', 'div.content'])
- excludeTags (string[]): Inhoud van deze HTML-tags uitsluiten (bijv. ['nav', 'footer', 'aside'])
- headers (object): Aangepaste HTTP-headers om met het verzoek mee te sturen
Response (200): Succesvol antwoord
- success (boolean):
- data (object):
- url (string): De URL die werd gedistilleerd
- markdown (string): Schone markdown-inhoud geextraheerd van de pagina
- html (string): Ruwe HTML-inhoud (optioneel, alleen indien gevraagd)
- metadata (object):
- title (string): Paginatitel geextraheerd van <title>-tag of Open Graph
- description (string): Meta-beschrijving of uittreksel
- language (string): Gedetecteerde taalcode (ISO 639-1)
- author (string): Artikelauteur indien beschikbaar
- publishedDate (string): Publicatiedatum indien beschikbaar
- image (string): Uitgelichte afbeeldings-URL van Open Graph of Twitter Card
- sourceURL (string): Originele URL (kan afwijken van gevraagde URL door doorverwijzingen)
- statusCode (integer): HTTP-statuscode van het antwoord
- contentLength (integer): Lengte van de markdown-inhoud in tekens
- links (object[]): Links gevonden in de inhoud
Example Request
curl 'https://open.thunderbit.com/v1/distill' \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN' \
--header 'Content-Type: application/json' \
--data '{"url":"https://example.com/article","timeout":30000,"waitFor":2000,"includeTags":["article","main"],"excludeTags":["nav","footer","aside"],"headers":{"User-Agent":"MyBot/1.0"}}'
Example Response
{
"success": true,
"data": {
"url": "https://example.com/article",
"markdown": "# Article Title\n\nContent...",
"html": "<article>...</article>",
"metadata": {
"title": "string",
"description": "string",
"language": "string",
"author": "string",
"publishedDate": "2025-01-01T00:00:00Z",
"image": "string",
"sourceURL": "string",
"statusCode": 1,
"contentLength": 1
},
"links": [
{
"text": "string",
"href": "string"
}
]
}
}
POST /batch/distill — Batch Distilleer Meerdere Pagina's
Distilleer meerdere webpagina's tegelijkertijd met asynchrone verwerking.
Toepassingen:
- Verwerk hele websitesecties of categorieen
- Batch-import inhoud naar uw kennisbank
- Grootschalige inhoudsmigratie
- Periodieke inhoudsupdates van meerdere bronnen
Hoe Het Werkt:
Dien een batchtaak in met maximaal 100 URL's
Ontvang direct een taak-ID
Poll het statuseindpunt of ontvang webhookmelding
Haal alle resultaten op wanneer voltooid
Functies:
- Asynchrone verwerking voor hoge doorvoer
- Automatische herpoging bij fouten
- Webhookmeldingen wanneer voltooid
- Gedetailleerde status- en foutrapportage per URL
Request Body
- urls (string[]) *required: Lijst met URL's om te distilleren, maximaal 100
- timeout (number): Timeout per verzoek in milliseconden, standaard 30000
- webhook (object): Webhook callback-configuratie, meldt wanneer taak voltooid is
- url (string): Webhook callback-URL, moet HTTPS zijn
- headers (object): Aangepaste callback-headers, kunnen worden gebruikt voor authenticatie
Response (200): Succesvol antwoord
- success (boolean):
- data (object):
- id (string): Batchtaak-ID
- status (string):
- total (integer):
- completed (integer):
- creditsUsed (integer):
Example Request
curl 'https://open.thunderbit.com/v1/batch/distill' \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN' \
--header 'Content-Type: application/json' \
--data '{"urls":["https://example.com/page1","https://example.com/page2"],"timeout":1,"webhook":{"url":"string","headers":{}}}'
Example Response
{
"success": true,
"data": {
"id": "batch_abc123",
"status": "processing",
"total": 3,
"completed": 0,
"creditsUsed": 0
}
}
GET /batch/distill/{id} — Haal Batch Distilleer Taakstatus Op
Controleer de status en haal resultaten op van een batch distilleer-taak.
Antwoordstatussen:
processing: Taak wordt momenteel uitgevoerd
completed: Alle URL's zijn verwerkt
failed: Taak heeft een fatale fout ondervonden
Best Practices voor Polling:
- Poll elke 5-10 seconden voor taken met <10 URL's
- Poll elke 30-60 seconden voor grotere taken
- Gebruik webhooks voor betere efficientie
Gedeeltelijke Resultaten:
U kunt voltooide resultaten ophalen terwijl de taak nog wordt verwerkt. De results-array bevat alle tot nu toe verwerkte URL's.
Parameters
- id (string) *required: Batchtaak-ID
Response (200): Succesvol antwoord
- success (boolean):
- data (object):
- id (string):
- status (string):
- total (integer):
- completed (integer):
- creditsUsed (integer):
- results (object[]):
Example Request
curl 'https://open.thunderbit.com/v1/batch/distill/{id}' \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN'
Example Response
{
"success": true,
"data": {
"id": "batch_abc123",
"status": "string",
"total": 1,
"completed": 1,
"creditsUsed": 1,
"results": [
{
"url": "string",
"success": true,
"markdown": "string",
"error": {
"code": "string",
"message": "string"
}
}
]
}
}
Extraheren
AI-gestuurde gestructureerde data-extractie. Definieer uw gewenste datastructuur met behulp van JSON Schema of natuurlijke taal prompts, en laat onze AI de informatie voor u extraheren.
POST /extract — AI-gestuurde Gestructureerde Extractie
Extraheer gestructureerde data van webpagina's met behulp van AI. Definieer uw gewenste uitvoerstructuur met JSON Schema, en onze AI zal de informatie intelligent extraheren.
Toepassingen:
- Extraheer productinformatie van e-commercepagina's
- Parseer vacatures naar gestructureerd formaat
- Extraheer contactgegevens en bedrijfsdetails
- Converteer nieuwsartikelen naar gestructureerde data
- Scrape prijstabellen en specificaties
Hoe Het Werkt:
Geef een URL en een JSON Schema op die uw gewenste structuur definieren
Onze AI analyseert de pagina-inhoud
Extraheert data die overeenkomt met uw schema
Retourneert gevalideerde JSON-uitvoer
Schemadefinitie:
Gebruik JSON Schema om uw gewenste uitvoerstructuur te definieren:
- Veldtypes: string, number, boolean, array, object
- Veldbeschrijvingen: Help de AI begrijpen wat te extraheren
- Verplichte velden: Markeer kritieke velden als verplicht
- Geneste structuren: Ondersteuning voor complexe, geneste data
Voorbeeldschema:
{
"type": "object",
"properties": {
"title": {
"type": "string",
"description": "Productnaam of titel"
},
"price": {
"type": "number",
"description": "Huidige prijs in USD"
},
"availability": {
"type": "boolean",
"description": "Of het product op voorraad is"
},
"features": {
"type": "array",
"items": {"type": "string"},
"description": "Lijst van belangrijkste productkenmerken"
}
},
"required": ["title", "price"]
}
Request Body
- url (string) *required: De URL van de webpagina om data van te extraheren
- schema (object) *required: Datastructuurdefinitie in JSON Schema-formaat
- timeout (number): Verzoek-timeout in milliseconden, standaard 30000
Response (200): Succesvol antwoord
- success (boolean):
- data (object):
- url (string):
- extract (object): Geextraheerde gestructureerde data die overeenkomt met uw schema
- metadata (object):
- sourceURL (string):
- statusCode (integer):
- extractedAt (string):
- confidence (number): AI-betrouwbaarheidsscore (0-1) voor de extractiekwaliteit
- processingTime (integer): Verwerkingstijd in milliseconden
Example Request
curl 'https://open.thunderbit.com/v1/extract' \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN' \
--header 'Content-Type: application/json' \
--data '{"url":"https://example.com/product","schema":{"type":"object","properties":{"name":{"type":"string"},"price":{"type":"number"}},"required":["name","price"]},"timeout":1}'
Example Response
{
"success": true,
"data": {
"url": "https://example.com/product",
"extract": {
"name": "iPhone 15 Pro",
"price": 999,
"currency": "USD"
},
"metadata": {
"sourceURL": "string",
"statusCode": 1,
"extractedAt": "2025-01-01T00:00:00Z",
"confidence": 1,
"processingTime": 1
}
}
}
POST /extract/batch — Batch Extraheer Meerdere Pagina's
Extraheer gestructureerde data van meerdere URL's tegelijkertijd met behulp van AI.
Toepassingen:
- Scrape productcatalogi van meerdere pagina's
- Extraheer data van zoekresultatenpagina's
- Batch-verwerk listings of directorypagina's
- Verzamel concurrentie-informatie op schaal
Hoe Het Werkt:
Dien maximaal 50 URL's in met een enkel schema
Krijg direct een taak-ID-antwoord
Alle URL's worden geextraheerd met hetzelfde schema
Poll voor status of ontvang webhookmelding
Haal alle gestructureerde resultaten in een keer op
Functies:
- Hetzelfde schema toegepast op alle URL's
- Parallelle verwerking voor snelheid
- Individuele foutafhandeling per URL
- Webhookmeldingen beschikbaar
Request Body
- urls (string[]) *required: Lijst met URL's om data van te extraheren, maximaal 50
- schema (object) *required: Datastructuurdefinitie in JSON Schema-formaat
- timeout (number): Timeout per verzoek in milliseconden, standaard 30000
- webhook (object): Webhook callback-configuratie, meldt wanneer taak voltooid is
- url (string): Webhook callback-URL, moet HTTPS zijn
- headers (object):
Response (200): Succesvol antwoord
- success (boolean):
- data (object):
- id (string):
- status (string):
- total (integer):
- completed (integer):
Example Request
curl 'https://open.thunderbit.com/v1/extract/batch' \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN' \
--header 'Content-Type: application/json' \
--data '{"urls":["string"],"schema":{},"timeout":1,"webhook":{"url":"string","headers":{}}}'
Example Response
{
"success": true,
"data": {
"id": "batch_ext_xyz789",
"status": "string",
"total": 1,
"completed": 1
}
}
GET /extract/batch/{id} — Haal Batch Extractie Taakstatus Op
Controleer de status en haal geextraheerde data op van een batch extractietaak.
Antwoordstatussen:
processing: Extractie wordt uitgevoerd
completed: Alle extracties voltooid
failed: Taak mislukt (controleer foutdetails)
Resultatenformaat:
Elke URL in de resultatenarray bevat:
- Geextraheerde data die overeenkomt met uw schema
- Succes/mislukkingsstatus
- Individuele foutmeldingen indien van toepassing
- Betrouwbaarheidsscores voor extractiekwaliteit
Parameters
- id (string) *required: Batchtaak-ID
Response (200): Succesvol antwoord
- success (boolean):
- data (object):
- id (string):
- status (string):
- total (integer):
- completed (integer):
- creditsUsed (integer):
- results (object[]):
Example Request
curl 'https://open.thunderbit.com/v1/extract/batch/{id}' \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN'
Example Response
{
"success": true,
"data": {
"id": "string",
"status": "string",
"total": 1,
"completed": 1,
"creditsUsed": 1,
"results": [
{
"url": "string",
"success": true,
"extract": {},
"error": {
"code": "string",
"message": "string"
}
}
]
}
}