{
  "openapi": "3.0.1",
  "info": {
    "title": "Ryanair Low Fare Finder: Cheapest Days, Anywhere & Alerts",
    "description": "Unofficial Ryanair API: Ryanair prices and Ryanair flights — the fare calendar of any route (cheapest price per day, months ahead), every destination under your price cap from any airport (cheap flights Europe, low cost flights, low cost airline), round trips, alerts on price drops and new deals.",
    "version": "0.1",
    "x-build-id": "FPFDfOH8076pntAhz"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/euroscrape~ryanair-low-fares/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-euroscrape-ryanair-low-fares",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/acts/euroscrape~ryanair-low-fares/runs": {
      "post": {
        "operationId": "runs-sync-euroscrape-ryanair-low-fares",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor and returns information about the initiated run in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runsResponseSchema"
                }
              }
            }
          }
        }
      }
    },
    "/acts/euroscrape~ryanair-low-fares/run-sync": {
      "post": {
        "operationId": "run-sync-euroscrape-ryanair-low-fares",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "inputSchema": {
        "type": "object",
        "properties": {
          "routes": {
            "title": "Routes (fare calendars)",
            "type": "array",
            "description": "Airport pairs like \"BVA-AGP\" or \"BER → ALC\": you get the cheapest fare for every day of the chosen months.",
            "items": {
              "type": "string"
            }
          },
          "months": {
            "title": "Months per route",
            "minimum": 1,
            "maximum": 6,
            "type": "integer",
            "description": "How many months of the fare calendar to load.",
            "default": 2
          },
          "startMonth": {
            "title": "First month (YYYY-MM)",
            "type": "string",
            "description": "Default: the current month."
          },
          "roundTrip": {
            "title": "Round trip calendars",
            "type": "boolean",
            "description": "Also load the return-leg calendar (Ryanair prices are per leg: a return is two one-ways).",
            "default": false
          },
          "airports": {
            "title": "Departure airports (cheapest destinations)",
            "type": "array",
            "description": "Airport codes or names (\"BVA\", \"Paris Beauvais\", \"Berlin\"): you get the cheapest fare to every destination Ryanair serves from there.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "dateFrom": {
            "title": "Destinations: travel from",
            "type": "string",
            "description": "Earliest departure date for the cheapest-destination search (default: tomorrow)."
          },
          "dateTo": {
            "title": "Destinations: travel until",
            "type": "string",
            "description": "Latest departure date (default: in 31 days)."
          },
          "maxPrice": {
            "title": "Destinations: maximum price",
            "minimum": 1,
            "type": "integer",
            "description": "Only destinations with a fare at or below this price (\"where can I fly for under 20?\")."
          },
          "maxDestinationsPerAirport": {
            "title": "Maximum destinations per airport",
            "minimum": 1,
            "maximum": 500,
            "type": "integer",
            "description": "Cheapest first.",
            "default": 50
          },
          "currency": {
            "title": "Currency",
            "enum": [
              "EUR",
              "GBP",
              "PLN",
              "SEK",
              "DKK",
              "NOK",
              "CZK",
              "HUF",
              "RON",
              "CHF",
              "USD"
            ],
            "type": "string",
            "description": "Currency of the fares.",
            "default": "EUR"
          },
          "includeSummary": {
            "title": "Add free summaries",
            "type": "boolean",
            "description": "Per route: cheapest day, median, cheapest day of each month. Per airport: top 10 destinations and cheapest fare per country.",
            "default": true
          },
          "monitorName": {
            "title": "Monitor name",
            "type": "string",
            "description": "Set a name and schedule the Actor (e.g. daily): each run then flags new fares and price changes since the previous run."
          },
          "alertOnPriceDropPct": {
            "title": "Alert on price drops of at least (%)",
            "minimum": 1,
            "maximum": 90,
            "type": "integer",
            "description": "Monitoring: alert when a fare drops by this percentage or more.",
            "default": 10
          },
          "alertMaxPrice": {
            "title": "Alert on any fare at or below",
            "minimum": 1,
            "type": "integer",
            "description": "Get pinged whenever a fare at or below this price appears (new or dropped) — deal-hunting mode."
          },
          "telegramBotToken": {
            "title": "Telegram bot token",
            "type": "string",
            "description": "Alerts on Telegram: create a bot with @BotFather and paste its token."
          },
          "telegramChatId": {
            "title": "Telegram chat ID",
            "type": "string",
            "description": "Your chat ID (send a message to your bot, then open api.telegram.org/bot<token>/getUpdates)."
          },
          "discordWebhookUrl": {
            "title": "Discord webhook URL",
            "type": "string",
            "description": "Alerts in a Discord channel: Channel settings → Integrations → Webhooks."
          },
          "slackWebhookUrl": {
            "title": "Slack webhook URL",
            "type": "string",
            "description": "Alerts in Slack: create an Incoming Webhook for your channel."
          },
          "webhookUrl": {
            "title": "Webhook URL (JSON)",
            "type": "string",
            "description": "Receives one POST per run with the new deals and price drops (Make, Zapier, n8n…)."
          },
          "maxNotifications": {
            "title": "Maximum alerts per run",
            "minimum": 1,
            "maximum": 200,
            "type": "integer",
            "description": "Maximum number of alert messages per run.",
            "default": 30
          }
        }
      },
      "runsResponseSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "actId": {
                "type": "string"
              },
              "userId": {
                "type": "string"
              },
              "startedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "finishedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "status": {
                "type": "string",
                "example": "READY"
              },
              "meta": {
                "type": "object",
                "properties": {
                  "origin": {
                    "type": "string",
                    "example": "API"
                  },
                  "userAgent": {
                    "type": "string"
                  }
                }
              },
              "stats": {
                "type": "object",
                "properties": {
                  "inputBodyLen": {
                    "type": "integer",
                    "example": 2000
                  },
                  "rebootCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "restartCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "resurrectCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "computeUnits": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "options": {
                "type": "object",
                "properties": {
                  "build": {
                    "type": "string",
                    "example": "latest"
                  },
                  "timeoutSecs": {
                    "type": "integer",
                    "example": 300
                  },
                  "memoryMbytes": {
                    "type": "integer",
                    "example": 1024
                  },
                  "diskMbytes": {
                    "type": "integer",
                    "example": 2048
                  }
                }
              },
              "buildId": {
                "type": "string"
              },
              "defaultKeyValueStoreId": {
                "type": "string"
              },
              "defaultDatasetId": {
                "type": "string"
              },
              "defaultRequestQueueId": {
                "type": "string"
              },
              "buildNumber": {
                "type": "string",
                "example": "1.0.0"
              },
              "containerUrl": {
                "type": "string"
              },
              "usage": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "integer",
                    "example": 1
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "usageTotalUsd": {
                "type": "number",
                "example": 0.00005
              },
              "usageUsd": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "number",
                    "example": 0.00005
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}