Odds-API.io Mappings API

The Mappings API from Odds-API.io — 1 operation(s) for mappings.

GitHub OpenAPI

Operations 1

GET /mappings Get Native ID Mappings #

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/odds-api-io:odds-api-io-mappings-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

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

OpenAPI Specification

odds-api-io-mappings-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  description: 'Odds-API.io is a powerful sports betting odds comparison API, providing real-time data from 450+ bookmakers across 34 sports with near zero latency.


    - 450+ bookmakers supported

    - 34 sports including Football, Basketball, Tennis, Esports and more

    - Real-time odds with close to zero latency

    - Pre-match & In-play odds coverage

    - 99.9% uptime for reliability'
  title: Odds-API.io - Real-Time Sports Betting Odds API (v3)…
  contact: {}
  version: 3.0.0
servers:
- url: https://api.odds-api.io/v3
tags:
- name: Mappings
paths:
  /mappings:
    get:
      security:
      - ApiKeyAuth: []
      description: 'Maps our events and selections to a bookmaker''s own identifiers, so our prices can be matched to the bookmaker''s own markets. For Polymarket, `marketId` is the conditionId and `outcomeId` is the CLOB token id. For Kalshi, `marketId` is the contract ticker and `outcomeId` is `yes` or `no`. Each row carries our event''s `home`, `away`, `date`, `sport` and `league`.


        Modes:

        - `eventId`, or `eventIds` with up to 10 ids

        - `marketId`, or `marketIds` with up to 10 ids, optionally with `outcomeId`

        - `outcomeId` alone

        - bulk sync: `bookmaker` with none of the above. Returns every mapping for upcoming and live linked events as `{ "data": [...], "nextCursor": "..." }`. Pass `nextCursor` back as `cursor` until it is `null`.


        Every mode returns `{data, nextCursor}`; `nextCursor` is null for lookups. `market` and `active` narrow every mode; `sport`, `league`, `limit` and `cursor` apply to bulk sync only. When `outcomeId` alone matches outcomes in more than one market (Kalshi outcome ids are `yes` and `no`), the request returns 400 and `marketId` must be added. `market`, `hdp` and `side` use our event''s orientation, the same as `/v3/odds`. A mapping stays listed with `active: false` after the bookmaker withdraws the outcome. A batch or bulk call counts as one request. Available on paid plans; the bookmaker must be in your selection.'
      tags:
      - Mappings
      summary: Get Native ID Mappings
      parameters:
      - description: API key for authentication
        name: apiKey
        in: query
        required: true
        schema:
          type: string
      - example: Polymarket
        description: Bookmaker name
        name: bookmaker
        in: query
        required: true
        schema:
          type: string
      - example: '71515842'
        description: Our event id. Returns every mapping of this event.
        name: eventId
        in: query
        schema:
          type: string
      - example: 71515842,71515900
        description: Comma-separated list of up to 10 of our event ids. Use instead of `eventId`.
        name: eventIds
        in: query
        schema:
          type: string
      - description: The bookmaker's market id (Polymarket conditionId, Kalshi contract ticker). Can be combined with `outcomeId`.
        name: marketId
        in: query
        schema:
          type: string
      - example: KXNFLGAME-26OCT04BUFNE-BUF,KXNFLGAME-26OCT04BUFNE-NE
        description: Comma-separated list of up to 10 bookmaker market ids. Use instead of `marketId`; can be combined with `outcomeId`.
        name: marketIds
        in: query
        schema:
          type: string
      - description: The bookmaker's outcome id (Polymarket CLOB token id, Kalshi `yes` or `no`). For Kalshi, pass it together with `marketId`.
        name: outcomeId
        in: query
        schema:
          type: string
      - example: Spread
        description: Only this market, by its exact name as served in `/v3/odds` (case-sensitive).
        name: market
        in: query
        schema:
          type: string
      - description: '`true` for outcomes the bookmaker still lists, `false` for withdrawn ones. Default: both.'
        name: active
        in: query
        schema:
          type: string
          enum:
          - 'true'
          - 'false'
      - example: american-football
        description: 'Bulk sync only: sport slug or name.'
        name: sport
        in: query
        schema:
          type: string
      - example: usa-nfl
        description: 'Bulk sync only: league slug. Requires `sport`.'
        name: league
        in: query
        schema:
          type: string
      - description: 'Bulk sync only: rows per page.'
        name: limit
        in: query
        schema:
          type: integer
          default: 1000
          minimum: 1
          maximum: 5000
      - description: 'Bulk sync only: the `nextCursor` of the previous page.'
        name: cursor
        in: query
        schema:
          type: string
      responses:
        '200':
          description: OK. data holds the mappings; nextCursor is set only in bulk sync while more pages remain.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/controllers.NativeIDMappingPage'
        '400':
          description: Bad Request Also returned when a lookup matches more than 5000 mappings.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/controllers.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/controllers.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/controllers.ErrorResponse'
        '404':
          description: Not Found (unknown league in bulk sync)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/controllers.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/controllers.ErrorResponse'
      x-mint:
        metadata:
          description: Map our events and selections to a bookmaker's own ids, such as Polymarket condition and token ids or Kalshi tickers, by event, market or bulk sync.
      operationId: getMappings
      x-operation-id-source: derived
