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"
}
}
]
}
}