5DollarFootballAPI
Sports & FitnessCheap football (soccer) data API from $5/month, with a free tier. Fixtures, live scores, standings and tick-by-tick odds from bet365 and 19 other bookmakers, including corner and card lines.
π Documentation & Examples
Everything you need to integrate with 5DollarFootballAPI
π Quick Start Examples
// 5DollarFootballAPI Example: live matches
const response = await fetch('https://api.5dollarfootballapi.com/v1/fixtures?status=live', {
headers: { 'Authorization': 'Bearer fb_live_your_key' }
});
const { data } = await response.json();
data.forEach((match) => {
console.log(`${match.teams.home.name} vs ${match.teams.away.name} - ${match.status}`);
});5DollarFootballAPI
5DollarFootballAPI is a low-cost football (soccer) data API: fixtures, live scores, standings, match events and statistics, plus pre-match and in-play odds from bet365 and 19 other bookmakers β including corner and card lines and full odds movement history that most football APIs don't carry. It positions itself as an affordable alternative to API-Football, Sportmonks and FootyStats. Paid plans start at $5/month, and there's a free tier with no credit card.
Base URL: https://api.5dollarfootballapi.com/v1 Β· Docs: 5dollarfootballapi.com/docs Β· Website: 5dollarfootballapi.com
Authentication
Every request needs an API key. Keys start with fb_live_ and are shown once when created β store them server-side. Send it as a Bearer token (or in an X-API-Key header):
Authorization: Bearer fb_live_your_key
A request without a key returns 401 with error code missing_api_key. Sign up free at 5dollarfootballapi.com/signup.
Your First Request
Live matches right now:
curl "https://api.5dollarfootballapi.com/v1/fixtures?status=live" \
-H "Authorization: Bearer fb_live_your_key"
Every response uses the same envelope β {"success": 1, "data": ...} on success (list endpoints add a pagination object), and {"success": 0, "error": {...}} on failure. A missing resource returns a real 404, never an empty 200.
Python SDK
pip install fivedollarfootball
from fivedollarfootball import Client
client = Client("fb_live_your_key")
# Today's fixtures (kickoff window defaults to today, UTC)
for match in client.fixtures():
teams = match["teams"]
print(teams["home"]["name"], "vs", teams["away"]["name"], "-", match["status"])
# Current corner-line odds for one fixture
odds = client.fixture_odds(1234567, market="corner")
# Every recorded price movement for a market (Ultra)
for tick in client.iter_all(client.odds_history, fixture_id=1234567, market="corner"):
print(tick)
Node.js SDK
npm install fivedollarfootball
const { Client } = require("fivedollarfootball");
const client = new Client("fb_live_your_key");
const { data: live } = await client.fixtures({ status: "live" });
const table = await client.standings(leagueId, { type: "corner" });
Both SDKs retry automatically on 429 (honouring Retry-After), raise typed errors with the API's error code and request_id, and include a helper that walks paginated results. The Node client has zero dependencies and ships TypeScript definitions.
Endpoints
| Endpoint | What it returns |
|---|---|
GET /fixtures |
Fixtures by date window, league or status (e.g. live); include=odds expands odds for the whole list (Pro and up) |
GET /fixtures/{id} |
One fixture; include=events,stats |
GET /fixtures/{id}/odds |
Current odds, filterable by bookmakers and market |
GET /fixtures/{id}/odds/history |
Tick-by-tick price movements for a market (Ultra) |
GET /fixtures/{id}/events Β· /statistics |
Goals, cards, substitutions; match stats |
GET /standings |
League table for a league; type also gives corner and card standings |
GET /leagues Β· /leagues/{id} Β· /leagues/{id}/fixtures |
Competitions (popular, country, search) and a season's fixtures |
GET /teams/{id} Β· /teams/{id}/fixtures |
Team details and recent or upcoming matches |
GET /countries Β· /bookmakers |
Reference data; the bookmakers available on your plan |
GET /status |
Service status |
Odds markets include 1X2, Asian handicap, goal line, corners, cards, half-time and BTTS, as opening, closing and in-play prices. Many endpoints accept lang for localised names, and esports to include e-football.
Lists paginate with page and per_page (default 50, max 100; 50 when using include; up to 500 for status=live). Keep requesting while pagination.has_more is true.
Pricing
| Plan | Price | Rate limit | Coverage | Bookmakers |
|---|---|---|---|---|
| Free | $0, no card | 60 requests/hour (max 20/min) | Top 5 leagues (EPL, La Liga, Serie A, Bundesliga, Ligue 1), last 3 months | bet365 |
| Pro | $5/month ($50/year) | 10 requests/min | 130+ competitions, 12 months of history | bet365 |
| Ultra | $25/month ($250/year) | 40 requests/min, up to 120 with add-ons ($35β$65/month) | All 1,600+ leagues and cups, history back to 2014, odds tick history | 20 |
| Business | Custom | Custom | Ultra data plus custom stats endpoints and model-backed predictions | 20 |
Free Community (300 requests/hour, top 5 plus one country pack) and Education access are also available. Public-facing products on the Free, Community and Education plans must show "Football data by 5DollarFootballAPI" with a link; it's optional on Pro, Ultra and Business, and never needed for private or internal use.
Rate Limits
Every response carries X-RateLimit-Limit, X-RateLimit-Remaining and X-RateLimit-Reset. Going over returns 429 with a Retry-After header β back off and retry. There are no daily caps beyond the per-hour or per-minute window.
MCP Server for AI Assistants
5DollarFootballAPI runs a hosted MCP server at https://mcp.5dollarfootballapi.com/mcp with 11 read-only tools for fixtures, live scores, standings, current odds and full odds history. It authenticates with your API key, and each call counts against your plan like a normal request.
claude mcp add --transport http football-api https://mcp.5dollarfootballapi.com/mcp \
--header "Authorization: Bearer fb_live_your_key"
For Claude and ChatGPT custom connectors, use https://mcp.5dollarfootballapi.com/mcp/fb_live_your_key instead. That URL contains your key, so create a separate key for it and treat the URL like a password. MCP docs β
Use Cases
- Betting models and value finders β line movement from the odds-history endpoint, across 20 bookmakers
- Corner and card markets β odds and standings that most football APIs don't cover
- Live score apps and widgets β live fixtures, events and statistics
- Fantasy, analytics and student projects β cheap or free access to fixtures, tables and historical results









