Skiplagged Scraper 💰$2.50/1k — Flights & Hotels avatar

Skiplagged Scraper 💰$2.50/1k — Flights & Hotels

Pricing

from $2.50 / 1,000 result rows

Go to Apify Store
Skiplagged Scraper 💰$2.50/1k — Flights & Hotels

Skiplagged Scraper 💰$2.50/1k — Flights & Hotels

Skiplagged flights, hidden-city fares, flex calendars, and hotel rates in one actor. One JSON or CSV row per itinerary, date, or hotel — airlines, stops, and times included. Search by route, paste a /flights/ or /hotels/ URL, or set destination to anywhere. $2.50 per 1,000 results.

Pricing

from $2.50 / 1,000 result rows

Rating

0.0

(0)

Developer

Muhamed Didovic

Muhamed Didovic

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

Skiplagged Scraper — Hidden-City Fares, Calendars, Hotels

Turn a Skiplagged route, /flights/ URL, or hotel city into structured rows: itineraries (price, airlines, stops, hidden-city flag, booking partners), a flexible-date min/max calendar, or hotel nightly rates. One-way, round-trip, anywhere, or a batch of routes. JSON or CSV out. $1 / 1,000 results.

Why Use This Scraper?

  • Search by airport/metro code, a batch of routes, a pasted Skiplagged URL, or destination: anywhere
  • Hidden-city and self-transfer itineraries, with include/exclude filters
  • Flexible-date calendar (mode: flexible) and Skiplagged hotel rates (mode: hotels)
  • Time-of-day, airline allow/deny, price band, nonstop, max stops
  • Empty fields are omitted from each row
  • Pure HTTP — no browser, no login, proxy optional
  • $1 / 1,000 results

Overview

Built for fare monitors, travel agencies, and anyone comparing Skiplagged against Google Flights or Skyscanner.

The dataset is itinerary-shaped. A round-trip search returns outbound and inbound rows, each tagged with legType. Combined Skiplagged totals land on outbound rows as minRoundTripPrice.

Skiplagged prices each leg as its own one-way ticket. That is how hidden-city and self-transfer deals are quoted on the site, and the actor mirrors it.

Supported Inputs

InputPatternExample
Route fieldsIATA or metro code + datesorigin: NYC, destination: LON, departDate: 2026-10-11
Round-tripadd returnDate2026-10-18
Batch routesmode: byRoutes[{ "origin": "SFO", "destination": "TYO", "departDate": "2026-10-05" }]
Skiplagged URL/flights/{ORIG}/{DEST}/{date}[/{return}]https://skiplagged.com/flights/NYC/LON/2026-10-11/2026-10-18
Anywheredestination: anywhere or /flights/NYC/anywhere/{date}popular dests from the origin
Flexible datesmode: flexibleone calendar row per date (min/max USD)
Hotelsmode: hotels + hotelCitynightly + stay total, stars, reviews

Metro codes work the same as on skiplagged.com: NYC covers JFK/LGA/EWR, LON covers LHR/LGW/STN/LTN/LCY.

Not supported: account/login URLs, or Skiplagged's official MCP server. This actor reads the public search, flex, and hotel JSON endpoints.

Copy-pasteable startUrls

{
"mode": "byUrls",
"startUrls": [
"https://skiplagged.com/flights/NYC/LON/2026-10-11/2026-10-18",
"https://skiplagged.com/flights/JFK/LAX/2026-10-11"
]
}

Use Cases

WhoWhat they do with the rows
Fare-alert productsTrack a route over time and fire when price drops
Travel agenciesCompare provider quotes across a client batch in one run
Corporate travelBulk-check employee itineraries
Price-comparison toolsFeed live Skiplagged fares into another search product
Market researchAirline mix, stop counts, and hidden-city share on a route

How It Works

How the Skiplagged Scraper works

  1. Your input — origin, destination, and dates; a routes array; a Skiplagged /flights/ or /hotels/ URL; anywhere; or hotel city.
  2. Public JSONsearch.php?format=v3 for itineraries (polled until complete), flex.php for calendars, hotel_search.php for hotels. No browser.
  3. Join + flatten — itineraries join to flight segments. Prices (US cents) become USD; durations (seconds) become minutes.
  4. Filters — nonstop, stops, price, airline allow/deny, hidden-city, depart/arrive clock, sort, maxItems.
  5. Your dataset — one row per itinerary, calendar date, or hotel. Empty fields are dropped.

Input Configuration

