Live Soccer Scores API for Real-Time Match Updates
Add live soccer scores, goal notifications, match events, injury time, cards, substitutions, penalties and VAR decisions to websites, mobile apps, fantasy platforms, media products and analytics tools.
{
"match_id": "match_74021",
"status": "live",
"period": "second_half",
"minute": 67,
"injury_time": 0,
"score": {
"home": 2,
"away": 1
},
"last_event": {
"type": "goal",
"team_id": "team_18"
}
}
What Is a Live Soccer Scores API?
A Live Soccer Scores API gives applications structured access to matches currently in progress. Instead of collecting scores manually or extracting information from public scoreboards, your application can request or receive machine-readable match data and display it in its own interface.
Live data can support scoreboards, match centres, mobile notifications, fantasy platforms, media websites, broadcast graphics, sportsbook interfaces, analytics dashboards and automated workflows.
Exact competitions, event types, update methods and historical depth depend on confirmed API coverage and the selected plan.
Live Soccer Data Available to Your Application
Current Score
Display home and away scores, halftime scores, extra-time scores and penalty-shootout results where available.
Match Clock
Track the current period, match minute, stoppage time, injury time and completed match phases.
Goal Notifications
Process goals, own goals, disallowed goals, scorers, assists and score changes as structured events.
Cards and Discipline
Receive yellow cards, second yellow cards, red cards and supported disciplinary event context.
Substitutions
Show players entering and leaving the pitch, substitution time and affected team.
VAR Decisions
Update live timelines when supported video-review events confirm, overturn or modify a match decision.
Penalties
Process awarded, scored and missed penalties with player, team and match-minute context.
Live Match Statistics
Display possession, shots, shots on target, corners, cards, passes, saves and other supported match statistics.
Line-Ups and Formations
Connect confirmed starting line-ups, substitutes, positions and formations to the live match.
REST API vs WebSocket for Live Soccer Scores
REST is suitable for retrieving the complete current match state. WebSocket streaming is better suited to applications that need incremental live events without repeatedly polling every endpoint.
| Requirement | REST API |
Live delivery WebSocket |
|---|---|---|
| How data is received Request or stream | Request and response | Persistent event stream |
| Best suited to Common implementation use | Fixtures, match state, scorecards and historical data | Goals, cards, substitutions, VAR and match-status changes |
| Update pattern How changes reach the application | Polling at a controlled interval | Server pushes new events |
| Recovery after failure Recommended pattern | Request the latest state again | Reconnect, then reconcile using REST |
| Recommended architecture Production pattern | Source of complete match state | Source of incremental live changes |
Soccer Match Status and Injury Time
A production application should treat match status as structured data rather than assuming every fixture moves directly from scheduled to live and then full time.
| Status | What it means | Recommended interface behaviour |
|---|---|---|
| Scheduled | The match has not started. | Show kickoff time, competition, teams and venue. |
| Delayed | The planned kickoff has been postponed temporarily. | Display the latest delay status and revised time if known. |
| First Half | Play is in the first regulation period. | Show the live score, minute and active match events. |
| Halftime | The first half has ended. | Show the halftime score and first-half statistics. |
| Second Half | Play is in the second regulation period. | Continue live score, minute and event updates. |
| Injury Time | Additional time is being played at the end of a period. | Show regulation minute and added-time information clearly. |
| Extra Time | A knockout match has moved beyond regulation time. | Show extra-time period and score separately where needed. |
| Penalty Shootout | The match is being decided by penalties. | Display shootout events and penalty score. |
| Full Time | The match has ended with a confirmed result. | Replace live indicators with final result and statistics. |
| Postponed or Cancelled | The match will not proceed at the original time. | Show the official status without inventing a result. |
Goal, Card, VAR and Substitution Events
Live match events should be identified by stable event IDs and applied only once. This prevents duplicate goals, cards or substitutions after a reconnect or repeated delivery.
Goal Event
May include scorer, assister, team, minute, injury time, score after the event and goal status.
Card Event
May include player, team, card type, minute and disciplinary context.
VAR Event
May indicate review type, original decision, final decision and affected match event.
Substitution Event
May identify the player entering, player leaving, team and match minute.
Penalty Event
May include awarded, taken, scored, missed or saved penalty status.
Match Status Event
May indicate kickoff, halftime, second-half start, extra time, penalty shootout or full time.
Build a Reliable Live Match Experience
A production live-score integration should preserve match state, process events safely and recover cleanly after network interruptions.
1. Request active matches 2. Load selected match state 3. Render score and timeline 4. Subscribe to live events 5. Apply each event once 6. Detect stale connections 7. Reconnect safely 8. Reload current state 9. Store final result
Important Data Checks
Request Live Soccer Scores in JavaScript, Python and PHP
The examples below demonstrate a common authenticated request pattern. Replace the example base URL, endpoint and authentication method with the values in the final API documentation.
// JavaScript
const response = await fetch(
'https://api.example.com/v1/soccer/matches/live',
{
headers: {
'Authorization': 'Bearer YOUR_API_KEY',
'Accept': 'application/json'
}
}
);
if (!response.ok) {
throw new Error(`API error: ${response.status}`);
}
const data = await response.json();
# Python
import requests
response = requests.get(
"https://api.example.com/v1/soccer/matches/live",
headers={
"Authorization": "Bearer YOUR_API_KEY",
"Accept": "application/json",
},
timeout=15,
)
response.raise_for_status()
data = response.json()
<?php
$url = 'https://api.example.com/v1/soccer/matches/live';
$ch = curl_init($url);
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer YOUR_API_KEY',
'Accept: application/json',
],
CURLOPT_TIMEOUT => 15,
]);
$body = curl_exec($ch);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
Example Live Soccer Match Response
This illustrative response shows the type of match context a live-score application may consume. Final field names and nesting must follow the published API documentation.
{
"data": {
"match_id": "match_74021",
"competition": {
"id": "competition_24",
"name": "Example Premier League"
},
"status": "live",
"period": "second_half",
"minute": 67,
"injury_time": 0,
"venue": {
"id": "venue_81",
"name": "Central Stadium"
},
"home_team": {
"id": "team_18",
"name": "North City",
"score": 2
},
"away_team": {
"id": "team_29",
"name": "United Athletic",
"score": 1
},
"last_event": {
"event_id": "event_991827",
"type": "goal",
"team_id": "team_18",
"player_id": "player_301",
"assist_player_id": "player_447",
"minute": 66
},
"updated_at": "2026-08-06T10:31:22Z"
}
}
Response Times and Update Frequency
The user-visible update time depends on the original data source, provider processing, network conditions, delivery method and your own application architecture.
WebSocket delivery can reduce the delay created by polling intervals, but it does not by itself guarantee a specific latency. Publish a numeric response-time or update-frequency claim only when it is measured and supported by the final service terms.
REST Polling
Choose an interval that balances freshness, request quotas and traffic. Share responses through a server-side cache.
WebSocket Streaming
Receive incremental live events without making a new HTTP request for every update.
Freshness Indicator
Display the last successful update time and identify stale data when the live connection stops.
Completed Matches
Stop high-frequency requests after full time and cache the final result for longer.
What Can You Build With a Soccer Live Score API?
Live Score Websites
Create match centres with score, clock, event timeline, line-ups, statistics and final results.
Mobile Soccer Apps
Build match lists, favourite-team alerts, goal notifications and real-time match views.
Fantasy Soccer Platforms
Use goals, assists, cards, saves, minutes and other events to update fantasy points and leaderboards.
Sports Media Products
Add live scoreboards, match widgets, timelines and statistics to articles, league pages and live blogs.
Sportsbooks and Affiliates
Combine live match state with separately available odds and market data to support trading and customer-facing interfaces.
Notifications and Automation
Trigger workflows for kickoff, goals, cards, halftime, full time, line-ups and selected match events.
Live Soccer Competition Coverage
Coverage may include international competitions, domestic leagues, cups and selected youth or women’s competitions. Availability can vary by season, competition, endpoint and subscription plan.
Before launch, confirm whether your product requires live scores only, detailed event timelines, line-ups, match statistics, injury time, odds, predictions or historical records.
Live Soccer Scores API FAQs
What data does the Live Soccer Scores API provide?
Depending on coverage, data may include score, match clock, injury time, goals, cards, substitutions, penalties, VAR decisions, line-ups and live statistics.
Can I receive goal notifications in real time?
Goal events may be delivered through supported REST endpoints or WebSocket streams. Confirm the competition and plan before relying on live event delivery.
Does the API include injury time?
Injury or stoppage-time fields may be available for supported matches. Use the documented period and clock fields rather than calculating them from assumptions.
Should I use REST or WebSocket?
Use REST for complete match state and WebSocket for incremental live events. Many production applications combine both.
How frequently are scores updated?
Update timing depends on coverage, delivery method and plan. Use the documented service details and show the last-updated time in your interface.
Can I build a fantasy soccer app with this API?
Yes, where the required goals, assists, cards, saves, minutes and player events are included in coverage.
Add Live Soccer Scores to Your Application
Review available plans, confirm competition and event coverage, and begin building live soccer experiences with REST endpoints and real-time WebSocket delivery.