components:
  schemas:
    controllers.Sport:
      type: object
      properties:
        name:
          type: string
          example: Football
        slug:
          type: string
          example: football
    controllers.NativeIDMappingPage:
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/controllers.NativeIDMapping'
        nextCursor:
          type:
          - string
          - 'null'
          description: Pass as `cursor` to get the next page. `null` on the last page.
      description: Every /v3/mappings response. nextCursor is null for lookups and set in bulk sync while more pages remain.
    controllers.ErrorResponse:
      type: object
      properties:
        error:
          type: string
          example: Error message
    controllers.League:
      type: object
      properties:
        name:
          type: string
          example: Premier League
        slug:
          type: string
          example: premier-league
    controllers.NativeIDMapping:
      type: object
      properties:
        eventId:
          type: integer
          example: 71515842
          description: Our event id
        home:
          type: string
          example: Pittsburgh Steelers
          description: Home team of our event, in our orientation
        away:
          type: string
          example: Cleveland Browns
          description: Away team of our event, in our orientation
        date:
          type: string
          format: date-time
          description: Start time of our event
        sport:
          $ref: '#/components/schemas/controllers.Sport'
        league:
          $ref: '#/components/schemas/controllers.League'
        bookmaker:
          type: string
          example: Polymarket
        market:
          type: string
          example: Spread
          description: Market name, as in /v3/odds
        label:
          type: string
          description: Selection label for labelled markets such as player props
        hdp:
          type: number
          example: -2.5
          description: The line as /v3/odds shows it (the home handicap on a Spread). Omitted on markets without a line
        side:
          type: string
          example: home
          enum:
          - home
          - away
          - draw
          - over
          - under
          - 'yes'
          - 'no'
        nativeEventId:
          type: string
          example: '885112'
          description: 'The bookmaker''s event id. For Polymarket it is the same value as `bookmakerIds` in `/v3/odds`. For Kalshi it is the event ticker the contract belongs to: the game ticker (the `bookmakerIds` value) for ML, and the spread or total event ticker for those contracts.'
        marketId:
          type: string
          example: 0x3b5c0c7e...
          description: The bookmaker's market id (Polymarket conditionId, Kalshi contract ticker)
        outcomeId:
          type: string
          example: '71321045679252212594626385532706912750332728571942532289631379312455583992563'
          description: The bookmaker's outcome id (Polymarket CLOB token id, Kalshi `yes` or `no`)
        outcomeLabel:
          type: string
          example: Browns
          description: The outcome's name at the bookmaker
        extra:
          type: object
          additionalProperties: {}
          description: Bookmaker-specific details, such as the Polymarket question
        active:
          type: boolean
          example: true
          description: False once the bookmaker stopped listing the outcome
        firstSeenAt:
          type: string
          format: date-time
        lastCheckedAt:
          type: string
          format: date-time
          description: When we last saw the outcome at the bookmaker. Refreshed at least every 30 minutes while we track the event; Polymarket mappings stop refreshing at kickoff.
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: query
      name: apiKey
      description: Your Odds-API.io API key, sent as the apiKey query parameter. Get one at https://odds-api.io/pricing.
x-origin:
- url: https://api.odds-api.io/v3/docs/doc.json
  format: swagger
  version: '2.0'
  converter:
    url: https://github.com/mermade/oas-kit
    version: 7.0.8