API migration guide
Migrate from SportsGameOdds to TheRundown: field and usage maps
Switch a SportsGameOdds integration to TheRundown with event, participant, line and book mappings, availability checks, and an objects-to-points example.
Choose TheRundown when shared odds-and-score event IDs, explicit source-level price rows and publicly priced WebSocket access fit your application. SportsGameOdds has its own broad catalog and event-object model. Migrate by market semantics and actual coverage, rather than assuming matching field names mean interchangeable data.
This TheRundown-authored guide checks primary documentation and pricing on October 13, 2026. It covers a bounded integration, not a compatibility layer.
Map event identity before prices
Use league, participant identities and kickoff to propose a match, then verify the event and store both provider IDs. Reschedules, doubleheaders and similarly named participants need explicit handling. Keep your crosswalk separate from the API payload.
| SportsGameOdds model | TheRundown model | Check |
|---|---|---|
eventID |
event_id |
Different provider identifiers |
| League-specific request | Numeric sport_id plus date |
NFL regular season 2; NBA 4; MLB 3; variants separate |
Event’s odds.<oddID> |
Market with participants and line rungs | Match statistic, period, bet type and side |
byBookmaker.<bookmakerID> |
prices.<affiliate_id> |
Translate bookmaker names to current numeric IDs |
Book odds, spread, overUnder |
Quote price and line value |
Preserve odds format and side-specific line |
Book available |
Quote closed_at |
Apply explicit availability; do not infer from age |
SportsGameOdds documents an oddID composed of statistic, entity, period, bet type and side. Use the structured fields; a string split is not a complete entity mapper. Its consensus bookOdds is not an individual bookmaker quote. TheRundown returns per-source price objects; do not substitute a consensus value for a missing source.
Read a narrow TheRundown main-line snapshot
Start with the quickstart, then request a selected date using market_ids=1,2,3, affiliate_ids=19,22,23 and main_line=true. These are NFL/NBA/MLB two-sided full-game main-line mappings, not a rule for every sport or period. Use X-TheRundown-Key on the server. Free permits these three books for five-minute-delayed pre-match main lines; paid entitlements are needed for props, broader sources and in-play odds.
The following function normalizes a documented TheRundown event into your application’s own rows. It does not recreate SportsGameOdds’s response, calculate consensus odds or issue an API request. Pass it an event from the V2 response’s events array.
def open_rows(event):
for market in event.get("markets", []):
for participant in market.get("participants", []):
for line in participant.get("lines", []):
for affiliate, quote in line.get("prices", {}).items():
if quote.get("closed_at"):
continue
if float(quote["price"]) == 0.0001:
continue
yield {
"event": event["event_id"],
"market": market["market_id"],
"participant_type": participant["type"],
"participant": participant["id"],
"line_id": line["id"],
"line": line["value"],
"book": int(affiliate),
"american_odds": quote["price"],
"updated_at": quote.get("updated_at"),
}
This parser keeps signed line values, participant types and per-book identity. Do not join a +3.5 rung to a −3.5 rung or merge over/under participants. Apply a later closed_at: "" reopen to the same exact quote. Finished events can retain closing prices; stored prices alone do not establish live availability. Read the data model for the complete response.
Objects and data points: calculate your actual workload
One event containing multiple book quotes is not one TheRundown data point. Suppose one selected game returns three two-sided main markets at three books, plus its event and score, with no live_game_state. The illustrative count is 2 + (3 × 2 × 3) = 20 points. One hundred such events returned once would use 2,000 points. A repeated snapshot bills those returned records again; missing rows lower the result.
Compare that measured workload with the object usage reported by your existing account. There is no universal objects-to-points multiplier, because nested market/source breadth changes the row count. Read the actual X-Datapoints header, confirm rate limits, and test a busy slate. Scope requests to what the application consumes.
TheRundown paid plans charge a fixed subscription fee with included volume. Using fewer points conserves the allowance but does not reduce the base fee. Monthly/annual plans stop at the cap by default; optional overage and weekly plans have separate rules. See metering.
Pricing and transport during migration
SportsGameOdds publishes Rookie at $149/month and Pro at $499/month; annual equivalents are $99 and $299. Its AllStar streaming package uses custom pricing. TheRundown lists Starter $49/month with a 60-second delay and internal-use rights, Pro $149 with a 30-second delay and commercial display, and Ultra $399 with real-time REST/WebSocket. Free odds have a five-minute delay. These are different coverage, delivery and usage packages, so compare the required workload rather than headline units.
Ultra includes one connection with three multiplexed subscriptions. Keep a REST baseline and design reconnect/catch-up behavior from the WebSocket specification. A streaming endpoint is not a substitute for event/entity mapping or a guarantee that every source carries every market.
Validate the consumer before cutover
Test a moneyline, both signed spread sides, both total participants, a closure and reopen, a withdrawn alternate and a missing source. Check market period and prop participant identities separately. Verify whether your app consumes consensus or fair-odds calculations, SDK helpers and bookmaker links; those features need their own implementation or a confirmed corresponding field.
Run old and new reads side by side at comparable effective freshness. Confirm display rights and every required source/market on actual events. See the SportsGameOdds comparison, alternative guide and sports odds API guide for the integration/pricing context.
Sources checked October 13, 2026
- SportsGameOdds oddID and bookmaker fields
- SportsGameOdds pricing
- SportsGameOdds streaming
- TheRundown sport catalog
- TheRundown source catalog
- TheRundown pricing and rights
Questions
- Can I reuse SportsGameOdds eventID values in TheRundown?
- No. Map provider event IDs using league, participants and scheduled kickoff, then keep an explicit crosswalk. Team and player identifiers also need mapping; matching a display name alone is insufficient.
- Does one SportsGameOdds event object equal one TheRundown data point?
- No. An event object can contain many odds. TheRundown meters returned price rows plus event/score records. Three fully priced two-sided markets at three books use 20 data points for one event with a score and without live_game_state.
- Can I move streaming to a standard TheRundown plan?
- TheRundown Ultra and above include WebSocket; Ultra is $399 monthly with one connection and three multiplexed subscriptions. SportsGameOdds documents streaming on custom AllStar. Confirm the exact source and market requirements before changing packages.
- Does a stored price mean the market is open?
- No. Preserve the old feed’s explicit availability state during migration. On TheRundown, apply closed_at for the exact participant, signed line and book; a later empty closed_at reopens it. Price age alone is not the closure signal.
Validate one event before switching.
Start with a no-card Free key for delayed pre-match main lines. Verify source coverage, market identity, freshness and usage before choosing a paid plan.