Home/Developers
Football forecast API overview: a JSON match data feed
What the feed returns, how keys, versions and limits work, and how caching keeps requests low. The full integration guide comes with your account.
{
"match": {
"home": "Brentford",
"away": "Liverpool",
"probabilities": {
"home_win": 0.4237,
"draw": 0.2537,
"away_win": 0.3226
}
}
}A match
What one match looks like
The same record serves the next matches of a competition and a single match found by team names or by id. The values below are an illustration.
{
"api_version": "v1",
"match": {
"fixture_id": "2026-10-17:Brentford:Liverpool",
"competition": "premier_league",
"date": "2026-10-17",
"kickoff_utc": "2026-10-17T14:00:00Z",
"status": "scheduled",
"home": "Brentford",
"away": "Liverpool",
"probabilities": { "home_win": 0.4237, "draw": 0.2537, "away_win": 0.3226 },
"goals": { "expected_home": 1.602, "expected_away": 1.373, "over_2_5": 0.5712, "btts": 0.6018 },
"confidence": "high",
"made_at": "2026-10-17T06:30:02Z",
"insights": {
"verdict": "Closely matched.",
"form": { "home": { "results": "D L W W L", "points": 7 }, "away": { "results": "W W D W L", "points": 10 } },
"output": {
"home": { "unit": "xG", "scored": 1.4, "conceded": 1.3, "scored_rank": 9, "conceded_rank": 12, "of": 20 },
"away": { "unit": "xG", "scored": 2.0, "conceded": 0.9, "scored_rank": 2, "conceded_rank": 1, "of": 20 }
}
},
"notes": { "provisional": null, "newly_promoted": { "home": false, "away": false }, "less_certain": false },
"absences": { "home": [ { "player": "A. Player", "status": "out" } ], "away": [] },
"advance": null
},
"disclaimer": "PitchTensor forecasts are model-based analysis ... not predictions ..."
}The fields
probabilities are the chances of a home win, a draw and an away win, and add up to 1. goals holds the goals expected from each side, the chance of over 2.5 goals and of both teams scoring. confidence says how much recent data both clubs have, and made_at is when the forecast was produced.
insights carries the verdict, the last five results of both clubs and what each scores and concedes per match, ranked against its league. notes flags provisional matches, newly promoted clubs and less certain forecasts. absences lists key players who are out, suspended or doubtful, for information. advance is the chance of going through a two-leg tie, empty otherwise.
Each of those blocks can be switched on or off for your account, and a block that is off is simply left out of the record. The disclaimer comes with every answer.
Keys, versions and limits
Built to be simple to run
A key per account
Requests carry the account's key. Keep it on your server; the card route never exposes it to visitors.
Versioned
The version is part of every address. A change that could break a client gets a new version.
A daily allowance
Each plan has a daily request allowance. The answers tell you when it is used up, and it resets at 00:00 UTC.
Caching built in
Answers carry an ETag, so an unchanged answer costs almost nothing. Probabilities change once a day, so polling every 30 to 60 minutes is enough.
Errors
Errors in plain words
| Code | What it means |
|---|---|
| 401 | The key is missing or wrong. |
| 404 | No upcoming match for that request: it is not a next match yet, or it has been played. |
| 409 | A team name fits several clubs; the answer lists them so you can choose. |
| 429 | The daily allowance is used up. It resets at 00:00 UTC. |
The card
Prefer not to build your own?
The ready-made forecast card goes on a page with one iframe, and uses the same account and allowance.
Get the full integration guide
The guide for your developers (every call, parameter and example) comes with your account, together with a free 14-day pilot if you want one.
Get in touch
Talk to PitchTensor
Leave your email and PitchTensor will contact you with the integration guide and answer your questions. No commitment.
Thanks. PitchTensor will contact you soon.
// your email is used only to contact you about PitchTensor. No spam!