Seats.aero Monitor Skill
Track award availability from Seats.aero without airline-specific confirmers.
What This Skill Does
- Query Seats.aero cached search for multiple watchers.
- Normalize raw API records into a stable internal schema.
- Persist watcher config + watcher state in SQLite or JSON for idempotent
new_onlyalerting. - Return
[UNCONFIRMED / Seats.aero]alert events fornone -> availabletransitions.
Entry Point
python3 <skill-dir>/scripts/check_awards.py --watchers-source db
# JSON backend
python3 <skill-dir>/scripts/check_awards.py \
--state-backend json \
--state-json /path/to/monitor.json \
--watchers-source db
Optional Flags
# Single watcher only
python3 <skill-dir>/scripts/check_awards.py --watchers-source auto --watcher ana_sfo_hnd
Watchers In DB
Import watchers from config into DB:
python3 <skill-dir>/scripts/check_awards.py --watchers-import --replace-watchers --config /path/to/watchers.json
# Import into JSON state file instead of SQLite
python3 <skill-dir>/scripts/check_awards.py \
--state-backend json \
--state-json /path/to/monitor.json \
--watchers-import --replace-watchers --config /path/to/watchers.json
List DB watchers:
python3 <skill-dir>/scripts/check_awards.py --watchers-list
# List watchers stored in JSON state file
python3 <skill-dir>/scripts/check_awards.py \
--state-backend json \
--state-json /path/to/monitor.json \
--watchers-list
Update watchers' date ranges:
# Update specific watcher by ID
python3 <skill-dir>/scripts/update_watcher_dates.py \
--watcher pvg_sfo_aeroplan_2026summer --start 2026-08-01 --end 2026-08-15
# Update all watchers from an origin airport
python3 <skill-dir>/scripts/update_watcher_dates.py \
--origin PVG --start 2026-08-01 --end 2026-08-15
# Dry run (preview changes)
python3 <skill-dir>/scripts/update_watcher_dates.py \
--origin PVG --start 2026-08-01 --end 2026-08-15 --dry-run
# Update dates in JSON backend
python3 <skill-dir>/scripts/update_watcher_dates.py \
--state-backend json --state-json /path/to/monitor.json \
--origin PVG --start 2026-08-01 --end 2026-08-15
# Skip confirmation prompt
python3 <skill-dir>/scripts/update_watcher_dates.py \
--origin PVG --start 2026-08-01 --end 2026-08-15 --yes
# See all options
python3 <skill-dir>/scripts/update_watcher_dates.py --help
Fixed date range support:
fixed_start_date+fixed_end_date(YYYY-MM-DD) to track a fixed window (for example, August only).- Set both to same day to track one specific date.
- If fixed dates are set,
window_daysis ignored.
SQLite state DB default path (override via --state-db or SEATS_AERO_DB env):
<skill-dir>/data/monitor.db(relative to skill installation)- Or set
SEATS_AERO_DB=/path/to/monitor.dbin environment
JSON backend requires --state-backend json --state-json /path/to/monitor.json.
Requirements
- Python: 3.11+ (uses
str | Noneunion syntax) - SQLite3: Built into Python standard library; DB file and schema are auto-created on first run when using
--state-backend sqlite - JSON: No extra dependency; state file is auto-created on first write when using
--state-backend json - Optional:
brotliPython package (only needed if Seats.aero API returns Brotli-compressed responses) - Seats.aero API Key: Required for all API calls
Environment
Set Seats API key before running:
export SEATS_AERO_API_KEY="pro_xxx..."
Important Limitation
All alerts are candidate signals from Seats.aero. This skill intentionally does not perform airline-side confirmation and marks all alerts as unconfirmed.
This script does not send messages directly; caller/agent should read data.alert_events from JSON output and send notifications.
