owlsinsight-com Source API (v2) API

The Source API (v2) API from owlsinsight-com — 2 operation(s) for source api (v2).

Operations 2

GET /api/v2/{book}/{sport} Returns a sportsbook's native markets for a sport exactly as the source… #
GET /api/v2/{book}/{sport}/leagues Returns the league index for a sport at one book: each league key with its name… #

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/owlsinsight-com:owlsinsight-com-source-api-v2-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 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

owlsinsight-com-source-api-v2-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  description: 'Generated from the Owls Insight API manifest and the owls-insight-ts SDK types. Schemas are deliberately lenient: every field is optional, enums are open (x-extensible-enum), and unknown fields may appear. Decode accordingly.'
  title: Owls Insight Source API (v2) API
  version: 0.78.0
  x-owls-manifest-commit: c93b0756
servers:
- url: https://api.owlsinsight.com
security:
- bearerAuth: []
tags:
- name: Source API (v2)
paths:
  /api/v2/{book}/{sport}:
    get:
      description: 'Returns a sportsbook''s native markets for a sport exactly as the source publishes them: no mapping, no team normalization, no merging. Each entry in data is one raw market blob keyed by the source''s own market id. marketIds narrows data to the listed market ids and prefixes (main,props-* or props-9524; case does not matter). Only those entries are returned, dated in meta.ageSeconds and hashed into the ETag, so a caller of one family keeps its 304s while another family moves. meta.marketIds echoes the filter and meta.marketsFilteredOut counts the entries left out. When the stored board exists but nothing matches, data is empty with meta.cached true and the status and age of the board''s entries a default request returns, so it is not mistaken for an outage; if none of those is left (for example only DraftKings props-* is stored), meta.status is no-data. An entry that is neither an id (letters, digits, - or _) nor a prefix ending in * is a 400. bet365, hardrock, mybookie, stake, thunderpick and underdog ignore marketIds and always return their whole board. DraftKings nba, nfl, nhl, mlb, ncaab and ncaaf hold main (the league page: game lines), live (the live feed snapshot, when it fits) and one props- entry per player-prop subcategory: DraftKings'' response for that subcategory as received (parsed and re-serialized, not mapped), with its events, markets and selections. props-* entries refresh about every 3 to 5 minutes and are REST only (no draftkings-v2-update message). They are left out unless marketIds asks for them; meta.defaultExcluded then gives their count and the marketIds value that includes them. They are judged fresh against their own 480 second threshold, so they do not turn meta.status stale; meta.marketAges gives each returned entry''s age in seconds. When one subcategory''s request fails, its previous entry is kept for a cycle; if it reaches its 10 minute lifetime first, a request that includes it reads meta.status partial until the entry is cleared, at the latest on the next cycle. meta.status is ok, stale, partial or no-data. It flips to stale once ageSeconds passes the book''s own freshness threshold, which is set to that book''s refresh cadence. Send If-None-Match with the ETag response header, quoted exactly as received (a leading W/ is fine), to receive 304 when nothing changed. The body etag is the same value without quotes, so a bare etag never matches. A 304 on /api/v2 does not count toward your monthly quota; it still counts toward your per-minute limit and appears in your usage log. A key that has used up its monthly quota gets 429 even when the request would have been a 304. meta.cached is false only when there is no stored board to serve (no-data, and partial-miss on the books that report it). It is not a freshness signal: read meta.ageSeconds and meta.status for that. For a multi-league sport without league, most books return 400 with a hint to the /leagues index. Books flagged mergeWhenUnspecified instead return a merged board with league null, a leagues index attributing every market to its competition, and meta.merged true; if the merge had to truncate, meta.status is partial and meta.truncated says what was omitted. A few books key data by event rather than by market, so one entry holds a whole game. Each book''s sport set, single-league sports and league rules are in the v2Books entries of this manifest. The SDKs expose one method per book: getV2 in TypeScript and get__v2 in Python. The stake board is the exception to the meta shape above: it serves meta { source, cached, status, timestamp, ageSeconds, hash, now } on every response, with data as an array of fixtures. On no-data and partial-miss, timestamp, ageSeconds and hash are null because there is no board to date, and now is the response clock; never read freshness from a null timestamp.'
      operationId: getV2
      parameters:
      - in: path
        name: book
        required: true
        schema:
          type: string
          x-extensible-enum:
          - 4casters
          - 888sport
          - ballybet
          - bet105
          - bet365
          - betonline
          - betrivers
          - betus
          - bookmaker
          - bovada
          - draftkings
          - fanaticsmarkets
          - fanduel
          - kalshi
          - lowvig
          - mybookie
          - novig
          - pinnacle
          - polymarket
          - propbuilder
          - stake
          - thescore
          - thunderpick
          - tippmixpro
          - underdog
          - versus
      - in: path
        name: sport
        required: true
        schema:
          type: string
      - description: League key to serve. Required for multi-league sports.
        in: query
        name: league
        schema:
          type: string
      - description: Comma-separated market ids and/or prefixes ending in *, e.g. main or props-*, to return only those entries of data; * returns every entry. Without it, or with it empty, a book returns its default set (DraftKings US sports leave out props-*).
        in: query
        name: marketIds
        schema:
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/V2BookResponse'
          description: OK
      summary: Returns a sportsbook's native markets for a sport exactly as the source…
      tags:
      - Source API (v2)
      x-owls-access: All paying tiers
  /api/v2/{book}/{sport}/leagues:
    get:
      description: 'Returns the league index for a sport at one book: each league key with its name and market count, for use as the league parameter on the markets endpoint.


        Single-league sports still answer, with one entry.


        marketCount counts the entries a request without marketIds returns. Books that leave some entries out by default (DraftKings US sports: props-*) also give marketCountExcludedByDefault, the entries reachable only with marketIds.


        The SDKs expose one method per book: getV2Leagues in TypeScript and get__v2_leagues in Python.'
      operationId: getV2Leagues
      parameters:
      - in: path
        name: book
        required: true
        schema:
          type: string
          x-extensible-enum:
          - 4casters
          - 888sport
          - ballybet
          - bet105
          - bet365
          - betonline
          - betrivers
          - betus
          - bookmaker
          - bovada
          - draftkings
          - fanaticsmarkets
          - fanduel
          - kalshi
          - lowvig
          - novig
          - pinnacle
          - polymarket
          - propbuilder
          - thescore
          - tippmixpro
          - versus
      - in: path
        name: sport
        required: true
        schema:
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/V2LeaguesResponse'
          description: OK
      summary: 'Returns the league index for a sport at one book: each league key with its name…'
      tags:
      - Source API (v2)
      x-owls-access: All paying tiers
