ParseForge Scrapers

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.

Run this scraper See the API call
Total users
5
Monthly active
1
Total runs
1K
Bookmarked
0
Rating
Not rated yet
Last modified
12 days ago

Overview

ParseForge

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

  1. Create a free Apify account with $5 in credit.
  2. Open the OpenSky Network Live Flight Scraper.
  3. Set your inputs and any filters, then click Start.
  4. 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

FieldTypeWhat it doesDefault
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 forWhat it isPrice 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.

POST Β· run and get results
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.

input.json
{
  "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