>
AI-AUGMENTED · GDS-DERIVED · ARC-ACCREDITED

The award availability API,
straight from the source.

A clean JSON API for live business, first, and economy award space — pulled direct from global airline inventory, not scraped from airline websites. Built for LLM agents, travel tools, and backend integrations.

WHY DIRECT-SOURCE

Scrapers break. Inventory feeds don't.

Resilient by design

Airline website redesigns and anti-bot defenses don't touch us. We query airline inventory directly, so your integration doesn't break every time a carrier ships a new front end.

Clean, normalized data

Responses are plain facts: carrier, flight, route, times, cabin, and seat count — already mapped to human cabin names. No fare-code decoding, no parsing required on your end.

Premium space others miss

Surfaces long-haul business and first award space — including alliance and partner segments — that consumer airline sites and scraper tools frequently don't show.

Honest about limits: award space is volatile and released in real time, so availability changes minute to minute. A small set of carriers block their award space from open distribution entirely (e.g. Singapore Suites, Emirates First) — we don't pretend to see what isn't there.

COVERAGE

What the award availability API covers

Airlines

Major carriers across Star Alliance, oneworld and SkyTeam, plus independents, queried one airline at a time. Where a carrier's space only appears under a partner's flight number, the response shows it via operated_by.

Cabins

Economy, business and first. Ask for the cabin you want; results carry the cabin name, not a fare code.

Dates

Up to about 11 months ahead, which is as far as airlines release award space. One date per query: fan out across dates for flexible searches.

Not covered: carriers that withhold award space from distribution entirely (e.g. Singapore Suites, Emirates First). If a carrier is not in the GDS, it is not in the results.

QUICKSTART

One query, one answer

Each request searches exactly one origin, one destination, one airline, and one date. For flexible searches, make one query per combination. Authenticate with a bearer token.

POST · awardsecrets.com/api.php
Bearer auth
REQUEST
curl -X POST https://awardsecrets.com/api.php \
  -H "Authorization: Bearer ak_live_…" \
  -H "Content-Type: application/json" \
  -d '{"origin":"JFK","destination":"LHR","airline":"VS","date":"2027-03-05","cabin":"business"}'
200 OK — FACTS ONLY (NO PRICING, NO FARE CODES)
{
  "status": "ok",
  "quota_remaining": 4998,
  "found": true,
  "flight_count": 11,
  "observed_at": "2026-10-10T14:05:00Z",
  "dates": [
    {
      "date": "2027-03-05",
      "observed_at": "2026-10-10T14:05:00Z",
      "flights": [
        {
          "carrier": "VS",
          "flight_number": "VS4",
          "operated_by": null,
          "origin": "JFK",
          "destination": "LHR",
          "depart": "2027-03-05T18:00",
          "arrive": "2027-03-06T06:20",
          "equipment": "351",
          "cabin": "business",
          "seats": 4
        }
        … 10 more
      ]
    }
  ]
}

operated_by names the operating airline when it differs from the marketing airline (codeshares, e.g. "DL"); null means the marketing airline operates the flight. Rarely, the operator is given only in a form we can't yet resolve; it is then null too, and we add such names as we find them. Connections return one object per segment. Times are ISO-8601 local. seats on a segment is its count within its journey (9 means nine or more); for what is bookable use the journey's itineraries[].seats, always 1 to 8. observed_at is when that availability was observed in airline inventory (UTC); results can be up to 12 hours old.

REDEMPTION PRICING

What a flight costs in points

A separate endpoint on the same key and the same monthly allowance: one pricing request counts as one query. Give it the airline that operates the flight and the route, and it returns every programme that can price it from a published award chart, cheapest first, each labelled with how the price was worked out. Programmes without a published chart are listed as unpriced, with the reason. We never estimate a number.