components:
  schemas:
    V2LeagueIndexEntry:
      properties:
        leagueKey:
          type: string
        leagueName:
          type: string
        marketCount:
          format: double
          type: number
        updatedAt:
          format: double
          type: number
      type: object
    V2LeagueSlice:
      description: 'One league''s share of a merged response: the `data` keys it contributed.'
      properties:
        leagueKey:
          type: string
        leagueName:
          type: string
        marketCount:
          format: double
          type: number
        marketIds:
          items:
            type: string
          type: array
      type: object
    V2BookResponse:
      description: Any v2 book's raw board. `data` is keyed by the book's market or event id and holds the book's own JSON. `league` is null on a merged response, which then lists `leagues`.
      properties:
        data:
          $ref: '#/components/schemas/RawJson'
        etag:
          type: string
        league:
          type:
          - string
          - 'null'
        leagues:
          items:
            $ref: '#/components/schemas/V2LeagueSlice'
          type: array
        marketCount:
          format: double
          type: number
        meta:
          $ref: '#/components/schemas/V2Meta'
        sport:
          type: string
        success:
          type: boolean
      type: object
    V2LeaguesResponse:
      properties:
        leagueCount:
          format: double
          type: number
        leagues:
          items:
            $ref: '#/components/schemas/V2LeagueIndexEntry'
          type: array
        meta:
          $ref: '#/components/schemas/V2Meta'
        sport:
          type: string
        success:
          type: boolean
      type: object
    RawJson:
      description: The book's own JSON, served verbatim. Decode without strict typing.
    V2Meta:
      properties:
        ageSeconds:
          format: double
          type: number
        cacheTimestamp:
          type: string
        cached:
          type: boolean
        duplicateMarketIdsDropped:
          format: double
          type: number
        leagueCount:
          format: double
          type: number
        leaguesOmitted:
          format: double
          type: number
        marketsOmitted:
          format: double
          type: number
        merged:
          type: boolean
        source:
          type: string
        status:
          type: string
          x-extensible-enum:
          - no-data
          - ok
          - partial
          - stale
        timestamp:
          type: string
        truncated:
          type: boolean
      type: object
  securitySchemes:
    bearerAuth:
      description: Your Owls Insight API key.
      scheme: bearer
      type: http
