Live now!
Football API add-on

Football Match Facts, ready to build with

Sportmonks Match Facts turns historical and live match data into pre-calculated insights your app can surface instantly. No analytics pipeline, no statistical models to maintain: one include on the fixture calls you already make.

No contracts, no minimums First API call in minutes 1,500+ leagues covered
GET /v3/football/fixtures/19427238?include=matchfacts;AIOverviews 200 OK
Crystal PalaceArsenalCrystal Palace 1-2 Arsenal · Premier LeagueFT
Ready-to-display factsnatural_language
Crystal Palace "In Crystal Palace's last 5 Premier League matches both teams scored in 3 of those matches."statistics · team · league_matches
Arsenal "Arsenal are unbeaten in 22 out of their 25 most recent Premier League matches against Crystal Palace."streaks · h2h
Kai Havertz "Kai Havertz has the highest average xGOT for Arsenal in their 10 most recent Premier League matches, with an average xGOT of 0.65."players · league_matches
Real fixture, real response. Every sentence on this card comes from the API call above, ready to display.
{
  "data": {
    "id": 19427238,
    "name": "Crystal Palace vs Arsenal",
    "starting_at": "2026-05-24 15:00:00",
    "result_info": "Arsenal won after full-time.",
    "matchfacts": [
      {
        "id": 50227996,
        "type_id": 87913,
        "participant": "home",
        "basis": "team",
        "data": { "count": 3, "percentage": 60 },
        "natural_language": "In Crystal Palace's last 5 Premier League matches both teams scored in 3 of those matches.",
        "category": "statistics",
        "scope": "league_matches"
      }
      // + head-to-head, player and window-variation facts in the same call
    ]
  }
}

Trusted by 30,000+ sports builders

Case study Case study Case study Case study Case study Case study Case study Case study Case study Case study
Match facts explained

What are football match facts?

Football match facts are pre-calculated insights built from historical and live match data: trends, streaks, head-to-head records, player storylines and statistical comparisons that explain what is happening on the pitch. Scores and statistics are table stakes. What fans actually want is context, and Sportmonks Match Facts gives your application that layer without you having to build it yourself.

Building contextual match facts from raw data is expensive. You would need to retrieve large historical datasets, write filtering logic, calculate trends, and maintain all of it across leagues, teams and time windows. Match Facts handles all of that for you: pre-calculated, structured, and window-aware, so you can build features in an afternoon that would otherwise take weeks of engineering work. Every insight is validated automatically, so you never surface a misleading statistic.

Match Facts arrive through the same fixtures endpoint you are already calling as an add-on to the Football API, with structured data and an optional natural language sentence for every fact. It sits next to our other proprietary insight products, xG Data and Predictions, so you will not find this exact dataset anywhere else.

See it in action

One real fixture. Every kind of context.

Everything below comes from one real API response: Crystal Palace vs Arsenal, Premier League, 24 May 2026. One include returned the trends, the player storylines, the ready-to-display sentences and the written match overview. Pick the view your product needs.

From API response to editorial content.

Match fact can also be returned as a ready-to-display sentence. No formatting logic needed on your side: just output the string. Combine structured data with natural language and you go from API response to editorial-quality content in a single call.

  • A natural_language string on the fact itself
  • Structured data alongside for custom rendering
  • The AI overview adds a fully written match summary
Crystal PalaceArsenalCrystal Palace 1-2 Arsenal · Premier LeagueFT
Ready-to-display factsnatural_language
Gabriel Jesus "Gabriel Jesus has the highest average xG for Arsenal in their Premier League matches against Crystal Palace, with an average xG of 0.84."players · league_matches
Arsenal "Arsenal have won 6 out of their 7 most recent Premier League matches against Crystal Palace."streaks · h2h
Crystal PalaceArsenal "In the last Premier League matches between Crystal Palace and Arsenal both teams scored in 15 of those matches."statistics · h2h
Arsenal "Arsenal are unbeaten in 22 out of their 25 most recent Premier League matches against Crystal Palace."streaks · h2h
Natural language facts ship in the Basic tier, on every Football API plan. See add-on pricing
Josip Božić
★★★★★

"Once you start utilising it, you realise that its excellence isn't just superficial, the quality of the data itself stands out."

