Ryanair Flight Availability Scraper avatar

Ryanair Flight Availability Scraper

Pricing

from $1.70 / 1,000 flights

Go to Apify Store
Ryanair Flight Availability Scraper

Ryanair Flight Availability Scraper

Delivers structured Ryanair flight availability, fare, and calendar records for origin/destination routes, queried by IATA codes and travel dates.

Pricing

from $1.70 / 1,000 flights

Rating

0.0

(0)

Developer

Farhan Ali

Farhan Ali

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

Categories

Share

Ryanair Flight Availability Scraper creates a structured dataset of Ryanair flight availability, priced fares, and calendar dates for origin/destination routes. Each dataset item can include the flight number, origin and destination airports, scheduled times, duration, fare amount and currency, remaining seat count, and a booking URL. Query the source using IATA codes and travel dates or a Ryanair flight-select URL, control the result limit with maxItems, and retrieve records through the Apify Dataset API or export them as JSON, CSV, Excel, or XML.

Dataset at a glance

PropertyValue
Sourceryanair.com
Record unitOne flight or one available calendar date
Input methodsIATA codes and dates, or Ryanair start URLs
Main identifiersflightKey, flightNumber, bookingUrl
DeliveryApify Dataset and API
Export formatsJSON, CSV, Excel, XML
Update modelFresh records per Actor run
PricingPay per event, $2 per 1,000 flights

Coverage and available records

The Actor returns two record types, controlled by scrapeMode:

  • flight — priced flight legs with departure/arrival times, duration, fare amount, currency, and remaining inventory.
  • availableDate — calendar days on which a flight operates, without fare details.

Supported behavior includes:

  • Return and one-way trips via tripType (auto, return, oneway).
  • All destinations from one origin by leaving destinationIata empty.
  • Date ranges via dateOutEnd / dateInEnd and flexDays (±0–6 days, matching the site calendar).
  • Multiple routes through the routes array, and start URLs parsed from the query string.
  • Passenger mix (adults, teens, children, infants) and optional promoCode, connecting flights, and Prime fares.

Data dictionary

FieldTypeNullableDescriptionExample
recordTypestringNoflight or availableDateflight
flightKeystringNoRyanair flight keyFR~2527
flightNumberstringNoMarketing flight numberFR 2527
originstringNoOrigin IATA codeBER
originNamestringNoOrigin airport nameBerlin
destinationstringNoDestination IATA codeMAD
destinationNamestringNoDestination airport nameMadrid
directionstringNooutbound or inboundoutbound
departureDatestringNoLocal departure date YYYY-MM-DD2026-11-28
departureTimestringNoLocal departure datetime2026-11-28T06:45:00
arrivalTimestringNoLocal arrival datetime2026-11-28T10:10:00
departureUtcstringNoDeparture datetime in UTC...
arrivalUtcstringNoArrival datetime in UTC...
durationstringNoScheduled duration HH:MM03:25
faresLeftintegerNoRemaining fare inventory; -1 when unknown9
infantsLeftintegerNoRemaining infant seats0
operatedBystringYesOperating carrier when not Ryanair—
fareAmountnumberNoCheapest regular fare amount29.99
publishedFarenumberNoPublished fare before discounts34.99
currencystringNoFare currencyEUR
passengerTypestringNoFare passenger type such as ADTADT
hasDiscountbooleanNoWhether a discount is appliedfalse
discountAmountnumberNoDiscount amount0.0
isPrimebooleanNoWhether the fare is a Prime farefalse
fareKeystringNoFare identifier from the booking response—
stopsintegerNoNumber of stops0
segmentCountintegerNoNumber of flight segments1
segmentsarrayNoSegment list with times and flight numbers[...]
isRoundTripbooleanNoWhether the search was a return triptrue
marketstringNoRyanair market such as de-dede-de
adultsintegerNoAdult passengers in the search1
teensintegerNoTeen passengers in the search0
childrenintegerNoChild passengers in the search0
infantsintegerNoInfant passengers in the search0
promoCodestringNoPromo code applied to the search—
bookingUrlstringNoRyanair flight-select URLhttps://www.ryanair.com/...

Example dataset record

{
"recordType": "flight",
"flightNumber": "FR 2527",
"origin": "BER",
"destination": "MAD",
"direction": "outbound",
"departureDate": "2026-11-28",
"departureTime": "2026-11-28T06:45:00",
"arrivalTime": "2026-11-28T10:10:00",
"duration": "03:25",
"fareAmount": 29.99,
"currency": "EUR",
"faresLeft": 9,
"market": "de-de",
"adults": 1,
"bookingUrl": "https://www.ryanair.com/de/de/trip/flights/select?..."
}

The record above was produced by the input in the next section: BER to MAD on 2026-11-28, return trip, scrapeMode: "both".

Query and input reference