x-owls-v2-books:
- book: 4casters
  sports:
  - cfl
  - esports
  - mlb
  - mma
  - nba
  - ncaab
  - ncaaf
  - nfl
  - nhl
  - soccer
  - tennis
  - wnba
  wsEvent: 4casters-v2-update
- book: 888sport
  sports:
  - mlb
  - nba
  - ncaab
  - ncaaf
  - nfl
  - nhl
  - soccer
  - tennis
  - wnba
  wsEvent: null
- book: ballybet
  sports:
  - aussie-rules
  - boxing
  - cricket
  - cycling
  - darts
  - formula1
  - golf
  - handball
  - mlb
  - mma
  - motorsport
  - nba
  - ncaab
  - ncaaf
  - nfl
  - nhl
  - rugby-league
  - rugby-union
  - snooker
  - soccer
  - specials
  - surfing
  - table-tennis
  - tennis
  - wnba
  wsEvent: ballybet-v2-update
- book: bet105
  sports:
  - alpine-skiing
  - archery
  - athletics
  - aussie-rules
  - badminton
  - bandy
  - baseball
  - basketball
  - basketball-3x3
  - biathlon
  - bowls
  - boxing
  - cfl
  - chess
  - cricket
  - curling
  - cycling
  - darts
  - esports
  - fencing
  - field-hockey
  - floorball
  - football
  - formula1
  - futsal
  - gaelic-sports
  - golf
  - greyhounds
  - handball
  - hockey
  - horse-racing
  - hurling
  - judo
  - kabaddi
  - kbo
  - lacrosse
  - mlb
  - mma
  - motorbikes
  - motorsport
  - nascar
  - nba
  - ncaab
  - ncaaf
  - netball
  - nfl
  - nhl
  - npb
  - olympics
  - padel
  - pool
  - rugby-league
  - rugby-union
  - sailing
  - ski-jumping
  - snooker
  - soccer
  - softball
  - speedway
  - squash
  - sumo
  - supercars
  - surfing
  - table-tennis
  - taekwondo
  - tennis
  - triathlon
  - trotting
  - ultimate
  - volleyball
  - water-polo
  - wnba
  wsEvent: bet105-v2-update
- book: bet365
  sports:
  - mlb
  - nba
  - nfl
  - nhl
  - soccer
  wsEvent: bet365-v2-update
- book: betonline
  sports:
  - mlb
  - nba
  - ncaaf
  - nfl
  - nhl
  - soccer
  - tennis
  wsEvent: betonline-realtime
- book: betrivers
  sports:
  - aussie-rules
  - boxing
  - cricket
  - cycling
  - darts
  - formula1
  - golf
  - handball
  - mlb
  - mma
  - motorsport
  - nba
  - ncaab
  - ncaaf
  - nfl
  - nhl
  - rugby-league
  - rugby-union
  - snooker
  - soccer
  - specials
  - surfing
  - table-tennis
  - tennis
  - wnba
  wsEvent: betrivers-v2-update
- book: betus
  sports:
  - alpine-skiing
  - archery
  - athletics
  - aussie-rules
  - badminton
  - bandy
  - baseball
  - basketball
  - basketball-3x3
  - biathlon
  - bowls
  - boxing
  - cfl
  - chess
  - cricket
  - curling
  - cycling
  - darts
  - esports
  - fencing
  - field-hockey
  - floorball
  - football
  - formula1
  - futsal
  - gaelic-sports
  - golf
  - greyhounds
  - handball
  - hockey
  - horse-racing
  - hurling
  - judo
  - kabaddi
  - kbo
  - lacrosse
  - mlb
  - mma
  - motorbikes
  - motorsport
  - nascar
  - nba
  - ncaab
  - ncaaf
  - netball
  - nfl
  - nhl
  - npb
  - olympics
  - padel
  - pool
  - rugby-league
  - rugby-union
  - sailing
  - ski-jumping
  - snooker
  - soccer
  - softball
  - speedway
  - squash
  - sumo
  - supercars
  - surfing
  - table-tennis
  - taekwondo
  - tennis
  - triathlon
  - trotting
  - ultimate
  - volleyball
  - water-polo
  - wnba
  wsEvent: betus-v2-update
- book: bookmaker
  sports:
  - alternative-sports
  - aussie-rules
  - baseball
  - basketball
  - boxing
  - cricket
  - darts
  - e-gaming
  - entertainment
  - esports
  - football
  - futsal
  - futures
  - golf
  - ice-hockey
  - mma
  - motorsport
  - politics
  - rugby
  - soccer
  - surfing
  - table-tennis
  - tennis
  wsEvent: null