Josip BožićCEO & Lead Developer, ShiftOneZero

The whole fixture, already written.

One field returns a full written overview of the match: form, head-to-head, clean sheets, shot and corner averages, top-rated players. It is generated from the same pre-calculated facts in the response, so the prose and the structured numbers can never disagree. Publish it as a preview, a push body or a newsletter paragraph.

  • One field: aioverviews[].summary
  • Every number traces back to a fact in the same response
  • No prompts to write, no model to host, no drift to check
Crystal PalaceArsenalCrystal Palace 1-2 Arsenal · Premier Leaguetype_id 121211
Written match overviewaioverviews
Arsenal have won 4 of their last 5 Premier League matches against Crystal Palace, while Crystal Palace have 3 wins in their Premier League matches against Arsenal. In their last 5 Premier League matches against Crystal Palace, Arsenal have kept 3 clean sheets and averaged 2.8 goals, 14.2 shots, and 4.8 corners per match, whereas Crystal Palace averaged 0.6 goals, 12.6 shots, and 4.0 corners per match during the same period.
Furthermore, Crystal Palace have lost 6 out of their 7 most recent Premier League matches against Arsenal and have 3 clean sheets in their Premier League matches against Arsenal. Regarding recent team form, Arsenal have won 8 out of their 10 most recent Premier League matches, while Crystal Palace are unbeaten in 5 out of their 5 most recent home Premier League matches.
Gabriel Jesus has the highest average rating for Arsenal in their Premier League matches against Crystal Palace, with an average rating of 7.65, and Walter Benítez has the highest average rating for Crystal Palace in their 10 most recent Premier League matches, with an average rating of 7.3.
1 field·1,093 characters·0 formatting logic
The AI overview sits in the Advanced tier, together with live in-match updates. See Advanced pricing
Ahmet Sayarlioglu
★★★★★

"The way the API is structured and documented makes it naturally compatible with how modern development works, including AI-assisted coding and automated data pipelines."

Ahmet SayarliogluCo-Founder, ScoutsLand

Seven categories. Zero pipelines to maintain.

Facts span seven categories: team statistics, players, streaks, head-to-head, comparisons, match context and referee insights. Every one is pre-calculated, window-aware, and available as structured data or a natural language sentence. Here are real facts from this fixture, Crystal Palace against Arsenal.

6 / 7

Arsenal have won 6 of their last 7 Premier League meetings with Crystal Palace.

statistics · h2h
Gabriel Jesus 0.84

Gabriel Jesus holds Arsenal's highest average xG against Crystal Palace, at 0.84.

players · league_matches
22 / 25

Arsenal are unbeaten in 22 of their last 25 Premier League matches against Crystal Palace.

streaks · h2h
1.9

Arsenal average 1.9 expected goals per match, above the league average of 1.5.

comparisons · team
0 / 6

Palace coach Oliver Glasner has not beaten Mikel Arteta in 6 Premier League meetings.

coaches · h2h
4

The same fact arrives in 4 windows: h2h, team, league only and overall. Query the angle you need.

basis · scope
All seven categories arrive from one include, so breadth costs you one request, not seven. See add-on pricing
Pasquale Puzio
★★★★★

"Finding high-quality football and betting data is challenging. This is where Sportmonks has proven to be a great partner."

Pasquale PuzioCo-founder, FantaMaster

The same insight, every relevant timeframe.

Football statistics are heavily shaped by recency. A full-season record tells a different story than the last five matches. The card shows one fact, Arsenal's goals conceded, across four window variations from the same response. Your application picks what is most relevant.

  • Generated automatically, per basis and scope
  • Only returned when sufficient match history exists
  • No validation logic on your side
ArsenalArsenal · goals conceded, last 10type_id 87878
Four windows, one responsebasis · scope
11h2h · all_matchesavg 1.1
10h2h · league_matchesavg 1.0
6team · league_matchesavg 0.6
5team · all_matchesavg 0.5
Every window variation comes with the fact itself, at no extra request cost. See add-on pricing
Borko Bajic
★★★★★

"The widest coverage out there for both in-play and pre-match events."

Borko BajicCTO at BettingKick.com
What's included

What's inside every match fact

Every fact is one object in the matchfacts array on the fixture, in the same uniform JSON for every covered league. These are the exact fields from the sample response, so your parser is written once and done.

