Find the cheapest award dates for a route over a date range. Searches seats.aero across all programs, groups by date, and shows a calendar grid of the best deals. Use when dates are flexible and you want to find the sweet spot.
"When should I fly SFO to NRT on points?" answered with a calendar view.
Searches seats.aero across a date range and presents a grid showing the cheapest award per day, per cabin. Highlights the best dates to fly.
This is an orchestration skill. It tells the agent how to query seats.aero and format the results. No standalone script.
seats-aero directly)Use the seats.aero cached search API with a date range. The API supports up to ~60 days per query.
curl -s -H "Partner-Authorization: $SEATS_AERO_API_KEY" \
"https://seats.aero/partnerapi/search?origin_airport={ORIGIN}&destination_airport={DEST}&start_date={START}&end_date={END}&cabin={CABIN}"
Parameters:
origin_airport: Can be comma-delimited for nearby airports (e.g., SFO,SJC,OAK)destination_airport: Same. Use multiple for metro areas (e.g., NRT,HND for Tokyo)start_date, end_date: YYYY-MM-DD. Keep range under 60 days for best results.cabin: Optional filter. economy, premium, business, first. Omit for all cabins.order_by: Use lowest_mileage to get cheapest first.take: Set to 1000 to get all results in one page.For ranges over 60 days, split into two queries and combine results.
Process the API response:
For each availability object:
date = result.Date
cabin = which cabin(s) are available (Y/W/J/F)
For each available cabin:
cost = result.{cabin}MileageCost
program = result.Source
Track: cheapest cost per date per cabin across all programs
For each cheapest-per-date result, calculate the effective cost in transferable currencies using data/transfer-partners.json:
For date 2026-09-05, cheapest business = 55,000 via Flying Blue:
Chase UR: 55,000 / 1.0 = 55,000 UR
Amex MR: 55,000 / 1.0 = 55,000 MR
Bilt: 55,000 / 1.0 = 55,000 Bilt
Always use markdown tables. One table per cabin class requested.
| Date | Program | Miles | Best Currency | Points | CPP* | Seats | Direct |
|---|---|---|---|---|---|---|---|
| Sep 3 ⭐ | Virgin Atlantic | 52,500 | Chase UR | 52,500 | 8.0 | 2 | ✅ ANA |
| Sep 5 | Flying Blue | 55,000 | Any 1:1 | 55,000 | 7.6 | 4 | ✅ AF |
| Sep 7 | Aeroplan | 70,000 | Chase UR | 70,000 | 6.0 | 1 | ✅ ANA |
| Sep 8 | United | 88,000 | Chase UR | 88,000 | 4.8 | 3 | ✅ UA |
| Sep 10 | — | — | — | — | — | — | ❌ No availability |
| Sep 12 | Aeroplan | 75,000 | Amex MR | 75,000 | 5.6 | 2 | ❌ 1-stop |
| ... | ... | ... | ... | ... | ... | ... | ... |
*CPP calculated against cheapest cash fare from Duffel/Ignav if available, otherwise estimated.
⭐ = Best deal of the month
Summary:
After the grid, include:
NEVER fail silently.
- ❌ Seats.aero: API error (rate limit). Try again in a few minutes.
- ⚠️ Seats.aero: Only 12 results for 30-day range. Some dates may have uncached availability. Try live search for specific dates of interest.
- ℹ️ No business availability found for any date. Showing economy and premium economy instead.
If zero results come back for the entire range, say so explicitly and suggest: