Travel-hacking-toolkit ignav
Search for flights using the Ignav API. Fast REST API for flight prices and booking links. Use alongside other flight sources for price comparison. Always include in every flight search. Triggers on any flight-related search request.
install
source · Clone the upstream repo
git clone https://github.com/borski/travel-hacking-toolkit
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/borski/travel-hacking-toolkit "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/ignav" ~/.claude/skills/borski-travel-hacking-toolkit-ignav && rm -rf "$T"
manifest:
skills/ignav/SKILL.mdsource content
Flight Search via Ignav API
Fast REST API flight search at
https://ignav.com. Returns structured JSON with prices, itineraries, and booking links. 1,000 free requests, no rate limit.
Setup
Get a free API key at https://ignav.com/signup (1,000 requests, no credit card).
Set
IGNAV_API_KEY in your environment or .env file.
Workflow
- Parse the user's request (origin, destination, dates, trip type, passengers, cabin)
- Look up airport codes if user gave city names
- Search flights (one-way or round-trip)
- Present results in markdown table
- Get booking links if user wants to book
Endpoints
Search Airports
curl -s "https://ignav.com/api/airports?q=Barcelona&limit=5" \ -H "X-Api-Key: $IGNAV_API_KEY"
One-Way Flights
curl -s -X POST "https://ignav.com/api/fares/one-way" \ -H "X-Api-Key: $IGNAV_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "origin": "SFO", "destination": "JFK", "departure_date": "2026-05-15", "adults": 1, "cabin_class": "economy" }'
Round-Trip Flights
curl -s -X POST "https://ignav.com/api/fares/round-trip" \ -H "X-Api-Key: $IGNAV_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "origin": "SFO", "destination": "JFK", "departure_date": "2026-05-15", "return_date": "2026-05-20", "adults": 1, "cabin_class": "economy" }'
Booking Links
curl -s -X POST "https://ignav.com/api/fares/booking-links" \ -H "X-Api-Key: $IGNAV_API_KEY" \ -H "Content-Type: application/json" \ -d '{"ignav_id": "the_itinerary_id", "adults": 1}'
Parameters
| Parameter | Type | Description |
|---|---|---|
| int | Number of adults (default: 1) |
| int | Number of children (default: 0) |
| string | , , , |
| int | 0 (direct only), 1, or 2 |
| int | Maximum price filter |
| object | |
| array | Only these airline codes |
| array | Exclude these airline codes |
| string | Country code for pricing (default: "US"). Different markets return different prices. |
Response Structure
Each itinerary contains:
:price{"amount": 299, "currency": "USD"}
: carrier, duration_minutes, segments arrayoutbound
: same (null for one-way)inbound
: the cabin classcabin_class
:bags{"carry_on": 1, "checked": 0}
: unique ID for booking linksignav_id
Each segment:
marketing_carrier_code, flight_number, departure_airport, departure_time_local, arrival_airport, arrival_time_local, duration_minutes, aircraft.
Output Format
Always use markdown tables.
| # | Airline | Stops | Duration | Depart | Arrive | Price | Bags |
|---|---|---|---|---|---|---|---|
| 1 | Vueling | Nonstop | 2h 15m | 8:30 AM | 10:45 AM | EUR 125 | 1 carry-on |
| 2 | Ryanair | Nonstop | 2h 20m | 6:15 AM | 8:35 AM | EUR 89 | 1 carry-on |
After the table, highlight cheapest, fastest, and best value. Call out tradeoffs. Offer booking links.
Notes
- Dates are required for all searches
- Default to round-trip and economy if not specified
- Use airport search endpoint for city name lookups
- Market affects prices. Same route can cost significantly less from a different market. Try departure country first, then destination country.
- Does NOT include Southwest. Use google-flights skill for SW.