Match statistics and line-ups
How match detail feeds describe line-ups, substitutes, events and statistics, and how to build reliable match pages from them.
FootballAPI.net editorial team
Written and reviewed by the organisation
Published 30 Oct 2026Updated 1 Nov 20265 min read

Once a match has been played, readers want the story: who started, who came on, when the goals went in, who was booked and how the two sides compared on shots and possession. Match detail feeds deliver that story as structured records, keyed by match identifier.
FootballAPI.net's match statistics and line-ups family returns team and player statistics, line-ups, substitutes and events per competition. Our sample contained five match records. Single-match and by-date request variants are still unresolved, so the guidance below focuses on per-competition retrieval and careful matching by identifier.
What a match record contains
A match record usually contains both teams with identifiers, the final score, a list of events with minutes and player identifiers, starting line-ups, substitutes, and a statistics block for each team. Some competitions add individual player statistics such as minutes, shots and passes. Formations may be supplied as a string.
Event types include goals, own goals, penalties, cards and substitutions. Each event should carry the minute and, where applicable, added time. Render added time explicitly, since 90+3 and 93 mean the same in some systems and different things in others.
Keep the event list in the supplied order and use it as the basis for a timeline. Re-ordering by minute alone can scramble events that happened in the same minute.
- Line-ups and substitutes with player identifiers
- Events with minutes and added time
- Team statistics, sometimes player statistics
Joining to fixtures
Because the family is retrieved per competition, your job is to match each record to the fixture you already hold. Do it by match identifier. If you stored season fixtures keyed on that identifier, the join is a simple lookup and the match page can show fixture metadata and detail together.
If a match detail record arrives without a fixture you recognise, store it anyway and flag it. It may be a rescheduled match, a cup tie or a competition you do not yet track.
Rendering line-ups
Line-ups are most readable as two columns or as a pitch diagram. A pitch diagram needs formation and position data, which is not always present, so build the column view first and add the diagram only when the data supports it. Mark the captain and goalkeeper where supplied, and show substitutes beneath with the minute they came on.
Link each player to their profile by identifier. Readers often move from a match page to a player page after a standout performance, and those links are where much of a football site's internal navigation happens.
Statistics without spin
Team statistics such as shots, shots on target, corners, fouls and possession give useful context. Present them side by side with clear labels and no editorial colouring. Avoid derived metrics unless you can explain how they were calculated and from what.
When a statistic is missing for one team, hide the row rather than showing a dash for one side and a number for the other, which invites readers to compare unlike things.
Handling partial and late data
Detail often arrives after the final score. Line-ups may appear before kick-off, events during or after the match, and statistics later still. Design the match page to show whatever stage is available, with a note when more detail is expected.
Refresh the per-competition feed a few hours after the last match of the day, and again the next morning to pick up corrections. Store each version, or at least the latest good version, so that a temporarily empty response does not erase a page.
- Show available stages progressively
- Refresh after matches and the next morning
- Never overwrite good detail with an empty response
Predicted line-ups are different
Some competitions also offer predicted line-ups before kick-off. These are forecasts of team selection, not betting predictions, and they should be labelled clearly as expected rather than confirmed. Replace them with the confirmed line-up once it arrives, and never mix the two on one page without labels.
Our separate guide on predicted line-ups covers how to present them responsibly.
Building a match centre
Combine the fixture, the line-ups, the event timeline and the statistics into one page and you have a match centre. Cache the assembled data on your server, refresh it on a schedule, and show the refresh time. Remember that FootballAPI.net presents nothing as live, so describe the page as a match report rather than a live tracker.
Our match centre guide walks through the page structure in more detail, including empty and error states for each panel.
A worked example
After the final match on a Saturday in league 1204, a job requests the competition's match detail, iterates through the records, and looks up each match identifier in the fixtures table. Matching records update the match page; unmatched ones go to a review queue. Line-up players are linked to profiles by identifier, and events are stored in supplied order with their minute and added time.
On Sunday morning the job runs again. Any corrections, such as a goal reassigned from one scorer to another, overwrite the earlier record for that match, and the page shows the updated timeline with a refreshed-at time. Because the job keeps the previous version until the new one validates, a failed request leaves Saturday's page intact.
Over a season, this simple two-pass pattern keeps match pages accurate with a modest number of requests, and the review queue surfaces cup ties or rescheduled games that need attention.
Accessibility
Event timelines should be readable as text, not only as icons. Give each event an accessible label such as goal, 34th minute, followed by the player's name. Make statistic bars accessible by including the numbers as text, and ensure line-up columns are announced with team names as headings.
Key takeaways
- Retrieve per competition and join to fixtures by match identifier.
- Show line-ups, events and statistics progressively as they arrive.
- Label predicted line-ups clearly and replace them with confirmed ones.
Integration checklist
0/10 completeFrequently asked questions
Can I request a single match by identifier?
Single-match and by-date variants are unresolved. Retrieve per competition and match records to fixtures by match identifier.
Are player statistics included?
Team and player statistics were present in the sample, but completeness varies by competition.
How do I show added time?
Render the supplied minute and added time explicitly, for example 90+3, rather than collapsing them.
Is match detail live?
No. Detail is retrieved periodically and should be labelled with its refresh time.
Sources and references
- Compare single-match and competition statistics requests
- Handle requests with the documented client examples
- FootballAPI.net coverage notes
Use these implementation references alongside this guide. Current endpoint parameters and account settings take precedence over illustrative examples.
Related guides
All guidesPredicted line-ups are not betting predictions
Why expected team selections are useful editorial context, and why FootballAPI.net does not publish match outcome predictions or tips.
Build a football match centre
How to assemble fixtures, line-ups, events and statistics into an honest match page that never pretends to be live.
Football data for fantasy football tools
How to use player statistics, squads, fixtures and expected line-ups in fantasy tools without overstating certainty.