15% off your first purchase with code WELCOME15, up to 25 GB.

See pricing

Travel fares · Flight availability

Flight seat availability data from public booking pages

Flight availability data records whether a flight, cabin or fare can still be booked, not what it costs. Collected repeatedly from public pages, sold-out dates, seats-left counters and closing cabins become an early demand signal that official traffic statistics only confirm months later.

Pay per GB · No subscription · Prices in EUR, excl. VAT

Illustration. The URLs and values are fictional; the connection string is the real grammar.
€2.00
per GB on ARC Fast, excl. VAT
−44%
at 1 TB (€1.12 / GB)
185+
countries, city targeting
Never
expires — no subscription

Written for

  • Airline capacity and network analysts
  • Airport and tourism demand analysts
  • Alternative-data and nowcasting teams
  • OTA inventory and operations teams

The short answer

  • Availability and price are different series. Store a state per flight and cabin (open, limited, sold out, not operated) next to, not instead of, the price.
  • A 'seats left' counter usually describes the seats left at the shown fare, not on the aircraft. Treat it as a fare-bucket signal, never as a load factor.
  • Official load factors arrive late: US T-100 data for international flights is released three months after domestic data. Public availability fills the gap, then gets validated against it.
  • Look, do not touch. Never add seats to a basket, hold seats or start a booking to probe inventory.

The problem

What goes wrong without the right IPs

Sold out, not operated or not yet on sale

An empty calendar day can mean the flight is full, the route does not run that day, or the schedule is not loaded yet. Join availability against a schedule so 'no seats' is only recorded where a flight exists.

Counters that describe a fare, not a cabin

Booking pages show urgency counters for the price on screen. When the counter disappears the cabin is often still open at a higher fare. Record the counter, the fare and the fare class together, or the series will overstate sell-outs.

Party size changes the answer

A flight can show availability for one passenger and none for four at the same fare. Fix the party size per series and keep it in the key; mixing sizes creates false sell-outs.

Calendars are cached

Low-fare calendars and month views are often served from caches and lag the live flight list. Use them to find candidate changes, then confirm on the live results page before recording a state change.

Your sampling rate sets your resolution

A flight that sells out between two weekly runs looks like it was always full. Sample the near-term window more densely, since that is where states change fastest.

What to collect

What you can collect

Flight number, date and cabin
The key for one availability series.
Availability state
Open, limited, sold out, not operated, not on sale. A small, explicit set of states.
Seats-left counter and its wording
Kept with the exact text, so a counter at a price is not read as seats on the aircraft.
Lowest bookable fare and booking class
A step to a higher class is an inventory signal even when the flight never sells out.
Party size searched
Availability depends on it; it belongs in the key.
Days to departure
Sell-out curves are read against lead time.
Calendar vs live source
Marks which observations were confirmed on the live results page.
Observation time
Lets you date the transition from open to sold out.

How it runs

How a collection run works

  1. 01

    Load the schedule first

    Build the list of operated flights per route and date from schedule pages. Only those flight-dates get an availability series, which removes most false 'sold out' rows.

  2. 02

    Sweep calendars cheaply

    Fetch month or week views per route and party size on rotating exits. Diff each sweep against the last one and queue the flight-dates whose state or lowest fare changed.

  3. 03

    Confirm changes on the live results page

    For each queued flight-date, run the logged-out search once on a short sticky session in the route's main selling market and record the state per cabin. Stop at the results or fare-detail page.

    Record a state, not a price
    from enum import Enumclass State(str, Enum):    OPEN = "open"    LIMITED = "limited"        # counter shown, e.g. "3 left at this price"    SOLD_OUT = "sold_out"    NOT_OPERATED = "not_operated"def classify(row) -> State:    if row is None:        return State.NOT_OPERATED    if row.sold_out_label:        return State.SOLD_OUT    if row.seats_left_text:        return State.LIMITED    return State.OPEN# store(flight, date, cabin, party_size, classify(row), row.seats_left_text,#       row.lowest_fare, row.booking_class, source="live", seen_at=now())
  4. 04

    Build sell-out curves

    For each flight, find the first observation in each state and express it as days to departure. Aggregated by route and weekday, these curves are what capacity and demand analysts actually use.

  5. 05

    Validate against official traffic data

    When load factor statistics for the period are published, compare them with your sell-out rates by route and month. The comparison tells you how far your public signal can be trusted for nowcasting.

