{
  "openapi": "3.0.1",
  "info": {
    "title": "F1 Scraper: Race Results, Qualifying & Standings",
    "description": "Scrape Formula 1 data for every season since 1950: race results with grid and points, Q1/Q2/Q3 qualifying, pit stops, race calendars and driver and constructor standings. Filter by season, round or driver. Export CSV, Excel, JSON or XML. No login or API key needed.",
    "version": "0.1",
    "x-build-id": "6l3NxKotL3ceeqr4c"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/recordsdata~f1-racing-results-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-recordsdata-f1-racing-results-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/recordsdata~f1-racing-results-scraper/runs": {
      "post": {
        "operationId": "runs-sync-recordsdata-f1-racing-results-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/recordsdata~f1-racing-results-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-recordsdata-f1-racing-results-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",
        "required": [
          "seasons"
        ],
        "properties": {
          "seasons": {
            "title": "Seasons",
            "minItems": 1,
            "type": "array",
            "description": "F1 seasons to scrape (1950 to current). Use \"current\" for the ongoing season, or four-digit years such as 2024.",
            "default": [
              "current"
            ],
            "items": {
              "type": "string"
            }
          },
          "rounds": {
            "title": "Rounds (optional)",
            "type": "array",
            "description": "Grand Prix round numbers within each season to scrape (for example 1, 5, 22). Leave empty to scrape all rounds of the season. Lap times, tyre stints and race control produce many rows per race, so select rounds for them.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "driverFilter": {
            "title": "Driver filter (optional)",
            "type": "string",
            "description": "Return only rows for these drivers. Accepts the driver id (max_verstappen, hamilton), the three-letter code (VER), the car number (44) or the surname (Alonso). Several drivers can be separated by commas. Applies to results, sprint, qualifying, pit stops, laps, tyre stints, race control, driver standings and the driver directory. Leave empty for all drivers.",
            "default": ""
          },
          "constructorFilter": {
            "title": "Constructor filter (optional)",
            "type": "string",
            "description": "Return only rows for these teams. Accepts the constructor id (mclaren, red_bull, ferrari) or the team name (Alpine). Several teams can be separated by commas. Applies to results, sprint, qualifying, pit stops, laps, tyre stints, race control, both standings tables and the driver and constructor directories. Leave empty for all teams.",
            "default": ""
          },
          "maxItems": {
            "title": "Max Items",
            "minimum": 1,
            "maximum": 1000000,
            "type": "integer",
            "description": "Maximum number of rows to return across all modules. Free users are limited to 10 rows (preview). Paid users can leave it empty or set up to 1,000,000."
          },
          "includeRaceResults": {
            "title": "Race results",
            "type": "boolean",
            "description": "Finishing position, grid, points, laps, status, time, fastest lap, positions gained and win and podium flags per driver per race.",
            "default": true
          },
          "includeSprint": {
            "title": "Sprint results",
            "type": "boolean",
            "description": "Sprint race classification per driver (same columns as race results, billed as a race result). Sprint races exist from 2021; rounds without a sprint return nothing.",
            "default": false
          },
          "includeQualifying": {
            "title": "Qualifying results",
            "type": "boolean",
            "description": "Q1/Q2/Q3 times (text and seconds) and grid positions per driver per race.",
            "default": false
          },
          "includePitstops": {
            "title": "Pit stops",
            "type": "boolean",
            "description": "Every pit stop with lap, stop number and duration, with the driver and team (available from 2011).",
            "default": false
          },
          "includeLaps": {
            "title": "Lap times",
            "type": "boolean",
            "description": "One row per driver per lap with lap time and running position (from 1996). About 1,000 rows and 11 requests (about 12 seconds) per race, so select rounds or set Max Items.",
            "default": false
          },
          "includeLapDetails": {
            "title": "Lap details: sectors, speeds, tyres",
            "type": "boolean",
            "description": "Adds sector times, speed trap speeds, pit-out flag and tyre compound and age to lap rows (2023 onward, from OpenF1). Costs two extra requests per race and is skipped quietly when OpenF1 is unavailable. Only used with Lap times.",
            "default": true
          },
          "includeTyreStints": {
            "title": "Tyre stints",
            "type": "boolean",
            "description": "One row per driver stint with tyre compound, first and last lap and tyre age at the start (2023 onward, from OpenF1).",
            "default": false
          },
          "includeRaceControl": {
            "title": "Race control messages",
            "type": "boolean",
            "description": "Flags, safety cars, DRS status and steward messages with time and lap (2023 onward, from OpenF1).",
            "default": false
          },
          "includeSchedule": {
            "title": "Race schedule",
            "type": "boolean",
            "description": "One row per Grand Prix with circuit, coordinates, date and the time of every session: practice, qualifying, sprint qualifying, sprint and race.",
            "default": false
          },
          "includeDriverStandings": {
            "title": "Driver championship standings",
            "type": "boolean",
            "description": "Final (or current) championship table per season, with the round it is valid after.",
            "default": false
          },
          "includeConstructorStandings": {
            "title": "Constructor championship standings",
            "type": "boolean",
            "description": "Constructor championship table per season (from 1958), with the round it is valid after.",
            "default": false
          },
          "standingsPerRound": {
            "title": "Standings after every round",
            "type": "boolean",
            "description": "Return the championship tables after each selected round instead of only the final table of the season. One extra request per round and table.",
            "default": false
          },
          "includeDrivers": {
            "title": "Driver directory",
            "type": "boolean",
            "description": "Every driver of the season: id, code, number, birth date, nationality and profile link.",
            "default": false
          },
          "includeConstructors": {
            "title": "Constructor directory",
            "type": "boolean",
            "description": "Every constructor of the season: id, name, nationality and profile link.",
            "default": false
          },
          "includeCircuits": {
            "title": "Circuit directory",
            "type": "boolean",
            "description": "Every circuit of the season: id, name, locality, country, coordinates and profile link.",
            "default": false
          },
          "onlyNew": {
            "title": "Only new rows",
            "type": "boolean",
            "description": "Deliver only rows that are new since the last run of the same search (same seasons, rounds, filters and modules). Rows that were delivered before are skipped and not charged; a row whose values moved (a corrected result, new championship points) comes back marked changed. Each row gets a changeType column.",
            "default": false
          },
          "monitorName": {
            "title": "Monitor name (optional)",
            "type": "string",
            "description": "A label for this monitor. Different names keep separate memories for the same search, for example \"season-watch\" and \"ferrari-only\". Leave empty to use the search itself as the memory key.",
            "default": ""
          },
          "resetSeen": {
            "title": "Forget what was seen",
            "type": "boolean",
            "description": "Clear the memory of this search before running, so every row counts as new again.",
            "default": false
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}