Match events
A
GET
/v1/matches/{id}/events
Goals and cards, minute by minute
Goals and red cards with the minute and the scorer, where the record carries them.
Goals and red cards is not carried on every match. The coverage figures on each competition and season give the exact share for the rows you are asking for.
Plan
This endpoint needs Archive.
Calling it on a lower plan returns a 403 naming the plan it needs and
a link to pricing, never a bare refusal.
Parameters
match_id
string
path
required
The match id. Stable across re-imports: what you store today still resolves later. e.g.
mt_1JK5QJ9
Returns
data.match_id
string
Our id for the match. Stable: what you store today still resolves later.
data.home_team_name
string
The home side's name.
data.away_team_name
string
The away side's name.
data.events
list
Events.
data.events[].minute
integer
Minute.
data.events[].extra
empty in this example
Extra.
data.events[].type
string
Type.
data.events[].detail
string
Detail.
data.events[].team
string
Team.
data.events[].player
string
Player.
data.events[].assist
string
Assist.
meta.data_as_of
string
When the data behind this answer was last brought up to date.
meta.request_id
string
This request's id, to quote to support.
Request
curl "https://api.footballsoccerapi.com/v1/matches/mt_1JK5QJ9/events" \ -H "X-API-Key: $FSAPI_KEY"
const res = await fetch("https://api.footballsoccerapi.com/v1/matches/mt_1JK5QJ9/events", { headers: { "X-API-Key": process.env.FSAPI_KEY } }); const { data, meta } = await res.json();
import os, requests r = requests.get( "https://api.footballsoccerapi.com/v1/matches/mt_1JK5QJ9/events", headers={"X-API-Key": os.environ["FSAPI_KEY"]}, ) data = r.json()["data"]
$ch = curl_init("https://api.footballsoccerapi.com/v1/matches/mt_1JK5QJ9/events"); curl_setopt_array($ch, [ CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => ["X-API-Key: {$key}"], ]); $data = json_decode(curl_exec($ch), true)["data"];
Example response
A real row from the archive, fetched when this page rendered. Run it against your own key below.
200 OK
application/json
{
"data": {
"match_id": "mt_05R9AVD",
"home_team_name": "Atletico-MG",
"away_team_name": "Cruzeiro",
"events": [
{
"minute": 4,
"extra": null,
"type": "Goal",
"detail": "Normal Goal",
"team": "Cruzeiro",
"player": "Kaio Jorge",
"assist": "K. Arroyo"
}
]
},
"meta": {
"data_as_of": "2026-10-29T04:32:57Z",
"request_id": "01J9QW3C7M4KX2VB"
}
}
Run it live
Paste your key and fire the real request. The key is kept in this browser only and never sent anywhere but the API.