# Sports data developer guides

A practical route from your first authenticated read to source-aware dashboards, retained history and agent tools. Choose a task and follow its working contract.

Canonical page: https://getoddsapi.com/guides

## Free API key

Get a free GetOdds API key: **1,000 requests per UTC day and 60 per minute, no card**. One key covers REST and the hosted MCP server.

Sign up: https://getoddsapi.com/sign-up?ref=ai-claudebot

## Quickstart

1. Create an account at https://getoddsapi.com/sign-up?ref=ai-claudebot, open https://getoddsapi.com/dashboard and issue a key with the sources you need (draftkings, fanduel, betrivers, prizepicks or underdog). Keep it in a server environment variable named GETODDS_API_KEY.
2. Read current DraftKings NBA spreads with curl:

```bash
curl --fail-with-body "https://getoddsapi.com/api/v1/odds?sport=NBA&market=spread&fresh_only=true&limit=50" \
  -H "Authorization: Bearer $GETODDS_API_KEY"
```

3. The same request in Python (standard library only):

```python
import json, os, urllib.request

req = urllib.request.Request(
    "https://getoddsapi.com/api/v1/odds?sport=NBA&market=spread&fresh_only=true&limit=50",
    headers={"Authorization": "Bearer " + os.environ["GETODDS_API_KEY"]},
)
with urllib.request.urlopen(req) as res:
    rows = json.load(res)["data"]
for row in rows:
    print(row["away"], "at", row["home"], row["side"], row["line"], row["american"], row["observed_at"])
```

4. Check `observed_at`, `age_seconds` and `stale` on every row before using a price. Full reference: https://getoddsapi.com/docs

## Use with Claude (MCP)

```bash
claude mcp add --transport http getodds https://getoddsapi.com/api/mcp \
  --header "Authorization: Bearer $GETODDS_API_KEY"
```

The MCP tools follow the key's source grants and share its allowance. Setup guide: https://getoddsapi.com/use-with-claude

## Pricing

| Plan | Allowance | Price |
| --- | --- | --- |
| Free key | 1,000 requests a day, 60 a minute | $0, no card |
| Developer Bundle | 10,000 requests or credits a month on each of four sources | $149 a month |

Free development allowance: 1,000 requests per UTC day and 60 per minute per account, with no payment step. Paid: the Developer Bundle at $149 per month, with 10,000 monthly requests or credits on each of four sources.
Details: https://getoddsapi.com/bundle

## Guide


Canonical: https://getoddsapi.com/guides
Reviewed: 2026-11-07 UTC

A practical route from your first authenticated read to source-aware dashboards, retained history and agent tools. Choose a task and follow its working contract.

## Start with the dataset, then the request

Choose between player-stat thresholds and priced sportsbook offers before building a common model. The GetOdds market endpoint exposes four threshold sources; the sportsbook endpoints read stored DraftKings prices via ESPN. A shared key does not make these datasets interchangeable.

Begin with a small request. Verify its source grant, observation clocks and empty states before increasing the page size or scheduling repeated reads.

