Every API here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for apis
7 MCP tools reach this
find_apisBrowse and filter every API in the catalog.
get_api_artifactsOne API's artifacts, grouped by type.
get_openapiThe primary OpenAPI for this API.
find_similar_apisAPIs that look like this one.
apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
resolveTurn a domain, URL or GitHub org into the provider it belongs to.
find_cohortsEvery scored population of providers in the catalog.
All 92 tools →
Call it yourself
curl for this page
This API
curl "https://apis.io/api/v1/apis/adsbexchange-geopolitical-filtering-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we
store it to create your key and to recognise you if you sign in with another
provider. See our Privacy Policy and
Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: ADSB Exchange Geopolitical Filtering API
description: "The ADSB Exchange API provides real-time access to live global flight data,\nenabling retrieval of detailed information on aircraft positions, flight events, historical trace files,\nand many more aviation metrics. <br /><br />\nKnown for its accurate data, ADSB Exchange API is ideal\nfor aviation tracking applications, research, and analytics, offering extensive coverage powered by a\nglobal network of ADS-B and MLAT receivers. <br /><br />\nThis documentation is available in <a href=\"/api/aircraft/v2/docs\">ReDoc</a> and <a href=\"/api/aircraft/v2/docs/swagger\">Swagger</a> formats.\n<p>\n<b>Important developer notes:</b><br />\n<ul>\n <li>When designing API client, please ensure that all requests include the 'Accept-Encoding' header with 'gzip' value.</li>\n <li>When property values are not available, they will be omitted from the response object overall.</li>\n <li>When parsing JSON response do not hard-code the order of properties. Use property names to access values.</li>\n <li>We will never remove or rename properties. However, we may add new properties. Please ensure your code is resilient to new additive properties on the response objects.</li>\n</ul>\n</p>"
termsOfService: https://www.adsbexchange.com/terms-of-use/
contact:
name: Contact ADSB Exchange
url: https://www.adsbexchange.com/products/enterprise-api/
version: v2
x-logo:
url: https://adsbexchange.com/wp-content/uploads/ax_logo_background_api-scaled.avif
href: '#'
servers:
- url: https://gateway.adsbexchange.com/api/aircraft/v2
tags:
- name: Geopolitical Filtering
description: 'Allows filtering live data based on geopolitical boundaries, such as states/provinces, countries, regions, or even continents.
All endpoints support ISO 3166-1 alpha-2 country codes and ISO 3166-2 subdivision (states/provinces) codes.
<br /><br />
World boundaries are based on <a href="https://public.opendatasoft.com/explore/dataset/world-administrative-boundaries/map/" target="_blank">OpenDataSoft</a> dataset.
<b>Attribution:</b><br />
This API includes data from <a href="https://marineregions.org/" target="_blank">Marine Regions</a>, licensed under
<a href="https://creativecommons.org/licenses/by/4.0/" target="_blank">Creative Commons Attribution 4.0 International (CC BY 4.0)</a>.<br />
<i>Flanders Marine Institute (2023). Maritime Boundaries Geodatabase, version 12. DOI: <a href="https://doi.org/10.14284/632" target="_blank">10.14284/632</a></i>'
paths:
/geospatial/country/{country}:
get:
tags:
- Geopolitical Filtering
summary: Get aircraft by country
description: 'Returns aircraft within the boundaries of the given country.
See below examples of how to query aircraft by country.
Country must be specified as ISO 3166-1 alpha-2 code.
The complete list of supported country codes can be accessed here: https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2
USA:
* `/api/aircraft/v2/geospatial/country/US`
Canada:
* `/api/aircraft/v2/geospatial/country/CA`'
operationId: GetApiAircraftV2GeospatialCountry
parameters:
- name: country
in: path
required: true
description: Country ISO 3166-1 alpha-2 code. Case-insensitive.
schema:
type: string
x-position: 1
- type: string
name: Accept-Encoding
in: header
required: true
description: The encoding type the client will accept in the response. API call must use compression.
default: gzip
example: gzip
responses:
'200':
description: Response containing a collection of aircraft models.
content:
application/json:
schema:
$ref: '#/components/schemas/AircraftCollectionResponse'
'402':
description: Payment Required
content:
application/json:
schema:
$ref: '#/components/schemas/ApiUnauthorizedResponse'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/ApiForbiddenResponse'
'429':
description: Rate Limit Exceeded
content:
application/json:
schema:
$ref: '#/components/schemas/ApiTooManyRequestsResponse'
'500':
description: Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/ProblemDetails'
security:
- X-Api-Key: []
/geospatial/country/{country}/subdivisions:
get:
tags:
- Geopolitical Filtering
summary: Get subdivisions by country code
description: "Whe country code is provided, this endpoint will return a list of state/province subdivisions for the given country.\n\nThis endpoint is complimentary to `/geospatial/country/{country}/subdivision/{subdivision}` endpoint.\n\nThe complete list of supported country codes and states/provinces can be accessed here:\n* Countries: https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2\n* States/Provinces: https://en.wikipedia.org/wiki/ISO_3166-2\n\n\nFor example, to get a list of subdivisions for the United States you would call:\n```\nGET /api/aircraft/v2/geospatial/country/US/subdivisions\n```\nand expect a response with a collection of subdivisions:\n```json\n{\n \"country\": \"us\",\n \"subdivisions\": [\n {\n \"name\": \"Washington\",\n \"iso_a2\": \"US\",\n \"iso_3166_2\": \"US-WA\",\n \"adm1_code\": \"USA-3519\",\n \"name_alt\": \"WA|Wash.\",\n \"region\": \"West\"\n },\n ...\n ]\n}\n```\nand in requests to `/geospatial/country/{country}/subdivision/{subdivision}` endpoint you would use `iso_3166_2` code as a subdivision identifier."
operationId: GetApiAircraftV2GeospatialCountrySubdivisions
parameters:
- name: country
in: path
required: true
description: Country ISO 3166-1 alpha-2 code. Case-insensitive.
schema:
type: string
x-position: 1
- type: string
name: Accept-Encoding
in: header
required: true
description: The encoding type the client will accept in the response. API call must use compression.
default: gzip
example: gzip
responses:
'200':
description: Response containing a collection of subdivisions.
content:
application/json:
schema:
$ref: '#/components/schemas/GeoboundaryCountrySubdivisionsResponse'
'402':
description: Payment Required
content:
application/json:
schema:
$ref: '#/components/schemas/ApiUnauthorizedResponse'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/ApiForbiddenResponse'
'429':
description: Rate Limit Exceeded
content:
application/json:
schema:
$ref: '#/components/schemas/ApiTooManyRequestsResponse'
'500':
description: Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/ProblemDetails'
security:
- X-Api-Key: []
/geospatial/country/{country}/subdivision/{subdivision}:
get:
tags:
- Geopolitical Filtering
summary: 'Get aircraft by country subdivision: state/province'
description: "Returns aircraft within the boundaries of the given country's subdivision: state or province.\n\n* Country must be specified as ISO 3166-1 alpha-2 code.\n* State/province must be specified as ISO 3166-2 code. You can omit the country code prefix.\nBoth of the arguments are case-insensitive.\n \nSee below examples of how to query aircraft by country and state/province.\n \nUSA - California:\n* `/api/aircraft/v2/geospatial/country/US/subdivision/CA`\n* `/api/aircraft/v2/geospatial/country/US/subdivision/US-CA`\n \nCanada - British Columbia:\n* `/api/aircraft/v2/geospatial/country/CA/subdivision/BC`\n* `/api/aircraft/v2/geospatial/country/CA/subdivision/CA-BC`\n \nFrance - Paris:\n* `/api/aircraft/v2/geospatial/country/FR/subdivision/75`\n* `/api/aircraft/v2/geospatial/country/FR/subdivision/FR-75`\n\n\nThe complete list of supported country codes and states/provinces can be accessed here:\n* Countries: https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2\n* States/Provinces: https://en.wikipedia.org/wiki/ISO_3166-2\n\nYou can get supported states/provinces by making GET request to\n`/geospatial/country/{country}/subdivisions` endpoint."
operationId: GetApiAircraftV2GeospatialCountrySubdivision
parameters:
- name: country
in: path
required: true
description: Country ISO 3166-1 alpha-2 code. Case-insensitive.
schema:
type: string
x-position: 1
- name: subdivision
in: path
required: true
description: Subdivision (state/province) ISO_3166-2 code. You can omit the country code prefix. Case-insensitive.
schema:
type: string
x-position: 2
- type: string
name: Accept-Encoding
in: header
required: true
description: The encoding type the client will accept in the response. API call must use compression.
default: gzip
example: gzip
responses:
'200':
description: Response containing a collection of aircraft models.
content:
application/json:
schema:
$ref: '#/components/schemas/AircraftCollectionResponse'
'402':
description: Payment Required
content:
application/json:
schema:
$ref: '#/components/schemas/ApiUnauthorizedResponse'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/ApiForbiddenResponse'
'429':
description: Rate Limit Exceeded
content:
application/json:
schema:
$ref: '#/components/schemas/ApiTooManyRequestsResponse'
'500':
description: Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/ProblemDetails'
security:
- X-Api-Key: []
/geospatial/region/{region}:
get:
tags:
- Geopolitical Filtering
summary: Get aircraft by geographical region
description: "Returns aircraft within the boundaries of the given geographical region.\n\nSupported regions:\n* Northern/Eastern/Southern/Western Europe\n* North/Central/South America\n* Central/East/South-East/South/West Asia\n* North/Middle/East/South/West Africa\n* Australia and New Zealand\n* Caribbean\n* Melanesia\n* Micronesia\n* Polynesia\n\n\nTo filter by 'North America' use pure text value from the list above. Remove spaces, or URL-encode them. Case-insensitive.\n \n* `/api/aircraft/v2/geospatial/region/NorthAmerica`\n* `/api/aircraft/v2/geospatial/region/North%20America`\n\n\nTo filter by 'South-East Asia':\n \n* `/api/aircraft/v2/geospatial/region/south-eastasia`\n* `/api/aircraft/v2/geospatial/region/South-East%20Asia`"
operationId: GetApiAircraftV2GeospatialRegion
parameters:
- name: region
in: path
required: true
description: Name of the geographical region from the list above. Case-insensitive.
schema:
type: string
x-position: 1
- type: string
name: Accept-Encoding
in: header
required: true
description: The encoding type the client will accept in the response. API call must use compression.
default: gzip
example: gzip
responses:
'200':
description: Response containing a collection of aircraft models.
content:
application/json:
schema:
$ref: '#/components/schemas/AircraftCollectionResponse'
'402':
description: Payment Required
content:
application/json:
schema:
$ref: '#/components/schemas/ApiUnauthorizedResponse'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/ApiForbiddenResponse'
'429':
description: Rate Limit Exceeded
content:
application/json:
schema:
$ref: '#/components/schemas/ApiTooManyRequestsResponse'
'500':
description: Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/ProblemDetails'
security:
- X-Api-Key: []
/geospatial/continent/{continent}:
get:
tags:
- Geopolitical Filtering
summary: Get aircraft by continent
description: 'Returns aircraft within the boundaries of the given continent.
Supported continents:
* Americas
* Africa
* Asia
* Europe
* Oceania
* Antarctica
To filter by continent use pure text value from the list above.
Examples:
* `/api/aircraft/v2/geospatial/continent/Europe`
* `/api/aircraft/v2/geospatial/continent/Antarctica`'
operationId: GetApiAircraftV2GeospatialContinent
parameters:
- name: continent
in: path
required: true
description: Name of the continent from the list above. Case-insensitive.
schema:
type: string
x-position: 1
- type: string
name: Accept-Encoding
in: header
required: true
description: The encoding type the client will accept in the response. API call must use compression.
default: gzip
example: gzip
responses:
'200':
description: Response containing a collection of aircraft models.
content:
application/json:
schema:
$ref: '#/components/schemas/AircraftCollectionResponse'
'402':
description: Payment Required
content:
application/json:
schema:
$ref: '#/components/schemas/ApiUnauthorizedResponse'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/ApiForbiddenResponse'
'429':
description: Rate Limit Exceeded
content:
application/json:
schema:
$ref: '#/components/schemas/ApiTooManyRequestsResponse'
'500':
description: Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/ProblemDetails'
security:
- X-Api-Key: []
components:
schemas:
GeoboundaryCountrySubdivision:
type: object
description: Represents the response from the geoboundary endpoint.
additionalProperties: false
properties:
name:
type: string
description: 'Name of the country subdivision.
Example: California'
iso_a2:
type: string
description: 'ISO 3166-1 alpha-2 country code.
Example: US'
iso_3166_2:
type: string
description: 'ISO 3166-2 country subdivision code.
Example: US-CA (for California)'
adm1_code:
type:
- string
- 'null'
description: 'ADM1 code.
Example: USA-3521'
name_alt:
type:
- string
- 'null'
description: 'Alternative name of the country subdivision.
Example: CA|Calif.|Cal.'
region:
type:
- string
- 'null'
description: 'Name of the region.
Example: West'
AcasResolutionAdvisoryResponse:
type: object
description: ACAS Resolution Advisory Class
additionalProperties: false
properties:
utc:
type:
- string
- 'null'
description: UTC timestamp of the advisory.
unix_timestamp:
type:
- number
- 'null'
description: Unix timestamp.
format: double
bytes:
type:
- string
- 'null'
description: Advisory bytes as a string.
ARA:
type:
- string
- 'null'
description: Advisory ARA field.
RAT:
type:
- string
- 'null'
description: Advisory RAT field.
MTE:
type:
- string
- 'null'
description: Advisory MTE field.
RAC:
type:
- string
- 'null'
description: Advisory RAC field.
advisory_complement:
type:
- string
- 'null'
description: Advisory complement description.
advisory:
type:
- string
- 'null'
description: Advisory description.
TTI:
type:
- string
- 'null'
description: TTI field.
threat_id_hex:
type:
- string
- 'null'
description: Threat ID in hexadecimal.
LastPositionDataResponse:
type: object
description: 'When the regular lat and lon are older than 60 seconds
they are no longer considered valid, this will provide
the last position and show the age for the last position.
Aircraft will only be in the aircraft json if a position
has been received in the last 60 seconds or if any message
has been received in the last 30 seconds.'
additionalProperties: false
properties:
lat:
type:
- number
- 'null'
format: float
lon:
type:
- number
- 'null'
format: float
nic:
type:
- integer
- 'null'
description: Navigation Integrity Category (2.2.3.2.7.2.6)
format: int32
rc:
type:
- integer
- 'null'
description: 'Radius of Containment, meters; a measure of position integrity
derived from NIC and supplementary bits. (2.2.3.2.7.2.6, Table 2-69)'
format: int32
seen_pos:
type:
- number
- 'null'
description: How long ago (in seconds before “now”) the position was last updated
format: double
ApiUnauthorizedResponse:
type: object
additionalProperties: false
properties:
msg:
type: string
reason:
type:
- string
- 'null'
AircraftCollectionResponse:
type: object
description: Response envelope for the multiple aircraft endpoint.
additionalProperties: false
properties:
ac:
type: array
description: List of aircraft with all available information.
items:
$ref: '#/components/schemas/AircraftSingleResponse'
msg:
type: string
description: Message indicating the status of the request overall.
now:
type: integer
description: Unix timestamp of the current UTC time on the server (ms).
format: int64
total:
type: integer
description: The number of aircraft in the response.
format: int32
ctime:
type: integer
description: Unix timestamp (ms) of when the underlying data was last updated.
format: int64
ptime:
type: integer
description: Time taken on server to process the request (ms).
format: int64
AircraftSingleResponse:
type: object
description: Full aircraft model with all available information.
additionalProperties: false
properties:
hex:
type: string
description: The ICAO 24-bit address (hex) of the aircraft.
type:
type:
- string
- 'null'
description: The type of message (e.g., adsb_icao, tisb_icao, etc.).
flight:
type:
- string
- 'null'
description: The flight number or callsign.
r:
type:
- string
- 'null'
description: Registration or tail number.
t:
type:
- string
- 'null'
description: Aircraft type (e.g., B38M for Boeing 737 MAX 8).
dbFlags:
type:
- integer
- 'null'
description: Bitfield for certain database flags, below and must be a bitwise and … check the documentation for your programming language
example: " military = dbFlags & 1;\n interesting = dbFlags & 2;\n PIA = dbFlags & 4;\n LADD = dbFlags & 8;"
alt_baro:
description: Barometric altitude in feet.
alt_geom:
type:
- number
- 'null'
description: Geometric altitude in feet.
format: float
gs:
type:
- number
- 'null'
description: Ground speed in knots.
format: float
ias:
type:
- number
- 'null'
description: Indicated airspeed in knots
format: float
tas:
type:
- number
- 'null'
description: True airspeed in knots.
format: float
mach:
type:
- number
- 'null'
description: Mach number (speed as a fraction of the speed of sound).
format: float
wd:
type:
- integer
- 'null'
description: Wind direction in degrees.
ws:
type:
- integer
- 'null'
description: Wind speed in knots.
oat:
type:
- integer
- 'null'
description: Outer/Static air temperature (OAT), typically somewhat inaccurate at lower altitudes.
tat:
type:
- integer
- 'null'
description: Total air temperature (TAT), typically somewhat inaccurate at lower altitudes.
track:
type:
- number
- 'null'
description: Aircraft track over the ground in degrees.
format: float
track_rate:
type:
- number
- 'null'
description: Rate of change of the track in degrees per second.
format: float
roll:
type:
- number
- 'null'
description: Aircraft roll angle in degrees.
format: float
mag_heading:
type:
- number
- 'null'
description: Magnetic heading in degrees.
format: float
true_heading:
type:
- number
- 'null'
description: True heading in degrees.
format: float
baro_rate:
type:
- integer
- 'null'
description: Barometric vertical rate (climb or descent) in feet per minute.
format: int32
geom_rate:
type:
- integer
- 'null'
description: Geometric vertical rate (climb or descent) in feet per minute.
format: int32
squawk:
type:
- string
- 'null'
description: Transponder squawk code.
emergency:
type:
- string
- 'null'
description: Emergency code (if applicable).
category:
type:
- string
- 'null'
description: Aircraft category based on size and weight.
nav_qnh:
type:
- number
- 'null'
description: QNH setting (altimeter pressure setting) in hPa.
format: float
nav_altitude_mcp:
type:
- integer
- 'null'
description: MCP (Mode Control Panel) altitude setting in feet.
nav_altitude_fms:
type:
- integer
- 'null'
description: Selected altitude from the Flight Management System (FMS) in feet.
nav_heading:
type:
- number
- 'null'
description: MCP heading setting in degrees.
format: float
nav_modes:
type:
- array
- 'null'
description: 'Navigation modes: autopilot, vnav, althold, approach, lnav, tcas'
items:
type: string
rr_lat:
type:
- number
- 'null'
description: Rough estimated latitude based on receiver's position.
format: float
rr_lon:
type:
- number
- 'null'
description: Rough estimated longitude based on receiver's position.
format: float
lastPosition:
description: Last known position if lat/lon are older than 60 seconds.
oneOf:
- $ref: '#/components/schemas/LastPositionDataResponse'
gpsOkBefore:
type:
- number
- 'null'
description: Indicator of whether GPS was working well before degradation.
format: double
gpsOkLat:
type:
- number
- 'null'
description: Indicator of whether GPS was working well before degradation - latitude.
format: double
gpsOkLon:
type:
- number
- 'null'
description: Indicator of whether GPS was working well before degradation - longitude.
format: double
lat:
type:
- number
- 'null'
description: Latitude of the aircraft.
format: float
lon:
type:
- number
- 'null'
description: Longitude of the aircraft.
format: float
nic:
type:
- integer
- 'null'
description: Navigation Integrity Category.
format: int32
rc:
type:
- integer
- 'null'
description: Containment Radius of Accuracy in meters.
seen_pos:
type:
- number
- 'null'
description: Time since the last positional update in seconds.
format: float
version:
type:
- integer
- 'null'
description: ADS-B version.
format: int32
nic_baro:
type:
- integer
- 'null'
description: Barometric NIC (Navigation Integrity Category).
nac_p:
type:
- integer
- 'null'
description: Navigation Accuracy Category for Position.
nac_v:
type:
- integer
- 'null'
description: Navigation Accuracy Category for Velocity.
sil:
type:
- integer
- 'null'
description: Source Integrity Level.
sil_type:
type:
- string
- 'null'
description: Source Integrity Level type (e.g., per hour or per sample).
gva:
type:
- integer
- 'null'
description: Geometric Vertical Accuracy.
sda:
type:
- integer
- 'null'
description: System Design Assurance.
alert:
type:
- integer
- 'null'
description: Alert status (whether the transponder is indicating an alert).
spi:
type:
- integer
- 'null'
description: Special Position Identification (SPI) status.
mlat:
type:
- array
- 'null'
description: List of fields derived from MLAT data (e.g., "lat", "lon", "nic", "rc").
items:
type: string
tisb:
type:
- array
- 'null'
description: List of fields derived from TIS-B data (e.g., "gs", "lat", "lon", "nic", "rc", "nac_p", "sil", "sil_type").
items:
type: string
messages:
type:
- integer
- 'null'
description: The number of messages received from the aircraft.
format: int64
seen:
type:
- number
- 'null'
description: Time since the last message was received, in seconds.
format: float
rssi:
type:
- number
- 'null'
description: Signal strength in dBFS.
format: float
acas_ra:
description: ACAS Resolution Advisory data (experimental, subject to change).
oneOf:
- $ref: '#/components/schemas/AcasResolutionAdvisoryResponse'
now:
type:
- integer
- 'null'
description: Unix milliseconds timestamp of the time the data was put into the cache.
format: int64
geometries:
type:
- array
- 'null'
description: 'Contains caller-supplied collection of properties (up to 5) per matched geometry.
Properties are propagated from each geometry object in the filter request.'
items:
type: object
additionalProperties:
type: string
ApiForbiddenResponse:
type: object
additionalProperties: false
properties:
msg:
type: string
reason:
type:
- string
- 'null'
ApiTooManyRequestsResponse:
type: object
additionalProperties: false
properties:
message:
type: string
GeoboundaryCountrySubdivisionsResponse:
type: object
description: Response from the geoboundary endpoint containing country subdivisions.
additionalProperties: false
properties:
country:
type: string
description: ISO 3166-1 alpha-2 country code.
subdivisions:
type: array
description: List of subdivisions for the country available in the API.
items:
$ref: '#/components/schemas/GeoboundaryCountrySubdivision'
ProblemDetails:
type: object
additionalProperties: {}
properties:
type:
type:
- string
- 'null'
title:
type:
- string
- 'null'
status:
type:
- integer
- 'null'
format: int32
detail:
type:
- string
- 'null'
instance:
type:
- string
- 'null'
securitySchemes:
X-Api-Key:
type: apiKey
description: Provide your API key via x-api-key header to access the API.
name: x-api-key
in: header
x-generator: NSwag v14.1.0.0 (NJsonSchema v11.0.2.0 (Newtonsoft.Json v13.0.0.0))