POST · awardsecrets.com/points.php
Bearer auth
REQUEST · QATAR AIRWAYS, MELBOURNE TO LONDON VIA DOHA, BUSINESS
curl -X POST https://awardsecrets.com/points.php \
  -H "Authorization: Bearer ak_live_…" \
  -H "Content-Type: application/json" \
  -d '{"operation":"best_path","carrier":"QR","origin":"MEL","destination":"LHR","via":["DOH"],"cabin":"business"}'
200 OK — A REAL RESPONSE, ABRIDGED
{
  "status": "ok",
  "quota_remaining": 999,
  "operation": "best_path",
  "result": {
    "priced": [
      { "programme": "JAL_MILEAGE_BANK", "programme_name": "JAL Mileage Bank",
        "miles": 110000, "price_type": "fixed", "pricing_basis": "per_trip",
        "surcharge_level": "low", "as_of": "2026-10-10", "stale": false },
      { "programme": "ALASKA", "programme_name": "Alaska Atmos Rewards",
        "miles": 130000, "price_type": "starting_at", "pricing_basis": "journey",
        "price_note": "Starting rate: the programme publishes minimums; …" },
      { "programme": "AVIOS", "programme_name": "British Airways Club (Avios)",
        "miles": 175250, "pricing_basis": "per_flight_sum",
        "legs": [ { "from": "MEL", "to": "DOH", "miles": 113250 },
                  { "from": "DOH", "to": "LHR", "miles": 62000 } ],
        "stale": true, "stale_note": "This chart value is pending re-verification; …" },
      { "programme": "QANTAS_FF", "programme_name": "Qantas Frequent Flyer",
        "miles": 182900, "price_type": "fixed", "pricing_basis": "per_trip",
        "surcharge_level": "high", "as_of": "2025-08-05" }
    ],
    "unpriced": [
      { "programme": "AADVANTAGE", "unpriced_reason": "no_chart_entry" },
      { "programme": "ASIA_MILES", "unpriced_reason": "no_chart_entry" }
    ],
    "stale_count": 1
  }
}

Same trip, four programmes, three ways of pricing: JAL and Qantas price the whole trip once on its total distance; British Airways prices each flight; Alaska prices by region and publishes minimums. Every option carries all the fields below. The request prices the trip as Qatar-operated throughout to illustrate the fields. In practice Melbourne–Doha is VA7, a Virgin Australia flight operated with a Qatar aircraft (sold as QR8402), so that journey is mixed-operator: price each operating airline separately, and expect programmes to treat the whole journey differently.

Request

operation
best_path (what this flight costs, by programme), chart (one programme’s chart price), programme (what a programme can book) or transfers (where a card currency can transfer).
carrier
The airline that operates the flight (two-letter code). Programmes price by operating airline.
origin, destination
Three-letter airport codes.
cabin
economy, business or first.
via
Optional. Connecting airports, e.g. ["DOH"]. Needed for correct prices on connections: some programmes price each flight, others the total distance.
date
Optional. Departure date, YYYY-MM-DD. Seasonal charts (ANA’s own flights) use it to pick the season; without it they return a from price with every season listed.
currencies_held
Optional. Card currencies (e.g. AMEX_MR, CHASE_UR) or programmes you hold directly (e.g. AVIOS). Omit it to price every programme that can book the flight.

What each price tells you

