{
  "openapi": "3.0.1",
  "info": {
    "title": "Racing TV Racecards Scraper",
    "description": "Scrape Racing TV racecards for Britain and Ireland: every declared runner with its Timeform rating, form, draw, weight, jockey, trainer and starting price, plus analyst verdicts, smart stats and non-runners.",
    "version": "0.1",
    "x-build-id": "sZLDf9Az7XCkVgNtr"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/parseforge~racing-tv-racecards-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-parseforge-racing-tv-racecards-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/parseforge~racing-tv-racecards-scraper/runs": {
      "post": {
        "operationId": "runs-sync-parseforge-racing-tv-racecards-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/parseforge~racing-tv-racecards-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-parseforge-racing-tv-racecards-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": {
          "outputMode": {
            "title": "Row shape",
            "enum": [
              "runners",
              "races",
              "meetings"
            ],
            "type": "string",
            "description": "Runners is one row per declared horse with its rating, form and price. Races is one row per race. Meetings is one row per fixture with its going and race count.",
            "default": "runners"
          },
          "dateFrom": {
            "title": "Date from",
            "type": "string",
            "description": "First racing day, as YYYY-MM-DD. Leave empty for today. Racing TV publishes cards a few days ahead and keeps the recent past."
          },
          "dateTo": {
            "title": "Date to",
            "type": "string",
            "description": "Last racing day, as YYYY-MM-DD. Leave empty to use the same day as the start."
          },
          "maxItems": {
            "title": "Max Items",
            "minimum": 1,
            "maximum": 1000000,
            "type": "integer",
            "description": "Free users: limited to 10 items (preview). Paid users: up to 1,000,000."
          },
          "countries": {
            "title": "Country",
            "type": "array",
            "description": "Keep only meetings in these racing countries, using Racing TV's own codes. A typical day carries Britain and Ireland plus the international cards it broadcasts.",
            "items": {
              "type": "string",
              "enum": [
                "GBR",
                "IRE",
                "FRA",
                "USA",
                "SAF"
              ],
              "enumTitles": [
                "Britain",
                "Ireland",
                "France",
                "United States",
                "South Africa"
              ]
            }
          },
          "trackNameContains": {
            "title": "Track name contains",
            "type": "string",
            "description": "Keep only meetings at a track whose name contains this text, for example \"Ascot\" or \"Curragh\"."
          },
          "raceTypes": {
            "title": "Race type",
            "type": "array",
            "description": "The four codes Racing TV labels races with. A few races carry no code and are kept unless you filter.",
            "items": {
              "type": "string",
              "enum": [
                "Flat",
                "Hurdle",
                "Chase",
                "Bumper"
              ],
              "enumTitles": [
                "Flat",
                "Hurdle",
                "Chase",
                "Bumper (National Hunt Flat)"
              ]
            }
          },
          "surfaces": {
            "title": "Surface",
            "type": "array",
            "description": "Turf or an all-weather surface.",
            "items": {
              "type": "string",
              "enum": [
                "Turf",
                "Polytrack",
                "AllWeather",
                "Fibresand",
                "Dirt",
                "Inner Turf"
              ],
              "enumTitles": [
                "Turf",
                "Polytrack",
                "All weather",
                "Fibresand",
                "Dirt",
                "Inner turf"
              ]
            }
          },
          "horseNameContains": {
            "title": "Horse name contains",
            "type": "string",
            "description": "Runners mode. Keep only horses whose name contains this text."
          },
          "jockeyNameContains": {
            "title": "Jockey name contains",
            "type": "string",
            "description": "Runners mode. Keep only rides by a jockey whose name contains this text."
          },
          "trainerNameContains": {
            "title": "Trainer name contains",
            "type": "string",
            "description": "Runners mode. Keep only runners from a trainer whose name contains this text."
          },
          "minRunners": {
            "title": "Minimum declared runners",
            "minimum": 1,
            "maximum": 40,
            "type": "integer",
            "description": "Skip races with fewer declared runners than this."
          },
          "timeFrom": {
            "title": "Earliest race time",
            "type": "string",
            "description": "Local race time in 24 hour form, for example 14:00."
          },
          "timeTo": {
            "title": "Latest race time",
            "type": "string",
            "description": "Local race time in 24 hour form, for example 17:30."
          },
          "includeWithdrawn": {
            "title": "Include withdrawn runners",
            "type": "boolean",
            "description": "Keep horses marked withdrawn. They are dropped by default so the card matches what will actually run.",
            "default": false
          },
          "apiKey": {
            "title": "Racing TV API key",
            "type": "string",
            "description": "Optional. The public key Racing TV's own web app ships is used by default; set this only if you have your own.",
            "default": "936fdbdf-1e46-4f82-9d18-d81b4803537d"
          },
          "includeRaceVerdict": {
            "title": "Analyst verdict and pace",
            "type": "boolean",
            "description": "Add the race analyst's written verdict, the draw comment and the pace read for the race.",
            "default": false
          },
          "includeSmartStats": {
            "title": "Smart stats",
            "type": "boolean",
            "description": "Add Racing TV's trainer and jockey angles for the race, with the level-stake profit figure behind each one.",
            "default": false
          },
          "includeRaceTips": {
            "title": "Timeform tips",
            "type": "boolean",
            "description": "Races mode. Add the horses Timeform tips in the race with their tipped place and star rating. One extra request per race.",
            "default": false
          },
          "includePedigree": {
            "title": "Pedigree",
            "type": "boolean",
            "description": "Runners mode. Add the sire, dam, damsire, colour and exact age in days for each horse.",
            "default": false
          },
          "includeNonRunnerCheck": {
            "title": "Non-runner check",
            "type": "boolean",
            "description": "Mark each runner against today's declared non-runner list. One request for the whole run.",
            "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
                  }
                }
              },
              "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}