Integration GuidesDocs
Coverage MatrixDocumentationChange LogLog InContact Us
Integration Guides

ID Handling

Odds Comparison uses Sportradar's URN identifier scheme (sr: IDs) across every package. This page covers the ID families you will handle, which of them are stable across products, and how to translate them to the GUID-based League Specific APIs (NFL, MLB, NBA, and the other US-style APIs) when you join odds to stats and schedules.



The URN Families

PrefixIdentifiesExample
sr:sport:A sportsr:sport:3 (Baseball)
sr:competition:A league or competitionsr:competition:109 (MLB)
sr:category:A category grouping competitions, usually a countrysr:category:43 (USA, American Football)
sr:sport_event:A single gamesr:sport_event:63301085
sr:competitor:A teamsr:competitor:3627 (Chicago Cubs)
sr:player:A playersr:player:848589
sr:book:A bookmakersr:book:18149 (DraftKings)
sr:market:A market type (prematch and props)sr:market:251
sr:iscreen_market:A futures marketsr:iscreen_market:2761 (MLB World Series)
sr:outcome:An outcome typesr:outcome:4 (home)

Note the two market ID families: prematch and player prop markets use sr:market:, while futures markets use sr:iscreen_market:. They are different ID spaces; do not join one against the other.



IDs Are Consistent Across the Odds APIs

The same sport event carries the same sr:sport_event: ID in every Odds Comparison package and in the Probabilities API. For example, one MLB game returned data under the identical ID sr:sport_event:63301085 from all three of these feeds:

GET https://api.sportradar.com/oddscomparison-prematch/trial/v2/en/sport_events/sr:sport_event:63301085/sport_event_markets.json
GET https://api.sportradar.com/oddscomparison-player-props/trial/v2/en/sport_events/sr:sport_event:63301085/players_props.json
GET https://api.sportradar.com/probabilities/trial/v1/en/sport_events/sr:sport_event:63301085/probabilities.json

Discover an event once, then reuse its ID across packages. Competitor, player, competition, and book IDs are equally shared. Older Odds Comparison URLs wrote the same event identifier with an sr:match: prefix; the numeric ID is identical.



Translating to League Specific (GUID) IDs

Sportradar's League Specific APIs (NFL, MLB, NBA, NHL, and others) identify entities with GUIDs. Each Odds Comparison package carries five mappings feeds that pair the URN with its GUID so you can join odds to those products:

Sport Event Mappings entries appear 14 days before an event, once odds are available for it.

GET https://api.sportradar.com/oddscomparison-prematch/trial/v2/en/competitions/mappings.json
x-api-key: YOUR_API_KEY
{
  "generated_at": "2026-07-20T16:30:21+00:00",
  "mappings": [
    {
      "external_id": "64e90d00-9ea0-4c91-8292-e78414439d54",
      "id": "sr:competition:8"
    },
    {
      "external_id": "ea97fe54-4712-4bd7-b643-8409887f9f61",
      "id": "sr:competition:16"
    },
    {
      "external_id": "fdc32c0e-2a6a-4bbe-b855-41fef6369bfe",
      "id": "sr:competition:17"
    },
    {
      "external_id": "cd24a25b-3fc0-48fd-9c54-f793d51af976",
      "id": "sr:competition:23"
    }
  ]
}

The response is trimmed here to the first four rows. In each mapping, id is the URN and external_id is the GUID used by the League Specific APIs.


⚠️

Mappings feeds are paginated

Mappings feeds return 1000 rows per page. The Player Mappings feed, for example, reports X-Max-Results: 115218: over 115 pages. Walk start in increments of 1000 until X-Result drops below 1000, and cache the result; mappings change far less often than odds.


{
  "generated_at": "2026-07-20T16:33:17+00:00",
  "mappings": [
    {
      "external_id": "036f914a-aad0-4ff1-9771-54f9e963d1b8",
      "id": "sr:player:996277"
    },
    {
      "external_id": "252f4b13-6abb-45dc-ae85-f822b817cb51",
      "id": "sr:player:1605464"
    },
    {
      "external_id": "31a50d54-ef46-47a8-863c-6f4d4e5aa184",
      "id": "sr:player:607928"
    },
    {
      "external_id": "3f64e9a6-6e1e-499b-aec8-764c99f634b2",
      "id": "sr:player:857970"
    }
  ]
}


The Same GUIDs Appear in the Probabilities API

The Probabilities API exposes each competition's GUIDs directly in a uuids field on its competition records. Those values match the external_id values from the Odds Comparison mappings feeds; for MLB, the Competition Mappings GUID 2fa448bc-fc17-4d3d-be03-e60e080fdc26 is one of the comma-separated values in the Probabilities uuids field for sr:competition:109. Whichever product you start from, you end up with the same join keys.

Odds Comparison: Competition Mappings
id: sr:competition:109external_id: 2fa448bc-fc17-...One row per competition: the URN paired with its League Specific GUID.
Probabilities: Sport Competitions
id: sr:competition:109uuids: ..., 2fa448bc-fc17-..., ...The same GUID arrives inline in the comma-separated uuids field.
join on this IDThe blue GUID is the shared join key to the League Specific APIs; the URN is the shared key across the odds products themselves. Values shown are from 2026-07-20.


Bookmaker-Side IDs

Inside every market, each book carries the bookmaker's own identifiers alongside the Sportradar ones:

  • external_sport_event_id: the event in the bookmaker's system
  • external_market_id: the market in the bookmaker's system
  • external_outcome_id: the selection in the bookmaker's system

Their formats vary by bookmaker (integers, GUIDs, and composite strings all occur). Treat them as opaque strings, and use them when you need to reference a price back to the originating sportsbook's own catalog.



Practical Rules

  • Persist URNs as your primary keys; they are stable across packages, tiers, and the Probabilities API
  • Fetch and cache the mappings feeds once per day rather than per request
  • Join to League Specific APIs via external_id GUIDs; join across odds products via URNs directly
  • Never parse meaning out of an ID's numeric part; treat IDs as opaque

Did this page help you?