Build with SportScore
Free REST API and MCP server for live scores, match details, standings and player statistics across football, basketball, cricket and tennis. CORS-open. JSON. No API key required for open-source and attribution-tier projects.
The deal
We want more developers using sports data. You want real data without paying enterprise prices or building your own ingestion pipeline. Here's the trade:
You get
- 8 REST endpoints, JSON, CORS-open
- Live scores + historical fixtures
- Standings, top scorers, brackets, player stats
- MCP server for Claude / Cursor / any MCP host
- OpenAPI 3.0 spec for code-gen
- ~10,000 requests / 24h / IP, burst friendly
We get
- Attribution: one visible "Powered by SportScore" link on pages that use our data
- Dofollow link to
https://sportscore.com/ - Anchor text "SportScore" (or a brand mention)
- That's it. No revenue share, no lock-in
Free forever, no paid tier required. Building a commercial white-label product that literally cannot ship the badge? Drop us a line — attribution-free arrangements are handled case-by-case. Otherwise, just keep the badge and you are good. Full terms.
Attribution badges
Pick any of these, or design your own — all we need is a visible dofollow link to https://sportscore.com/. Click any snippet to select it, then copy.
<a href="https://sportscore.com/" rel="dofollow" title="Sports data by SportScore" style="display:inline-flex;align-items:center;gap:6px;padding:6px 10px;background:#0a1e3d;color:#fff;border-radius:4px;text-decoration:none;font:600 .88rem system-ui,-apple-system,sans-serif;">Powered by SportScore</a>
<a href="https://sportscore.com/" rel="dofollow" title="Sports data by SportScore" style="display:inline-flex;align-items:center;gap:6px;padding:6px 10px;background:#fff;color:#0a1e3d;border-radius:4px;text-decoration:none;font:600 .88rem system-ui,-apple-system,sans-serif;border:1px solid #dce3ef;">Powered by SportScore</a>
Data from <a href="https://sportscore.com/" rel="dofollow">SportScore</a>
<a href="https://sportscore.com/" rel="dofollow" title="Powered by SportScore" aria-label="Powered by SportScore" style="display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;background:#0a1e3d;color:#fff;border-radius:50%;text-decoration:none;font:700 .78rem system-ui,sans-serif;">SS</a>
<a href="https://sportscore.com/" rel="dofollow" title="Sports data by SportScore" style="display:inline-flex;align-items:center;gap:6px;padding:6px 12px;background:#ffb74d;color:#0a1e3d;border-radius:20px;text-decoration:none;font:700 .86rem system-ui,-apple-system,sans-serif;">Powered by SportScore</a>
<div style="color:#546277;font-size:.82rem;">Last updated 2 min ago · <a href="https://sportscore.com/" rel="dofollow" style="color:#0a1e3d;text-decoration:none;font-weight:600;">Powered by SportScore</a></div>
All six variants keep rel="dofollow" — that is the one thing we ask. Link text must mention SportScore. Everything else (colors, shape, placement) is yours to style.
REST endpoints
Base URL: https://sportscore.com. All endpoints are GET, return JSON, and serve Access-Control-Allow-Origin: *. Responses are cached 60 s at the edge.
Interactive API reference → Built with SportScore → Try endpoints, read response schemas, download the spec.
Live + recent matches by sport.
Params: sport=football|basketball|cricket|tennis, limit=1..50
https://sportscore.com/api/widget/matches/?sport=football&limit=10
Single match detail — score, status, lineups, timeline.
Params: sport=..., slug=<match-slug>
https://sportscore.com/api/widget/match/?sport=football&slug=manchester-united-vs-liverpool
Team's recent + upcoming fixtures.
Params: sport=..., slug=<team-slug>, limit=1..30
https://sportscore.com/api/widget/team/?sport=football&slug=barcelona&limit=10
League / competition standings table.
Params: sport=..., slug=<competition-slug>
https://sportscore.com/api/widget/standings/?sport=football&slug=premier-league
Top scorers / assists for a competition.
Params: sport=..., slug=<competition-slug>, limit=1..50, stat=goals|assists
https://sportscore.com/api/widget/topscorers/?sport=football&slug=premier-league&limit=20
Player statistics + metadata.
Params: sport=..., slug=<player-slug>
https://sportscore.com/api/widget/player/?sport=football&slug=lionel-messi
Knockout tournament bracket.
Params: sport=..., slug=<competition-slug>
https://sportscore.com/api/widget/bracket/?sport=football&slug=uefa-champions-league
Live match tracker proxy (position / animation data).
Params: sport=..., id=<match-id>
https://sportscore.com/api/widget/tracker/?sport=football&id=7420812
Optional: self-identify with ?src=
If you add a ?src=<your-host-or-app-name> query parameter to any widget API call, we’ll surface it in our referer analytics even when a browser strips Referer headers (most do, for privacy). This is totally optional — use it if you want us to know you’re using the API, ignore it otherwise.
Examples:
# Self-identify as example.com
GET https://sportscore.com/api/widget/matches/?sport=football&limit=5&src=example.com
# Self-identify as a CLI / script with a recognisable name
GET https://sportscore.com/api/widget/standings/?sport=football&slug=premier-league&src=nba-dashboard-cli
# From the MCP server — handled automatically, no action needed
GET https://sportscore.com/api/widget/matches/?sport=football&limit=5&src=sportscore-mcp
Why we ask: when you self-identify, we notice you. That means you’re a candidate for the Built with SportScore gallery (reciprocal dofollow link from us to your site), early access to new endpoints, and a heads-up if we ever touch a field you depend on. It’s not a tracker — we log only the src value, method, path and timestamp. No cookies, no fingerprint.
MCP server (Claude / Cursor / IDE integrations)
Install the Model Context Protocol server and your AI assistant can pull live scores, match details and standings directly in chat. Works in Claude, Cursor, and any MCP host.
# Claude Desktop / MCP host config
{
"mcpServers": {
"sportscore": {
"command": "npx",
"args": ["-y", "sportscore-mcp"]
}
}
}
Source + issues: https://github.com/Backspace-me/sportscore-mcp
New: Full step-by-step Claude Desktop tutorial — install, example prompts, troubleshooting.
Quick start — JavaScript
const r = await fetch(
"https://sportscore.com/api/widget/matches/?sport=football&limit=10"
);
const { matches } = await r.json();
console.log(matches);
Quick start — Python
import requests
r = requests.get(
"https://sportscore.com/api/widget/matches/",
params={"sport": "football", "limit": 10},
)
print(r.json()["matches"])
Rate limits & fair use
~10,000 requests per 24 hours per IP on the free tier. Responses are cached 60 s — if you're doing > 20 req/sec you're probably double-fetching. Contact us at api@sportscore.com for higher limits, SLAs, or commercial licensing.
Ideas worth building
- Fantasy football draft assistant pulling live lineup + injury data
- Telegram / Discord bot for match-day alerts
- Daily digest email with yesterday's results in your favourite league
- Whoop / Strava-style "watch this match" notification
- MCP plugin for a coach's analysis workflow
- Public dashboards embedded in Notion / Confluence via widget iframes
Ship something interesting? Email api@sportscore.com and we'll feature it on this page.