Thunderbit Open API
Erste Schritte
Die Thunderbit Open API bietet leistungsstarke Web-Destillations- und intelligente Datenextraktionsfunktionen, die beliebige Webinhalte in LLM-fähige Formate umwandeln.
Hauptfunktionen
🔥 Web-Destillation - Webseiten in sauberes Markdown-Format konvertieren, perfekt für KI-Anwendungen
🧠 KI-gestützte Extraktion - Strukturierte Daten mithilfe von Schemata oder natürlichsprachlichen Prompts extrahieren
⚡ Stapelverarbeitung - Mehrere URLs gleichzeitig mit asynchroner Auftragsverwaltung verarbeiten
🛡️ Unternehmenstauglich - Verarbeitet JavaScript-Rendering, Anti-Bot-Maßnahmen, Proxys und dynamische Inhalte automatisch
Was wir für Sie übernehmen
- Dynamische Inhalte: JavaScript-gerenderte Seiten, SPAs und per AJAX geladene Inhalte
- Anti-Bot-Schutz: Automatische Handhabung von CAPTCHAs und Bot-Erkennungssystemen
- Inhaltsverarbeitung: Intelligente Bereinigung und Formatierung für optimale KI-Nutzung
- Metadaten-Extraktion: Automatische Extraktion von Titeln, Beschreibungen und strukturierten Metadaten
Authentifizierung
Alle API-Anfragen erfordern einen API-Schlüssel im Header:
Authorization: Bearer <IHR_API_SCHLÜSSEL>
Holen Sie sich Ihren API-Schlüssel vom Thunderbit Dashboard.
Ratenlimits
| Plan | Anfragelimit | Parallelität | Geeignet für |
|---|
| Kostenlos | 10 Anfragen/Min | 2 parallel | Testen & Prototyping |
| Pro | 100 Anfragen/Min | 10 parallel | Produktionsanwendungen |
| Enterprise | 1000 Anfragen/Min | 50 parallel | Großskalierte Operationen |
Ausgabeformate
- Markdown: Sauberes, LLM-optimiertes Markdown-Format
- Strukturierte Daten: JSON-Ausgabe basierend auf Ihrem Schema
- Metadaten: Automatische Extraktion von Seitenmetadaten
Base URL
https://open.thunderbit.com/v1 — Produktionsserver
Authentication
Type: HTTP Bearer (JWT). Header format: Authorization: Bearer YOUR_API_KEY
Geben Sie Ihren API-Schlüssel vom Thunderbit Dashboard ein. Das Header-Format lautet: `Authorization: Bearer IHR_API_SCHLÜSSEL`
Error Responses
BadRequest
Ungültige Anfrageparameter
Unauthorized
Authentifizierung fehlgeschlagen, ungültiger API-Schlüssel
RateLimited
Zu viele Anfragen, Ratenlimit ausgelöst
- X-RateLimit-Limit: Ratenlimit-Obergrenze
- X-RateLimit-Remaining: Verbleibende Anfragen
- X-RateLimit-Reset: Zurücksetzungszeitstempel
Schemas
Error
Standard-Fehlerantwortformat
- success (boolean):
- error (object):
- code (string): Fehlercodes:
- INVALID_URL: Ungültiges URL-Format
- URL_NOT_ACCESSIBLE: Ziel-URL nicht erreichbar
- TIMEOUT: Anfrage-Timeout
- QUOTA_EXCEEDED: Kontingent erschöpft
- RATE_LIMITED: Ratenlimit ausgelöst
- INVALID_SCHEMA: Ungültiges Schema-Format
- EXTRACTION_FAILED: KI-Extraktion fehlgeschlagen
- BATCH_SIZE_EXCEEDED: Stapel-Anfragezahl überschritten
- INVALID_WEBHOOK_URL: Ungültiges Webhook-URL-Format oder kein HTTPS
- WEBHOOK_DELIVERY_FAILED: Webhook-Callback-Zustellung fehlgeschlagen
- message (string): Fehlerbeschreibung
Metadata
Seitenmetadaten aus HTML-Meta-Tags, Open Graph und Twitter Cards extrahiert
DistillResult
Ergebnis der Destillation einer Webseite in sauberes Markdown-Format
ExtractResult
Ergebnis der KI-gestützten strukturierten Datenextraktion
BatchJob
Status und Ergebnisse eines Stapelverarbeitungsauftrags
Destillieren
Webseiten in sauberes, LLM-fähiges Markdown-Format konvertieren. Verarbeitet JavaScript-Rendering, dynamische Inhalte und Anti-Bot-Schutz automatisch.
POST /distill — Einzelne Seite destillieren
Eine Webseite in sauberes, LLM-fähiges Markdown-Format konvertieren.
Anwendungsfälle:
- Webinhalte für RAG (Retrieval-Augmented Generation) vorbereiten
- Artikelinhalte für KI-Verarbeitung extrahieren
- Dokumentationsseiten in Markdown konvertieren
- Dynamische Webanwendungen verarbeiten
Enthaltene Funktionen:
- Sauberer Markdown-Inhalt mit erhaltener Struktur
- Automatische Entfernung von Werbung, Navigation und Boilerplate
- Metadaten-Extraktion (Titel, Beschreibung, Sprache)
- JavaScript-Rendering für dynamische Inhalte
- Automatische Handhabung von Anti-Bot-Maßnahmen
Ausgabeformat:
Gibt für LLM-Nutzung optimiertes Markdown mit minimalem Rauschen und maximalem Signal zurück.
Request Body
- url (string) *required: Die URL der zu destillierenden Webseite
- timeout (number): Anfrage-Timeout in Millisekunden (Standard: 30000, Maximum: 60000)
- waitFor (number): Wartezeit (in Millisekunden) nach dem Seitenladen, damit dynamische Inhalte gerendert werden, bevor der Inhalt extrahiert wird
- includeTags (string[]): Nur Inhalte aus diesen HTML-Tags einbeziehen (z.B. ['article', 'main', 'div.content'])
- excludeTags (string[]): Inhalte aus diesen HTML-Tags ausschließen (z.B. ['nav', 'footer', 'aside'])
- headers (object): Benutzerdefinierte HTTP-Header, die mit der Anfrage gesendet werden
Response (200): Erfolgreiche Antwort
- success (boolean):
- data (object):
- url (string): Die URL, die destilliert wurde
- markdown (string): Sauberer Markdown-Inhalt, der von der Seite extrahiert wurde
- html (string): Roher HTML-Inhalt (optional, nur wenn angefordert)
- metadata (object):
- title (string): Seitentitel, extrahiert aus dem <title>-Tag oder Open Graph
- description (string): Meta-Beschreibung oder Auszug
- language (string): Erkannter Sprachcode (ISO 639-1)
- author (string): Artikelautor, falls verfügbar
- publishedDate (string): Veröffentlichungsdatum, falls verfügbar
- image (string): Vorschaubild-URL aus Open Graph oder Twitter Card
- sourceURL (string): Original-URL (kann aufgrund von Weiterleitungen von der angeforderten URL abweichen)
- statusCode (integer): HTTP-Statuscode der Antwort
- contentLength (integer): Länge des Markdown-Inhalts in Zeichen
- links (object[]): Im Inhalt gefundene Links
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 — Mehrere Seiten stapelweise destillieren
Mehrere Webseiten gleichzeitig mit asynchroner Verarbeitung destillieren.
Anwendungsfälle:
- Ganze Website-Bereiche oder Kategorien verarbeiten
- Inhalte stapelweise in Ihre Wissensdatenbank importieren
- Großangelegte Inhaltsmigration
- Periodische Inhaltsaktualisierungen aus mehreren Quellen
So funktioniert es:
Einen Stapelauftrag mit bis zu 100 URLs einreichen
Sofort eine Auftrags-ID erhalten
Den Status-Endpunkt abfragen oder Webhook-Benachrichtigung erhalten
Alle Ergebnisse nach Abschluss abrufen
Funktionen:
- Asynchrone Verarbeitung für hohen Durchsatz
- Automatische Wiederholung bei Fehlern
- Webhook-Benachrichtigungen bei Abschluss
- Detaillierte Status- und Fehlerberichte pro URL
Request Body
- urls (string[]) *required: Liste der zu destillierenden URLs, maximal 100
- timeout (number): Timeout pro Anfrage in Millisekunden, Standard 30000
- webhook (object): Webhook-Callback-Konfiguration, benachrichtigt bei Auftragsabschluss
- url (string): Webhook-Callback-URL, muss HTTPS sein
- headers (object): Benutzerdefinierte Callback-Header, können zur Authentifizierung verwendet werden
Response (200): Erfolgreiche Antwort
- success (boolean):
- data (object):
- id (string): Stapelauftrags-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} — Stapel-Destillationsauftragsstatus abrufen
Status prüfen und Ergebnisse eines Stapel-Destillationsauftrags abrufen.
Antwortstatus:
processing: Auftrag wird derzeit ausgeführt
completed: Alle URLs wurden verarbeitet
failed: Auftrag ist auf einen schwerwiegenden Fehler gestoßen
Best Practices für Abfragen:
- Alle 5-10 Sekunden abfragen für Aufträge mit <10 URLs
- Alle 30-60 Sekunden abfragen für größere Aufträge
- Webhooks für bessere Effizienz verwenden
Teilergebnisse:
Sie können abgeschlossene Ergebnisse abrufen, während der Auftrag noch läuft. Das results-Array enthält alle bisher verarbeiteten URLs.
Parameters
- id (string) *required: Stapelauftrags-ID
Response (200): Erfolgreiche Antwort
- 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"
}
}
]
}
}
Extrahieren
KI-gestützte strukturierte Datenextraktion. Definieren Sie Ihre gewünschte Datenstruktur mit JSON-Schema oder natürlichsprachlichen Prompts, und unsere KI extrahiert die Informationen für Sie.
POST /extract — KI-gestützte strukturierte Extraktion
Strukturierte Daten aus Webseiten mithilfe von KI extrahieren. Definieren Sie Ihre gewünschte Ausgabestruktur mit JSON-Schema, und unsere KI extrahiert die Informationen intelligent.
Anwendungsfälle:
- Produktinformationen aus E-Commerce-Seiten extrahieren
- Stellenanzeigen in strukturiertes Format parsen
- Kontaktinformationen und Geschäftsdaten extrahieren
- Nachrichtenartikel in strukturierte Daten konvertieren
- Preistabellen und Spezifikationen scrapen
So funktioniert es:
Eine URL und ein JSON-Schema mit Ihrer gewünschten Struktur bereitstellen
Unsere KI analysiert den Seiteninhalt
Extrahiert Daten entsprechend Ihrem Schema
Gibt validierte JSON-Ausgabe zurück
Schema-Definition:
Verwenden Sie JSON-Schema, um Ihre gewünschte Ausgabestruktur zu definieren:
- Feldtypen: string, number, boolean, array, object
- Feldbeschreibungen: Helfen der KI zu verstehen, was extrahiert werden soll
- Pflichtfelder: Kritische Felder als erforderlich markieren
- Verschachtelte Strukturen: Unterstützung für komplexe, verschachtelte Daten
Beispiel-Schema:
{
"type": "object",
"properties": {
"title": {
"type": "string",
"description": "Produktname oder Titel"
},
"price": {
"type": "number",
"description": "Aktueller Preis in USD"
},
"availability": {
"type": "boolean",
"description": "Ob das Produkt auf Lager ist"
},
"features": {
"type": "array",
"items": {"type": "string"},
"description": "Liste der wichtigsten Produktmerkmale"
}
},
"required": ["title", "price"]
}
Request Body
- url (string) *required: Die URL der Webseite, aus der Daten extrahiert werden sollen
- schema (object) *required: Datenstrukturdefinition im JSON-Schema-Format
- timeout (number): Anfrage-Timeout in Millisekunden, Standard 30000
Response (200): Erfolgreiche Antwort
- success (boolean):
- data (object):
- url (string):
- extract (object): Extrahierte strukturierte Daten entsprechend Ihrem Schema
- metadata (object):
- sourceURL (string):
- statusCode (integer):
- extractedAt (string):
- confidence (number): KI-Konfidenzwert (0-1) für die Extraktionsqualität
- processingTime (integer): Verarbeitungszeit in Millisekunden
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 — Mehrere Seiten stapelweise extrahieren
Strukturierte Daten aus mehreren URLs gleichzeitig mithilfe von KI extrahieren.
Anwendungsfälle:
- Produktkataloge von mehreren Seiten scrapen
- Daten aus Suchergebnisseiten extrahieren
- Listings oder Verzeichnisseiten stapelweise verarbeiten
- Wettbewerbsinformationen im großen Maßstab sammeln
So funktioniert es:
Bis zu 50 URLs mit einem einzelnen Schema einreichen
Sofort Auftrags-ID als Antwort erhalten
Alle URLs werden mit demselben Schema extrahiert
Status abfragen oder Webhook-Benachrichtigung erhalten
Alle strukturierten Ergebnisse auf einmal abrufen
Funktionen:
- Gleiches Schema für alle URLs angewendet
- Parallele Verarbeitung für Geschwindigkeit
- Individuelle Fehlerbehandlung pro URL
- Webhook-Benachrichtigungen verfügbar
Request Body
- urls (string[]) *required: Liste der URLs, aus denen Daten extrahiert werden sollen, maximal 50
- schema (object) *required: Datenstrukturdefinition im JSON-Schema-Format
- timeout (number): Timeout pro Anfrage in Millisekunden, Standard 30000
- webhook (object): Webhook-Callback-Konfiguration, benachrichtigt bei Auftragsabschluss
- url (string): Webhook-Callback-URL, muss HTTPS sein
- headers (object):
Response (200): Erfolgreiche Antwort
- 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} — Stapel-Extraktionsauftragsstatus abrufen
Status prüfen und extrahierte Daten eines Stapel-Extraktionsauftrags abrufen.
Antwortstatus:
processing: Extraktion läuft
completed: Alle Extraktionen abgeschlossen
failed: Auftrag fehlgeschlagen (Fehlerdetails prüfen)
Ergebnisformat:
Jede URL im Ergebnis-Array enthält:
- Extrahierte Daten entsprechend Ihrem Schema
- Erfolgs-/Fehlerstatus
- Individuelle Fehlermeldungen, falls zutreffend
- Konfidenzwerte für die Extraktionsqualität
Parameters
- id (string) *required: Stapelauftrags-ID
Response (200): Erfolgreiche Antwort
- 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"
}
}
]
}
}