natural_language
Ready-to-display sentence
"Arsenal are unbeaten in 22 out of their 25 most recent Premier League matches against Crystal Palace". Output the string, done.
category
Insight category
The kind of insight the fact provides, for example statistics or players.
basis
Calculation basis
What the fact is computed over: team, h2h or overall.
scope
Match window
Which fixtures count: all_matches, league_matches or allFixtures. This powers window variations.
participant
Who the fact is about
home, away or both, mapped to the fixture's participants.
data
Structured values
Counts, percentages, averages and home/away splits, for example "count": 3 and "percentage": 60.
related_player
Player reference
Player-based facts carry a player_id and display_name, like 5329, Gabriel Jesus.
type_id
Fact type
A stable id per fact type, for example 87878 for the goals-conceded facts in the sample response.

Go further with AI Overviews

Advanced plan

AI Overviews take Match Facts one step further, generating a complete, ready-to-display match summary built directly from the underlying Match Facts data. They are not part of the standard Match Facts add-on: AI Overviews are available on the Advanced plan. Once enabled, add AIOverviews to your fixtures call and your response includes a fully written match preview for your application.

Facts are only generated when sufficient match history exists, so a fixture response contains the facts that apply to that match. Field and include definitions live in the Football API documentation.

Built for builders

From token to match facts in one session

No new endpoints to learn. Match Facts arrive through the same fixtures endpoint you are already calling: same authentication, same data format, no new infrastructure. New here? Your first call is minutes away.

  1. 1Sign up and get your API token instantly. No credit card, no sales call.
  2. 2Add the Match Facts include to any fixture request, exactly as in the call shown here: include=matchfacts;AIOverviews.
  3. 3Render the natural_language string directly, or parse the structured data. One uniform JSON shape for every covered league.

Stuck on an include or an endpoint? You talk to a person, 7 days a week. Sportmonks is the only sports data API with an actual face.

Start building for free Read the docs
curl "https://api.sportmonks.com/v3/football/fixtures/19427238?api_token=YOURTOKEN&include=matchfacts;AIOverviews" 200 OK
{
  "matchfacts": [
    {
      "id": 50227051,
      "fixture_id": 19427238,
      "type_id": 76094,
      "participant": "away",
      "basis": "h2h",
      "data": {
        "all": { "streak": 6, "matches": 7 },
        "home": { "streak": 1, "matches": 1 },
        "away": { "streak": 4, "matches": 5 }
      },
      "natural_language": "Arsenal have won 6 out of their 7 most recent Premier League matches against Crystal Palace.",
      "category": "streaks",
      "scope": "league_matches"
    }
    // one object per fact, per window variation
  ]
}
From builders using Sportmonks

Data quality developers vouch for

★★★★★

"The way the API is structured and documented makes it naturally compatible with how modern development works, including AI-assisted coding and automated data pipelines."

Ahmet Sayarlioglu Ahmet SayarliogluCo-Founder, ScoutsLand
★★★★★

"The widest coverage out there for both in-play and pre-match events."

Borko Bajic Borko BajicCTO at BettingKick.com
★★★★★

"Sportmonks feels like a partner rather than just a service. The support team is fast, helpful, and actually understands what you're trying to achieve."

Eglė Neumann Eglė NeumannCo-Founder, ScoutsLand

Read the full stories on our case studies page.

Add-on pricing

Start small, scale when you're ready

Match Facts attaches to your Football API plan. Basic covers pre-match facts, Advanced adds live updates and the AI overview. No contracts, no minimums. We publish our prices, compare us openly.

Starter

Best for side projects and early builds

BasicPre-match €29/mo
Advanced+ live + AI overview €149/mo
  • 5 custom leagues
  • 2,000 API calls
Try for free

Growth

Best for startups and growing applications

BasicPre-match €79/mo
Advanced+ live + AI overview €299/mo
  • 30 custom leagues
  • 2,500 API calls
Try for free
Popular

Pro

For production apps at scale

BasicPre-match €149/mo
Advanced+ live + AI overview €449/mo
  • 120 custom leagues
  • 3,000 API calls
Try for free

Enterprise

The ultimate solution for the real pros, contact us for a tailored offer

Custom

