VATSIM Feed

Updated Apr 09 2021

VATSIM Feed - is a current information about online controllers, pilots, preflights, available data servers of VATSIM network.

We do download the VATSIM feed and provide it as a JSON-formatted data, so you can use it in your own project for whatever you need. Feed contents isn't changed with one exception: VATSIM original feed contains arrays (lists) of data for each key of the feed, while we provide dictionary formatted data for each key.
Example:
Original feed


    ...
    "pilot_ratings": [
        {
            "id": 0,
            "short_name": "NEW",
            "long_name": "Basic Member"
        },
        {
            "id": 1,
            "short_name": "PPL",
            "long_name": "Private Pilot Licence"
        },
    ...
    

Our feed

    ...
    "pilot_ratings": {
        "0": {
            "id": 0,
            "short_name": "NEW",
            "long_name": "Basic Member"
        },
        "1": {
            "id": 1,
            "short_name": "PPL",
            "long_name": "Private Pilot Licence"
        },
    ...
    

Output contains these key sections:

  • general: information about current feed, including update timestamp, number of connected clients, feed version, feed update interval in minutes, etc.
  • pilots: list of the online pilots
  • controllers: list of the online controllers (including OBS connections)
  • atis: ATIS stations list
  • servers: available data servers
  • prefiles: prefiled flights
  • facilities: shortenings and full decoding of the ATC facility IDs
  • ratings: shortenings and full decoding of the ATC rating IDs
  • pilot_ratings: shortenings and full decoding of the pilots rating IDs

Usage

Endpoint: /feed

Request method: GET

Headers:

Header parameterDescription
X-API-Key Your unique API key
pretty If not set or set to 0 - return minified JSON output. If set to 1 - will return pretty-printed JSON.

Example request:

Python

    import requests

    url = "https://api.vacc-ua.org/api/feed"

    headers = {
        'X-API-Key': "123456",
        'pretty': "1",
        'Cache-Control': "no-cache"
    }

    response = requests.request("GET", url, headers=headers)
    print(response.text)


PHP

    <?php

    $curl = curl_init();

    curl_setopt_array($curl, array(
        CURLOPT_PORT => "443",
        CURLOPT_URL => "https://api.vacc-ua.org/api/feed",
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_ENCODING => "",
        CURLOPT_MAXREDIRS => 10,
        CURLOPT_TIMEOUT => 30,
        CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
        CURLOPT_CUSTOMREQUEST => "GET",
        CURLOPT_HTTPHEADER => array(
            "X-API-Key: 123456",
            "Cache-Control: no-cache",
            "pretty: 1"
        ),
    ));

    $response = curl_exec($curl);
    $err = curl_error($curl);

    curl_close($curl);

    if ($err) {
        echo "cURL Error #:" . $err;
    } else {
        echo $response;
    }

Example response:


{
    "general": {
        "version": 3,
        "reload": 1,
        "update": "20210408215324",
        "update_timestamp": "2021-04-08T21:53:24.8614399Z",
        "connected_clients": 857,
        "unique_users": 816
    },
    "pilots": {
        "AFR1719": {
            "cid": 1422745,
            "name": "GOMBERT Laurent LFPG",
            "callsign": "AFR1719",
            "server": "GERMANY-2",
            "pilot_rating": 0,
            "latitude": -22.44371,
            "longitude": -43.34159,
            "altitude": 12041,
            "groundspeed": 318,
            "transponder": "3152",
            "heading": 240,
            "qnh_i_hg": 30.14,
            "qnh_mb": 1021,
            "flight_plan": {
                "flight_rules": "I",
                "aircraft": "H/A333/L",
                "aircraft_faa": "H/A333/L",
                "aircraft_short": "A333",
                "departure": "LIRF",
                "arrival": "SBGL",
                "alternate": "SBFI",
                "cruise_tas": "484",
                "altitude": "40000",
                "deptime": "0935",
                "enroute_time": "1126",
                "fuel_time": "1318",
                "remarks": "OPR BY AIRFRANCE VIRTUEL.COM // PBN/A1B1C1D1O1S2 DOF/210408 REG/FLOLO EET/LFFF0040 LECB0102 LECM0144 GMMM0221 GCCC0324 GOOO0502 GVSC0507 GOOO0557 SBAO0722 SBRE0815 SBCW1049 OPR/AFR RMK/TCAS SIMBRIEF /V/",
                "route": "GISPA OLBEK SUPUX UZ924 RIPAL UM603 ALT UN851 TOSGA/N0477F350 UN851 VJF UL82 IBALU UN857 DEREV/N0480F360 UN857 ORABI/N0477F380 UN857 PUGUN/N0471F400 UN857 MOLSU UTBOM2A",
                "revision_id": 3
            },
            "logon_time": "2021-04-08T09:16:24.7404465Z",
            "last_updated": "2021-04-08T21:53:24.4895677Z"
        },
    },
    "controllers": {
        "UTSD_CTR": {
            "cid": 1466444,
            "name": "Akhmadjon Saidov",
            "callsign": "UTSD_CTR",
            "frequency": "134.800",
            "facility": 6,
            "rating": 5,
            "server": "GERMANY-1",
            "visual_range": 300,
            "text_atis": [
                "Samarkand control",
                "PDC and CPDLC available in test mode - logon is \"UTSD\""
            ],
            "last_updated": "2021-04-08T21:53:19.1338253Z",
            "logon_time": "2021-04-08T07:01:48.2502973Z"
        },
    },
    "atis": {
        "KBDL_ATIS": {
            "cid": 1441734,
            "name": "Jeff Marcotte",
            "callsign": "KBDL_ATIS",
            "frequency": "118.150",
            "facility": 4,
            "rating": 3,
            "server": "CANADA",
            "visual_range": 50,
            "atis_code": "S",
            "text_atis": [
                "BRADLEY INTERNATIONAL AIRPORT ATIS INFORMATION S. 2051Z. 04005KT",
                "10SM SCT070 SCT250 23/04 A3003 (THREE ZERO ZERO THREE). RWYS 6",
                "IN USE. EXPECT VIS APP. RUNWAY 15/33 CLSD. NOTAMS... READ BACK",
                "ALL HOLD SHORT INSTRUCTIONS AND ASSIGNED ALTITUDES.. ...ADVS YOU",
                "HAVE INFO S."
            ],
            "last_updated": "2021-04-08T21:53:23.0722393Z",
            "logon_time": "2021-04-08T17:37:38.9184126Z"
        },
    },
    "servers": {
        "CANADA": {
            "ident": "CANADA",
            "hostname_or_ip": "165.22.239.218",
            "location": "Toronto, Canada",
            "name": "CANADA",
            "clients_connection_allowed": 1
        },
    },
    "prefiles": {
        "TUI251A": {
            "cid": 1561281,
            "name": "Noel Petermayer",
            "callsign": "TUI251A",
            "flight_plan": {
                "flight_rules": "I",
                "aircraft": "B738/M-SDE2E3FGHIRWXY/LB1",
                "aircraft_faa": "B738/L",
                "aircraft_short": "B738",
                "departure": "EDDP",
                "arrival": "EDDF",
                "alternate": "EDDL",
                "cruise_tas": "402",
                "altitude": "24000",
                "deptime": "1925",
                "enroute_time": "0045",
                "fuel_time": "0207",
                "remarks": "PBN/A1B1C1D1S1S2 DOF/210408 REG/N806SB EET/EDGG0013 OPR/TUI PER/C RMK/TCAS SIMBRIEF/ SHARED COCKPIT WITH TUI251 /V/",
                "route": "ORTAG4N ORTAG T177 ODIPI T157 KERAX KERAX1A",
                "revision_id": 0
            },
            "last_updated": "2021-04-08T19:15:06.3973462Z"
        },
    },
    "facilities": {
        "0": {
            "id": 0,
            "short": "OBS",
            "long": "Observer"
        },
    },
    "ratings": {
        "0": {
            "id": 0,
            "short": "SUS",
            "long": "Suspended"
        },
    },
    "pilot_ratings": {
        "0": {
            "id": 0,
            "short_name": "NEW",
            "long_name": "Basic Member"
        },
    }
}
To consume space, only one object in the each section is provided as example, as the whole feed in a prime-time could be up to 1MB in a size.