SportAPI
Betting platforms

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.

Bet slips stamped won, half won, and refunded after the final whistle

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 typeWhat you need beyond the final scorePossible outcome
Match winner, draw, double chanceRegular time only or including overtimeWin or loss
Total over or under 2The exact line: exactly 2 goalsStake refunded
Asian handicap −0.25The stake splits into two halvesHalf win or half loss
Half or set betsThe score of that periodWin or loss
Corners, cardsMatch statistics, not goalsWin or loss
Match cancelled or postponedRefund rulesRefund
Result corrected after the matchResettlementNew 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

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:

  1. A player picks an outcome in your interface. From the sports line you get that outcome’s pointer (oc_pointer).
  2. You create a slip — a single or an accumulator — with POST /api/partner/coupons/place.
  3. The settlement system checks that the event and outcome exist, the outcome is open for betting, and the odds have not changed.
  4. After the match, the system determines the result of every bet and updates the slip.
  5. 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 statusMeaningSettlement multiplier
WINFull winOriginal odds
LOSEFull loss0
RETURNStake refunded1
HALF_WINHalf win(odds + 1) / 2
HALF_LOSEHalf loss0.5
PUSHRefund on a tied result1
RECALCULATEOutcome 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: 1 on the first bet means a win; status: 0 on the second means it is not settled yet.
  • status: 0 and realWin: 0 on the slip mean the accumulator is not finished and there is no payout yet.
  • settlement_reason_code explains 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.

← All articles