Le regole per il trasporto di cani e gatti di 37 compagnie aeree, in JSON, senza registrazione e senza chiave. Gli stessi dati che alimentano il comparatore del sito, con la fonte ufficiale e la data di verifica accanto a ogni compagnia.
Base URL — https://www.puppyonair.com/api/v1
Autenticazione — nessuna. Formato — JSON UTF-8. CORS — aperto, si può chiamare dal browser. Limite — 300 richieste all’ora per indirizzo IP.
Come è fatta una risposta
Ogni risposta ha sempre tre chiavi di primo livello: meta con i dati sulla
richiesta, license con i termini d’uso, data con il contenuto.
La licenza viaggia dentro la risposta di proposito: chi integra l’API non deve andare a
cercare da un’altra parte cosa gli è concesso fare.
{
"meta": {
"api_version": "1.1",
"generated_at": "2026-08-28T00:00:00Z",
"total": 22,
"count": 22,
"limit": 50,
"offset": 0,
"sort": "score"
},
"license": {
"name": "CC BY 4.0",
"url": "https://creativecommons.org/licenses/by/4.0/",
"attribution": "Puppyonair — https://www.puppyonair.com"
},
"data": [
{
"id": "LH",
"name": "Lufthansa",
"hub": "FRA",
"score": 99,
"cabin": {
"allowed": true,
"max_kg": 8,
"carrier": "55 x 40 x 23 cm",
"carrier_cm": {
"l": 55,
"w": 40,
"h": 23
},
"fee_min_eur": 60,
"fee_max_eur": 120
},
"hold": {
"allowed": true,
"max_kg": 75
},
"airports_served": 178,
"policy_source": "https://www.lufthansa.com/de/en/animals-as-additional-carry-on-baggage",
"href": "/api/v1/airlines/LH"
}
]
}
Endpoint
GET /api/v1
Indice degli endpoint, in forma leggibile da una macchina. Utile come punto di partenza.
curl https://www.puppyonair.com/api/v1
GET /api/v1/meta
Versione, licenza, conteggi, data dell’ultima rigenerazione dei dati e data dell’ultimo controllo automatico delle pagine ufficiali.
curl https://www.puppyonair.com/api/v1/meta
GET /api/v1/airlines
Elenco delle compagnie, ordinate per punteggio pet-friendly. Risposta compatta: la lista completa degli aeroporti serviti sta solo nel dettaglio della singola compagnia.
| Parametro | Significato |
|---|---|
cabin=1 | solo compagnie che ammettono l’animale in cabina |
hold=1 | solo compagnie che ammettono la stiva |
min_kg=8 | peso minimo ammesso in cabina, animale più trasportino |
airport=FCO | solo compagnie che servono quell’aeroporto |
country=IT | solo compagnie che servono almeno un aeroporto in quel paese (ISO 3166-1 alpha-2) |
q=luft | ricerca sul nome |
sort=score|name|max_kg | criterio di ordinamento, default score |
limit / offset | paginazione, massimo 200 per pagina |
curl 'https://www.puppyonair.com/api/v1/airlines?cabin=1&min_kg=8&sort=max_kg'
GET /api/v1/airlines/{id}
Una compagnia, con policy completa cabina e stiva, punteggio scomposto, elenco degli aeroporti serviti con città e paese, fonte ufficiale e media delle recensioni.
curl https://www.puppyonair.com/api/v1/airlines/LH
GET /api/v1/airports/{iata}
Un aeroporto e le compagnie che lo servono, ordinate per punteggio.
curl https://www.puppyonair.com/api/v1/airports/FCO
GET /api/v1/routes/{da}/{a}
Le compagnie che servono entrambi gli aeroporti, con evidenziata la migliore per il viaggio in cabina. Accetta anche la forma /routes/MXP-BCN.
curl https://www.puppyonair.com/api/v1/routes/MXP/BCN
Attenzione: significa «questa compagnia serve entrambi gli scali», non «esiste un volo diretto domani».
GET /api/v1/changelog
I cambiamenti rilevati automaticamente sulle pagine policy ufficiali delle compagnie monitorate. Ogni voce dice che la pagina è cambiata, non cosa è cambiato: va letta come «da riverificare».
| Parametro | Significato |
|---|---|
airline=LH | filtra per compagnia |
limit | massimo 200 |
curl https://www.puppyonair.com/api/v1/changelog
GET /api/v1/reviews
Le recensioni approvate di chi ha volato con un animale, più le medie per compagnia. Nessun dato personale: solo il nome che l’autore ha scelto di mostrare.
| Parametro | Significato |
|---|---|
airline=LH | filtra per compagnia |
limit | massimo 200 |
curl https://www.puppyonair.com/api/v1/reviews?airline=LH
GET /api/v1/flight-reports
Prove moderate e datate su posto pet, controlli al gate e compatibilità fra trasportino, aeromobile e posto.
| Parametro | Significato |
|---|---|
airline=ITA | filtra per compagnia |
airport=FCO | partenza o arrivo |
aircraft=A320 | famiglia o modello aeromobile |
seat_type=standard | standard, bulkhead, exit o premium |
curl 'https://www.puppyonair.com/api/v1/flight-reports?airline=ITA&aircraft=A320'
POST /api/v1/flight-reports
Invia una prova strutturata. Ogni invio resta in attesa finché non viene moderato; non sono accettati dati personali.
POST /api/v1/watch
Richiede un Trip Watch su una compagnia e un viaggio futuro. L’avviso si attiva soltanto dopo la conferma email (double opt-in).
Limiti e cache
Il tetto è di 300 richieste all’ora per IP. Ogni risposta porta
gli header X-RateLimit-Limit, X-RateLimit-Remaining e
X-RateLimit-Reset; oltre il limite arriva un 429 con
Retry-After.
Le risposte sui dati statici hanno un ETag e Cache-Control: max-age=3600.
Rimandando l’ETag con If-None-Match si ottiene un 304 che non
consuma banda e non conta ai fini del limite lato client.
curl -H 'If-None-Match: "a1b2c3d4e5f6"' \
https://www.puppyonair.com/api/v1/airlines
# HTTP/1.1 304 Not Modified
Se ti serve tutto il dataset, non ciclare sugli endpoint: c’è il dump JSON completo, un file solo, aggiornato a ogni rigenerazione, servito come statico e fuori dal rate limit.
Errori
| Codice | Quando |
|---|---|
400 | parametro malformato: codice IATA non di tre lettere, rotta con origine uguale a destinazione |
404 | compagnia, aeroporto o endpoint inesistente. Il corpo elenca i valori validi quando sono pochi |
405 | metodo non supportato dall’endpoint; gli invii Flight Confidence accettano POST |
429 | superato il limite orario |
503 | dati non ancora generati sul server |
Licenza e citazione
I dati sono rilasciati con licenza Creative Commons Attribuzione 4.0. Si possono usare, ripubblicare e modificare, anche per scopi commerciali, a una condizione: citare la fonte con un link.
Puppyonair, "Policy animali delle compagnie aeree",
https://www.puppyonair.com/api (consultato il GG/MM/AAAA),
licenza CC BY 4.0.
Se stai scrivendo un articolo e ti serve un dato che qui non c’è, scrivici: nella maggior parte dei casi il dato esiste e non è ancora esposto.
Da dove vengono i dati, e cosa non sono
Ogni compagnia ha un campo policy_source con l’URL della pagina ufficiale e
un campo policy_verified_on con la data in cui quella pagina è stata letta a
mano e confrontata con i valori pubblicati qui. Le compagnie con
monitored: true sono anche controllate automaticamente: se la pagina ufficiale
cambia, la variazione finisce nel registro degli aggiornamenti.
Questi dati non sostituiscono la conferma della compagnia. Le policy cambiano, i posti per animali in cabina sono limitati e contingentati per volo, e alcune regole dipendono dalla rotta e non solo dalla compagnia. Usali per orientarti e per scartare le opzioni impossibili, poi conferma prima di comprare.
Domande frequenti
- Serve una chiave? No. Nessuna registrazione, nessun token.
- Posso usarla in un prodotto commerciale? Sì, la CC BY 4.0 lo consente. Serve l’attribuzione con un link.
- Ogni quanto cambiano i dati? A ogni rigenerazione, tipicamente quando una policy ufficiale cambia. La data esatta è in
meta.generated_at. - Ci sono tutte le compagnie del mondo? No: 35, scelte fra quelle che volano da e per l’Italia. Le altre arrivano quando c’è una fonte ufficiale da citare.
- Posso scaricare tutto invece di chiamare l’API? Sì, il dump JSON è li’ per quello.