Setup

Recommended setup

Calendar sweeps are frequent and light; live confirmation is rare and stateful. Give each its own pool.

PlanRoleSessionTargetingPrice
ARC Basic
Rotating ISP
Calendar and schedule sweeps
High-frequency requests to month views and timetables at the lowest price per GB. Move a source to ARC Fast if it does not serve the ISP pool reliably.
RotatingCountry
€0.75 / GB
€0.59 at 1 TB (−21%)
ARC Fast
Rotating residential
Live confirmation of state changes
Residential exits for the search-to-results flow, used only for flight-dates the sweep flagged.
Sticky, about 5 minutes per flight checkCountry of the main selling market
€2.00 / GB
€1.12 at 1 TB (−44%)

Prices are list prices in EUR, excl. VAT. Volume discounts apply automatically at checkout — full ladder on the pricing page.

Connect

One connection string per market

The country, city and sticky session are tokens in the username. Change the token, change the market; keep the session handle, keep the IP.

sticky · Germany · 10 min
http://USERNAME_pool-arcfast_country-de_session-k3f9a1x2_sesstime-10:PASSWORD@proxy.arcproxies.io:8000

Swap _country-de for any market you quote. The full grammar is on the residential proxies page.

Illustration

What a 120-route availability monitor costs

An illustration with round numbers — your pages, payloads and retry rate will differ. The arithmetic is the real price ladder.

Assumptions

Routes
120
Calendar sweeps
3 months ahead, daily, 150 KB each
Live checks
30 flight-dates per route, daily
Weight per live check
300 KB
Days per month
30
Bandwidth per month
≈ 35 GB

On ARC Fast

€64.40per month, excl. VAT

35 GB bought in one purchase at €1.84 / GB (−8% volume rung, applied automatically).

The same 35 GB on ARC Basic: €26.25 at €0.75 / GB. Move down as soon as the cheaper pool holds up.

In practice only a share of flight-dates change each day, so confirmation traffic is usually lower than this ceiling.

Bandwidth never expires, so a bigger single purchase is only ever cheaper per GB. See the ladder.

In depth

Flight availability, in depth

What seat availability signals public pages show

SignalWhere it appearsWhat it meansWhat it does not mean
Day greyed out in a fare calendarLow-fare calendarNo bookable fare found for that day in the cached viewProof of a full aircraft; confirm live
'Sold out' on a flight rowLive resultsNo seats for this party size in this cabinThat every cabin is full
'N seats left at this price'Results or fare detailFew seats remain in the shown fare bucketN seats left on the aircraft
Cabin tab disabledResultsCabin not bookable or not offered on that flightSold out, unless the cabin is normally offered
Lowest fare steps upResultsA lower booking class closedA sell-out

Store the raw label next to your classification. Wording changes between site releases, and the label lets you re-classify history later.

Availability is a demand signal, load factor is the outcome

Load factor is the share of seats actually filled. IATA reported a record full-year passenger load factor of 83.6% for 2025. The US Bureau of Transportation Statistics publishes T-100 segment data with departures performed, available capacity and load factor per route, and international data is released three months after domestic data.

Public availability tells you something different and earlier: which flights stop selling at a given party size, and how many days before departure. Analysts use it as a leading indicator, then calibrate it against the official figures once they arrive. Fare movements are a separate signal; how often flight prices change covers that side.

Scarcity messages and consumer law

Urgency messages are regulated. Point 7 of Annex I to the EU Unfair Commercial Practices Directive lists falsely stating that a product will only be available for a very limited time, in order to elicit an immediate decision, as a practice that is always unfair. In 2018 the UK Competition and Markets Authority opened enforcement action against hotel booking sites, naming claims about how many rooms may be left among its concerns.

For a data team this has a practical side: counters are marketing text with a narrow meaning, and the meaning can change after regulatory attention. Record them verbatim and date them. Consumer researchers who audit those claims are a separate audience; travel price transparency rules covers the wider rules.

How to collect availability without disturbing inventory

  • Never create a basket, hold or booking. Some booking systems reserve seats temporarily once a booking starts; probing that way removes real inventory from sale.
  • Stop at results or fare detail. Everything this page describes is visible before the passenger details step.
  • Sweep calendars, confirm sparingly. Live searches cost the airline the most to serve; keep them to flight-dates that changed.
  • Read terms and robots.txt and follow collecting travel data responsibly.

