Where to Get Final Match Results in JSON for Bet Settlement
A final score is only part of settling a bet. Where to get match results in JSON, why AI agents and scraping fall short, and how to receive ready bet settlement through an API.

Final match results in JSON come from a results API — but a score alone is not enough to settle bets. That is why the most reliable option is not to settle bets from results yourself at all, but to send bet slips to a settlement system. The SportAPI Coupon API accepts a bet on an outcome from the sports line, tracks the match result itself, and sends you the finished outcome in JSON: the bet status, the score it was settled on, the odds, and the payout.
If you only need final scores — for a website, a results feed, or checking predictions — the SportAPI Results API is enough: from $25 a month per sport, +$10 for each extra language. Results appear within 1–20 minutes after the final whistle, and top matches appear immediately.
Below: why a score is not a settlement, the risks of AI agents and scraping, what a settlement result looks like in JSON, and how to receive it automatically.
Why a final score is not enough to settle a bet
A final score answers “who won”. A bet asks different questions: did the total land, how does the handicap work, what happens to a cancelled match. Here is what you need beyond the score:
| Bet type | What you need beyond the final score | Possible outcome |
|---|---|---|
| Match winner, draw, double chance | Regular time only or including overtime | Win or loss |
| Total over or under 2 | The exact line: exactly 2 goals | Stake refunded |
| Asian handicap −0.25 | The stake splits into two halves | Half win or half loss |
| Half or set bets | The score of that period | Win or loss |
| Corners, cards | Match statistics, not goals | Win or loss |
| Match cancelled or postponed | Refund rules | Refund |
| Result corrected after the match | Resettlement | New outcome |
Then there are accumulators: the bets inside them settle at different times, and the slip can lose right after the first losing selection without waiting for the other matches.
If you settle all of this yourself, you need not only results but also settlement rules for every market — and you have to maintain them for every new bet type.
Where people usually get results and why it is risky
An AI agent with web search
More and more teams try to get match results through AI agents: “find the final result for this finished match and return only valid JSON”. We see these queries in our own search statistics — close to a thousand a year.
The problem is that a language model is not a data source. It can:
- confuse teams or competitions with similar names;
- take a score from an unverified news item or prediction;
- return a confident but made-up result;
- miss a result corrected after the match.
When real money is settled, even a rare error is expensive: a wrong payout, a dispute with a player, a manual resettlement.
Scraping results websites
A script that pulls scores from a live score site works until that site’s next update. Add blocking, captchas, and no rights to use the data.
Free APIs
Fine for a prototype, but they often deliver results late, cover only popular leagues, and skip extra stats such as corners, cards, and scores by half.
Manual entry
Works with a dozen matches a day and becomes a separate error-prone job with hundreds.
Option 1: a results API — when you need final scores
If you publish results on a website, in an app, or on a Telegram channel, or you grade predictions, the SportAPI Results API is enough:
- final score, regular time, halves, and sets;
- extra stats: corners, cards, fouls, shots on target;
- grouping by sport, country, and competition;
- results for sports and esports — Counter-Strike, Dota, and other disciplines;
- more than 100,000 events a month and 20 years of history;
- results within 1–20 minutes after the final whistle, top matches immediately.
Pricing starts at $25 a month per sport, +$10 for each extra language. You can check the data with a 2-day trial.
Option 2: turnkey bet settlement — when you need the bet outcome
If you accept bets, run prediction contests with prizes, or calculate winnings, it is better to hand settlement to a system that already knows the rules of every market. That is how the SportAPI bet placement and settlement API works:
- A player picks an outcome in your interface. From the sports line you get that outcome’s pointer (
oc_pointer). - You create a slip — a single or an accumulator — with
POST /api/partner/coupons/place. - The settlement system checks that the event and outcome exist, the outcome is open for betting, and the odds have not changed.
- After the match, the system determines the result of every bet and updates the slip.
- You receive the outcome through a callback to your server or by requesting the API.
You do not collect results, match events between sources, or write rules for handicaps and totals. The full process is described in the settlement lifecycle documentation.
Possible bet outcomes
| Bet status | Meaning | Settlement multiplier |
|---|---|---|
WIN | Full win | Original odds |
LOSE | Full loss | 0 |
RETURN | Stake refunded | 1 |
HALF_WIN | Half win | (odds + 1) / 2 |
HALF_LOSE | Half loss | 0.5 |
PUSH | Refund on a tied result | 1 |
RECALCULATE | Outcome sent for resettlement | — |
The slip gets its final status — won, lost, or refunded — when all of its bets are settled; a losing accumulator closes right after the first losing selection. The full list of statuses and payout rules is in statuses and payouts.
What a settlement result looks like in JSON
When a slip’s settlement state changes, the system sends a callback to your server. Here is a shortened example from the documentation — an accumulator with the first bet settled and the second still waiting for its match:
{
"event": "coupons.settled",
"batchId": "d407e986f3a64d9d36a77bf532322ef8",
"couponCount": 1,
"coupons": [
{
"coupon_code": "000000000272",
"realWin": 0,
"calculate_coefficient": 0,
"status": 0,
"events_data": [
{
"uuid": "912",
"status": 1,
"calculate_coefficient": 2,
"calculate_score": "2:1",
"settlement_reason_code": "REMOTE_WIN",
"settlement_reason": "Win"
},
{
"uuid": "913",
"status": 0,
"calculate_coefficient": null,
"calculate_score": "",
"settlement_reason_code": null,
"settlement_reason": null
}
]
}
]
}
What matters here:
calculate_score: "2:1"is the score the bet was settled on. This is the final result in JSON, already tied to a specific bet.status: 1on the first bet means a win;status: 0on the second means it is not settled yet.status: 0andrealWin: 0on the slip mean the accumulator is not finished and there is no payout yet.settlement_reason_codeexplains why the bet was settled this way — useful for support and player disputes.
When the second bet settles, a new callback arrives with the slip’s final status and payout.
Callback or API requests
You can receive results in two ways — and it is best to use both:
- Callback. The system sends a signed HTTP request every time the settlement changes. The signature is verified with HMAC, so a forged request will not pass.
- API requests. Your server requests a slip by code, a list of slips for a period, or recently settled slips. This is the backup channel if your server was down and missed a callback.
Signature checks and redelivery rules are described in the settlement callbacks documentation.
Mistakes in do-it-yourself settlement
- Settling on the final score alone. Handicaps, whole-number totals, and period bets need more data and separate rules.
- No resettlement path. Results are sometimes corrected after the match — your system must be able to reverse or top up a payout.
- Waiting for every accumulator match. A losing accumulator can close right after its first loss.
- Storing the slip code as a number. The code can start with zeros — store it as a string.
- Trusting a single delivery channel. If a callback is missed and there are no backup requests, the slip gets stuck.
FAQ
Where can I get match results in JSON for free?
Free sources are fine for a prototype but are usually limited in leagues, delay, and stats. Settling real-money bets needs a source with a contract and support. A 2-day SportAPI trial lets you check the data before paying.
Can I use ChatGPT or another AI agent to get match results?
For notes and drafts — yes; for settling bets — no. A language model can mix up matches or return an unverified score, and a settlement error means a wrong payout.
How fast do results appear after a match ends?
In the SportAPI Results API — within 1–20 minutes after the final whistle, with top matches appearing immediately. The delay depends on the official sources of each competition.
Do I have to settle handicaps and totals myself?
No, if you use SportAPI bet settlement. The system determines wins, half wins, refunds, and other statuses and sends you the finished slip outcome.
What happens if a result is corrected after settlement?
The slip goes back for resettlement, the bet gets a resettlement status, and after the new settlement you receive the new outcome and a new callback.
What to choose
- You need final scores for a website, channel, or prediction grading — the SportAPI Results API, from $25 a month per sport.
- You need to settle bets, slips, and payouts — turnkey settlement through the Coupon API: results, market rules, and resettlements are already inside.
- An AI agent or a scraper fetches your results today — move settlement to a contracted source before an error turns into real payouts.
Message the SportAPI manager on Telegram with the sports and bet types you need — you will get a 2-day trial and can test bet settlement on real matches.