Skip to main content

fr24

image image image image

fr24 is a Python library for data retrieval from Flightradar24 using gRPC and JSON APIs.

For a detailed quickstart, examples and references, please refer to the documentation.

Features

fr24 supports the following endpoints:

Endpoint Description Type
Live Feed Current real-time flight data within a bounding box. gRPC
Live Feed Playback Historical snapshot of live feed data for a specific time. gRPC
Flight List List of flights based on registration or flight number. JSON
Playback Historical state vectors data for a flight. JSON
Airport Arrivals Aircraft arrival information for a given airport. JSON
Airport Search Search for airports by keyword. JSON
Nearest Flights Real-time flight data for aircraft within a given radius. gRPC
Follow Flight (streaming) Historical track and real-time updates for a live flight. gRPC
Top Flights List of the most viewed flights. gRPC
Live Flight Status Real-time status updates for live flights. gRPC
Flight Details Detailed information for a live flight. gRPC
Playback Flight Detailed information for a historical flight. gRPC

fr24 is built with modularity and performance in mind, utilising asynchronous programming to handle concurrent requests efficiently.

Installation

For the latest stable version:

pip install 'fr24[curl]'
pip install 'fr24[httpx]'

[!IMPORTANT] fr24 does not come with a HTTP client library by default. You must pick one:

  • fr24[curl]: curl client (recommended), supports gRPC and JSON
  • fr24[httpx]: HTTPX client, supports gRPC only

If you need to_polars(), write_table(), scan_table(), or CSV/Parquet (de)serialisation, install fr24[polars].

Other feature flags:

  • fr24[polars]: dataframe and table I/O support via Polars
  • fr24[cli]: command-line interface dependencies, including polars and rich
  • fr24[tui]: terminal UI dependencies, including cli

For a development version, clone the repository and run in the directory:

uv venv
source .venv/bin/activate
uv sync --all-extras --dev

This installs all optional dependencies, typing, linting, testing and documentation tools.

Examples

Fetch live feed data for a specific bounding box:

import asyncio

from fr24 import FR24, BoundingBox

bbox = BoundingBox(south=42, north=52, west=-8, east=10)


async def main() -> None:
    async with FR24() as client:
        result = await client.live_feed.fetch(bbox)
        print(result.response.content)  # access raw, undecoded bytes
        # convert to other formats:
        print(result.to_proto())  # protobuf object
        print(result.to_dict())  # nested dictionary
        print(result.to_polars())  # polars dataframe

        # write to a parquet file:
        result.write_table("feed.parquet")


if __name__ == "__main__":
    asyncio.run(main())

To improve efficiency and reduce API calls, fr24 provides a simple file-based cache:

import asyncio

from fr24 import FR24, FR24Cache, BBOX_FRANCE_UIR

cache = FR24Cache.default()


async def main() -> None:
    async with FR24() as client:
        result = await client.live_feed.fetch(BBOX_FRANCE_UIR)
        # on Linux, this writes to ~/.cache/fr24/feed/{timestamp_s}.parquet
        result.write_table(cache)


def some_time_later() -> None:
    for fp in cache.live_feed.glob("*"):
        print(fp)
        print(cache.live_feed.scan_table(fp).collect())


if __name__ == "__main__":
    asyncio.run(main())
    some_time_later()

fr24 also comes with a CLI for quick data retrieval:

$ fr24 live-feed --bounding-box "42.0,52.0,-8.0,10.0" -o feed.parquet
[00:00:00] INFO     using environment `subscription_key` and      __init__.py:98
                    `token`                                                     