Works with anything that takes a proxy URL

  • Python requests / httpx
  • Playwright
  • Scrapy
  • Crawlee
  • Docker

FAQ

Questions

Something not covered? Write to contact@arcproxies.io.

Can I see how many seats are left on a flight?

Not from public pages. The counters booking sites show usually refer to seats left at the displayed fare, not on the aircraft. What you can observe over time is when fares close, when cabins stop selling and when a flight shows as sold out for a given party size.

Is flight availability data the same as fare data?

No. Fare data records what a seat costs; availability data records whether it can be booked at all, per cabin and party size. They come from the same pages, but they answer different questions and should be stored as separate series.

How early does availability signal demand?

It depends on the route, but sell-out patterns are visible as they happen, while official load factor statistics are published after the month ends; US T-100 international data comes three months after domestic data. That lead is why demand analysts collect it.

Does searching for a larger party change availability?

It can. A fare may have enough seats for one passenger and not for four, so results differ by party size. Choose the sizes your analysis needs and keep the size as part of the key. Do not start bookings to test depth.

Which proxy type suits availability monitoring?

Rotating ISP exits for frequent, light calendar and schedule sweeps, and residential exits on short sticky sessions for the live confirmations. Billing is per GB for both, so the expensive pool only pays for the checks that matter.

Sources & review

Last reviewed by the ARC Proxies team. Prices are read from the live catalog at build time.

  1. [1]IATA: Strong 2025 Passenger Demand Masks Ongoing Capacity Constraints (29 January 2026)
  2. [2]US Bureau of Transportation Statistics: Air Carrier Statistics (Form 41 Traffic): T-100 database information
  3. [3]EUR-Lex (Official Journal of the European Union): Directive 2005/29/EC concerning unfair business-to-consumer commercial practices (Unfair Commercial Practices Directive)
  4. [4]Competition and Markets Authority (GOV.UK): CMA launches enforcement action against hotel booking sites (28 June 2018)

Travel fares

More on travel fares

OverviewProxies for travel fare aggregationAirline, hotel and rail fares change with the point of sale. Query each market from an IP inside it so the fare you store is the fare a traveller is quoted.Deep diveAirline faresCollect airline fares per point of sale: the same flight priced from each market, taxes itemised, one sticky session per search, billed per GB.Deep diveLow-cost carrier faresMonitor low-cost carrier fares where they are sold: on the airline's own site, priced per leg and per seat bucket, with mandatory fees split out. Per GB.Deep diveAirline ancillary pricesTrack airline ancillary prices (checked bags, seats, priority and fare bundles) per route, date and market, so a trip's true cost can be compared.Deep diveRail and bus faresCollect European rail and intercity coach fares per operator, departure and fare family, including yield-managed long-distance tickets. Billed per GB.Deep diveFerry faresMonitor ferry fares by route, sailing, season and vehicle (foot passengers, cars, cabins) from each operator's own public booking site. Per GB.Deep diveFare alertsBuild fare alerts and deal newsletters on verified prices: cheap watch-list polling, live confirmation from the right market before sending, per-GB costs.Deep diveCorporate travel benchmarkingBenchmark booked and negotiated corporate fares against public fares on the same flights, lead times and markets, for TMCs, travel managers and audits.Deep diveTravel metasearchHow to build a travel metasearch engine: partner feeds, cached prices, live re-pricing and look-to-book. Where proxies fit, and what it costs per GB.Deep diveHotel rate shoppingCollect competitor hotel rates per stay date, length of stay and market from local residential IPs. Sticky sessions per shop, billed per GB.GuideWhy flight prices differ by countryThe same flight costs different amounts in different countries because fares are filed and sold per point of sale, and taxes follow the departure airport.GuideDo airlines raise prices when you search?What regulators and researchers found about cookie and IP tracking in airline pricing, and what actually makes a fare change between two searches.GuideHow often flight prices changeFlight prices can change many times a day: filed fares update constantly and seat availability moves with every booking. What that means for collection.

Get started

Buy a gigabyte and try it on your own targets.

No subscription, no sales call. Code WELCOME15 takes 15% off your first purchase, and whatever you do not use is still there next quarter.