Developer API
Programmatic access to vataware data
API Overview
vataware provides a JSON API that mirrors the website's functionality. Every standard web page has a JSON equivalent, making it easy to access flight tracking data programmatically. The API requires no authentication for public data and uses the same URLs as the website.
💡 Pro tip: To get JSON instead of HTML, send an Accept: application/json header with your request.
Usage Guidelines
To ensure a great experience for all users, please follow these guidelines:
- ✓ Be respectful of server resources - avoid making excessive requests
- ✓ Set a meaningful User-Agent header that includes your application name and contact information
- ✓ Cache responses appropriately - data updates approximately every minute
- ✓ Handle errors gracefully and implement exponential backoff for retries
- ✓ Respect any rate limit headers that may be implemented in the future
- ✓ Do not scrape HTML pages - use the JSON API instead
User-Agent Requirements
Please use a descriptive User-Agent header:
✓ Good Examples
MyFlightTracker/1.0 (https://myapp.com; contact@myapp.com)
AviationStats/2.1 (+https://github.com/username/repo)
VATSIMTools/1.0 (Discord: username#1234)
✗ Bad Examples
curl/7.64.1
python-requests/2.28.0
Mozilla/5.0 (compatible)
Accessing JSON Data
All standard web pages have JSON equivalents. Send an Accept header to get JSON instead of HTML.
curl -H "Accept: application/json" https://vataware.net/flights
Example Endpoints
Common endpoints you might want to use:
/flights
- List of active flights
/airports/KJFK
- Airport details and current operations
/airlines/UAL
- Airline information and active flights
/countries/US
- Country statistics and flights
/pilots/1234567
- Pilot information by CID
/flights/{id}/positions
- Flight position history (JSON only)
/flights/{id}/flightplans
- Flight plan revisions (JSON only)
Response Format
JSON responses follow a consistent structure. The resource key matches the endpoint type (e.g., "flights", "airports", "pilot"):
Single Resource:
{
"flight": {
"id": "12345",
"callsign": "UAL123",
"departure": "KJFK",
"arrival": "EGLL",
"status": "enroute",
// ... additional fields
}
}
Collection with Pagination:
{
"flights": [
// ... array of flight objects
],
"pagination": {
"per_page": 50,
"next_cursor": "eyJpZCI6MTIzNDU2fQ",
"prev_cursor": null,
"has_more": true
}
}
Search Results:
{
"query": "your search term",
"results": [
// ... array of results with URLs
]
}
Pagination
The API uses cursor-based pagination for better performance and consistency.
To get the next page, include the next_cursor value as a query parameter:
curl -H "Accept: application/json" "https://vataware.net/flights?cursor=encoded_cursor_string"
Important Notes:
- • Cursors are opaque strings - do not attempt to parse or modify them
- • Each page typically returns 50 items
- • Check has_more to determine if additional pages exist
- • Cursors may expire after extended periods
Rate Limits
Currently, there are no enforced rate limits. However, we ask that you be respectful of server resources. If rate limits are implemented in the future, standard HTTP rate limit headers will be used:
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 59
X-RateLimit-Reset: 1640995200
Please implement proper handling for 429 (Too Many Requests) responses in case rate limiting is enabled.
Questions & Support
If you have questions about the API or need assistance:
- • Email: admin@vataware.net
- • Please include your User-Agent string when reporting issues