FieldTypeDefaultDescription
modestringsearchsearch / byRoutes / byUrls / flexible / hotels
originstringNYCOrigin IATA or metro code
destinationstringLONDestination IATA, metro code, or anywhere
departDatestring6 weeks outYYYY-MM-DD
returnDatestringYYYY-MM-DD; omit for one-way
routesarray{origin, destination, departDate, returnDate} objects
startUrlsarraySkiplagged /flights/ URLs
tripTypestringautoauto / one-way / round-trip
cabinClassstringeconomyRequested cabin; real fareClass is always on the row
adults / children / infantsLap / infantsSeatint1 / 0 / 0 / 0Passenger mix (see FAQ)
directOnlyboolfalseNonstop only
maxStopsintDrop itineraries with more stops
minPrice / maxPriceintUSD band
airlinesarrayIATA allow-list (AA, BA, …)
excludeAirlinesarrayIATA deny-list
hiddenCityOnly / excludeHiddenCityboolfalseKeep or drop hidden-city rows
departAfter / departBefore / arriveAfter / arriveBeforestringLocal HH:MM clock filters
flexDaysintAlso search ±N days (max 7)
hotelCity / roomsstring / intHotel city (or slug / id) and room count
sortBystringpriceprice / duration / departureTime / stops
maxItemsint50Cap across all routes (1–1000)
proxyobjectoffOptional; the public API answers without a proxy

Example: one-way

{
"mode": "search",
"origin": "JFK",
"destination": "LAX",
"departDate": "2026-10-11",
"directOnly": true,
"maxItems": 20
}

Example: round-trip with a price cap

{
"mode": "search",
"origin": "NYC",
"destination": "LON",
"departDate": "2026-10-11",
"returnDate": "2026-10-18",
"maxPrice": 800,
"sortBy": "duration"
}

Example: batch routes

{
"mode": "byRoutes",
"routes": [
{ "origin": "NYC", "destination": "LON", "departDate": "2026-10-11" },
{ "origin": "SFO", "destination": "TYO", "departDate": "2026-10-05", "returnDate": "2026-10-19" }
],
"maxItems": 100
}

Example: hidden-city only, mornings

{
"origin": "JFK",
"destination": "LAX",
"departDate": "2026-10-11",
"hiddenCityOnly": true,
"departAfter": "06:00",
"departBefore": "12:00"
}

Example: flexible-date calendar

{
"mode": "flexible",
"origin": "JFK",
"destination": "LAX",
"departDate": "2026-10-23",
"maxItems": 40
}

Example: anywhere from NYC

{
"origin": "NYC",
"destination": "anywhere",
"departDate": "2026-10-23",
"maxItems": 40
}

Example: hotels

{
"mode": "hotels",
"hotelCity": "New York",
"departDate": "2026-10-23",
"returnDate": "2026-10-30",
"rooms": 1,
"adults": 2,
"maxItems": 30
}

Output Overview

recordType is skiplaggedFlight, skiplaggedCalendar, or skiplaggedHotel. Round-trips emit outbound and inbound flight rows. Segments and layovers stay nested; empty fields are omitted.

Prices are USD. Skiplagged's API stores cents; the actor divides by 100.

Output Samples

One-way JFK → LAX (live search, October 2026):

{
"flightId": "8b83695",
"recordType": "skiplaggedFlight",
"legType": "outbound",
"originAirport": "JFK",
"originCity": "New York",
"destinationAirport": "LAX",
"destinationCity": "Los Angeles",
"departureTime": "2026-10-11T06:00:00-04:00",
"arrivalTime": "2026-10-11T09:11:00-07:00",
"duration": "6h 11m",
"durationMinutes": 371,
"stops": 0,
"direct": true,
"hiddenCity": false,
"primaryAirline": "American Airlines",
"airlineCodes": ["AA"],
"price": 254,
"currency": "USD",
"fareClass": "economy",
"bookingProviders": ["FAST"],
"sourceUrl": "https://skiplagged.com/flights/JFK/LAX/2026-10-11"
}

Connecting NYC → LON (2 stops, round-trip quote on the outbound row):

{
"flightId": "001ada3",
"legType": "outbound",
"originAirport": "LGA",
"destinationAirport": "LHR",
"stops": 2,
"direct": false,
"duration": "29h",
"primaryAirline": "Air Canada",
"price": 298,
"minRoundTripPrice": 706,
"layovers": [
{ "airport": "YUL", "durationMinutes": 915, "duration": "15h 15m" },
{ "airport": "YOW", "durationMinutes": 297, "duration": "4h 57m" }
]
}

Key Output Fields

RouteoriginAirport, originCity, originState, originCountry, destinationAirport, destinationCity, legType, sourceUrl

ScheduledepartureTime, arrivalTime, duration, durationMinutes, stops, direct, segments[], layovers[]

Moneyprice, currency, minRoundTripPrice, fareClass, requestedCabinClass

