REST · JSON · No auth required

Sports results,
as an API.

Real-time and archived results for athletics and cycling across West Africa. The public tier is free, with no API key, no account and no rate-limit agreement.

BASE URLhttps://api.sportcache.com
example request
curl https://api.sportcache.com/v1/athletics/events

{
  "data": [
    {
      "id": "gh-champs-2026",
      "name": "Ghana Championships",
      "venue": "Accra Sports Stadium",
      "start_date": "2026-07-12",
      "competitions": 24
    }
  ],
  "meta": { "has_more": false }
}
Live endpoints
6
Sports
2
Rate limit
60 / min
Auth
None

Reference

APIs by sport

Each sport has its own OpenAPI reference with request parameters, response schemas and copy-ready examples in six languages.

Endpoints

Everything that’s live

Six endpoints, all GET, all public. Prefix each with the base URL above.

GET/v1/athletics/eventsList published meets
GET/v1/athletics/events/:idSingle meet
GET/v1/athletics/events/:id/competitionsCompetitions in a meet
GET/v1/athletics/competitions/:id/resultsResults for a competition
GET/v1/athletics/competitions/:id/startlistStart list for a competition
GET/v1/participants/:idAthlete profile

Conventions

How every endpoint behaves

The same rules apply across all sports, so what you learn on one endpoint carries to the rest.

Consistent envelope

Every response wraps its payload as { "data": …, "meta": { "generated_at": … } }, so one parser handles every endpoint.

Rate limits

60 requests per minute per IP on the public tier. Every response carries X-RateLimit-Limit, X-RateLimit-Remaining and X-RateLimit-Reset.

Cursor pagination

Pass limit (default 50, max 200) and cursor. meta.has_more and meta.next_cursor tell you whether to keep going.

Caching

Responses ship Cache-Control and ETag. A conditional GET with If-None-Match returns 304 when nothing has changed.

Predictable errors

Failures return { "error": { "code": …, "message": … } } with the matching HTTP status: not_found, rate_limited or server_error.

CORS enabled

Every endpoint sends CORS headers, so you can call the API straight from a browser.

Access

Free to use, partner tier on request

The public tier needs no registration. Federations, broadcasters and applications that need higher limits can request partner access.

Public

No registration, start calling now

  • 60 requests per minute
  • All published events and results
  • ETag caching support
  • CORS enabled for browser clients

Terms

Attribution is required

Any site, app or broadcast displaying data from this API must visibly credit SportCache as the official source, with a clickable link back to sportcache.com. Place the credit near the data it accompanies.

<a href="https://sportcache.com" target="_blank" rel="noopener">
  Results & timing by SportCache
</a>

Live or broadcast use should also carry an on-screen or spoken credit: “Official results & timing by SportCache.”

History

Changelog

Breaking changes are announced to partners before they ship.

v1: Athletics API launch

Six public endpoints covering events, competitions, results, start lists, and athlete profiles. Rate limit 60 req/min, ETag caching enabled.