Basic and Advanced, priced à la carte

  • All 2,200+ available leagues
  • 5,000 API calls per entity per hour
  • Historical data included
  • Custom agreements available
Contact us

All prices are per month, exclusive of VAT where applicable. Advanced includes everything in Basic plus live updates and the AI overview.

Use cases

What builders ship with match facts

Livescore portals

Give fans more than the score. Streaks, head-to-head records and match context turn a plain fixture row into a reason to stay on your page.

Livescore portals →

Betting insights

Surface pre-match trends your users act on: both-teams-scored rates, goals conceded windows, referee strictness. Structured data ready for insight features.

Betting platforms →

Automated previews and media

Natural language sentences and AI Overviews turn one API call into editorial-quality match previews and automated commentary, at any volume.

Sports media →

Fantasy engagement

Player-based facts surface top scoring threats, standout performers and notable absences: the storylines that drive captain picks and transfer debates.

Fantasy games →

Club and fan apps

Rivalry records, streaks and match context make a club app feel alive. ShiftOneZero built a live club app for Dinamo Zagreb on Sportmonks data.

Clubs and scouting →

Match analysis tools

Referee tendencies, statistical comparisons and window-aware trends add the game-flow context that analysis and prediction features need.

All solutions →
Match Facts, FAQ

Match Facts questions developers actually ask

Quick answers before you sign up. Want the long version? It's all in the Match Facts documentation.

What is the difference between Basic and Advanced?

Basic covers the pre-match facts: form, head-to-head, streaks, player storylines, comparisons and every window variation, all ready before kickoff.

Advanced includes everything in Basic and adds two things: the facts keep updating during the match, and you get the AI overview, a fully written match summary in one field. Both tiers are available on every paid plan, so you can start on Basic and move up without changing your integration. See add-on pricing for the current rates.

Which leagues are covered in the Match Facts add-on?

Match Facts covers 1,500+ of our 2,200+ football leagues. How many of those you can select is set by your plan: Starter includes 5 custom leagues, Growth 30, Pro 120, and Enterprise covers all available leagues. You choose which ones in your Sportmonks dashboard and can add more to any plan.

Which facts you get for a given match then depends on the match data behind it. Facts are calculated from the underlying statistics for that competition, so a league without corner data returns no corner facts. You always get the facts that league supports, never an estimate standing in for missing data.

Is Match Facts a separate API or part of my existing integration?

Part of your existing integration. Once the add-on is active on your subscription, match facts are returned through the same fixtures endpoint you are already calling: add the include and the response comes back enriched, in the same matchfacts array for every covered league. Same token, same JSON shape, no new infrastructure and no second integration to maintain.

Does Match Facts work with my current Sportmonks plan?

Yes, on Starter, Growth, Pro and Enterprise. Match Facts is a paid add-on, so it does need to be switched on for your subscription, but that happens in your dashboard: no new account, no migration, no separate integration. After that the include works on the fixture calls you already make.

When do match facts appear, and do they change during a match?

Facts are pre-calculated, so they are already on the fixture before kickoff. That is what Basic gives you: everything you need to build a preview page or a pre-match notification.

On Advanced the same facts keep updating as the match plays out, on the same fixture call, so a live match centre stays current without you recalculating anything.

What are window variations?

The same insight, calculated across multiple timeframes. A team's full-season record tells a different story than their last five matches, so Match Facts delivers both and your application chooses what is most relevant. Window variations are generated automatically and only when sufficient match history exists. If a team has played fewer matches than the window requires, that variation is simply not returned, so you never surface a misleading statistic.

Do match facts come as ready-made sentences?

Yes. Every match fact can also be returned as a ready-to-display natural language sentence, like "Arsenal have won 6 out of their 7 most recent Premier League matches against Crystal Palace". No formatting logic needed on your side: just output the string. The structured data ships alongside it for custom rendering.

What happens when I reach my API call limit?

The same as with the rest of your plan. Match Facts arrives as an include on calls you already make, so it does not multiply your call count, and you can add extra API calls at any time. See add-on pricing for the options.

Add match facts to your app today

Pre-calculated match insights on the most approachable sports data API. Start free, upgrade when your product does.

No contracts, no minimums First API call in minutes Human support, 7 days a week
More from the Football API