statshawk

Sports data for products and agents

Every sport. One data layer.

Consistent stats, schedules, and ready-made analysis for every league. REST for your product, MCP for Claude or any AI assistant. One account, one bill.

Start freeRead the docs

Have ChatGPT or Claude? Paste the setup line and ask about any game.

Two ways in. Same sports data.

REST API

Build products on normalized JSON.

Send a self-serve key in the X-API-Key header and get predictable responses from every endpoint.

curl https://api.statshawk.ai/v1/competitions -H "X-API-Key: $STATSHAWK_KEY"
Explore the API

Hosted MCP

Give your AI real sports data.

Connect Claude, Cursor, ChatGPT, or Codex with one sign-in. No keys to paste, nothing to configure.

claude mcp add --transport http statshawk https://mcp.statshawk.ai/mcp
Explore hosted MCP

Your LLM is wrong about sports.

without statshawk
you

What was Curry's stat line last night vs Miami?

claude

I don't have real-time data on last night's games, but based on his season averages Curry typically scores in the high 20s and shoots well from three. The Heat have a top-10 defense, but he often plays well against them.

with statshawk
you

What was Curry's stat line last night vs Miami?

get_box_score(player: "S. Curry", league: "nba")
28 PTS · 7-13 FG · 4-7 3PT · 6 AST · GSW W 118-112
claude

Curry went for 28 and 6 assists in last night's 118-112 win over Miami. He shot 4 of 7 from three on 13 total attempts.

Any MCP client can call statshawk tools. Non-MCP clients use the REST API. Either way the response is shaped for context, not for a dashboard.

The other way is scraping ESPN.

An LLM can answer this through web search or HTML scraping. It just costs you ~500x more tokens and gets the math wrong. Same question, three sports.

Same question, two ways to answer it. One burns context and gets arithmetic wrong. The other returns the prop card pre-computed on any paid plan.

A pitcher-vs-batter matchup, from one API call.

Per-zone hit rates, a swing-and-miss map, and every pitch a starter has thrown a hitter all season. Already joined, already shaped. Toggle the metric. Tap or hover a pitch.

Real Statcast pitch data from get_play_by_play(detail='full'). The same call powers zone models, scouting cards, and matchup tools.

Build with the API

One account, every league. OAuth for MCP, API keys for REST.

01

One format, every league

Box scores, season stats, and standings in the same shape across NBA, MLB, NFL, and NHL. Stop writing one-off adapters per data source.

02

REST + MCP, one account

The AI connection uses a normal sign-in; REST uses API keys. Both share one account, one usage meter, and the same responses.

03

Pricing that matches the work

A quick lookup counts as 1 call, heavy analysis as 10. Predictable bills, hard caps, no surprise overage.

04

Fresh from the source

Backed by stat-engine, our Rust data pipeline. Numbers land within minutes of the box score posting.

Start free

An assistant that already knows last night's box score.

$0

to start

5,000

free lookups monthly

No card

required

REST + MCP

included