{
  "openapi": "3.0.1",
  "info": {
    "title": "Ryanair Fare Calendar Scraper",
    "description": "Day-by-day cheapest fares for every date on any Ryanair route, up to a year ahead. Each date comes back with its fare, the currency it was filed in, the flight number and departure time, plus the cheapest and dearest day of every month, in one clean table.",
    "version": "0.0",
    "x-build-id": "k1w91fmy6XhJ9rev5"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/apt_marble~ryanair-fare-calendar-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-apt_marble-ryanair-fare-calendar-scraper",
        "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/apt_marble~ryanair-fare-calendar-scraper/runs": {
      "post": {
        "operationId": "runs-sync-apt_marble-ryanair-fare-calendar-scraper",
        "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/apt_marble~ryanair-fare-calendar-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-apt_marble-ryanair-fare-calendar-scraper",
        "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": {
          "origin": {
            "title": "From (airport code)",
            "type": "string",
            "description": "Three-letter code of the departure airport, for example DUB for Dublin or STN for London Stansted. City-wide codes such as LON are not accepted, because the airline sells fares per airport."
          },
          "destination": {
            "title": "To (airport code)",
            "type": "string",
            "description": "Three-letter code of the arrival airport, for example STN for London Stansted."
          },
          "routes": {
            "title": "More routes (optional)",
            "type": "array",
            "description": "Extra routes to collect in the same run, written as two airport codes, for example DUB-STN. Add as many as you need, up to 50 in one run.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "tripType": {
            "title": "One way or return",
            "enum": [
              "oneWay",
              "roundTrip"
            ],
            "type": "string",
            "description": "One way collects the outbound calendar only. Return also collects the calendar for the journey home, so each date appears twice: once for each direction.",
            "default": "oneWay"
          },
          "monthsAhead": {
            "title": "Months to look ahead",
            "minimum": 1,
            "maximum": 12,
            "type": "integer",
            "description": "How many calendar months to collect, counting the current one. The airline publishes roughly a year of fares, so anything beyond twelve months comes back empty.",
            "default": 3
          },
          "startDate": {
            "title": "First date (optional)",
            "type": "string",
            "description": "Collect from this date instead of today. Written as YYYY-MM-DD. Leave empty to start today."
          },
          "endDate": {
            "title": "Last date (optional)",
            "type": "string",
            "description": "Stop at this date. Written as YYYY-MM-DD. When set, it replaces the months-to-look-ahead setting."
          },
          "currency": {
            "title": "Currency for fares",
            "enum": [
              "EUR",
              "GBP",
              "USD",
              "PLN",
              "CZK",
              "SEK",
              "DKK",
              "NOK",
              "HUF",
              "CHF",
              "MAD"
            ],
            "type": "string",
            "description": "The currency fares are collected in. On routes crossing two currency zones the airline sets its own price in each, so the cheapest day of a month can differ by currency; elsewhere it shows one price converted. Every row states the currency its fare was actually published in.",
            "default": "EUR"
          },
          "includeFlightNumbers": {
            "title": "Add flight numbers",
            "type": "boolean",
            "description": "Attach the flight number of the cheapest departure on each date, and confirm the route is actually operated in that month.",
            "default": true
          },
          "includeUnavailableDates": {
            "title": "Keep dates with no fare",
            "type": "boolean",
            "description": "Keep a row for every date in range, including those with nothing on sale, so the calendar has no gaps. Turn this off to receive priced dates only.",
            "default": true
          },
          "maxRouteMonths": {
            "title": "Maximum route-months to collect",
            "minimum": 1,
            "maximum": 600,
            "type": "integer",
            "description": "A safety cap on the size of the run. One route-month is one route and one calendar month. Two routes across three months is six route-months.",
            "default": 200
          },
          "maxRows": {
            "title": "Maximum rows",
            "minimum": 1,
            "maximum": 200000,
            "type": "integer",
            "description": "Stop after this many dates have been collected. The run stops searching at that point, so nothing beyond the limit is collected or charged.",
            "default": 20000
          }
        }
      },
      "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
                  }
                }
              },
              "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}