Thunderbit Open API
Inizia
Thunderbit Open API fornisce potenti funzionalita di distillazione web ed estrazione intelligente dei dati, trasformando qualsiasi contenuto web in formati pronti per LLM.
Funzionalita Principali
🔥 Distillazione Web - Converti le pagine web in formato Markdown pulito, perfetto per applicazioni IA
🧠 Estrazione con IA - Estrai dati strutturati utilizzando schemi o prompt in linguaggio naturale
⚡ Elaborazione in Batch - Elabora piu URL simultaneamente con gestione asincrona dei job
🛡️ Pronto per le Aziende - Gestisce automaticamente rendering JavaScript, misure anti-bot, proxy e contenuti dinamici
Cosa Gestiamo Per Te
- Contenuti Dinamici: Pagine con rendering JavaScript, SPA e contenuti caricati via AJAX
- Protezione Anti-Bot: Gestione automatica di CAPTCHA e sistemi di rilevamento bot
- Elaborazione Contenuti: Pulizia e formattazione intelligente per un consumo ottimale da parte dell'IA
- Estrazione Metadati: Estrazione automatica di titoli, descrizioni e metadati strutturati
Autenticazione
Tutte le richieste API richiedono una chiave API nell'Header:
Authorization: Bearer <LA_TUA_CHIAVE_API>
Ottieni la tua chiave API dalla Dashboard Thunderbit.
Limiti di Frequenza
| Piano | Limite Richieste | Concorrenza | Ideale Per |
|---|
| Gratuito | 10 richieste/min | 2 simultanee | Test e prototipazione |
| Pro | 100 richieste/min | 10 simultanee | App in produzione |
| Enterprise | 1000 richieste/min | 50 simultanee | Operazioni su larga scala |
Formati di Output
- Markdown: Formato markdown pulito, ottimizzato per LLM
- Dati Strutturati: Output JSON basato sul tuo schema
- Metadati: Estrazione automatica dei metadati della pagina
Base URL
https://open.thunderbit.com/v1 — Server di produzione
Authentication
Type: HTTP Bearer (JWT). Header format: Authorization: Bearer YOUR_API_KEY
Inserisci la tua chiave API dalla Dashboard Thunderbit. Il formato dell'header sara: `Authorization: Bearer LA_TUA_CHIAVE_API`
Error Responses
BadRequest
Parametri della richiesta non validi
Unauthorized
Autenticazione fallita, chiave API non valida
RateLimited
Troppe richieste, limite di frequenza superato
- X-RateLimit-Limit: Limite massimo di frequenza
- X-RateLimit-Remaining: Richieste rimanenti
- X-RateLimit-Reset: Timestamp di reset
Schemas
Error
Formato di risposta errore standard
- success (boolean):
- error (object):
- code (string): Codici di errore:
- INVALID_URL: Formato URL non valido
- URL_NOT_ACCESSIBLE: Impossibile accedere all'URL di destinazione
- TIMEOUT: Timeout della richiesta
- QUOTA_EXCEEDED: Quota esaurita
- RATE_LIMITED: Limite di frequenza superato
- INVALID_SCHEMA: Formato Schema non valido
- EXTRACTION_FAILED: Estrazione IA fallita
- BATCH_SIZE_EXCEEDED: Numero di richieste batch superato il limite
- INVALID_WEBHOOK_URL: Formato URL Webhook non valido o non HTTPS
- WEBHOOK_DELIVERY_FAILED: Consegna callback Webhook fallita
- message (string): Messaggio di descrizione dell'errore
Metadata
Metadati della pagina estratti da tag meta HTML, Open Graph e Twitter Cards
DistillResult
Risultato della distillazione di una pagina web in formato Markdown pulito
ExtractResult
Risultato dell'estrazione dati strutturati basata su IA
BatchJob
Stato e risultati di un lavoro di elaborazione batch
Distilla
Converti le pagine web in formato Markdown pulito e pronto per LLM. Gestisce automaticamente rendering JavaScript, contenuti dinamici e protezione anti-bot.
POST /distill — Distilla Pagina Singola
Converti una pagina web in formato Markdown pulito e pronto per LLM.
Casi d'Uso:
- Preparare contenuti web per RAG (Retrieval-Augmented Generation)
- Estrarre contenuti di articoli per elaborazione IA
- Convertire pagine di documentazione in markdown
- Elaborare applicazioni web dinamiche
Cosa Include:
- Contenuto markdown pulito con struttura preservata
- Rimozione automatica di pubblicita, navigazione e elementi superflui
- Estrazione metadati (titolo, descrizione, lingua)
- Rendering JavaScript per contenuti dinamici
- Gestione automatica delle misure anti-bot
Formato di Output:
Restituisce markdown ottimizzato per il consumo LLM con minimo rumore e massimo segnale.
Request Body
- url (string) *required: L'URL della pagina web da distillare
- timeout (number): Timeout della richiesta in millisecondi (predefinito: 30000, massimo: 60000)
- waitFor (number): Tempo di attesa (in millisecondi) dopo il caricamento della pagina per il rendering del contenuto dinamico prima dell'estrazione
- includeTags (string[]): Includi solo contenuto da questi tag HTML (es. ['article', 'main', 'div.content'])
- excludeTags (string[]): Escludi contenuto da questi tag HTML (es. ['nav', 'footer', 'aside'])
- headers (object): Header HTTP personalizzati da inviare con la richiesta
Response (200): Risposta di successo
- success (boolean):
- data (object):
- url (string): L'URL che e stato distillato
- markdown (string): Contenuto markdown pulito estratto dalla pagina
- html (string): Contenuto HTML grezzo (opzionale, solo se richiesto)
- metadata (object):
- title (string): Titolo della pagina estratto dal tag <title> o Open Graph
- description (string): Meta description o estratto
- language (string): Codice lingua rilevato (ISO 639-1)
- author (string): Autore dell'articolo se disponibile
- publishedDate (string): Data di pubblicazione se disponibile
- image (string): URL immagine in evidenza da Open Graph o Twitter Card
- sourceURL (string): URL originale (puo differire dall'URL richiesto a causa di reindirizzamenti)
- statusCode (integer): Codice di stato HTTP della risposta
- contentLength (integer): Lunghezza del contenuto markdown in caratteri
- links (object[]): Link trovati nel contenuto
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 — Distilla Piu Pagine in Batch
Distilla piu pagine web simultaneamente con elaborazione asincrona.
Casi d'Uso:
- Elaborare intere sezioni o categorie di siti web
- Importazione batch di contenuti nella tua knowledge base
- Migrazione di contenuti su larga scala
- Aggiornamenti periodici di contenuti da piu fonti
Come Funziona:
Invia un job batch con fino a 100 URL
Ricevi immediatamente un ID job
Interroga l'endpoint di stato o ricevi notifica webhook
Recupera tutti i risultati al completamento
Funzionalita:
- Elaborazione asincrona per alto throughput
- Retry automatico in caso di errori
- Notifiche webhook al completamento
- Report dettagliato di stato ed errori per ogni URL
Request Body
- urls (string[]) *required: Lista di URL da distillare, massimo 100
- timeout (number): Timeout per richiesta in millisecondi, predefinito 30000
- webhook (object): Configurazione callback webhook, notifica al completamento del task
- url (string): URL callback webhook, deve essere HTTPS
- headers (object): Header callback personalizzati, utilizzabili per l'autenticazione
Response (200): Risposta di successo
- success (boolean):
- data (object):
- id (string): ID del task batch
- 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} — Ottieni Stato Job Distillazione Batch
Verifica lo stato e recupera i risultati di un job di distillazione batch.
Stati della Risposta:
processing: Il job e attualmente in esecuzione
completed: Tutti gli URL sono stati elaborati
failed: Il job ha riscontrato un errore fatale
Best Practice per il Polling:
- Interroga ogni 5-10 secondi per job con <10 URL
- Interroga ogni 30-60 secondi per job piu grandi
- Usa i webhook per maggiore efficienza
Risultati Parziali:
Puoi recuperare i risultati completati mentre il job e ancora in elaborazione. L'array results conterra tutti gli URL elaborati fino a quel momento.
Parameters
- id (string) *required: ID del task batch
Response (200): Risposta di successo
- 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"
}
}
]
}
}
Estrai
Estrazione di dati strutturati basata su IA. Definisci la struttura dati desiderata utilizzando JSON Schema o prompt in linguaggio naturale, e lascia che la nostra IA estragga le informazioni per te.
POST /extract — Estrazione Strutturata con IA
Estrai dati strutturati dalle pagine web utilizzando l'IA. Definisci la struttura di output desiderata con JSON Schema, e la nostra IA estrarra intelligentemente le informazioni.
Casi d'Uso:
- Estrarre informazioni prodotto da pagine e-commerce
- Analizzare annunci di lavoro in formato strutturato
- Estrarre informazioni di contatto e dettagli aziendali
- Convertire articoli di notizie in dati strutturati
- Estrarre tabelle prezzi e specifiche
Come Funziona:
Fornisci un URL e uno JSON Schema che definisce la struttura desiderata
La nostra IA analizza il contenuto della pagina
Estrae i dati corrispondenti al tuo schema
Restituisce output JSON validato
Definizione dello Schema:
Usa JSON Schema per definire la struttura di output desiderata:
- Tipi di campo: string, number, boolean, array, object
- Descrizioni dei campi: Aiutano l'IA a capire cosa estrarre
- Campi obbligatori: Contrassegna i campi critici come required
- Strutture annidate: Supporto per dati complessi e annidati
Esempio di Schema:
{
"type": "object",
"properties": {
"title": {
"type": "string",
"description": "Nome o titolo del prodotto"
},
"price": {
"type": "number",
"description": "Prezzo corrente in USD"
},
"availability": {
"type": "boolean",
"description": "Se il prodotto e disponibile"
},
"features": {
"type": "array",
"items": {"type": "string"},
"description": "Lista delle caratteristiche principali del prodotto"
}
},
"required": ["title", "price"]
}
Request Body
- url (string) *required: L'URL della pagina web da cui estrarre i dati
- schema (object) *required: Definizione della struttura dati in formato JSON Schema
- timeout (number): Timeout della richiesta in millisecondi, predefinito 30000
Response (200): Risposta di successo
- success (boolean):
- data (object):
- url (string):
- extract (object): Dati strutturati estratti corrispondenti al tuo schema
- metadata (object):
- sourceURL (string):
- statusCode (integer):
- extractedAt (string):
- confidence (number): Punteggio di confidenza IA (0-1) per la qualita dell'estrazione
- processingTime (integer): Tempo di elaborazione in millisecondi
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 — Estrai Piu Pagine in Batch
Estrai dati strutturati da piu URL simultaneamente utilizzando l'IA.
Casi d'Uso:
- Estrarre cataloghi prodotti da piu pagine
- Estrarre dati da pagine di risultati di ricerca
- Elaborare in batch listing o pagine directory
- Raccogliere intelligence competitiva su larga scala
Come Funziona:
Invia fino a 50 URL con un singolo schema
Ottieni risposta immediata con ID job
Tutti gli URL vengono estratti usando lo stesso schema
Interroga lo stato o ricevi notifica webhook
Recupera tutti i risultati strutturati insieme
Funzionalita:
- Stesso schema applicato a tutti gli URL
- Elaborazione parallela per velocita
- Gestione errori individuale per URL
- Notifiche webhook disponibili
Request Body
- urls (string[]) *required: Lista di URL da cui estrarre i dati, massimo 50
- schema (object) *required: Definizione della struttura dati in formato JSON Schema
- timeout (number): Timeout per richiesta in millisecondi, predefinito 30000
- webhook (object): Configurazione callback webhook, notifica al completamento del task
- url (string): URL callback webhook, deve essere HTTPS
- headers (object):
Response (200): Risposta di successo
- 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} — Ottieni Stato Job Estrazione Batch
Verifica lo stato e recupera i dati estratti da un job di estrazione batch.
Stati della Risposta:
processing: Estrazione in corso
completed: Tutte le estrazioni completate
failed: Job fallito (verifica i dettagli dell'errore)
Formato dei Risultati:
Ogni URL nell'array dei risultati contiene:
- Dati estratti corrispondenti al tuo schema
- Stato di successo/fallimento
- Messaggi di errore individuali se applicabile
- Punteggi di confidenza per la qualita dell'estrazione
Parameters
- id (string) *required: ID del task batch
Response (200): Risposta di successo
- 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"
}
}
]
}
}