01 / Explore
See the response.
Switch between seven feeds. Watch real games with matching JSON, or explore sample fixtures across seven feeds.
Open the live demo ↗Developers / Start building
Go from a sample response to your own sports scoreboard. Start without credentials, then connect your server when you’re ready.
01 / Explore
Switch between seven feeds. Watch real games with matching JSON, or explore sample fixtures across seven feeds.
Open the live demo ↗02 / Run
A small Node.js starter with no runtime dependencies. Sample mode works immediately; live credentials stay on the server.
Get starter v1.0.0 ↗03 / Learn
A practical walkthrough of the server endpoint, game cards, missing fields, and API errors.
Read the first tutorial ↗X-API-Key header from your server.curl https://sportyapi.com/api/sports/nfl/scoreboard \
-H "X-API-Key: YOUR_API_KEY"Treat your API key like a password: it authorizes API access and billing. Never put it in client JavaScript, a public repository, or a screenshot. Starter sample mode needs no key.
| Endpoint | What you get |
|---|---|
GET /api/sports/available | Supported feed identifiers; no key required. |
GET /api/sports/{sport}/scoreboard | A { sport, games } response with game IDs, teams, scores, dates, and status. Venue, broadcaster, record, and odds fields can vary. |
GET /api/sports/{sport}/schedule?date=YYYY-MM-DD | Date-based games. Defaults to today’s UTC date. Schedule status is nested under status.type; scoreboard status uses a flat status.type string. |
GET /api/keys/status | Your key’s access status; requires its API-key header. |
Feeds: nfl, nba, nhl, mlb, ncaaf, ncaab, soccer. A scoreboard can include upcoming or completed games; it is not guaranteed to contain only games played today.
No daily request quota on trial or Pro. Burst limits apply: 120 requests/minute per key and 600/minute per IP, per Cloudflare location. Cache results on your server. On HTTP 429, honor Retry-After rather than retrying in a tight loop.
| Response | What to do |
|---|---|
| 400 | Check the feed identifier and date. |
| 401 / 403 | Check that the server has the correct active key. |
| 402 | Activate or renew access through billing. |
| 429 | Wait for the supplied retry interval. |
| 5xx | Show an unavailable state and retry later. |
Game coverage and optional fields vary. The demo is illustrative, and game dates are not data-freshness timestamps. Start with the scoreboard tutorial for a complete working example.