Observed flight fares over time: median, 10th percentile and minimum per route and departure month. Updated daily.
See the code823,323 observed fares on 49,726 city pairs, collected continuously since 2026-06-14. Not a search engine snapshot: the same routes are observed again and again, so what you get here is the distribution of a route's price, which is the thing a live search can never tell you. Updated daily. Source: https://piratefly.com/?src=github
| File | One row per | Columns |
|---|---|---|
fares-by-month.csv | route × departure month | observations, median, 10th percentile, minimum |
routes.csv | route | observations, median, minimum, months covered, first/last observation |
summary.json | today | totals, observation window, published thresholds |
daily/<date>.json | each day | the immutable daily snapshot — this directory is the series |
Prices are in EUR, per one-way fare as advertised, including the price shown at collection time.
A search engine tells you today's price. This tells you whether today's price is good: the median of what the same route has actually cost, the 10th percentile (what a good deal looks like), the lowest ever observed, and which departure months are cheap on that route. That judgement needs a history, and a history cannot be reconstructed after the fact — which is why this file exists.
The live version of this judgement, per route and in one call, is a free public MCP server
(flight_price_verdict, cheapest_months, when_to_book): https://piratefly.com/?src=github
Piratefly flight fare history, 2026-09-23. 823,323 observed fares, 25,389 routes. https://piratefly.com/?src=github
Licence: CC BY 4.0 — use it, say where it came from.
33 commits
Observed flight fares over time: median, 10th percentile and minimum per route and departure month. Updated daily.
See the code823,323 observed fares on 49,726 city pairs, collected continuously since 2026-06-14. Not a search engine snapshot: the same routes are observed again and again, so what you get here is the distribution of a route's price, which is the thing a live search can never tell you. Updated daily. Source: https://piratefly.com/?src=github
| File | One row per | Columns |
|---|---|---|
fares-by-month.csv | route × departure month | observations, median, 10th percentile, minimum |
routes.csv | route | observations, median, minimum, months covered, first/last observation |
summary.json | today | totals, observation window, published thresholds |
daily/<date>.json | each day | the immutable daily snapshot — this directory is the series |
Prices are in EUR, per one-way fare as advertised, including the price shown at collection time.
A search engine tells you today's price. This tells you whether today's price is good: the median of what the same route has actually cost, the 10th percentile (what a good deal looks like), the lowest ever observed, and which departure months are cheap on that route. That judgement needs a history, and a history cannot be reconstructed after the fact — which is why this file exists.
The live version of this judgement, per route and in one call, is a free public MCP server
(flight_price_verdict, cheapest_months, when_to_book): https://piratefly.com/?src=github
Piratefly flight fare history, 2026-09-23. 823,323 observed fares, 25,389 routes. https://piratefly.com/?src=github
Licence: CC BY 4.0 — use it, say where it came from.
33 commits