- [API documentation](https://getoddsapi.com/docs): Accounts, credentials, current allowances and first requests.
- [Player props API](https://getoddsapi.com/player-props-api): Understand thresholds, variants and independently priced props.
- [Sportsbook API](https://getoddsapi.com/docs/sportsbook): Events, odds, retained history and coverage resources.
- [Free API access](https://getoddsapi.com/free-odds-api): Choose an actual dataset and understand its access limits.

## Choose a language and keep the metadata

The downloadable Node and Python clients support four threshold sources and six base sportsbook resources. The R source client supports the same four threshold sources and six sportsbook resources. Node, Python and R 0.4.0 also expose the ten advanced query operations.

Keep keys in the process environment. Preserve the returned metadata when transforming records into a data frame or database row; dropping timestamps during conversion makes later freshness checks impossible.

- [Node.js quickstart](https://getoddsapi.com/docs/node): Use built-in fetch for a small authenticated read.
- [Python quickstart](https://getoddsapi.com/docs/python): Read and validate a bounded response.
- [R client](https://getoddsapi.com/docs/r): Preserve nested data, nullable fields and source clocks.
- [SDKs and CLI](https://getoddsapi.com/docs/sdks): Install tested source downloads; review their exact scope.

## Find events and follow retained changes

Search for a team name, select its exact source event ID, then read offers for that ID. Use a multi-event request when the event identities are already known. Changing a label into a canonical cross-provider identity requires additional verified mapping.

A changed-since response shows current offers with retained changes. It is not a complete replay log. The same-line price-drop feed records observed price decreases and does not establish value or a recommended selection.

- [Event search and price movement](https://getoddsapi.com/docs/sportsbook-search): Lookup, batches, changed-since reads and comparable decreases.
- [Historical odds guide](https://getoddsapi.com/historical-odds-api): Separate retained observations from guaranteed archives.
- [Line movement viewer](https://getoddsapi.com/line-movement): Inspect the retained sequence for an exact available offer.
- [Odds feed design](https://getoddsapi.com/odds-feed-api): Track identities, response scope and unavailable data.

## Connect agents and design recovery

A compatible MCP client can use the same source-scoped GetOdds key for seventeen read tools. Hosted tool calls are bounded reads. Streamable HTTP describes the MCP transport, not a continuous sports-odds feed.

Choose delivery semantics deliberately. Authentication, ordering, retry behavior and snapshot recovery are separate requirements; a successful first response does not prove all of them.

- [Hosted MCP setup](https://getoddsapi.com/mcp): Discover only the tools and source choices your key allows.
- [Real-time API guide](https://getoddsapi.com/real-time-odds-api): Evaluate timestamps and actual delivery guarantees.
- [WebSocket integration guide](https://getoddsapi.com/odds-websocket): Plan reconnects and gap recovery; GetOdds streaming remains unimplemented.

## Build a small, testable application

Use the tutorials to separate arithmetic from a live data product. Fixture-based calculations are useful for verifying code, but they do not demonstrate live opportunities or predictive accuracy.

Before comparing providers, check the actual source contract, market definitions and observation clocks. A nominal price, supported-sport label or page count is not enough to prove equivalent coverage.

- [Build a betting-data app](https://getoddsapi.com/guides/build-betting-app): A small dashboard with explicit source and failure states.
- [Arbitrage arithmetic in Python](https://getoddsapi.com/guides/python-arbitrage): Work with comparable input prices and complete outcomes.
- [Kelly arithmetic in Python](https://getoddsapi.com/guides/kelly-python): Keep the probability assumption visible.
- [Odds comparison semantics](https://getoddsapi.com/odds-comparison-api): Match event, market, line, period and rules.

## Evaluate providers against your use case

Use the comparison pages as a starting point and verify current provider documentation before choosing a contract. Pricing and capabilities can change; published examples are not a substitute for testing your target leagues and markets.

- [Odds-API.io comparison](https://getoddsapi.com/compare/odds-api-io): Review the documented scope and integration differences.
- [GetOdds vs The Odds API](https://getoddsapi.com/vs/the-odds-api): Free tier, credit math, bookmakers and history compared.
- [GetOdds vs OpticOdds](https://getoddsapi.com/vs/opticodds): Coverage, delivery and pricing model compared.
- [Odds API evaluation guide](https://getoddsapi.com/blog/best-odds-api-2026): Build an evidence-based provider checklist.

## Questions

### Are all linked datasets live feeds?

No. Guides distinguish source samples, stored captures, history and planned delivery. Read the endpoint-specific contract before assuming live or complete coverage.

### Can I use one branded service key everywhere?

No. GetOdds keys authenticate the GetOdds gateway and MCP endpoint. Branded service credentials remain separate.

### Do these guides recommend bets?

No. They explain data contracts, software behavior and conditional arithmetic. They do not provide picks or guaranteed returns.

## Sources

- [OpenAPI contract](https://getoddsapi.com/openapi.json)
- [Implemented capabilities](https://getoddsapi.com/capabilities.json)
- [Learning hub](https://getoddsapi.com/learn)

Independent product; not affiliated with the operators named. No picks or predicted profits.

---

GetOdds is an independent developer product and is not affiliated with any sportsbook or pick’em operator. Prices describe data, not betting advice.
