The Odds API Historical API

Historical odds and event snapshots.

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/the-odds-api-historical-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no email required.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

the-odds-api-historical-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: The Odds Events Historical API
  description: The Odds API provides sports betting odds from major bookmakers worldwide. Access current and historical odds for head-to-head, spreads, totals, and outrights markets across 100+ sports. Also provides live scores and event listings. Requires an API key for all requests. Quota is consumed per request based on number of regions and markets requested.
  version: 4.0.0
  contact:
    url: https://the-odds-api.com/
  termsOfService: https://the-odds-api.com/terms
servers:
- url: https://api.the-odds-api.com
  description: Primary API server
- url: https://ipv6-api.the-odds-api.com
  description: IPv6 API server
security:
- apiKey: []
tags:
- name: Historical
  description: Historical odds and event snapshots.
paths:
  /v4/historical/sports/{sport}/odds:
    get:
      operationId: getHistoricalOdds
      summary: Get Historical Sport Odds
      description: 'Returns a snapshot of odds at a specific historical timestamp. Available from June 6, 2020 onwards at 10-minute intervals (5-minute from Sept 2022). Quota: 10 credits per region per market.'
      tags:
      - Historical
      parameters:
      - name: sport
        in: path
        required: true
        description: Sport key from /v4/sports.
        schema:
          type: string
      - name: apiKey
        in: query
        required: true
        description: Your API key.
        schema:
          type: string
      - name: date
        in: query
        required: true
        description: ISO 8601 timestamp for the historical snapshot (e.g., 2023-09-16T12:00:00Z).
        schema:
          type: string
          format: date-time
      - name: regions
        in: query
        required: true
        description: Comma-separated regions for bookmakers.
        schema:
          type: string
      - name: markets
        in: query
        required: false
        description: Comma-separated betting markets.
        schema:
          type: string
      - name: oddsFormat
        in: query
        required: false
        description: 'Odds format: decimal or american.'
        schema:
          type: string
          enum:
          - decimal
          - american
      - name: bookmakers
        in: query
        required: false
        description: Comma-separated bookmaker IDs.
        schema:
          type: string
      - name: eventIds
        in: query
        required: false
        description: Comma-separated event IDs to filter.
        schema:
          type: string
      responses:
        '200':
          description: Historical odds snapshot with navigation timestamps.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HistoricalOddsResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '429':
          $ref: '#/components/responses/RateLimited'
  /v4/historical/sports/{sport}/events:
    get:
      operationId: getHistoricalEvents
      summary: Get Historical Sport Events
      description: 'Returns event data from a specific historical timestamp. Quota: 1 credit (free if no results returned).'
      tags:
      - Historical
      parameters:
      - name: sport
        in: path
        required: true
        description: Sport key from /v4/sports.
        schema:
          type: string
      - name: apiKey
        in: query
        required: true
        description: Your API key.
        schema:
          type: string
      - name: date
        in: query
        required: true
        description: ISO 8601 timestamp for the historical query.
        schema:
          type: string
          format: date-time
      - name: eventIds
        in: query
        required: false
        description: Comma-separated event IDs to filter.
        schema:
          type: string
      - name: commenceTimeFrom
        in: query
        required: false
        description: Filter to events commencing after this datetime.
        schema:
          type: string
          format: date-time
      - name: commenceTimeTo
        in: query
        required: false
        description: Filter to events commencing before this datetime.
        schema:
          type: string
          format: date-time
      responses:
        '200':
          description: Historical event list with navigation timestamps.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HistoricalEventsResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '429':
          $ref: '#/components/responses/RateLimited'
  /v4/historical/sports/{sport}/events/{eventId}/odds:
    get:
      operationId: getHistoricalEventOdds
      summary: Get Historical Event Odds
      description: 'Returns odds for a specific event at a historical snapshot timestamp. Useful for backtesting, line-movement analysis, and reconstructing the full market state of a single event. Quota: 1 credit per unique market per region.'
      tags:
      - Historical
      parameters:
      - name: sport
        in: path
        required: true
        description: Sport key from /v4/sports.
        schema:
          type: string
      - name: eventId
        in: path
        required: true
        description: Event ID for the historical snapshot.
        schema:
          type: string
      - name: apiKey
        in: query
        required: true
        description: Your API key.
        schema:
          type: string
      - name: date
        in: query
        required: true
        description: ISO 8601 timestamp for the historical snapshot.
        schema:
          type: string
          format: date-time
      - name: regions
        in: query
        required: true
        description: Comma-separated regions for bookmakers.
        schema:
          type: string
      - name: markets
        in: query
        required: false
        description: Comma-separated betting markets (all market types accepted).
        schema:
          type: string
      - name: oddsFormat
        in: query
        required: false
        description: 'Odds format: decimal or american.'
        schema:
          type: string
          enum:
          - decimal
          - american
      - name: dateFormat
        in: query
        required: false
        description: 'Date format: iso or unix.'
        schema:
          type: string
          enum:
          - iso
          - unix
      responses:
        '200':
          description: Historical event odds snapshot with timestamp navigation.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HistoricalEventOddsResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/RateLimited'
