OpenSky Network Live Flight Scraper
parseforge/opensky-network-scraper
Developer toolsTravelAutomation
Scrapes live aircraft state vectors from OpenSky Network. Returns each flight as a flat row with callsign, position, altitude, velocity, heading, and on-ground status. Supports bounding box and on-ground filters.
- Total users
- 5
- Monthly active
- 1
- Total runs
- 1K
- Bookmarked
- 0
- Rating
- Not rated yet
- Last modified
- 12 days ago
Overview
OpenSky Network Live Flight Scraper
Scrape live flight positions from OpenSky Network, worldwide or within any bounding box. Every aircraft comes with its callsign, position, altitude, speed, heading, and on-ground status. No API key or login. Export to CSV, JSON, Excel, or XML.
OpenSky Network's public API gives you raw ADS-B data, but you still need to handle pagination, rate limits, and JSON parsing. This Actor reads the live state vectors directly, filters by geographic bounding box or on-ground status, and returns each flight as one flat row. No registration, no API key, no code.
| Who uses it | What they scrape OpenSky Network for |
|---|---|
| Aviation enthusiasts | Track flights over their city or favorite airport in real time |
| Data analysts | Build datasets of live air traffic for research or visualization |
| App developers | Feed live flight positions into a map or tracking dashboard |
| Logistics companies | Monitor aircraft movements near specific regions or airports |
| Journalists | Investigate flight patterns or track specific aircraft of interest |
What it does
This Actor collects live aircraft state vectors from the OpenSky Network and returns each flight as a flat row with callsign, position, altitude, velocity, heading, and on-ground status.
- π Global or bounding box: collect flights worldwide, or restrict to a rectangle with min/max latitude and longitude.
- π¬ On-ground filter: return only aircraft currently on the ground, useful for airport surface monitoring.
- π’ Max items control: cap the number of flights per run from 1 up to 1,000,000.
- π¦ Flat output: every flight is one row, ready for CSV, JSON, Excel, or XML export.
Results export to CSV, JSON, Excel, or XML, or straight from the API.
What you can do with OpenSky Network data
π Monitor flights over a region.
A data analyst sets a bounding box around a major airport and collects all live flights to study traffic patterns and peak hours.
π¬ Track aircraft on the ground.
An airport operations team enables the on-ground filter to list all aircraft currently on the tarmac for ground handling coordination.
π Build a live air traffic dataset.
A researcher runs the Actor every 5 minutes to accumulate a time series of flight positions for airspace usage analysis.
πΊοΈ Feed a flight tracking map.
A developer uses the Actor's output to populate a real-time map showing aircraft positions, callsigns, and altitudes.
π Investigate specific flights.
A journalist filters by a geographic area to spot aircraft of interest and then looks up their callsign and route in the results.
Why choose this scraper
| What you get | |
|---|---|
| No API key | Uses the OpenSky Network public API, no registration or authentication needed |
| Live data | Returns current state vectors, not historical or cached data |
| Flexible filtering | Bounding box and on-ground filters let you target exactly the flights you need |
| Scalable | Collect up to 1,000,000 flights per run |
| Structured output | Each flight is a flat row with consistent fields, ready for analysis |
How it compares
This Actor focuses on simple, fast live state vector collection with bounding box and on-ground filters, while competitors may offer additional features like flight history or different output options.
| Feature | ParseForge | OpenSky Flight Scraper - Live Aircraft & ADS-B Data | Live Flight Tracker (OpenSky) | OpenSky Live Aircraft Tracker Scraper |
|---|---|---|---|---|
| Live aircraft positions | Yes | Yes | Yes | Yes |
| Bounding box filter | Yes | Not listed | Yes | Not listed |
| On-ground filter | Yes | Not listed | Not listed | Not listed |
| Max items control | Yes | Not listed | Not listed | Not listed |
| Flight history | Not listed | Yes | Not listed | Not listed |
| No API key required | Yes | Yes | Yes | Yes |
Configure the run
Drive the Actor with an optional bounding box and on-ground filter. All four boundary fields must be set together for the geographic filter to apply, and the on-ground toggle restricts results to aircraft on the ground. The Input tab lists every parameter.
A first run with the defaults:
{
"maxItems": 10
}
A larger pull:
{
"maxItems": 200
}
Pricing
Pay-per-result: $0.031 per result collected. You pay only for the results written to your dataset.
| Results collected | Approximate cost |
|---|---|
| 100 results | $3.10 |
| 1,000 results | $31.00 |
| 10,000 results | $310.00 |
New Apify accounts start with $5 in free credit.
Free users
Free-plan runs return up to 10 results as a preview. Upgrade your Apify plan to collect up to 1,000,000 results per run.
Run it
- Create a free Apify account with $5 in credit.
- Open the OpenSky Network Live Flight Scraper.
- Set your inputs and any filters, then click Start.
- Export the results as CSV, Excel, JSON, or XML from the Dataset tab.
Run it programmatically through the Apify API (run-sync-get-dataset-items) or the ApifyClient for JavaScript and Python.
Use with AI agents (MCP)
Give an AI agent live access to OpenSky Network through the Model Context Protocol. Add the Actor to Claude, Cursor, or any MCP client:
claude mcp add --transport http apify "https://mcp.apify.com?tools=parseforge/opensky-network-scraper"
Then prompt it in plain language to run the scraper and read back the results.
Troubleshooting
Why am I getting no results?
Check your bounding box coordinates. All four fields must be set together, and the min values must be less than the max values. Also, if on-ground filter is enabled, there may be no aircraft on the ground in that area at the moment.
Why are some flights missing fields like callsign or origin country?
The OpenSky Network API sometimes returns null for certain fields if the data is not available. This is normal and not an error with the Actor.
Why did the run stop before reaching my max items?
The Actor stops when it has collected all flights that match your filters. If the total number of matching flights is less than your max items, the run ends early.
Why is the on-ground filter not working?
Make sure the on-ground checkbox is enabled in the input. Also, the API's on-ground status is based on the aircraft's reported state, which may be delayed or inaccurate for some flights.
Can I get historical flight data?
No, this Actor only returns live state vectors. For historical data, you would need to use a different actor or the OpenSky Network's historical API with an account.
FAQ
| Question | Answer |
|---|---|
| Do I need an OpenSky Network account or API key? | No. This Actor uses the OpenSky Network public API, which does not require authentication for basic state vector requests. You can start scraping immediately. |
| How many flights can I get in one run? | You can set the maximum number of flights from 1 to 1,000,000. The Actor will stop after collecting that many flights or when no more match your filters. |
| Can I filter by geographic area? | Yes. Set the min and max latitude and longitude to define a bounding box. All four fields must be provided together for the filter to apply. Leave them empty to get global flights. |
| What does the on-ground filter do? | When enabled, the Actor returns only aircraft that are currently on the ground. This is useful for monitoring airport surfaces or parked aircraft. |
| What data fields are included for each flight? | Each flight includes its ICAO 24-bit address, callsign, origin country, last contact time, position (latitude and longitude), barometric and geometric altitude, velocity, heading, vertical rate, and on-ground status. |
| How fresh is the data? | The Actor calls the OpenSky Network API at the time of the run, so you get the latest state vectors available. The API updates every few seconds. |
| Can I export the results? | Yes. Apify automatically stores results in a dataset that you can export to CSV, JSON, Excel, XML, or other formats. |
| Is there a rate limit? | The OpenSky Network public API has rate limits for anonymous users. The Actor makes a single request per run, so it stays well within those limits. |
| Can I schedule this Actor to run periodically? | Yes. You can set up a schedule in Apify to run the Actor every few minutes or hours to collect a time series of flight data. |
| What is the difference between this and the OpenSky Flight Scraper? | Both scrape the same source, but this Actor focuses on live state vectors with simple bounding box and on-ground filters, while others may offer historical data or different output formats. |
Related actors
Browse the full ParseForge collection for more scrapers.
π Need help? Email parseforge@protonmail.com with your run ID, your input, and what you expected.
β οΈ Disclaimer. This Actor is unofficial and is not affiliated with, endorsed by, or sponsored by OpenSky Network. It collects only publicly available data. You are responsible for using the collected data in compliance with the source's terms of service and applicable data-protection laws, including GDPR, CCPA, and PIPL. Do not use it to collect personal data unlawfully.
Input
| Field | Type | What it does | Default |
|---|---|---|---|
| maxItems | integer | Maximum number of flights to collect per run. | 10 |
| minLatitude | number | Southern boundary of the bounding box (degrees, -90 to 90). Leave empty to get global flights. | not set |
| maxLatitude | number | Northern boundary of the bounding box (degrees, -90 to 90). | not set |
| minLongitude | number | Western boundary of the bounding box (degrees, -180 to 180). | not set |
| maxLongitude | number | Eastern boundary of the bounding box (degrees, -180 to 180). | not set |
| onGroundOnly | boolean | When enabled, returns only aircraft currently on the ground. | false |
Pricing
from $29.00 per 1,000 results
| Charged for | What it is | Price each |
|---|---|---|
| result | Single result in the default dataset. | $0.029 to $0.031 |
Tiered: the lower figure is the price on a higher Apify plan. Billing and the free credit live on Apify.
API
One POST returns the dataset directly. Same shape for every scraper in the library, so swapping the slug is the only change.
curl -X POST "https://api.apify.com/v2/acts/parseforge~opensky-network-scraper/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"helloWorld": 123
}' Examples
Input that runs as-is.
{
"helloWorld": 123
} Reviews
No reviews yet. Be the first.
Issues
We build and maintain this scraper, so a problem with it comes to us. Report it on the Apify listing and the thread stays attached to the scraper where the next person can find it: open an issue.
Broken and urgent, or you would rather not post in public? Write to parseforge@protonmail.com and it reaches the people who wrote it.
Related scrapers
Run OpenSky Network Live Flight Scraper on Apify All scrapers
