Ryanair APIryanair.com ↗
Search Ryanair flights by route and date. Returns fare prices, departure/arrival times, flight numbers, duration, and seat availability across flex days.
What is the Ryanair API?
The Ryanair API exposes 1 endpoint — search_flights — that returns all available flights between two IATA airport codes on a requested date, including up to 12 response fields per flight covering fare prices, seat availability, flight numbers, and full departure and arrival times. Results span a configurable window of surrounding days via the flex_days parameter, making it practical for lowest-fare calendar searches and route monitoring.
curl -X GET 'https://api.parse.bot/scraper/8923004a-5b41-453b-a85b-c015b33996e6/search_flights?origin=DUB&date_out=2026-09-11&destination=STN' \ -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 ryanair-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.
"""Walkthrough: Ryanair SDK — search flights and inspect fares."""
from parse_apis.ryanair_com_api import Ryanair, InputFormatInvalid
client = Ryanair()
# Search flights from Dublin to London Stansted for a specific date.
try:
route = client.routes.search(origin="DUB", destination="STN", date_out="2026-09-15")
except InputFormatInvalid as e:
print("Bad input:", e.message)
raise
print(f"{route.origin_name} -> {route.destination_name} ({route.currency})")
print(f"Total flights available: {route.total_flights}")
# Browse the cheapest options across flex days.
for flight in route.flights[:5]:
print(f" {flight.flight_number} dep {flight.departure_time} — €{flight.fare_amount}")
# Drill into fare breakdown and segments of the first flight.
if route.flights:
first = route.flights[0]
for fare in first.fares:
print(f" Fare type={fare.type} amount={fare.amount} discount={fare.has_discount}")
for seg in first.segments:
print(f" Segment {seg.origin}->{seg.destination} ({seg.duration})")
print("exercised: routes.search / Route / Flight / Fare / Segment")
Search for available flights between two airports on a given date. Returns all flights for the requested date plus surrounding flex days (default ±2 days), with fare prices, departure/arrival times, flight numbers, duration, and seat availability. Each result includes fare breakdowns per passenger type. The API returns one-way flights only; currency is determined by the departure country. Makes one warmup request to establish session cookies before fetching availability.
| Param | Type | Description |
|---|---|---|
| teens | integer | Number of teen passengers (12-15 years). |
| adults | integer | Number of adult passengers (16+ years). |
| originrequired | string | 3-letter IATA airport code for departure (e.g. DUB for Dublin, STN for London Stansted). |
| infants | integer | Number of infant passengers (under 2 years). |
| children | integer | Number of child passengers (2-11 years). |
| date_outrequired | string | Departure date in ISO format YYYY-MM-DD. |
| flex_days | integer | Number of days before and after the departure date to include in results. |
| destinationrequired | string | 3-letter IATA airport code for arrival (e.g. STN for London Stansted, BCN for Barcelona). |
{
"type": "object",
"fields": {
"origin": "IATA code of departure airport",
"flights": "Array of available flights with pricing",
"currency": "3-letter currency code (e.g. EUR)",
"destination": "IATA code of arrival airport",
"origin_name": "Full name of departure airport",
"total_flights": "Total number of flights returned",
"destination_name": "Full name of arrival airport"
},
"sample": {
"data": {
"origin": "DUB",
"flights": [
{
"date": "2026-09-13",
"fares": [
{
"type": "ADT",
"count": 1,
"amount": 17.27,
"has_discount": false,
"published_fare": 17.27,
"discount_amount": 0
}
],
"origin": "DUB",
"duration": "01:20",
"segments": [
{
"origin": "DUB",
"duration": "01:20",
"destination": "STN",
"arrival_time": "2026-09-13T07:50:00.000",
"flight_number": "FR 30",
"departure_time": "2026-09-13T06:30:00.000"
}
],
"fares_left": -1,
"destination": "STN",
"fare_amount": 17.27,
"operated_by": "",
"origin_name": "Dublin",
"arrival_time": "2026-09-13T07:50:00.000",
"infants_left": 18,
"fare_currency": "EUR",
"flight_number": "FR 30",
"departure_time": "2026-09-13T06:30:00.000",
"destination_name": "London (Stansted)"
}
],
"currency": "EUR",
"destination": "STN",
"origin_name": "Dublin",
"total_flights": 40,
"destination_name": "London (Stansted)"
},
"status": "success"
}
}About the Ryanair API
What the API Returns
The search_flights endpoint accepts a required origin and destination as 3-letter IATA codes (e.g. DUB, STN, BCN) and a date_out in YYYY-MM-DD format. The response includes a flights array alongside top-level fields for origin_name, destination_name, currency, and total_flights. Each entry in flights carries fare prices, the flight number, departure and arrival times, flight duration, and seat availability data.
Passenger Breakdown and Flex Days
Passenger counts can be split across four age categories: adults (16+), teens (12–15), children (2–11), and infants (under 2). This allows accurate fare totals, since Ryanair prices differ by passenger type. The optional flex_days parameter controls how many days before and after date_out are included in results — defaulting to ±2 days — so a single call can cover a five-day window without multiple requests.
Currency and Coverage
The currency field in the response reflects the currency applicable to the returned fares. The API covers the Ryanair-operated route network; routes not served by Ryanair will return no flights. Results reflect the fares and availability visible for that route and date combination at the time of the call.
The Ryanair API is a managed, monitored endpoint for ryanair.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when ryanair.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 ryanair.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?+
- Build a fare calendar showing the cheapest Ryanair price across a month for a given route using
flex_days - Monitor price changes on a specific origin-to-destination pair by polling
search_flightsdaily - Find seat availability on a route before committing to hotel or car hire bookings
- Aggregate Ryanair fare data across multiple European routes for a travel comparison tool
- Calculate total trip cost for groups by passing combined
adults,teens, andchildrencounts - Alert users when fares on a watched route drop below a threshold price
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 200 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
| Team | $300/mo | 20,000 | 300 req/min |
| Company | $1,000/mo | 100,000 | 500 req/min |
Each endpoint has a fixed posted price per successful call — most fall between 1 and 10 credits — shown on this API's page before you run it. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does Ryanair have an official public developer API?+
What does the `flex_days` parameter actually control?+
flex_days sets the number of days before and after your date_out to include in the response. The default is 2, meaning a search for a Wednesday will also return Monday, Tuesday, Thursday, and Friday flights in the same response. Setting it to 0 limits results to the exact departure date only.Does the API return return or round-trip flights?+
search_flights endpoint returns outbound one-way flights for the specified origin and destination. Round-trip pricing is not currently part of the response. You can fork this API on Parse and revise it to add a return-leg endpoint covering the reverse route and date.Are baggage fees or ancillary charges included in the fare data?+
How fresh is the flight and pricing data?+
search_flights retrieves current availability and fares for the requested route and date. There is no cached or pre-fetched layer on your side — results reflect what is available at the moment of the request. Prices on low-cost routes can change frequently, so results should be treated as point-in-time.