Odds337Docs
    Odds337BackGet API key
    Getting started
    • Introduction
    • Authentication
    • Quickstart
    • Tokens & pricing
    • Limits
    • Errors
    • Odds formats
    Reference
    • GET/sports
    • GET/books
    • GET/teams
    • GET/players
    • Logos & headshots
    • GET/events
    • GET/odds
    • GET/scores
    • GET/history
    • GET/clv
    • POST /clv
    • GET/usage
    • GET/_health
    • WebSocket
    • Specs & SDKs
    Racing
    • GET/racing/meetings
    • GET/racing/race
    • GET/racing/history
    • race_id and status
    Concepts
    • event_id
    • selection_key
    • team_id & player_id
    • Open & close prices
    • 337 model price
    • Event links
    • Statuses
    Getting started
    • Introduction
    • Authentication
    • Quickstart
    • Tokens & pricing
    • Limits
    • Errors
    • Odds formats
    Reference
    • GET/sports
    • GET/books
    • GET/teams
    • GET/players
    • Logos & headshots
    • GET/events
    • GET/odds
    • GET/scores
    • GET/history
    • GET/clv
    • POST /clv
    • GET/usage
    • GET/_health
    • WebSocket
    • Specs & SDKs
    Racing
    • GET/racing/meetings
    • GET/racing/race
    • GET/racing/history
    • race_id and status
    Concepts
    • event_id
    • selection_key
    • team_id & player_id
    • Open & close prices
    • 337 model price
    • Event links
    • Statuses

    API reference

    Search players

    Players on the rosters we hold, with team, position and headshot. Free on every plan.

    GET/odds/v1/players
    Cost
    0 tokens
    Authentication
    X-API-Key, demo key works

    Parameters

    • sportstringoptional
      A sport key, e.g. basketball. One of sport or league is required.
    • leaguestringoptional
      Our league key (nba, a_league, atp_shanghai, formula_1) or a roster key. One of sport or league is required.
    • teamstringoptional
      A team_id from /teams, a team name, or an abbreviation such as MIA.
    • qstringoptional
      Name contains, 2 to 80 characters. Case and accent insensitive.
    • limitintegeroptional
      1 to 500 per page.Default: 100
    • offsetintegeroptional
      Where the page starts. Pass next_offset back until it is null.Default: 0

    Request

    curl -s "https://api.b337.ai/odds/v1/players?sport=basketball&q=curry" \
      -H "X-API-Key: demo"
    import requests
    
    resp = requests.get(
        "https://api.b337.ai/odds/v1/players",
        params={"sport": "basketball", "q": "curry"},
        headers={"X-API-Key": "demo"},
        timeout=10,
    )
    resp.raise_for_status()
    print(resp.json())
    // Node 18+, saved as an .mjs file
    const res = await fetch("https://api.b337.ai/odds/v1/players?sport=basketball&q=curry", {
      headers: { "X-API-Key": "demo" },
    });
    console.log(await res.json());

    Response

    200 OK
    {
      "count": 2, "total": 2, "offset": 0, "next_offset": null, "leagues": ["nba"],
      "data": [
        {"player_id": "nba:espn:2326307", "name": "Seth Curry", "sport": "basketball", "league": "nba",
         "team": null, "team_abbr": null, "position": "G", "jersey": null,
         "headshot_url": null, "profile_url": null},
        {"player_id": "nba:espn:3975", "name": "Stephen Curry", "sport": "basketball", "league": "nba",
         "team": "Golden State Warriors", "team_abbr": "GS", "position": "G", "jersey": "30",
         "headshot_url": "https://api.b337.ai/odds/v1/media/player/nba:espn:3975", "profile_url": null}
      ],
      "generated_at": "2026-10-06T00:00:00Z"
    }

    Fields

    • One row per person per roster. player_id is stable: store it. See team_id and player_id.
    • Rosters held: NFL, NBA, NHL, MLB, AFL, NRL, EPL, A-League, La Liga, Serie A, Bundesliga, Ligue 1, Champions League, Europa League, MLS, UFC, PFL, ONE, ATP, WTA, golf, F1, boxing and darts.
    • team, team_abbr, position and jersey are null where the source has none (tennis, golf and combat sports have no team).
    • headshot_url and profile_url are null where we hold none. See logos and headshots.
    • Paging: total is every match; pass next_offset back as offset until it is null.
    • It costs 0 tokens on every plan, the demo key included.

    Without sport or league the call is a 400. Use q for a name search; it needs at least 2 characters.

    PreviousGET /teamsNextLogos & headshots

    On this page

    • Parameters
    • Request
    • Response
    • Fields