← Back to Skills
General

seats-aero

jarrodjs By jarrodjs 👁 9 views ▲ 0 votes

Search award flight availability via seats.aero API.

GitHub
---
name: seats-aero
description: Search award flight availability via seats.aero API. Triggers on: award flights, mileage bookings, points redemptions, finding business/first class availability, route availability searches.
---

# Seats.aero Award Flight Search

Search award flight availability across 24 mileage programs using the seats.aero partner API.

## Setup

Before searching, you need a seats.aero API key:

1. If the user hasn't provided an API key, prompt them:
   - "Please provide your seats.aero API key. You can get one at https://seats.aero/partner"
2. Store the key in conversation context for subsequent requests
3. All requests require the header: `Partner-Authorization: Bearer {api_key}`

## Core Capabilities

### 1. Search Routes (`/search`)
Search cached availability across all mileage programs for a specific origin-destination pair.

### 2. Bulk Availability (`/availability`)
Explore all availability from a single mileage program, optionally filtered by region.

### 3. Route Discovery (`/routes`)
Get all routes monitored for a specific mileage program.

### 4. Trip Details (`/trips/{id}`)
Get detailed flight segments and booking links for a specific availability.

## Quick Reference

| Item | Value |
|------|-------|
| Base URL | `https://seats.aero/partnerapi/` |
| Auth Header | `Partner-Authorization: Bearer {key}` |
| Date Format | `YYYY-MM-DD` |

### Cabin Codes
- `Y` = Economy
- `W` = Premium Economy
- `J` = Business
- `F` = First

### Regions
North America, South America, Europe, Africa, Middle East, Asia, Oceania

## Supported Programs

```
aeroplan, alaska, american, aeromexico, azul, copa, delta, emirates,
ethiopian, etihad, finnair, flyingblue, gol, jetblue, lufthansa,
qantas, qatar, sas, saudia, singapore, turkish, united,
virginatlantic, virginaustralia
```

## Common Workflows

### Find availability on a specific route
**User**: "Find business class SFO to Tokyo next month"

1. Use `/search` endpoint with:
   - `origin_airport=SFO`
   - `destination_airport=NRT,HND` (both Tokyo airports)
   - `cabin=J`
   - `start_date` and `end_date` for the date range

### Explore program availability
**User**: "What United awards are available from Europe?"

1. Use `/availability` endpoint with:
   - `source=united`
   - `origin_region=Europe`

### Get booking details
**User**: "Show me details for that flight"

1. Use `/trips/{id}` with the availability ID from previous search
2. Response includes flight segments, times, and booking links

### Check what routes a program covers
**User**: "What routes does Aeroplan monitor?"

1. Use `/routes` endpoint with `source=aeroplan`

## API Parameters Quick Guide

### /search
| Parameter | Required | Description |
|-----------|----------|-------------|
| origin_airport | Yes | 3-letter IATA code |
| destination_airport | Yes | 3-letter IATA code(s), comma-separated |
| cabin | No | Y, W, J, or F (comma-separated for multiple) |
| start_date | No | YYYY-MM-DD |
| end_date | No | YYYY-MM-DD |
| sources | No | Program name(s), comma-separated |
| only_direct | No | true/false |
| take | No | Results per page (default 100) |
| cursor | No | Pagination cursor |

### /availability
| Parameter | Required | Description |
|-----------|----------|-------------|
| source | Yes | Single program name |
| cabin | No | Single cabin code |
| origin_region | No | Filter by origin region |
| destination_region | No | Filter by destination region |
| start_date | No | YYYY-MM-DD |
| end_date | No | YYYY-MM-DD |
| take | No | Results per page |

## Script Usage

For complex or repeated searches, use the Python helper:

```python
from scripts.seats_api import search_availability, format_results

results = search_availability(
    api_key="your_key",
    origin="SFO",
    destination="NRT",
    start_date="2024-03-01",
    end_date="2024-03-31",
    cabins="J,F"
)
print(format_results(results["data"], cabin="J"))
```

See `scripts/seats_api.py` for full API client implementation.

## Response Handling

### Availability Object Fields
- `ID` - Use for `/trips/{id}` lookup
- `Route` - Origin-Destination pair
- `Date` - Flight date
- `YAvailable`, `WAvailable`, `JAvailable`, `FAvailable` - Boolean availability
- `YMileageCost`, etc. - Points required per cabin
- `YDirects`, etc. - Number of direct flights available
- `Source` - Program name
- `ComputedLastSeen` - Data freshness timestamp

### Error Handling
- 401: Invalid or missing API key
- 429: Rate limited, wait and retry
- 404: No results or invalid availability ID

## Tips

1. **Date ranges**: Keep to 30-60 days for faster results
2. **Multiple cabins**: Search J,F together for premium options
3. **Direct flights**: Use `only_direct=true` to filter connections
4. **Pagination**: Use `cursor` from response for more results
5. **Data freshness**: Check `ComputedLastSeen` - older data may be stale

## Reference Documentation

For complete API specification including all fields and response schemas, see `references/api-spec.md`.
general

Comments

Sign in to leave a comment

Loading comments...