You need live football match data in your app this week: today’s fixtures, what’s currently in play, and fast match drill-downs by ID. By the end of this guide you will fetch live matches for a date, paginate through all fixtures on a day, and retrieve a match’s detail using the FotMob Live Football API on Zyla API Hub with Python and curl—using a single API key and subscription.
What the FotMob Live Football API provides
The FotMob Live Football API returns:
- Live matches for a UTC date (defaults to today) with teams, status, minute, score, tournament and a match identifier you can reuse for details.
- All fixtures for a given UTC date (scheduled, live, and finished) with pagination controls suitable for full-day slates.
- Match detail by match ID, including teams, score, tournament and status.
Common use cases include live score tickers, match-center dashboards, alerting systems, and pre-match pages built by sports apps, club sites, and betting tools.
Authentication and billing on Zyla API Hub
- Auth: Send Authorization: Bearer YOUR_API_KEY on every request.
- Billing: Subscription + quota (not pay-per-call). There is no Free Plan. For your first API on Zyla, you can start with a 7-day trial or 50 requests; check the API page for current access options and pricing.
- One key works across Zyla APIs; manage everything in one account.
You can browse more than 10,000 public APIs on Zyla API Hub and subscribe when you’re ready.
Getting started on Zyla API Hub
- Open the FotMob Live Football API page.
- Click Subscribe or Start Free Trial (when available).
- Copy your API key from your dashboard.
- Call endpoints with the Authorization header: Bearer YOUR_API_KEY.
Don’t have an account yet? Register to get an API key and start integrating.
Endpoints you’ll use
1) FotMob Football Live Matches
Method: GET
URL: https://zylalabs.com/api/13929/fotmob-live-football-api/32101/fotmob-football-live-matches
Description: Returns football matches in play on a UTC date. Defaults to today. Use the match ID for detail and stats.
Query parameters:
- date (date, required): For example 2026-09-23
curl (copy-paste as is):
curl -s -X GET "https://zylalabs.com/api/13929/fotmob-live-football-api/32101/fotmob-football-live-matches?date=2026-09-23" \
-H "Authorization: Bearer YOUR_API_KEY"
Official sample JSON response:
{
"source": "fotmob",
"count": 2,
"matches": [
{
"source": "fotmob",
"source_event_id": 6278448,
"sport": "football",
"status": "Live",
"status_code": 3,
"minute": "98’",
"start_timestamp": 1790179200,
"home": {
"id": 507764,
"name": "Gibraltar",
"short_name": "Gibraltar"
},
"away": {
"id": 287979,
"name": "Sao Tome and Principe",
"short_name": "Sao Tome and Principe"
},
"score": {
"home": 0,
"away": 0,
"text": null
},
"tournament": {
"id": 914609,
"name": "Friendlies",
"country": "INT"
},
"meta": {
"is_live": true
}
},
{
"source": "fotmob",
"source_event_id": 1000021847,
"sport": "football",
"status": "Halftime",
"status_code": 10,
"minute": "HT",
"start_timestamp": 1790182800,
"home": {
"id": 394121,
"name": "VfL Wolfsburg",
"short_name": "VfL Wolfsburg"
},
"away": {
"id": 644409,
"name": "Sturm Graz",
"short_name": "Sturm Graz"
},
"score": {
"home": 4,
"away": 0,
"text": null
},
"tournament": {
"id": 1000001490,
"name": "UEFA Women's Europa Cup - 2nd Qualifying Round",
"country": "INT"
},
"meta": {
"is_live": true
}
}
],
"date": "2026-09-23",
"cache": {
"hit": false,
"ttl_seconds": 20
}
}
What you’ll use:
- matches[].source_event_id — the match ID to reuse.
- status, status_code, minute — drive live tickers and state transitions.
- score.home, score.away — current scoreline.
- start_timestamp — UTC epoch seconds; convert to your locale for display.
- tournament fields — competition metadata.
- cache.ttl_seconds — upstream caching hint; plan your polling interval.
2) FotMob Fixtures by Date
Method: GET
URL: https://zylalabs.com/api/13929/fotmob-live-football-api/32102/fotmob-fixtures-by-date
Description: Returns all football matches on a UTC date (live and scheduled). Responses are paginated: default 100 matches per page (max 100). Check pagination.has_more; when true, request page=2, page=3, etc.
Query parameters:
- date (date, required): For example 2026-09-22
- page (number, optional): 1-based page index
- per_page (number, optional): up to 100
curl (copy-paste as is):
Notes:
- Use this for pre-match slates where you need scheduled games and any live/finished ones on the same day.
- Read pagination indicators in the response; when has_more is true, increment page.
3) FotMob Match Detail by Match ID
Method: GET
URL: https://zylalabs.com/api/13929/fotmob-live-football-api/32103/fotmob-match-detail-by-match-id
Description: Returns teams, score, status and competition for a FotMob match ID.
Request parameters: none are documented in user examples. Authenticate and call the endpoint to retrieve details.
curl (copy-paste as is):
Official sample JSON response:
Tip: Use the match ID (source_event_id) from the live or fixtures endpoints to fetch or refresh detail views.
Python: fetch live matches for a date
The snippet below calls FotMob Football Live Matches for a UTC date, prints a compact scoreboard, and shows how to handle core fields from the official sample above.
import os
import requests
from datetime import datetime, timezone
API_KEY = os.getenv("ZYLA_API_KEY", "YOUR_API_KEY")
DATE = "2026-09-23" # UTC date
url = "https://zylalabs.com/api/13929/fotmob-live-football-api/32101/fotmob-football-live-matches"
params = {"date": DATE}
headers = {"Authorization": f"Bearer {API_KEY}"}
resp = requests.get(url, params=params, headers=headers, timeout=20)
resp.raise_for_status()
data = resp.json()
print(f"Source: {data.get('source')}, Matches: {data.get('count')}, Date: {data.get('date')}")
cache = data.get("cache") or {}
if cache:
print(f"Cache TTL (s): {cache.get('ttl_seconds')}")
for m in data.get("matches", []):
mid = m.get("source_event_id")
status = m.get("status")
minute = m.get("minute")
start_ts = m.get("start_timestamp")
start_utc = datetime.fromtimestamp(start_ts, tz=timezone.utc).isoformat() if start_ts else "n/a"
home = m.get("home", {}).get("short_name") or m.get("home", {}).get("name")
away = m.get("away", {}).get("short_name") or m.get("away", {}).get("name")
sh = m.get("score", {}).get("home")
sa = m.get("score", {}).get("away")
tourney = m.get("tournament", {}).get("name")
country = m.get("tournament", {}).get("country")
line = f"[{status} {minute or ''}] {home} {sh}-{sa} {away} | {tourney} ({country}) | match_id={mid} | start={start_utc}"
print(line.strip())
Run this as a cron or background task. Use cache.ttl_seconds as a lower bound for your polling interval.
Practical integration notes
- Timezone and timestamps: start_timestamp is UTC epoch seconds. Convert for display in client locales.
- Status handling: status and status_code drive state transitions; treat minute as a string ("HT", "98’"). Don’t parse minute as an integer without checking.
- Null-safe scorelines: Before kickoff, score.home and score.away can be null. Guard your formatters.
- Pagination: For full-day slates, use FotMob Fixtures by Date and iterate page until the response indicates no more pages. Default per_page is 100 and max is 100.
- Caching: cache.ttl_seconds indicates recommended TTL; avoid hammering the endpoint too frequently.
- Match identity: Use matches[].source_event_id as your stable key to correlate live tick and detail views.
- Auth: Always pass Authorization: Bearer YOUR_API_KEY; failing to do so will result in authentication errors.
End-to-end workflow examples
- Live ticker: Poll FotMob Football Live Matches for today’s UTC date, render scorelines, minute, and tournament. Link each row to a detail view using the match ID.
- Pre-match landing page: Call FotMob Fixtures by Date for the chosen day and paginate. Show Not started matches grouped by competition.
- Detail screen: Use the match ID pulled from either endpoint and call Match Detail by Match ID to render teams, score, and competition fields.
- Alerting: When status transitions to Live or Halftime/Finished, trigger notifications. Use status_code to avoid string matching edge cases.
Calling from AI agents via MCP
If you automate tasks with MCP-compatible clients (Claude Code, Cursor, Windsurf and others), you can call Zyla APIs through the MCP endpoint:
Endpoint: https://mcp.zylalabs.com/mcp?apikey=YOUR_API_KEY
Any tool configured to speak MCP can forward requests to Zyla. Reuse the same Authorization model (your API key is tied to your Zyla account and subscription). For client setup details, see the MCP page.
Tip: Keep your match fetch logic stateless and idempotent so MCP tools can retry safely. Observe cache.ttl_seconds to avoid unnecessary calls from your agent loops.
curl for fixtures and detail (ready to paste)
All fixtures for a date (with pagination controls):
Match detail by match ID:
Operational checklist
- UTC assumptions: Both live and fixtures endpoints operate on UTC dates.
- Polling cadence: Start with cache.ttl_seconds; adjust based on UX needs and your subscription quota.
- Error handling: Treat non-2xx as transient (retry with backoff) unless your client indicates otherwise.
- Quota planning: This API uses subscription + quota. No Free Plan. For your first API, you can start with a 7-day trial or 50 requests—verify details on the API page.
- Secret management: Store YOUR_API_KEY in your server-side config or environment variables. Do not embed keys in client-side code.
Links and next steps
- Browse and subscribe on FotMob Live Football API.
- Create your account: Register.
- Explore more sports listings on Zyla API Hub.
FAQ
How do I authenticate?
Send Authorization: Bearer YOUR_API_KEY on every request.
What timezone are dates and times in?
Endpoints accept UTC dates. start_timestamp fields are UTC epoch seconds.
How do I get all fixtures for a busy matchday?
Use FotMob Fixtures by Date with page and per_page, and keep fetching subsequent pages while the response indicates more data.
How do I link live match rows to detail pages?
Use matches[].source_event_id from the live or fixtures endpoints, then call Match Detail by Match ID with your auth header.
Is there a free plan?
No Free Plan. The first API offers a 7-day trial or 50 requests. Check the API page for current access options and pricing.
Ready to ship your integration? Create your account, get your key, and start calling the FotMob Live Football API today. Register now.