1. /Charts
  2. /Airport Charts

Airport Charts

Restrictions/LimitationsRead the “Restrictions/Limitations” section

The Navigraph Charts API provides access to Navigraph Charts in external client applications. Due to licensing conditions with our data providers, such applications are limited to those that are part of a virtual environment, such as an EFB displayed inside a virtual cockpit. To use the API, the end user signs in with his or her Navigraph account in the client application, and if the end user has a valid Navigraph Ultimate subscription, full access is granted. If the end user does not have a valid subscription, the end user may access two demo airports, NZWN and YBBN. Users who have not logged in to their Navigraph account may not access our services at all.

Charts must not be stored, cached or be accessible offline. We only support online usage of our content. Charts must be fetched from server when requested to be displayed by the end user.

Accessing the APIRead the “Accessing the API” section

Checking if the user has a valid subscriptionRead the “Checking if the user has a valid subscription” section

For a user to be able to view charts from airports other than the two demo airports NZWN and YBBN, the user needs an active Navigraph Ultimate subscription. Without an ongoing subscription, the APIs will return a demo image when requesting a chart that the user does not have access to. This can be verified by looking at the subscriptions claim in the decoded access token. If the array contains charts, then the user have access.

 "subscriptions": [

Getting information about airportsRead the “Getting information about airports” section

To get information about airports you can use the /airport endpoint like this:

GET /v2/airport/NZWN HTTP/1.1
Authorization: Bearer <access-token>

Here is a snippet showing the information for the airport NZWN.

  "icao_airport_identifier": "NZWN", // Unique airport icao identifier (4 Characters)
  "iata_airport_designator": "WLG", // Airport IATA designator (3 Characters)
  "longest_runway": 5955, // Longest runway in feet (1-5 numeric characters)
  "latitude": -41.327222222222228, // Latitude coordinate to the airport
  "longitude": 174.80527777777778, // Longitude coordinate to the airport
  "magnetic_variation": 23.0, // Specifies the angular difference between True North and Magnetic North at the airport defined in the record
  "elevation": 41, // Airport elevation in feet
  "name": "WELLINGTON INTL", // Used to further define the record by name
  "city": "WELLINGTON", // Contains the full name of a city associated  with the airport identified in the record.
  "state_province_code": "", // Contains the State/Province Code. For the United States, the value for the code is the same as the postal code for the given state.
  "state_province_name": "",
  "country_code": "NZL", // Country Code (3 Characters)
  "country_name": "New Zealand",

  /* Used to indicate which types of fuels are available at the airport or heliport.
        Can contain (73 Octane, 80-87 Octane, 100 low lead (LL) octane, 100-130 octane, 115-145 octane, Mogas, JET, JET A, JET A-1, Jet A+,
        JET B, JET 4, JET 5) and is empty if it's unknown
  "fuel_types": ["100 low lead (LL) octane", "JET A", "JET 5"],

  /*  Used to indicate what type of oxygen servicing is available at the airport or heliport.
        Can contain (High Pressure, Low Pressure, High Pressure Bottle, Low Pressure Bottle) and is empty if it's unknown
  "oxygen": ["Low Pressure Bottle"],

  /*  Used to indicate which types of repairs are available at the airport or heliport.
        Can contain (Minor Engine, Major Engine, Minor Airframe, Major Airframe) and is empty if it's unknown
  "repairs": ["Minor Engine", "Major Airframe", "Major Engine"],

  /* Indicates if landing fees are charged for private or non-revenue producing aircraft.  These fees will vary from no charge for aircraft below certain weight – no charge if fuel purchased – to charges for all landing aircraft.  This field provides only a true/false indication, no specific details on what aircraft types must pay under what conditions are provided. */
  "landing_fee": true,

  /* Used to indicate if the airport/heliport is equipped with JASU and if that equipment is available to a public user of the airport/heliport */
  "jet_starting_unit": false,

  "precision_airport": true, // Indicates whether an airport supports precision approaches
  "beacon": false, // Indicates if an airports has Beacon Lights. Beacon Lights are normally provided at any airport/heliport intended for use at night
  "customs": true, // Used to provide an indication on the availability of a government customs facility at the airport
  "airport_type": "Public/civil", // Can be Public/civil, Private, Military or Jointly operated public/military
  "time_zone": "-12:00=UTC", // Time zone diff to Zulu time
  "icao_code": "NZ", // Indicates the region that an airport is in.
  "daylight_savings": true, // True if daylight savings is used
  "datum_code": "WGE", // Defines the Local Horizontal Reference Datum to which the Airport Reference Point (ARP) for an airport, is associated
  "revision_date": "20210305", // Format YYYYMMDD
  "parsed_cycle": "2110", // To what cycle this information was parsed
  "std_charts": true, // True if we have standard charts for this airport
  "cao_charts": true, // True if we have CAO charts for this airport
  "vfr_charts": false // True if we have VFR charts for this airport

Requesting and downloading charts from the APIRead the “Requesting and downloading charts from the API” section

Once we have verified that the user actually has a subscription, we can start downloading charts. Every airport has a corresponding JSON document that holds information about the charts available.

GET /v2/charts/NZWN?version=STD HTTP/1.1
Authorization: Bearer <access-token>

Here is a snippet showing the information for one chart within the charts-JSON for NZWN. As we set STD as version this will be the standard charts. It's also possible to use the option CAO to get the CAO chart for airports that has it, which can be determined from the cao_charts property from the response of the previous request. CAO (Commercial Airline Overlay) charts are optimized for cat C/D aircraft. More information is available here:

    "charts": [
            "image_day": "nzwn102_d.png", // Filename of the day version of the chart
            "image_night": "nzwn102_n.png", // Filename of the night version of the chart
            "thumb_day": "nzwn102_thumb_d.png", // Filename of the day version of the chart thumbnail
            "thumb_night": "nzwn102_thumb_n.png", // Filename of the night version of the chart thumbnail
            "icao_airport_identifier": "NZWN", // Airport ICAO code
            "id": "NZWN102", // Unique chart id
            "category": "ARR", // The category the chart belongs to. Can be (ARR, DEP, REF, APT, APP)
            "precision": null, // True if it's a precision approach, false if not, and null if it doens't apply (not an approach)
            "index_number": "10-2", // Unique chart index number for this airport only
            "name": "ATSUN 3A, DOGAD 3A, LADIT 6A RNAV ARRS",
            "revision_date": "20200515", // Format YYYYMMDD
            "is_georeferenced": true, // Tells if the chart is geo referenced
            "width": 1508, // Width of the entire chart image
            "height": 2500, // Height of the entire chart image
            "bounding_boxes": { // The bounding boxes of the geo referenced area of the chart. Defined as [x1,y1,x2,y2] with origin bottom-left. Note that this can be null if the chart is not geo referenced.
                "planview": { // This is the bounding box for the full geo referenced area
                    "pixels": { // Box area in pixels
                        "x1": 56,
                        "y1": 2442,
                        "x2": 1450,
                        "y2": 69
                    "latlng": { // Box area of the corresponding geographical coordinates.
                        "lng1": 174.577667,
                        "lat1": -41.863,
                        "lng2": 175.658472,
                        "lat2": -40.473222
                "insets": [ // Inset boxes in the geo referenced area that are not to scale and therefore not geo referenced.
                        "pixels": {
                        "pixels": {
                        "pixels": {
            "procedures": [ // Procedures linked to this chart.
            "runways": [], // Runways linked to this chart.
            "image_day_url": "", // URL for the day version of the chart
            "image_night_url": "", // URL for the night version of the chart
            "thumb_day_url": "", // URL for the day version of the thumbnail
            "thumb_night_url": "" // URL for the night version of the thumbnail

The charts array holds the meta-data for all the charts. The charts are high resolution png files. To get the day-version of the above chart we use the image_day_url property of the chart.

GET /v2/charts/NZWN/nzwn101b_d.png HTTP/1.1
Authorization: Bearer <access-token>

Chart Geo ReferencingRead the “Chart Geo Referencing” section

If the is_georeferenced property of the chart-JSON is true , the chart is geo-referenced. The bounding box for the map-area of the chart is found in the property planview which is defined as [x1, y1, x2, y2] with origin bottom-left. There can be insets on top of the map-area which are not to scale and should therefore not be considered as part of the map-area, bounding boxes for the insets (if there are any) can be found in insets.

Watermarking of ChartsRead the “Watermarking of Charts” section

As a small anti-piracy measure it is recommended that you apply a watermark message on top of the charts, preferably in the margin with the string "This chart is linked to Navigraph account <username>".

You will find this information by calling the userinfo endpoint:

GET /connect/userinfo HTTP/1.1
Authorization: Bearer <access-token>

In the JSON structure returned you will find the username in the field preferred_username.