Seat map API and MCP
FlightSeatmap exposes cached and live aircraft seat maps over MCP and HTTP. Live availability is fetched from Duffel, then Sabre. Amadeus is not a source. Commercial use needs Enterprise ($99/month).
106 airlines and 859 aircraft configurations in the current database.
MCP tools
Endpoint https://mcp.flightseatmap.com/mcp. OAuth is required on every request. A free account can read flights already cached. A paid plan unlocks live search and alerts. Install notes are on /mcp. The public server repository is github.com/FlightSeatmap/mcp.
get_seatmap,find_best_seats,get_seat_info,get_seat_reviews,interactive_seat_finder— cached flights, any signed-in accountsearch_flight— scopesearch. Fetches a flight that is not cached. Uses a paid plan or a flight unlocklist_seat_alerts— scoperead.create_seat_alertanddelete_seat_alert— scopewritediscover_more_flight_toolsandhome— the seat map browser and links to sibling travel tools
HTTP endpoints
GET /api/v1/seatmaps/:flight_number
One live seat map, paid per call with the x402 protocol. No account. The price is the same $2.99 unlock as the website. Optional date=YYYY-MM-DD. GET /api/v1 returns the payment terms (HTTP 402) and does not return seat data.
POST /api/seatmaps/search
Authenticated search used by the mobile app. Send Authorization: Bearer with the JWT from POST /api/auth/login. A cached flight is returned without spending a search. A new import uses the account's monthly search allowance.
GET /api/chatgpt/…
Cached reads, no auth: /api/chatgpt/search_flights, /api/chatgpt/seatmap/:flight_number, /api/chatgpt/seat_recommendations/:flight_number, /api/chatgpt/airlines, /api/chatgpt/airlines/:iata, /api/chatgpt/airports, /api/chatgpt/routes. These do not trigger a live import.
Auth and plan limits
- MCP: OAuth 2.1 bearer token. Scopes are
search,read, andwrite. Awritetoken also satisfiesread. - Mobile search: JWT from
POST /api/auth/login,/api/auth/signup, or/api/auth/oauth. - Machine calls to
/api/v1pay with x402. They are not included in a subscription. - Enterprise ($99/month) is the commercial licence: unlimited searches, unlimited live checks, 25 seat alerts. Personal use of MCP on a free or Frequent Flyer account is allowed. Commercial use is not.
Rate limits
These are the Rack::Attack limits, per IP, on top of each account's monthly allowance.
- GET /api/seatmaps/:id — 5 per minute and 50 per day. This route is not a public integration; it requires an internal key and otherwise responds 404.
- POST /api/seatmaps/search — 5 per minute
- GET /api/v1 — 20 per minute
- GET /api/chatgpt — 30 per minute
- POST /api/auth/login — 10 per minute. POST /api/auth/signup — 5 per hour. POST /api/auth/oauth — 20 per minute
Sample response
Shape returned by the MCP seat map tools and by GET /api/v1/seatmaps/:flight_number. Seat status is available, blocked, or another airline status. source is the provider that supplied the map, such as duffel or sabre, or a stored layout when the airline did not publish live seats.
{
"flightNumber": "BA117",
"airline": "British Airways",
"airlineCode": "BA",
"origin": "LHR",
"destination": "JFK",
"aircraftName": "Boeing 777-300ER",
"aircraftCode": "77W",
"totalSeats": 2,
"availableSeats": 1,
"decks": [
{
"deck": "main",
"seats": [
{ "number": "14A", "cabin": "economy", "features": ["window"], "status": "available" },
{ "number": "14B", "cabin": "economy", "features": ["middle"], "status": "blocked" }
]
}
],
"source": "duffel",
"url": "https://flightseatmap.com/flights/BA117"
}
Data freshness
A search that is not already cached asks Duffel for a seat map, then Sabre if Duffel has no live seats. AwardTool and Lufthansa supply a cabin layout only, with no live availability. Stored layouts are kept on the flight and shown when no provider publishes seats. Amadeus stopped its self-service seat map API on 17 July 2026 and is not called.
How this compares
A short note on products people ask about in the same breath. It only states what this codebase does.
| Product | What we can say |
|---|---|
| FlightSeatmap | Traveler site plus an Enterprise licence for MCP and API. Live seats come from Duffel and Sabre when a flight is checked. |
| Duffel | A booking API. FlightSeatmap queries it for seat maps. It is a source, not a FlightSeatmap plan. |
| SeatMaps.com / Quicket | A separate seat map product. See the SeatMaps.com comparison for the figures we have checked. This page does not restate their price or coverage. |
| Travelport | A GDS. FlightSeatmap does not call Travelport for seat maps. |
| Aviation Edge | An aviation data API. FlightSeatmap does not use it as a seat map source. |