DEV Community

Crawler Bros for Apify

Posted on

Finding flight price anomalies with Skiplagged data on Apify

Finding flight price anomalies with Skiplagged data on Apify

Flight pricing is famously inconsistent — the same route can price differently depending on the exact combination of origin, destination, and connection chosen, sometimes by a wide margin for what's effectively the same trip. Skiplagged built a business around surfacing exactly these gaps by comparing direct fares against fares for longer itineraries that happen to pass through the same destination.

Flight price arbitrage detection means systematically comparing fares across itinerary structures for the same route and destination, instead of checking prices manually route by route. For travel content sites, deal-alert businesses, and corporate travel teams watching cost, that pricing behavior is worth monitoring on a schedule.

Quick answer

Use Skiplagged Scraper to collect flight search results for specific routes and date ranges, including price, airline, and itinerary structure. Run it across a route set on a schedule and flag results where a longer or connecting itinerary prices meaningfully below the direct fare for the same destination.

The flight arbitrage setup

The setup uses one CrawlerBros Actor:

Skiplagged Flight Search Scraper for flight search results with prices, airlines, and booking data.

Skiplagged Flight Search Scraper Actor page on Apify, showing origin, destination, and departure date range input fields used for fare comparison

The monitoring loop:

\
Route and date list
-> Skiplagged Flight Search Scraper
-> price-by-itinerary dataset
-> anomaly flagging (direct vs. connecting fare gaps)
\
\

Key facts

  • The gap is the signal, not the price. The interesting data point is the difference between itinerary types for the same destination, not any single fare in isolation.
  • A single-date search misses most gaps. Fare anomalies often appear on specific days of the week; search across a date range, not one fixed date.
  • Fares move constantly. A one-time snapshot only shows one moment in a moving market — schedule the run instead.
  • Some routes show gaps consistently; most don't. A shortlist of routes worth monitoring closely beats tracking every possible route equally.

Actor configuration that matters

Search by origin, destination, and date range rather than a single fixed date — fare anomalies often appear on specific days of the week or specific date combinations, and a single-date search will miss most of them.

\json
{
"origin": "JFK",
"destination": "LAX",
"departureDateRange": ["2026-11-01", "2026-11-30"],
"maxResults": 100
}
\
\

Run the same route across a rolling date window on a schedule rather than a one-time pull — fare gaps shift as airline pricing algorithms react to booking activity, so a single snapshot only shows one moment in a constantly moving market.

What the output looks like

Each result row should carry origin, destination, departure date, price, airline, and itinerary type (direct vs. connecting, and whether the booked destination differs from the traveler's actual destination). The itinerary-type field is what turns a plain price list into an arbitrage-detection dataset — without it, a cheap connecting flight and a cheap direct flight look identical.

Use case 1: travel deal content

A travel deals site or newsletter can run a set of popular routes on a schedule and automatically flag the biggest fare gaps each week, turning a manual research task into a structured feed worth publishing.

Use case 2: corporate travel cost monitoring

A company managing frequent travel on a fixed set of routes can track whether cheaper itinerary structures are consistently available on routes employees fly often, informing internal travel policy without requiring manual research for every trip.

Use case 3: route-level pricing trend research

Tracking the same route over months shows whether fare volatility on that route is increasing or decreasing, which is useful context for anyone deciding when to book rather than just what to book.

Production notes

Track itinerary structure, not just price. The interesting signal here is the gap between itinerary types for the same destination, not the raw price of any single result.

Run on a rolling schedule. Fares change constantly; a static dataset goes stale within days.

Be explicit about what "cheaper" means to your audience. Booking a longer or connecting itinerary to save money involves trade-offs (no checked bags on the unused leg, itinerary risk) that are worth stating clearly in any published content built from this data.

Watch for route-specific patterns. Some routes show fare gaps consistently; others rarely do. Building a shortlist of routes worth monitoring closely is more efficient than tracking every possible route equally.

Price alone doesn't flag anomalies. Without itinerary-type context, "found a cheap flight" alerts don't distinguish between a genuinely unusual gap and an ordinary low-season fare. Itinerary-type as a required field makes anomaly detection meaningful.

Cost comparison

Approach Coverage Update frequency Anomaly detection
Manual fare checking One route at a time Whenever you check Manual
Flight price alert apps Broad, but black-box logic Automated Limited transparency
Apify Skiplagged pipeline Custom route set Scheduled Transparent, itinerary-level

Check the current Pricing tab on the Actor page before running at scale — cost depends on route count and date-range breadth.

FAQ

Can Apify track flight price anomalies?

Yes. Skiplagged Flight Search Scraper collects fare data across itinerary types for a given route and date range.

Is this only useful for hidden-city ticketing?

No — the underlying data is useful for any fare-comparison or travel-cost-monitoring use case, independent of any specific booking strategy.

How often should routes be re-scraped?

Daily or every few days for routes you're actively monitoring; fare gaps can appear and disappear within a short window.

What's the fastest way to try this?

Pick one popular route and a 30-day date window, run Skiplagged Flight Search Scraper across it, then sort by the direct-vs-connecting price gap.

Try it yourself

Pick one popular route and a 30-day date window. Run Skiplagged Flight Search Scraper across that window, then sort by the gap between direct and connecting itinerary pricing. The largest gaps are your first candidates worth digging into further.

Top comments (0)