Skiplagged APIskiplagged.com ↗
Search Skiplagged flights including hidden-city itineraries and look up airports by name or code. Returns segments, pricing, duration, and routing data.
What is the Skiplagged API?
The Skiplagged API provides 2 endpoints for searching flight itineraries and resolving airport codes. The search_flights endpoint returns full itinerary objects — including hidden-city routing options — with per-segment breakdowns, pricing, and total duration. A companion search_airports endpoint resolves city names, airport names, or IATA codes to structured airport records for use in flight queries.
curl -X GET 'https://api.parse.bot/scraper/7436ece9-4ae0-4c5f-adf5-c4d8c10f7e5e/search_flights?to=LAX&from=JFK&sort=cost&adults=1&depart=2026-07-21&return=2026-07-28&children=0&max_results=10' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace skiplagged-com-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""Skiplagged Flight Search — find hidden-city deals and resolve airports."""
from parse_apis.skiplagged_flight_search_api import Skiplagged, Sort, InvalidInput
client = Skiplagged()
# Resolve an airport name to its IATA code.
airport = client.airports.search(term="Chicago", limit=3).first()
if airport:
print(f"Airport: {airport.label} ({airport.code})")
# Search for cheap flights from JFK to LAX, sorted by cost.
for flight in client.itineraries.search(
from_airport="JFK", to_airport="LAX", sort=Sort.COST, limit=5
):
hidden = " [HIDDEN-CITY]" if flight.is_hidden_city else ""
print(f"${flight.price:.0f} | {flight.origin}→{flight.destination} | "
f"{flight.total_duration} | {flight.num_stops} stops{hidden}")
for seg in flight.segments:
print(f" {seg.flight_number}: {seg.from_airport}→{seg.to_airport} "
f"depart {seg.departure_time}")
# Handle invalid input gracefully.
try:
client.itineraries.search(
from_airport="JFK", to_airport="LAX", sort=Sort.DURATION, limit=1
).first()
except InvalidInput as exc:
print(f"Invalid input: {exc}")
print("exercised: airports.search / itineraries.search / Sort enum / InvalidInput catch")
Search for flight itineraries between two airports on a given date. Returns all available flights including hidden-city itineraries with full segment details, pricing, and duration. Results are sorted by price by default. Polls for additional results automatically. Each itinerary includes segments with airline, timing, and duration; a hidden-city flag when the booked route is longer than the intended destination; and a booking link. Pagination is not supported — the max_results param caps the total returned in one call.
| Param | Type | Description |
|---|---|---|
| torequired | string | Destination airport IATA code (e.g. LAX, JFK, ORD) |
| fromrequired | string | Origin airport IATA code (e.g. JFK, ICT, ORD) |
| sort | string | Sort order for results. |
| adults | string | Number of adult passengers. |
| depart | string | Departure date in YYYY-MM-DD format. If omitted, defaults to 14 days from today. |
| return | string | Return date in YYYY-MM-DD format for round-trip searches. Omit for one-way. |
| children | string | Number of child passengers. |
| max_results | integer | Maximum number of itineraries to return. |
{
"type": "object",
"fields": {
"to": "string - destination airport code",
"from": "string - origin airport code",
"depart_date": "string - departure date in YYYY-MM-DD format",
"itineraries": "array of itinerary objects with origin, destination, segments, pricing, and duration",
"return_date": "string or null - return date if round trip",
"total_results": "integer - number of itineraries returned"
},
"sample": {
"data": {
"to": "LAX",
"from": "JFK",
"depart_date": "2026-06-25",
"itineraries": [
{
"price": 284,
"origin": "JFK",
"currency": "USD",
"segments": [
{
"to_airport": "LAX",
"airline_code": "AA",
"airline_name": "American Airlines",
"arrival_time": "2026-06-25T10:22:00-07:00",
"from_airport": "JFK",
"flight_number": "AA1",
"departure_time": "2026-06-25T07:05:00-04:00",
"duration_seconds": 22620
}
],
"num_stops": 0,
"flight_key": "321c3c1",
"cabin_class": "Economy",
"destination": "LAX",
"booking_link": "https://skiplagged.com/flights/JFK/LAX/2026-06-25",
"is_hidden_city": true,
"total_duration": "6h 17m",
"total_duration_seconds": 22620
}
],
"return_date": null,
"total_results": 50
},
"status": "success"
}
}About the Skiplagged API
Flight Search
The search_flights endpoint accepts origin (from) and destination (to) airport codes, a depart date in YYYY-MM-DD format, and an optional return date for round-trip queries. You can specify the number of adults and children, control result ordering with the sort parameter (accepted values: cost, duration, departure), and cap results with max_results. The response includes an itineraries array where each object carries origin, destination, individual flight segments, pricing, and total duration. Results default to price-sorted order. The total_results field reports how many itineraries were returned, and return_date is null for one-way searches.
Hidden-City Itineraries
Skiplagged is specifically known for surfacing hidden-city itineraries — routes where the final ticketed destination is cheaper than the actual stop you want. The search_flights response includes these alongside conventional itineraries in the same itineraries array, with segment-level detail that identifies the full routing. No separate flag or filter is required; they appear in the unified result set.
Airport Search
The search_airports endpoint takes a single term string — a city name like "New York", an airport name, or an IATA code like "LAX" — and returns a hints array. Each hint object contains title, subtitle, label, code, and city fields, making it straightforward to build autocomplete flows or resolve ambiguous input before passing codes to search_flights. The response also includes a success boolean and a duration field indicating query time in seconds.
The Skiplagged API is a managed, monitored endpoint for skiplagged.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when skiplagged.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official skiplagged.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Find the cheapest one-way fares between two cities on a specific date, sorted by cost
- Identify hidden-city itineraries where a connecting stop is cheaper than a direct fare
- Build a flight search autocomplete using airport name or code resolution from search_airports
- Compare flight duration vs. price trade-offs using the duration sort option on search_flights
- Retrieve round-trip itineraries by supplying both depart and return date parameters
- Resolve ambiguous city or airport input (e.g. 'Chicago') to a specific IATA code before querying flights
- Enumerate available itineraries for multi-passenger bookings by setting the adults and children params
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.