Award seat availability, as open data.
RewardFlights publishes frequent-flyer award seat availability as plain JSON files in a public git repository — which cabins have award seats, on which routes, on which dates. Free to use under an open license, with the full change history built in.
Open Database License (ODbL) v1.0 · British Airways first, more airlines to come
/why-open
Why this is open
Award availability answers a small, honest question: on this date, in this cabin, can a seat be booked with points? It’s the kind of fact that should be easy to check. Mostly, it isn’t — it lives behind subscriptions and dashboards, visible to whoever pays to watch it. This project takes the other path: publish the facts, openly, and see what people build.
Level information, not paywalls.
When availability data is sold, the people best served by it are the people who can afford tooling — and everyone else finds out too late. Opening the data removes that asymmetry. Whether you fly twice a decade or write software for people who fly weekly, you’re reading the same files as everyone else.
Open data compounds.
A closed feed ends at its last subscriber. An open dataset is a commons: every alert bot, notebook, map, and analysis built on it makes the next one easier to build. The share-alike license keeps the loop honest — adapt the database and publish it, and your version stays open too. Improvements flow back instead of forking off behind new paywalls.
History you can audit.
Every fact here arrives as a git commit. You don’t have to trust a freshness claim — run git log and read the receipts. Anyone can check out last month’s dataset and reproduce an analysis exactly. A proprietary feed can’t offer that, because you can only ever see the version they’re showing you now.
/the-data
One file per route, per date
Everything is addressable by path. Airline, origin, destination and departure date live in the file’s location — never repeated inside it — so the file itself carries only the availability payload.
Routes are keyed by IATA metropolitan codes, so one route covers a whole city pair: LON is every London airport, TYO is Tokyo Haneda and Narita, NYC is JFK and Newark. Routes are directional — outbound and inbound live in separate directories.
A file exists for a date if — and only if — that date has award availability in at least one cabin. A missing file means “no award seats that day” (or a route not yet covered), not an error. The dataset contains no empty files: absence is the answer.
{
// airline / origin / destination / date are in the PATH, not the file
"cabinsAvailable": ["M", "W", "C"], // always present
"flights": [ ... ] // optional per-flight detail, where available
}
Per-flight detail
When flight-level detail is present, each entry adds flight numbers, operating carriers, connection points, local departure and arrival times, the Avios peak/off-peak band, a Reward Flight Saver flag, and per-cabin seat counts. Absent just means the breakdown isn’t in yet — cabinsAvailable still tells you the date is bookable.
{
"flightNumbers": ["BA0007"],
"carriers": ["BA"],
"via": [], // [] = non-stop
"depart": "13:00", // local time
"arrive": "08:55",
"peak": "off-peak",
"rewardFlightSaver": true,
"seats": { "W": 6, "C": 1, "F": 0 }
}
Full field-by-field reference: FIELDS.md
/history
The history is the dataset
Files are re-committed only when their availability actually changes. That one rule turns the repository into something bigger than a snapshot: the git history of any file is a free time-series. git log -p on a single route-and-date file replays every change to that date’s availability — when cabins opened, when they sold out, when they came back. No API for “historical data”, no export format, no extra product tier. It’s just git, which you already have.
$ git log -p -- airlines/british-airways/data/LON-TYO/2026-10-15.json commit 3bad928 · three weeks later "cabinsAvailable": [- "M", "W", "C", "F"+ "M", "C" ] commit 84e4e8b · first seen+ {+ "cabinsAvailable": ["M", "W", "C", "F"]+ }
Illustrative history. Run it on any file in the repo for the real thing.
/use-it
Start with one URL
No API keys, no sign-up, no client library. Every file is fetchable raw from GitHub, and the whole dataset clones in one command. Three ways in:
Fetch a day
# One route + one date = one URL.
curl -s https://raw.githubusercontent.com/intUnderflow/rewardflights/main/airlines/british-airways/data/LON-TYO/2026-11-25.json
# → { "cabinsAvailable": ["M", "W", "C"] }
# A 404 isn't an error: it means no award availability on that date.
Check a date in JavaScript
const base = "https://raw.githubusercontent.com/intUnderflow/rewardflights/main";
const res = await fetch(`${base}/airlines/british-airways/data/LON-TYO/2026-11-25.json`);
if (res.status === 404) {
console.log("No award seats that day."); // absence is the answer
} else {
const { cabinsAvailable } = await res.json();
console.log("Award seats in:", cabinsAvailable); // e.g. ["M", "W", "C"]
}
Clone it, replay the history
git clone https://github.com/intUnderflow/rewardflights.git
cd rewardflights
# Every date with availability on a route:
ls airlines/british-airways/data/LON-TYO/
# How one date's availability changed over time — the free time-series:
git log -p -- airlines/british-airways/data/LON-TYO/2026-11-25.json
# How fresh is this file?
git log -1 --format=%cd -- airlines/british-airways/data/LON-TYO/2026-11-25.json
That’s the entire integration surface: paths, JSON, and git. If your language can read a file, it can read this dataset.
/built-with-it
We built one to show what’s possible
RewardFlights — a live award-seat calendar.
To show what the data makes possible, we built one ourselves: a live calendar of award availability for every route in the dataset, running entirely on the files in this repository — the same files you can clone. If a calendar is possible, so are fare alerts, route notebooks, availability maps, trip planners and research. Consider this the invitation.
Built something on this data? Open an issue on the repo — a link here is the reward.
/license
Openly licensed, share-alike
The database is licensed under the Open Database License (ODbL) v1.0, and its individual contents under the Database Contents License (DbCL) v1.0. In practice: you can copy, share, adapt and build on this data for any purpose, including commercially. In return, credit the source — and if you publicly distribute an adapted database, license it under ODbL too, so it stays as open as it arrived.
Suggested attribution
Contains data from RewardFlights (github.com/intUnderflow/rewardflights), made available under the Open Database License (ODbL) v1.0.
Full texts: ODbL v1.0 · DbCL v1.0. Provided as-is, with no warranty — see the licenses for the full disclaimer.