InputTypeRequiredDefaultAccepted valuesDescription
originIatastringNo—3-letter IATA codeDeparture airport
destinationIatastringNo—3-letter IATA codeArrival airport; empty expands all destinations from origin
dateOutstringNo—YYYY-MM-DDOutbound date
dateInstringNo—YYYY-MM-DDReturn date; omit for one-way
dateOutEndstringNo—YYYY-MM-DDLast outbound date when walking the calendar
dateInEndstringNo—YYYY-MM-DDLast return date when browsing inbound dates
tripTypestringNoautoauto, return, onewayTrip type
routesarrayNo—Route objectsExtra routes with the same fields
startUrlsarrayNo—Ryanair flight-select URLsURLs parsed from the query string
adultsintegerNo11–25Adult passengers
teensintegerNo00–24Teen passengers
childrenintegerNo00–24Child passengers
infantsintegerNo00–24Infant passengers
promoCodestringNo—Ryanair promo codePromo code applied to the search
includeConnectingFlightsbooleanNofalsetrue / falseInclude connecting itineraries
includePrimeFaresbooleanNofalsetrue / falseRequest Prime fares
flexDaysintegerNo20–6Days before and after requested dates
marketstringNoen-iee.g. en-ie, de-de, es-esMarket/locale
scrapeModestringNoflightsflights, availableDates, bothWhat to scrape
maxItemsintegerNo00 = unlimitedMaximum records
proxyConfigurationobjectNoResidentialApify proxy settingsProxy configuration

Minimal request:

{
"originIata": "BER",
"destinationIata": "MAD",
"dateOut": "2026-11-28"
}

Advanced request:

{
"originIata": "BER",
"destinationIata": "MAD",
"dateOut": "2026-11-28",
"dateIn": "2026-12-01",
"tripType": "return",
"adults": 1,
"market": "de-de",
"flexDays": 2,
"scrapeMode": "both",
"maxItems": 100
}

Retrieve the data through the API

  1. Start the Actor with a JSON input containing originIata, destinationIata, and dateOut.
  2. Wait for the run to finish, or use the synchronous dataset endpoint for smaller jobs.
  3. Read records from the run's default dataset.
  4. Paginate or export the dataset.
from apify_client import ApifyClient
client = ApifyClient("YOUR_API_TOKEN")
run = client.actor("datascrapers/ryanair-scraper").call(
run_input={
"originIata": "BER",
"destinationIata": "MAD",
"dateOut": "2026-11-28",
"dateIn": "2026-12-01",
"scrapeMode": "both",
"maxItems": 50,
}
)
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item["recordType"], item["flightNumber"], item.get("fareAmount"))

Apify's generated API tab documents the equivalent calls for other languages.

Data quality and record handling

  • Completeness — fareAmount is present only on flight records; availableDate records carry dates only.
  • Source changes — fares and availability reflect the response at scrape time and can change between runs.
  • Deduplication — the Actor does not deduplicate across runs; each run writes to a new dataset.
  • Recommended dedup key — flightKey + direction + departureDate (+ fareAmount) for fare history; origin|destination|departureDate for calendar days.
  • Retry/error behavior — per-window extraction fails soft, so a single bad date does not stop the run.

Export and pipeline examples

DestinationRecommended methodTypical use
PostgreSQL/SupabaseDataset API or webhook consumerFare history and route research
Google SheetsApify integrationDeal tracking
S3/cloud storageScheduled export or integrationPrice snapshots

Pricing and cost examples

Billing is pay per event: each dataset record pushed is one charge. Platform compute is included in the actor usage fee.

RecordsEstimated base cost
1,000$2.00
10,000$20.00
100,000$200.00

Apify plan discounts reduce the per-event rate (for example Gold plans pay about $1.70 per 1,000 flights). Estimates depend on the verified pricing model and scrapeMode.

Limitations and responsible data use

  • Only publicly available Ryanair flight data is returned.
  • Fares and availability change frequently; records reflect the moment of collection.
  • Fields such as fareAmount and faresLeft are conditional on the record type and response.
  • No historical snapshots are stored unless you keep them yourself.
  • You are responsible for complying with Ryanair's terms and applicable laws.

Dataset questions

What does one dataset item represent?

One priced flight or one available calendar date, depending on scrapeMode.

Which field should I use as a unique identifier?

Use flightKey plus direction and departureDate for flights; for calendar days use origin|destination|departureDate.

Are fields nullable or conditional?

Yes. fareAmount and related fare fields are only present on flight records; availableDate records carry no fares.

Can I retrieve the records as CSV or JSON?

Yes. Export the default dataset as JSON, CSV, Excel, or XML, or read it through the Apify Dataset API.

How do I paginate large datasets?

Set maxItems to cap output, or paginate the dataset through the Dataset API.

What counts as a billable result?

Each flight or available-date record pushed to the dataset is one event charge.

Data Scrapers support

Need an additional field, record type, or export workflow? Contact Data Scrapers at stardustspotlight@gmail.com. Include a sample source URL, required fields, expected record volume, and preferred delivery format.