miles
Points required, one way, per person. For off-peak/peak charts, the off-peak price.
price_type
fixed: a published chart price. starting_at: the programme publishes minimums (show it as “from”); the actual price can be higher.
round_trip
true when miles is a round-trip price because the programme does not sell one-way awards on that route (ANA Mileage Club). Ranking counts it as half per direction.
season, season_miles
Seasonal charts (ANA’s own flights): season is low, regular or high for the date given; season_miles lists all three. Without a date, season is null and miles is the lowest.
pricing_basis
How the price was worked out: per_trip (the whole one-way trip priced once on its total distance), per_flight / per_flight_sum (each flight priced separately; legs shows each), journey (by region or zone, origin to destination).
legs
With per_flight / per_flight_sum on a connection: each flight’s price (from, to, miles). null when the trip is a single flight or is priced as a whole.
peak_miles, peak_note
Peak-date price, where the programme publishes off-peak and peak prices. If the peak price is not confirmed, peak_miles is null and peak_note says so.
stale, stale_note
true when the chart behind the price is pending re-verification. Treat it as indicative and confirm before transferring points.
surcharge_level
Carrier-imposed surcharges on the award: low, moderate or high, with surcharge_usd_approx as a rough estimate.
bookable_online, phone_only_note
Some partner awards can only be booked by phone.
notes, price_note
Programme-specific conditions, such as round-trip pricing effects or restrictions.
as_of
The date of the chart the price comes from.
reachable_from
With currencies_held: which of your currencies transfer to the programme, the ratio and the points needed.
unpriced[].unpriced_reason
dynamic_pricing (no published chart, so it cannot be quoted in advance) or no_chart_entry (a chart exists, but we don’t hold this route or origin yet). We never estimate these. Unpriced entries share the option structure, but their price fields (miles, price_type, pricing_basis, legs) carry no price information: ignore them.

Prices come from each programme’s published award charts and are indicative: programmes change their charts, and some publish only minimums. Confirm the price with the programme before transferring points. Coverage grows as we verify more charts; each response states exactly which programmes are priced and why the others are not.

MODEL CONTEXT PROTOCOL

Native tool for AI agents

The same search, exposed as an MCP tool. Point Claude Code, Cursor, or any MCP client at https://awardsecrets.com/mcp and award availability becomes something your agent can call directly — no client code to write.

Streamable HTTP

Remote transport, no local process to install. Same bearer key as the REST API.

One tool, strictly literal

search_award_availability takes one origin, one destination, one airline, one date. The schema tells the model to fan out rather than guess.

Same facts contract

Cabin and seat count. No fare codes, no pricing, no invented advice for a model to repeat.

POST · awardsecrets.com/mcp
JSON-RPC 2.0
DISCOVER — NO KEY REQUIRED
curl -X POST https://awardsecrets.com/mcp \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
CALL THE TOOL
curl -X POST https://awardsecrets.com/mcp \
  -H "Authorization: Bearer ak_live_…" \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":2,"method":"tools/call",
       "params":{"name":"search_award_availability",
                 "arguments":{"origin":"JFK","destination":"LHR",
                              "airline":"VS","date":"2027-03-05"}}}'

tools/list and initialize answer without a key, so a client can discover the server before you have one. tools/call requires a key and is currently in limited release.

PRICING

API membership. One monthly plan.

Membership gives you Award AI access (which loyalty programmes can book each flight, typical points cost, card transfer paths and alerts) and API and MCP access to the AwardSecrets data set: AI-augmented award-availability intelligence derived from GDS inventory and lived award-travel experience. Each plan includes a monthly fair-use allowance; there are no per-search charges.

MONTHLY PLANS
Sandbox
Up to 1,000 queries a month · Award AI access for 1 user
$49/mo Start
POPULAR
Developer
Up to 10,000 queries a month · Award AI access for 1 user
$499/mo Start
Enterprise
A custom plan tailored to your business needs
Contact us

A query is one origin, destination, airline and date. Above your allowance, queries pause until the next month or you move up a plan; nothing is billed per search. Each plan includes Award AI access for one user; teammates can add it with the standard US$9.99/month membership.

Terms of Service — see §5 for API terms and §6 for what you may do with the data.

QUESTIONS

Award availability API FAQ

Is there an API for award seat availability?

Yes. The AwardSecrets API returns award (points and miles) seat availability as JSON: carrier, flight number, route, times, aircraft, cabin and seat count. Each request covers one origin, one destination, one airline and one date.

How is this different from scraping-based award search tools?