- book: bovada
  sports:
  - mlb
  - mma
  - nba
  - ncaab
  - ncaaf
  - nfl
  - nhl
  wsEvent: null
- book: draftkings
  sports:
  - mlb
  - mma
  - nba
  - ncaab
  - ncaaf
  - nfl
  - nhl
  - soccer
  - wnba
  wsEvent: draftkings-v2-update
- book: fanaticsmarkets
  sports:
  - boxing
  - cs2
  - dota2
  - golf
  - lol
  - mlb
  - mma
  - nba
  - ncaab
  - ncaaf
  - nfl
  - nhl
  - soccer
  - tennis
  - valorant
  - wnba
  wsEvent: fanaticsmarkets-v2-update
- book: fanduel
  sports:
  - mlb
  - mma
  - nba
  - ncaaf
  - nfl
  - nhl
  - soccer
  - tennis
  - wnba
  wsEvent: fanduel-v2-update
- book: hardrock
  sports:
  - AMERICAN_FOOTBALL
  - AUSSIE_RULES
  - BASEBALL
  - BASKETBALL
  - BOXING
  - CRICKET
  - DARTS
  - HANDBALL
  - ICE_HOCKEY
  - MMA
  - RUGBY
  - SNOOKER
  - SOCCER
  - TABLE_TENNIS
  - TENNIS
  - VOLLEYBALL
  wsEvent: null
- book: kalshi
  sports:
  - cs2
  - dota2
  - lol
  - mlb
  - mma
  - nba
  - ncaaf
  - nfl
  - nhl
  - overwatch
  - pubg
  - rainbow6
  - rocketleague
  - soccer
  - tennis
  - valorant
  - wnba
  wsEvent: kalshi-v2-update
- book: lowvig
  sports:
  - boxing
  - cricket
  - darts
  - golf
  - mlb
  - mma
  - nba
  - ncaab
  - ncaaf
  - nfl
  - nhl
  - soccer
  - table-tennis
  - tennis
  - wnba
  wsEvent: lowvig-v2-update
- book: mybookie
  sports:
  - mlb
  - nba
  wsEvent: mybookie-v2-update
- book: novig
  sports:
  - mlb
  - nba
  - ncaab
  - ncaaf
  - nfl
  - nhl
  wsEvent: null
- book: pinnacle
  sports:
  - esports
  - handball
  - mlb
  - mma
  - nba
  - ncaab
  - ncaaf
  - nfl
  - nhl
  - soccer
  - tennis
  - wnba
  wsEvent: pinnacle-v2-update
- book: polymarket
  sports:
  - cs2
  - dota2
  - lol
  - mlb
  - mma
  - nba
  - ncaaf
  - nfl
  - nhl
  - overwatch
  - pubg
  - rainbow6
  - rocketleague
  - soccer
  - tennis
  - valorant
  - wnba
  wsEvent: polymarket-v2-update
- book: propbuilder
  sports:
  - mlb
  - nba
  - ncaaf
  - nfl
  - nhl
  - wnba
  wsEvent: propbuilder-v2-update
- book: stake
  sports:
  - baseball
  - basketball
  - cs2
  - ice-hockey
  - mma
  - soccer
  - table-tennis
  - tennis
  wsEvent: null
- book: thescore
  sports:
  - mlb
  - nba
  - ncaaf
  - nfl
  - nhl
  - soccer
  - tennis
  wsEvent: null
- book: thunderpick
  sports:
  - american-football
  - baseball
  - basketball
  - cs2
  - dota2
  - lol
  - soccer
  - tennis
  - valorant
  wsEvent: thunderpick-v2-update
- book: tippmixpro
  sports:
  - boxing
  - cs2
  - dota2
  - lol
  - mlb
  - mma
  - nba
  - ncaab
  - ncaaf
  - nfl
  - nhl
  - soccer
  - tennis
  - valorant
  wsEvent: tippmixpro-v2-update
- book: underdog
  sports:
  - cs2
  - kbo
  - lol
  - mlb
  - mma
  - nba
  - ncaaf
  - nfl
  - nhl
  - npb
  - pga
  - soccer
  - tennis
  - valorant
  - wnba
  wsEvent: null
- book: versus
  sports:
  - afl
  - badminton
  - basketball
  - boxing
  - cricket
  - darts
  - esports
  - golf
  - handball
  - mlb
  - mma
  - nfl
  - nhl
  - padel
  - soccer
  - table-tennis
  - tennis
  - volleyball
  wsEvent: versus-v2-update