components:
  responses:
    RateLimited:
      description: Too many requests — quota exceeded.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    Unauthorized:
      description: Unauthorized — invalid or missing API key.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    NotFound:
      description: Not found — the requested event does not exist.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  schemas:
    HistoricalOddsResponse:
      type: object
      description: Historical odds snapshot with timestamp navigation.
      properties:
        timestamp:
          type: string
          format: date-time
          description: Actual timestamp of this snapshot.
        previous_timestamp:
          type: string
          format: date-time
          description: Timestamp of the previous available snapshot.
        next_timestamp:
          type: string
          format: date-time
          description: Timestamp of the next available snapshot.
        data:
          type: array
          items:
            $ref: '#/components/schemas/Event'
          description: Events with odds as of the snapshot timestamp.
    Market:
      type: object
      description: A betting market with outcomes from a bookmaker.
      properties:
        key:
          type: string
          description: Market key (e.g., h2h, spreads, totals, outrights).
        last_update:
          type: string
          format: date-time
          description: When the market was last updated.
        outcomes:
          type: array
          items:
            $ref: '#/components/schemas/Outcome'
          description: Available betting outcomes.
    HistoricalEventOddsResponse:
      type: object
      description: Historical odds snapshot for a single event with timestamp navigation.
      properties:
        timestamp:
          type: string
          format: date-time
          description: Actual timestamp of this snapshot.
        previous_timestamp:
          type: string
          format: date-time
          description: Timestamp of the previous available snapshot.
        next_timestamp:
          type: string
          format: date-time
          description: Timestamp of the next available snapshot.
        data:
          $ref: '#/components/schemas/Event'
    Event:
      type: object
      description: A sporting event with odds from bookmakers.
      properties:
        id:
          type: string
          description: Unique event identifier.
        sport_key:
          type: string
          description: Sport key for the event.
        sport_title:
          type: string
          description: Human-readable sport title.
        commence_time:
          type: string
          format: date-time
          description: Scheduled start time of the event.
        home_team:
          type: string
          description: Home team name.
        away_team:
          type: string
          description: Away team name.
        bookmakers:
          type: array
          items:
            $ref: '#/components/schemas/Bookmaker'
          description: List of bookmakers providing odds.
    HistoricalEventsResponse:
      type: object
      description: Historical events with timestamp navigation.
      properties:
        timestamp:
          type: string
          format: date-time
          description: Snapshot timestamp.
        previous_timestamp:
          type: string
          format: date-time
          description: Previous available snapshot timestamp.
        next_timestamp:
          type: string
          format: date-time
          description: Next available snapshot timestamp.
        data:
          type: array
          items:
            $ref: '#/components/schemas/EventMeta'
          description: Events as of the snapshot timestamp.
    Outcome:
      type: object
      description: A betting outcome (team/player) with price.
      properties:
        name:
          type: string
          description: Name of the team or player.
        description:
          type: string
          description: Additional description (e.g., Over, Under for totals).
        price:
          type: number
          description: Odds price in the requested format.
        point:
          type: number
          description: Point spread or total line value (for spreads and totals markets).
    EventMeta:
      type: object
      description: Event metadata without odds.
      properties:
        id:
          type: string
          description: Unique event identifier.
        sport_key:
          type: string
          description: Sport key.
        sport_title:
          type: string
          description: Sport title.
        commence_time:
          type: string
          format: date-time
          description: Event start time.
        home_team:
          type: string
          description: Home team name.
        away_team:
          type: string
          description: Away team name.
    Error:
      type: object
      properties:
        message:
          type: string
          description: Error description.
    Bookmaker:
      type: object
      description: A bookmaker providing odds for an event.
      properties:
        key:
          type: string
          description: Unique bookmaker identifier (e.g., draftkings, fanduel, betmgm).
        title:
          type: string
          description: Human-readable bookmaker name.
        last_update:
          type: string
          format: date-time
          description: When this bookmaker's odds were last updated.
        markets:
          type: array
          items:
            $ref: '#/components/schemas/Market'
          description: Betting markets offered by this bookmaker.
  securitySchemes:
    apiKey:
      type: apiKey
      name: apiKey
      in: query