The AwardSecrets data set is derived from airline inventory through a GDS under our own agreement and from lived award-travel experience, then augmented by AI; it is not scraped from airline websites, so an integration does not break when a carrier redesigns its site or adds anti-bot defenses.

Does it work with AI agents such as Claude or Cursor?

Yes. The same search is available as a Model Context Protocol (MCP) tool at https://awardsecrets.com/mcp. Discovery works without a key; searches need one.

What does API access cost?

API access is a monthly membership that gives you Award AI access (booking programmes, typical points cost, transfer paths and alerts) and API and MCP access to the AwardSecrets data set: AI-augmented award-availability intelligence derived from GDS inventory and lived award-travel experience: Sandbox US$49 (up to 1,000 queries a month) and Developer US$499 (up to 10,000), each with Award AI access for one user; Enterprise is a custom plan tailored to your business needs. Teammates can add Award AI access with the standard US$9.99/month membership. There are no per-search charges; above the allowance, queries pause until the next month or you move up a plan.

How are connections and seat counts represented?

Each date lists its flight segments in journey order, and each segment carries an itinerary number: segments of one connection share it. Each date also has an itineraries summary per journey, with its segments, connecting airports, operating airline of each segment and bookable seats. Seat counts are journey-specific: airlines control connecting availability by journey, so a first leg shared by two connections can show 6 seats in one and 7 in the other. The bookable seats for a journey are the lowest count across its segments. Journeys flown by more than one airline are flagged mixed_operators (programmes price them differently), and a change of airport within a city is flagged airport_change. via lists the airport where each connection arrives; airport_change shows the arriving and departing airports (e.g. NRT→HND). In itineraries, operated_by always names an airline: the marketing airline when the flight itself is operated by it.

Journeys showing the system's maximum count (9, meaning nine or more) on every segment are withheld, because that figure often doesn't reflect bookable award seats, as are journeys with counts the aircraft's cabin cannot hold. A connection whose lowest segment is 1 to 8 is returned, so a journey's bookable seats (itineraries[].seats) are always 1 to 8; an individual segment can still show 9.

Does it return prices or fare codes?

The availability endpoint returns facts only: availability, cabin and seat count, with no fare codes and no prices. Redemption pricing is a separate endpoint (points.php) on the same key and allowance: published award-chart prices by programme, each labelled with how it was worked out, whether it is a fixed price or a published minimum, and whether the chart is pending re-verification. Programmes without a published chart are listed as unpriced, never estimated.

How current is the data?

Every response includes observed_at: when that availability was observed in airline inventory (UTC, ISO 8601). When an identical query has run recently, a result showing availability can be up to 12 hours old, and a "nothing available" result up to 90 minutes old. Use observed_at to show your users how recent each result is.

Will the response format change?

We may add new fields at any time, so your client should ignore fields it doesn't recognise. We won't remove or change existing fields without notice to members. Changelog: 10 Oct 2026, added observed_at (top level and per date). 11 Oct 2026 (v1.2.0): redemption pricing endpoint, points.php. 11 Oct 2026 (v1.3.0): journeys: itinerary on each flight, itineraries per date with bookable seats, itinerary_count. 11 Oct 2026 (v1.4.0): pricing: optional date, round_trip, season and season_miles; ANA Mileage Club priced. 12 Oct 2026 (v1.4.1): no field changes. Connections where only some segments show 9 are now returned (journeys are judged by their lowest segment; before, any segment showing 9 withheld the journey). Documentation clarified: operated_by null, via and airport_change, legs, price_type on unpriced options.

How far ahead can I search?

About 11 months: dates up to roughly 330 days ahead. Airlines release award space around then, so later dates cannot have availability yet.

GET STARTED

Start a membership

Start a Sandbox or Developer membership online: sign in with Google, pay securely with Stripe, and your API key arrives by email within a minute. Enterprise plans are tailored to your business.

Enterprise, or questions: api@awardsecrets.com

Already a member? Your account · Cancel any time.