CarriersprimaryAirline, airlines[], airlineCodes[], bookingProviders[] (names), bookingProviderCodes[]

FlagshiddenCity, recordType, flightId, bookingUrl, scrapedAt

CalendardepartDate, returnDate, minPrice, maxPrice

HotelhotelId, name, nightlyPrice, price, starRating, reviewScore, photos[]

FAQ

Which Skiplagged URLs are supported?

Flight-search pages: https://skiplagged.com/flights/{ORIG}/{DEST}/{YYYY-MM-DD} (including /anywhere/). Hotel pages: https://skiplagged.com/hotels/{city}/{checkin}/{checkout}. Homepage and account URLs are ignored.

Why does a round-trip return two rows?

Skiplagged prices each leg as its own one-way ticket. Outbound rows carry minRoundTripPrice when Skiplagged quoted a combined total.

What is hiddenCity?

true when the last landing airport is not one of the airports for the destination you asked for — the classic “fly toward X, get off at Y” pattern Skiplagged is known for. Baggage and missed-leg rules still apply; confirm on skiplagged.com before booking.

Why is fareClass still economy when I asked for business?

Skiplagged's public search mostly returns economy inventory. The row always reports the cabin Skiplagged actually sent (fareClass) next to your requestedCabinClass.

Why don't passenger counts change the price?

Passenger counts are sent on the search URL. The logged-out API often still prices 1 adult. Output adults / children / infantsLap / infantsSeat are whatever Skiplagged returned for that itinerary.

What does bookingProviders mean?

Partner names (Fast, Orbitz, Expedia, …) mapped from Skiplagged's source codes. bookingProviderCodes keeps the raw codes (FAST, ORB). bookingUrl is the Skiplagged search or hotel page where you complete the booking — book.php is a POST form, not a GET deep link.

Do I need a proxy?

Locally, usually no. On the Apify platform the actor uses a RESIDENTIAL proxy on its own — Skiplagged 403s datacenter IPs. Override proxy if you want different groups.

How fresh are the prices?

They match what skiplagged.com shows at the moment the run hits the API. Fares move quickly; confirm before booking.

Support

Found a bug or need a field that isn't exposed? Open an issue on the actor's Issues tab or reach out via the Apify Store profile. Include your input JSON and the run ID.

Additional Services

Need a custom flight pipeline, a different source, scheduled delivery, or fare-alert wiring? Custom scraping work is available via the Apify Store profile.

Explore More Scrapers

Full list at apify.com/memo23.

🤖 For AI Agents & LLM Apps

Compact reference for AI agents calling this actor via the Apify MCP server or the Apify API (actor: memo23/skiplagged-scraper).

Purpose: Scrapes Skiplagged — one dataset row per priced itinerary, flexible-date calendar cell, or hotel.

Minimal input:

{
"origin": "JFK",
"destination": "LAX",
"departDate": "2026-10-11",
"maxItems": 20
}

Output: recordType=skiplaggedFlight|skiplaggedCalendar|skiplaggedHotel. Flight rows include flightId, legType, airports, times, duration, stops, hiddenCity, primaryAirline, segments, layovers, price, bookingProviders, bookingUrl, sourceUrl.

Behaviors an agent should know:

  • Always set maxItems (default 50, max 1000). A busy round-trip or hotel city can return hundreds of rows.
  • destination: anywhere expands to popular dests via hint.php (origin metro/airports dropped).
  • mode=flexible hits flex.php (min/max per date). mode=hotels hits hotel_search.php.
  • mode=byUrls reads /flights/… and /hotels/… paths.
  • Round-trip searches emit separate outbound and inbound rows.
  • Billing is pay-per-event: actor start + $0.001 per dataset row ($1 / 1,000).
  • No login, no browser. Passenger mix is sent on the URL; logged-out pricing is often still 1 adult.

⚠️ Disclaimer

This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by Skiplagged, Inc. or any of its subsidiaries. All trademarks mentioned are the property of their respective owners.

The scraper accesses only publicly available Skiplagged flight-search results — no authenticated endpoints, paid features, or content behind a login wall. Users are responsible for ensuring their use complies with skiplagged.com's Terms of Service, applicable data-protection law (GDPR, CCPA, etc.), and any contractual obligations of their own organization.


SEO Keywords

Skiplagged scraper, scrape Skiplagged, Skiplagged API, Skiplagged flight scraper, hidden city flight scraper, Skiplagged.com scraper, Apify Skiplagged, flight fare scraper, cheap flight data API, hidden-city itinerary export, fare monitoring scraper, travel price comparison data, airline route intelligence, self-transfer flight scraper, flight search API