[00:00:00] INFO     HTTP Request: POST                           _client.py:1740
                    https://data-feed.flightradar24.com/fr24.fee                
                    d.api.v1.Feed/LiveFeed "HTTP/2 200 OK"                      
           INFO     wrote 1500 rows to                              utils.py:229
                    `/home/user/feed.parquet
$ duckdb -c "describe select * from 'feed.parquet'";
┌─────────────────┬──────────────────────┬─────────┬───┬─────────┬─────────┐
│   column_name   │     column_type      │  null   │ … │ default │  extra  │
│     varchar     │       varchar        │ varchar │   │ varchar │ varchar │
├─────────────────┼──────────────────────┼─────────┼───┼─────────┼─────────┤
│ timestamp       │ TIMESTAMP WITH TIM…  │ YES     │ … │ NULL    │ NULL    │
│ flightid        │ UINTEGER             │ YES     │ … │ NULL    │ NULL    │
│ latitude        │ FLOAT                │ YES     │ … │ NULL    │ NULL    │
│ longitude       │ FLOAT                │ YES     │ … │ NULL    │ NULL    │
│ track           │ USMALLINT            │ YES     │ … │ NULL    │ NULL    │
│ altitude        │ INTEGER              │ YES     │ … │ NULL    │ NULL    │
│ ground_speed    │ SMALLINT             │ YES     │ … │ NULL    │ NULL    │
│ on_ground       │ BOOLEAN              │ YES     │ … │ NULL    │ NULL    │
│ callsign        │ VARCHAR              │ YES     │ … │ NULL    │ NULL    │
│ source          │ UTINYINT             │ YES     │ … │ NULL    │ NULL    │
│ registration    │ VARCHAR              │ YES     │ … │ NULL    │ NULL    │
│ origin          │ VARCHAR              │ YES     │ … │ NULL    │ NULL    │
│ destination     │ VARCHAR              │ YES     │ … │ NULL    │ NULL    │
│ typecode        │ VARCHAR              │ YES     │ … │ NULL    │ NULL    │
│ eta             │ UINTEGER             │ YES     │ … │ NULL    │ NULL    │
│ squawk          │ USMALLINT            │ YES     │ … │ NULL    │ NULL    │
│ vertical_speed  │ SMALLINT             │ YES     │ … │ NULL    │ NULL    │
│ position_buffer │ STRUCT(delta_lat I…  │ YES     │ … │ NULL    │ NULL    │
├─────────────────┴──────────────────────┴─────────┴───┴─────────┴─────────┤
│ 18 rows                                              6 columns (5 shown) │
└──────────────────────────────────────────────────────────────────────────┘

For a full list of commands and options, run:

fr24 --help
# for a terminal interface, install fr24[tui] and run:
fr24 tui

Disclaimer

[!IMPORTANT]
Code has been developed for educational purposes ONLY. Do not abuse it.

{
  "copyright": "Copyright (c) 2014-2026 Flightradar24 AB. All rights reserved.",
  "legalNotice": "The contents of this file and all derived data are the property of Flightradar24 AB for use exclusively by its products and applications. Using, modifying or redistributing the data without the prior written permission of Flightradar24 AB is not allowed and may result in prosecutions."
}

Official Resources: Python SDK, API

Release files for fr24 0.4.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for fr24 0.4.0
File Size Uploaded
fr24-0.4.0.tar.gz 424.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for fr24 0.4.0
File Interpreter ABI Platform
fr24-0.4.0-py3-none-any.whl Python 3 none any Details

Total release size: 542.0 kB

Release files / fr24-0.4.0.tar.gz

Download URL fr24-0.4.0.tar.gz
Size 424.9 kB
Tags Source
SHA-256 checksum
How to use checksums
c9c02d28a406e49dcc70727ffc9e7ff1f77333ce0adb794dde6b9d39ee01e24f
BLAKE2b-256 checksum
How to use checksums
2d7f5ce98d21f87738b6be9f0445e2d357a0ea94dac50d8e43c85d6a3886b4c3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 6, 2026.

Transparency log

Release files / fr24-0.4.0-py3-none-any.whl

Download URL fr24-0.4.0-py3-none-any.whl
Size 117.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
4f6341a2852e5905dffdcbcbb274d1761aa770264632e15db577b18932583a32
BLAKE2b-256 checksum
How to use checksums
6cda7976ee088fa32a61518709ab636187bb5417a377989a238fe47ae877372e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 6, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.4.0 This release

2 release files

0.3.1

2 release files

0.3.0

2 release files

0.2.4

2 release files

0.2.3

2 release files

0.2.2

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page