GET Latest Updated Fixtures
Returns you all fixtures that have received updates within 10 seconds.
https://api.sportmonks.com/v3/football/fixtures/latest{
"data": [
{
"id": 19238160,
"sport_id": 1,
"league_id": 1412,
"season_id": 22988,
"stage_id": 77469045,
"group_id": null,
"aggregate_id": null,
"round_id": null,
"state_id": 1,
"venue_id": null,
"name": "Tersana vs El Gounah",
"starting_at": "2024-08-08 15:00:00",
"result_info": null,
"leg": "1/1",
"details": null,
"length": 90,
"placeholder": false,
"has_odds": true,
"has_premium_odds": true,
"starting_at_timestamp": 1723129200
},
{
"id": 19238159,
"sport_id": 1,
"league_id": 1412,
"season_id": 22988,
"stage_id": 77469045,
"group_id": null,
"aggregate_id": null,
"round_id": null,
"state_id": 1,
"venue_id": 4568,
"name": "Pyramids FC vs Abu Qir Semad",
"starting_at": "2024-08-08 15:00:00",
"result_info": null,
"leg": "1/1",
"details": null,
"length": 90,
"placeholder": false,
"has_odds": true,
"has_premium_odds": true,
"starting_at_timestamp": 1723129200id
Refers the unique id of the fixture
integer
sport_id
Refers to the sport the fixture is played at
integer
league_id
Refers to the league the fixture is played in
integer
season_id
Refers to the seasons the fixture is played in
integer
stage_id
Refers to the stage the fixture is played in
integer
group_id
Refers to the group the fixture is played in
integer / null
aggregate_id
Refers to the aggregate the fixture is played at
integer / null
state_id
Refers to the state the fixture is played at
integer
round_id
Refers to the round the fixture is played at
integer / null
state_id
Refers to the state the fixture is played at
integer
venue_id
Refers to the venue the fixture is played at
integer / null
name
Represents the name of the participants
string / null
starting_at
Datetime object representing the start time
date / null
result_info
Represents the final result info
string / null
leg
Represents the leg of the fixture
string
details
Represents details about the fixture
string / null
length
Length of the fixture (minutes)
integer / null
api_token
YES
Another option is to provide the API token in the header.
Your unique API token. Ex. ?api_token=YOUR_TOKEN
include
NO
Enrich the API response with more data by using includes. Ex. &include=participants;events
filters
NO
Filter the API response on multiple related entities. There are static filters and dynamic filters. Please find the possibilities in the Static and Dynamic Filter tab.
locale
NO
Translate name fields of the API Response in your selected language. Find more information and which languages are available on our translations page.
Static filters are always the same and filter in one specific way without any custom options. Each static filter is listed below and has a description of how it filters. For more information, please look at our Filters page.
participantSearch
Fixture
Filter on the matches of specific participants.
&include=participants&filters=participantSearch:Celtic
todayDate
Fixture
Filter all fixtures to find only the fixtures of today.
&filters=todayDate
venues
Fixture
Find all fixtures that are played in a specific venue.
&include=venue&filters=venues:venueIDs
&include=venue&filters=venues:10,12
Deleted
Fixture
Filter on deleted fixtures only. This filter helps to keep your database in sync.
&filters=Deleted
markets
Odds
Filter the odds on a selection of markets separated by a comma.
&include=odds&filters=markets:marketIDs
&include=odds&filters=markets:12,14
bookmakers
Odds
Filter the odds on a selection of bookmakers separated by a comma. (e.g: 2,14).
&include=odds&filters=bookmakers:bookmakerIDs
&include=odds&filters=bookmakers:2,14
WinningOdds
Odds
Filter all winning odds.
&include=odds&filters=WinningOdds
The dynamic filters are based on entities and includes. Each dynamic filter uses an entity to filter on and one entity to apply the filter to. Below is an example with an explanation of how filters are set up. For more information, please look at our Filters page.
types
Statistics, Events, Lineup, and way more. Check this endpoint for all possibilities.
Filter the statistics, events and more on a selection of type ids separated by a comma.
&include=statistics.type&filters=fixturestatisticTypes:TypeIDs
&include=statistics.type&filters=fixturestatisticTypes:42,49
&include=events&filters=eventTypes:14
&include=lineups.details.type&filters=lineupdetailTypes:118
states
Fixtures Check this endpoint for all possibilities.
Filter the states of fixtures separated by a comma.
&include=state&filters=fixtureStates:StateIDs
&include=state&filters=fixtureStates:1
leagues
Fixtures, Seasons, Standings, and way more. Check this endpoint for all possibilities.
Filter the fixtures based on leagues and their rounds.
&filters=fixtureLeagues:leagueIDs
&filters=fixtureLeagues:501,271
groups
Fixtures, Standing, and more. Check this endpoint for all possibilities.
Filter the fixtures based on groups. Get their fixtures and standings.
&include=group&filters=fixtureGroups:groupIDs
&include=group&filters=fixtureGroups:246691
countries
Coaches, Leagues, Players, Teams, and way more. Check this endpoint for all possibilities.
Filter the coaches, leagues, players and more based on countries.
&include=coaches&filters=coachCountries:CountryIDs
&include=coaches&filters=coachCountries:1161
seasons
Statistics (players, team, coaches, referees), Standings, and way more. Check this endpoint for all possibilities.
Filter statistics, standings and topscorers based on seasons.
&include=season.statistics&filters=seasonStatisticTypes:TypeIDs
&include=season.statistics&filters=seasonStatisticTypes:52
Definition of “Latest Updated”
This endpoint returns all fixtures whose livescore data has changed within the last 10 seconds. It tracks changes to these fields: state_id, venue_id, name, starting_at, result_info, leg, length, placeholder, has_odds, has_premium_odds, and starting_at_timestamp. The update window is fixed at 10 seconds and cannot be altered.
Changes to each field mean the following:
State_id > the match phase progressed (for example, from 1 to 2 at kick-off or from 2 to 3 at half-time)
Venue_id > the assigned venue was updated (for example, moved from stadium A to stadium B)
Name > the fixture name text was modified (for example, team abbreviations or formatting changed)
Starting_at > the kick-off time string was rescheduled (for example, “2024-08-04 15:30:00” to “2024-08-04 16:00:00”)
Starting_at_timestamp > the UNIX timestamp for kick-off was rescheduled (for example, 1722785400 to 1722787200)
Result_info > the score summary text was updated (for example, “0-0” to “1-0”)
Leg > the leg designation changed (for example, “1/2” to “2/2”)
Length > the fixture duration changed (for example, 90 to 120 when extra time is added)
Placeholder > whether the correct teams have been confirmed or not
Has_odds > whether the match has odds available or not
Has_premium_odds > whether the match has premium odds available or not
Frequency of updates & no-change responses
On each call, any fixture that experienced a change to one or more of the tracked fields in the last 10 seconds will be returned in the data array. If no fixture changed during that window, the API returns HTTP 200 with "data": [], signalling that there is nothing new to process.
Polling frequency & rate limits
To reduce end-to-end latency, we highly recommend polling every 5 to 8 seconds if your rate limits allow.
Monitor for network jitter: slight timing shifts can cause overlap or small gaps. Adjust polling intervals if you see missed updates or duplicate data.
Caching strategy & best practices
Cache only the tracked fields per fixture in a local store.
On each response:
Compare incoming values to your cache.
Discard fixtures with no differences.
Process fixtures with changes and update your cache entries.
Cache lookup data (such as team names and league info) locally, since it changes rarely.
If you encounter long runs of empty responses, back off on polling frequency or check for network issues to avoid unnecessary calls.
Filters
More information on how to use filters can be found in our tutorials on how to filter. If you want more information on which filters to use, you can check out the following endpoint:
Pagination
NO
Include depth
You can use a total of 3 nested includes on this endpoint
Include options
sport round stage group aggregate league seasoncoaches tvStations venue state weatherReport lineups events timeline comments trends statistics periods participants oddspremiumOdds inplayOdds prematchNews postmatchNews metadata sidelinedpredictions referees formations ballCoordinates scores xGFixture pressure expectedLineups
Related Entities:
Get an overview and explanation of all the fields returned in the API response. The related entities for the fixtures endpoints are:
Postman
We also offer detailed postman documentation with examples and a complete up-to-date version of all our endpoints. Below is a button that lets your fork the collection or import it.
Code Example
require "uri"
require "net/http"
url = URI("https://api.sportmonks.com/v3/football/fixtures/latest?api_token=YOUR_TOKEN")
https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true
request = Net::HTTP::Get.new(url)
response = https.request(request)
puts response.read_body
import http.client
conn = http.client.HTTPSConnection("api.sportmonks.com")
payload = ''
headers = {}
conn.request("GET", "/v3/football/fixtures/latest?api_token=YOUR_TOKEN", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://api.sportmonks.com/v3/football/fixtures/latest?api_token=YOUR_TOKEN',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'GET',
));
$response = curl_exec($curl);
curl_close($curl);
echo $responsOkHttpClient client = new OkHttpClient().newBuilder()
.build();
Request request = new Request.Builder()
.url("https://api.sportmonks.com/v3/football/fixtures/latest?api_token=YOUR_TOKEN")
.method("GET", null)
.build();
Response response = client.newCall(request).execute();var unirest = require('unirest');
var req = unirest('GET', 'https://api.sportmonks.com/v3/football/latest?api_token=YOUR_TOKEN')
.end(function (res) {
if (res.error) throw new Error(res.error);
console.log(res.raw_body);
});package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://api.sportmonks.com/v3/football/fixtures/latest?api_token=YOUR_TOKEN"
method := "GET"
client := &http.Client {
}
req, err := http.NewRequest(method, url, nil)
if err != nil {
fmt.Println(err)
return
}
res, err := client.Do(req)
if err != nil {
fmt.Println(err)
return
}
defer res.Body.Close()
body, err := ioutil.ReadAll(res.Body)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(string(body))
}Last updated
Was this helpful?