Utile v1 / Aeroporturi
Airports
Search the world's airports by name, city, IATA or ICAO code, with country and type filters. It includes heliports and small airfields, not only commercial ones.
GET
https://oneapi.ro/api/utile/v1/aeroporturi
Query parameters
NameTypeDescriptionAccepted values
qoptional
string | null
Searches the airport and locality names. Spaces mean AND: "cluj napoca" requires both words.
max 80 car.
taraoptional
string | null
The ISO alpha-2 country code.
max 2 car.
continentoptional
string | null
The continent code:
EU, AS, AF, NA, SA, OC, AN.
max 2 car.
tipoptional
string | null
One of
large_airport, medium_airport, small_airport, heliport, seaplane_base, balloonport, closed.
large_airportmedium_airportsmall_airportheliportseaplane_baseballoonportclosed
cu_iataoptional
boolean | null
1 keeps only records with an IATA code — airports in the everyday sense.
e.g. 1
cu_curseoptional
boolean | null
1 keeps only airports with declared scheduled service.
e.g. true
per_paginaoptional
text
How many per page (default 50, max 200).
e.g. 10
paginaoptional
text
The page, counted from 1.
e.g. 1
How it behaves
- Of the ~86,000 records, only ~9,000 carry an IATA code. The rest are heliports, private airstrips and closed runways. Without
cu_iata=1, a plain search returns a lot of noise. - The ordering is stable and useful: large airports first, then alphabetical. Without an explicit order, pagination would return rows in the table's physical order, which changes on every reimport.
closedaerodromes no longer operate. They stay in the data because they appear in old documents and historical databases, but do not use them for routing.
What it is for
- Populate an airport autocomplete in a booking form.
- List the commercial airports of a country, to know where you can ship by air.
- Look up an airport by city name when you do not know the code.
Response structure
FieldTypeDescription
data.aeroporturi[].ident
string
The OurAirports identifier — the only one guaranteed unique.
data.aeroporturi[].iata
string
The three-letter IATA code, or
null.
data.aeroporturi[].icao
string
The four-letter ICAO code, or
null.
data.aeroporturi[].nume
string
The name, exactly as the source publishes it.
data.aeroporturi[].tip
string
The aerodrome category.
data.aeroporturi[].municipiu
string
The municipality served.
data.aeroporturi[].tara
object
Country code and name.
data.aeroporturi[].tara.cod
string
Code from the source code list — the key you filter on.
data.aeroporturi[].tara.nume
string
The name, exactly as the source publishes it.
data.aeroporturi[].regiune
object
The subdivision (ISO 3166-2) and its name.
data.aeroporturi[].regiune.cod
string
Code from the source code list — the key you filter on.
data.aeroporturi[].regiune.nume
string
The name, exactly as the source publishes it.
data.aeroporturi[].continent
string
The continent it is on.
data.aeroporturi[].latitudine
number
Latitude, in decimal degrees (WGS 84).
data.aeroporturi[].longitudine
number
Longitude, in decimal degrees (WGS 84).
data.aeroporturi[].altitudine_ft
integer
Elevation in feet, as published by the source.
data.aeroporturi[].altitudine_m
integer
The same elevation converted to metres, so you need not convert it.
data.aeroporturi[].curse_regulate
boolean
Whether the source declares scheduled service.
data.aeroporturi[].wikipedia
string
Address of the Wikipedia article.
data.aeroporturi[].site
string
Address of the official website.
data.observatie
string
A note on how to read the response: a computation convention or a limit of the data.
data.sursa.nume
string
Name of the official source.
data.sursa.url
string
Public address of the source.
data.sursa.licenta
string
The licence under which the source allows reuse.
meta.paginare.pagina
integer
Current page, counted from 1.
meta.paginare.per_pagina
integer
How many records a page holds.
meta.paginare.total
integer
Total matching records, beyond the current page.
meta.paginare.pagini
integer
How many pages the list has.
Response examples
GEThttps://oneapi.ro/api/utile/v1/aeroporturi?tara=RO&tip=large_airport
{
"data": {
"aeroporturi": [
{
"ident": "LRCL",
"iata": "CLJ",
"icao": "LRCL",
"nume": "Avram Iancu Cluj International Airport",
"tip": "large_airport",
"municipiu": "Cluj-Napoca",
"tara": {
"cod": "RO",
"nume": "România"
},
"regiune": {
"cod": "RO-CJ",
"nume": "Cluj County"
},
"continent": "EU",
"latitudine": 46.786042,
"longitudine": 23.685733,
"altitudine_ft": 1039,
"altitudine_m": 317,
"curse_regulate": true,
"wikipedia": "https://en.wikipedia.org/wiki/Cluj_International_Airport",
"site": "http://www.airportcluj.ro/"
}
],
"observatie": "Din cele ~86.000 de înregistrări, doar ~9.000 au cod IATA: restul sunt heliporturi, aerodromuri private și piste închise. Filtrează cu `cu_iata=1` dacă vrei doar aeroporturi comerciale.",
"sursa": {
"nume": "OurAirports — export public zilnic",
"url": "https://ourairports.com/data/",
"licenta": "Domeniu public („All data is released to the Public Domain\"), fără obligație de atribuire."
}
},
"meta": {
"paginare": {
"pagina": 1,
"per_pagina": 50,
"total": 12,
"pagini": 1
}
}
}
GEThttps://oneapi.ro/api/utile/v1/aeroporturi?q=cluj
{
"data": {
"aeroporturi": [
{
"ident": "LRCL",
"iata": "CLJ",
"icao": "LRCL",
"nume": "Avram Iancu Cluj International Airport",
"tip": "large_airport",
"municipiu": "Cluj-Napoca",
"tara": {
"cod": "RO",
"nume": "România"
},
"regiune": {
"cod": "RO-CJ",
"nume": "Cluj County"
},
"continent": "EU",
"latitudine": 46.786042,
"longitudine": 23.685733,
"altitudine_ft": 1039,
"altitudine_m": 317,
"curse_regulate": true,
"wikipedia": "https://en.wikipedia.org/wiki/Cluj_International_Airport",
"site": "http://www.airportcluj.ro/"
}
],
"observatie": "Din cele ~86.000 de înregistrări, doar ~9.000 au cod IATA: restul sunt heliporturi, aerodromuri private și piste închise. Filtrează cu `cu_iata=1` dacă vrei doar aeroporturi comerciale.",
"sursa": {
"nume": "OurAirports — export public zilnic",
"url": "https://ourairports.com/data/",
"licenta": "Domeniu public („All data is released to the Public Domain\"), fără obligație de atribuire."
}
},
"meta": {
"paginare": {
"pagina": 1,
"per_pagina": 50,
"total": 1,
"pagini": 1
}
}
}
GEThttps://oneapi.ro/api/utile/v1/aeroporturi?tara=IT&cu_iata=1&per_pagina=10
{
"data": {
"aeroporturi": [
{
"ident": "LIBP",
"iata": "PSR",
"icao": "LIBP",
"nume": "Abruzzo Airport",
"tip": "large_airport",
"municipiu": "Pescara",
"tara": {
"cod": "IT",
"nume": "Italia"
},
"regiune": {
"cod": "IT-65",
"nume": "Abruzzi"
},
"continent": "EU",
"latitudine": 42.431079,
"longitudine": 14.182981,
"altitudine_ft": 48,
"altitudine_m": 15,
"curse_regulate": true,
"wikipedia": "https://en.wikipedia.org/wiki/Abruzzo_Airport",
"site": "http://www.abruzzo-airport.it/eng/index.php"
}
],
"observatie": "Din cele ~86.000 de înregistrări, doar ~9.000 au cod IATA: restul sunt heliporturi, aerodromuri private și piste închise. Filtrează cu `cu_iata=1` dacă vrei doar aeroporturi comerciale.",
"sursa": {
"nume": "OurAirports — export public zilnic",
"url": "https://ourairports.com/data/",
"licenta": "Domeniu public („All data is released to the Public Domain\"), fără obligație de atribuire."
}
},
"meta": {
"paginare": {
"pagina": 1,
"per_pagina": 10,
"total": 51,
"pagini": 6
}
}
}
GEThttps://oneapi.ro/api/utile/v1/aeroporturi
{
"data": {
"aeroporturi": [
{
"ident": "EKYT",
"iata": "AAL",
"icao": "EKYT",
"nume": "Aalborg Airport",
"tip": "large_airport",
"municipiu": "Aalborg",
"tara": {
"cod": "DK",
"nume": "Danemarca"
},
"regiune": {
"cod": "DK-81",
"nume": "North Jutland"
},
"continent": "EU",
"latitudine": 57.094763,
"longitudine": 9.84993,
"altitudine_ft": 10,
"altitudine_m": 3,
"curse_regulate": true,
"wikipedia": "https://en.wikipedia.org/wiki/Aalborg_Airport",
"site": "http://www.aal.dk"
}
],
"observatie": "Din cele ~86.000 de înregistrări, doar ~9.000 au cod IATA: restul sunt heliporturi, aerodromuri private și piste închise. Filtrează cu `cu_iata=1` dacă vrei doar aeroporturi comerciale.",
"sursa": {
"nume": "OurAirports — export public zilnic",
"url": "https://ourairports.com/data/",
"licenta": "Domeniu public („All data is released to the Public Domain\"), fără obligație de atribuire."
}
},
"meta": {
"paginare": {
"pagina": 1,
"per_pagina": 50,
"total": 86112,
"pagini": 1723
}
}
}
Error codes
| Code | Slug | When it occurs |
|---|---|---|
| 401 | neautentificat | Token missing, invalid, expired or revoked. |
| 403 | feature_indisponibil | The current plan does not include the feature the route depends on. |
| 422 | validare | An undeclared parameter or a value that fails validation (q, tara, continent, tip, cu_iata, cu_curse). The offending field is in detalii. |
| 429 | cota_depasita | The plan's monthly quota has been exceeded (see Retry-After). |
All errors share the same shape. eroare.cod is stable and is the value you should branch on in code — not the text in mesaj, which may change.
{
"eroare": {
"cod": "validare",
"mesaj": "An undeclared parameter or a value that fails validation (q, tara, continent, tip, cu_iata, cu_curse). The offending field is in detalii.",
"detalii": {
"q": [
"The value sent does not satisfy the parameter rule."
]
}
}
}