duffel
// Search, book, and manage flights via the Duffel Flights API. Covers 300+ airlines (NDC, GDS, LCC). Use when: (1) searching for flights between cities, (2) comparing prices and fare classes, (3) booking flights, (4) checking booking status, (5) cancelling bookings, (6) viewing seat maps, (7) looking
Duffel Flights
Search, book, and manage flights across 300+ airlines via the Duffel API.
Setup
Set DUFFEL_TOKEN env var with your Duffel API access token.
Get one at https://app.duffel.com → Developers → Access Tokens.
Test tokens (prefix duffel_test_) use sandbox data with unlimited balance.
Commands
Search flights
python scripts/duffel.py search --from MIA --to LHR --date 2026-04-15
python scripts/duffel.py search --from MIA --to CDG --date 2026-03-15 --return-date 2026-03-22 --cabin business
python scripts/duffel.py search --from JFK --to LAX --date 2026-05-01 --nonstop --adults 2
Options: --cabin economy|premium_economy|business|first, --nonstop, --adults N, --children N, --infants N, --sort price|duration, --max-results N, --json
Results are numbered. Use the number with other commands.
View offer details
python scripts/duffel.py offer 3
Shows segments, baggage, fare conditions (refund/change), available extras.
Book a flight
python scripts/duffel.py book 3 --pax "RIBEIRO/FABIO MR 1977-01-31 fabio@ribei.ro +13059159687 BR m"
Pax format: LAST/FIRST TITLE DOB EMAIL PHONE NATIONALITY GENDER
- TITLE: MR, MRS, MS, MISS, DR
- GENDER: m or f
- Multiple passengers: repeat
--pax "..."for each
Payment uses Duffel account balance. Top up at https://app.duffel.com.
Check order status
python scripts/duffel.py order ord_0000XXXXX
Cancel order
python scripts/duffel.py cancel ord_0000XXXXX # Quote (shows refund amount)
python scripts/duffel.py cancel ord_0000XXXXX --confirm # Execute cancellation
Seat map
python scripts/duffel.py seatmap 3
Airport/city lookup
python scripts/duffel.py places "new york"
Typical workflow
search→ browse numbered resultsoffer N→ check details, baggage, conditionsbook N --pax "..."→ get PNRorder <id>→ verify bookingcancel <id>→ if needed
Notes
- Offers expire (usually ~20 min). Re-search if expired.
- Test mode: unlimited balance, bookings on "Duffel Airways" (fake airline).
- Production: real airlines, real tickets. Balance must be funded.
- All commands support
--jsonfor raw API output. - Last search saved to
/tmp/duffel-last-search.jsonfor index reference. - For API details, see
references/api-guide.mdandreferences/booking-flow.md.