Developers / Start building

Your next screen.
Starts here.

Go from a sample response to your own sports scoreboard. Start without credentials, then connect your server when you’re ready.

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 ↗

02 / Run

Make it yours.

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

Build a scoreboard.

A practical walkthrough of the server endpoint, game cards, missing fields, and API errors.

Read the first tutorial ↗

Make your first live request.

  1. Create and save your API key.
  2. Activate through Stripe checkout. The 14-day trial requires a card, then renews at $9 USD/month unless canceled.
  3. Send the key in the 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.

The endpoints.

EndpointWhat you get
GET /api/sports/availableSupported feed identifiers; no key required.
GET /api/sports/{sport}/scoreboardA { 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-DDDate-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/statusYour 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.

Build for the edges.

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.

ResponseWhat to do
400Check the feed identifier and date.
401 / 403Check that the server has the correct active key.
402Activate or renew access through billing.
429Wait for the supplied retry interval.
5xxShow 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.