The football data API
built for developers.

Live scores, fixtures, standings, lineups and match statistics across more than 1,000 competitions — over REST and WebSocket, with official SDKs in five languages and a free plan that needs no credit card.

terminal
$ curl -X GET "https://api.goal-api.com/v1/matches" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json"

Why GOAL API?

Everything you need to build world-class developer tools.

Live, without polling

Subscribe to a match over WebSocket and take goals, cards and substitutions as they happen. REST polling stays available for anything that does not need the push.

Uptime you can check

Live scores sync continuously, and the uptime behind that claim is published from real monitoring on the status page rather than asserted here.

Global coverage, itemised

Over 1,000 competitions worldwide, listed league by league with exactly what is held for each — so you can confirm your competition is covered before you write a line of code.

Five official SDKs

First-party clients for JavaScript, Python, Go, Dart and PHP, plus a public OpenAPI spec to generate one for anything else. Not community wrappers.

Keys you can scope and rotate

Bearer-token authentication with per-key metering, so each environment or customer gets its own key and its own usage, revocable on its own.

Predictable limits

Per-minute and per-day allowances, with the remaining budget returned in the headers of every response so your client can back off before it gets throttled.

v1.0.0 on npm, PyPI, pkg.go.dev, pub.dev and Packagist

Official SDKs in five languages

Not code snippets, and not a community wrapper someone abandoned two years ago. Five first-party clients, published to their own registries and released in lockstep, each with retries, pagination, typed errors and live WebSocket updates built in.

JavaScript

JavaScript & TypeScript

@goalapi/sdk

npm install @goalapi/sdk

Zero dependencies. Node, Deno, Bun, Workers, browsers. Types included.

Python

Python

goal-api

pip install goal-api

Sync and async clients from one surface. Python 3.9+.

Go

Go

goal-api-go

go get github.com/goal-api/goal-api-go

Standard library only — including the WebSocket client. Go 1.21+.

Dart

Dart & Flutter

goal_api

dart pub add goal_api

Dart VM, server-side Dart and Flutter on iOS, Android, web and desktop.

PHP

PHP

goal-api/sdk

composer require goal-api/sdk

No Guzzle, no framework. PHP 8.1+, so it drops into a project that already pins an HTTP client.

Another language?

Every SDK wraps the same REST API, and the OpenAPI spec is public — generate a client, or call it with the HTTP library you already have.

What the database actually holds

Counted from the database, not rounded up from a pitch deck. Every figure is broken down league by league on the coverage page.

Common questions

The things developers ask before they sign up. Fuller answers live in the documentation.

What is GOAL API?

GOAL API is a football (soccer) data API for developers. It returns live scores, fixtures and results, league standings, lineups, match statistics and events, team squads, player profiles, top scorers, head-to-head records and highlights, over a REST API and a WebSocket for live updates. It is not a goal-tracking or OKR API — those are a different product category that happens to share the word.

Is there a free football API plan?

Yes. The free plan needs no credit card: create an account, generate an API key and start calling the same endpoints as every paid plan, with a lower daily request allowance. Paid plans raise the allowance and add higher rate limits; nothing is gated behind a sales call.

Which football leagues and competitions does the API cover?

More than 1,000 competitions worldwide — domestic leagues, domestic cups and international tournaments. Coverage is not uniform across all of them, so the /coverage page lists every single league with exactly what is held for it: fixtures, standings, top scorers, lineups, statistics and events, plus the seasons available. Those figures are counted from the database rather than estimated.

How do I get live football scores in real time?

Two ways. Poll the REST endpoint /v1/matches/live for a snapshot of every match currently in play. Or, for push updates, request a short-lived token, open a WebSocket connection, authenticate and subscribe to the specific matches you care about — score changes, goals, cards and substitutions then arrive as they happen, with no polling.

Which languages have official SDKs?

Five, all first-party and versioned in lockstep: JavaScript and TypeScript (npm), Python (PyPI), Go (pkg.go.dev), Dart and Flutter (pub.dev) and PHP (Packagist). Each handles authentication, retries, pagination, typed errors and the live WebSocket. For any other language, the OpenAPI specification is published at /openapi.json and generates a client directly.

How is GOAL API authenticated, and what are the rate limits?

Every request carries an API key in an Authorization: Bearer header. Keys are created and rotated from the dashboard, and each one is metered separately, so a key can be issued per environment or per customer. Limits apply on two axes — requests per minute, and requests per day — and every response returns the remaining allowance in its headers, so a client can back off before it is throttled rather than after.

Ready to get started?

Create your free account and start building in minutes. No credit card required.