ForHosting KIT · Developer Utilities

Basketball plus-minus calculator

Plus-minus is the simplest honest number in basketball: take the points a player's team scored while that player was on the court, subtract the points the opponent scored in the same stretch, and you have the player's raw plus-minus.

● BetaFree · in your browser
Use it from WebAPIEmailTelegramApp soon

A positive figure means the team outscored the opposition during those minutes; a negative one means it was outscored. This basketball plus minus calculator does exactly that arithmetic in one deterministic call. You send the two point totals, you get the differential back along with a plain verdict — positive, negative or even. It runs free in your browser on this page and costs $0.002 per request through the API.

What plus-minus actually measures

The box score tells you what a player did: points, rebounds, assists. Plus-minus asks a different question — what happened to the scoreboard while that player was on the floor. If a team scores 58 points and concedes 51 during a guard's twenty-two minutes, that guard's plus-minus is +7, regardless of whether the guard scored two points or thirty. The metric deliberately credits and debits a player for everything that happens in their minutes, including the plays that never touch the box score: setting a screen that frees a teammate, rotating early enough to kill a fast break, or simply spacing the floor so the offense breathes. That breadth is both the strength and the known limitation of the stat. A reserve who shares every shift with a superstar inherits part of that superstar's impact, and a starter trapped in a bad lineup absorbs damage that is not theirs. Coaches therefore read plus-minus as a starting point for questions, not as a final verdict, and this calculator keeps to that spirit by returning the raw differential with no hidden adjustments.

How the calculation works here

The endpoint accepts two fields: the points the player's team scored while the player was on the court, and the points the opponent scored in that same window. Both must be non-negative integers, because a basketball score cannot be negative and a fractional point does not exist. The returned value is the first number minus the second, plus a short verdict classifying the result as positive, negative or even. The inputs come straight from a game log or a tracking feed: most play-by-play data already tags every scoring event with the players on the floor, so the on-court totals for any player are a simple filter and sum. Because the arithmetic is fixed and deterministic, the same two inputs always produce the same output, in the browser widget and through the paid API alike — the free web result is byte-for-byte the result the API charges $0.002 for. If either value is negative or not a whole number, the request is rejected with a clear invalid-input error and is not billed.

Reading and using the number responsibly

A single game's plus-minus is noisy. Blowout garbage time, opponent substitutions and hot shooting streaks all push the number around, so analysts aggregate it over many games before drawing conclusions, or switch to adjusted variants that account for teammates and opponents. Still, the raw differential has real everyday uses. A coach can compare how the score moved with different lineup combinations during a close game. A scout can sanity-check whether a role player's quiet box score hid a strong on-court impact. A broadcaster can pull a quick figure for the post-game segment without opening a spreadsheet. And a developer building a stats dashboard can call this endpoint as a small, testable building block instead of re-implementing the validation each time. The important habit is to pair the differential with context: the minutes played, the pace of the game and the quality of the lineups involved. This tool gives you the number cleanly and quickly; the interpretation stays where it belongs, with the human reading it.

Post-game lineup review

A coaching staff feeds each player's on-court team and opponent points from the play-by-play log and gets every player's plus-minus for the game in seconds.

Stats dashboard widget

A developer adds a plus-minus column to a team analytics dashboard by calling the endpoint per player, reusing its validation instead of writing their own.

Broadcast research

A broadcast researcher computes a quick on-court differential for the halftime segment without wrestling a spreadsheet on live TV deadlines.

What does it cost?

$0.002 per request via the API. It is also free to run in your browser on this page with identical results.

What inputs does it need?

Two numbers: the points your team scored while the player was on the court, and the points the opponent scored in the same span. Both must be non-negative whole numbers.

What happens if I send a negative value?

The request is rejected with an invalid-input error explaining which field is wrong. Rejected requests are not billed.

Is this the same as adjusted plus-minus?

No. This is the raw plus-minus: team points minus opponent points during the player's minutes. Adjusted variants that regress out teammates and opponents are a separate, heavier computation.

Can I pass the values as strings?

Yes. Whole-number strings like "58" are accepted and parsed. Decimals, negative values and non-numeric text are rejected.

Everything on this page is available programmatically. This section is for teams who want to wire it into their own systems; everyone else can just use the tool above.

POSThttps://api.kit.forhosting.com/sports/plus-minus-calculate

Prefer to automate it? One authenticated POST creates the task; the result comes back by webhook or a signed link. The same capability also runs here on the web, by email and from Telegram — and soon from our app too.

curl -X POST https://api.kit.forhosting.com/sports/plus-minus-calculate \
  -H "Authorization: Bearer $KIT_KEY" \
  -H "Content-Type: application/json" \
  -d '{"team_points":58,"opponent_points":51}'
{
  "team_points": 58,
  "opponent_points": 51
}
{
  "task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
  "type": "sports.plus_minus_calculate",
  "status": "queued",
  "_links": {
    "result": "/tasks/tsk_…/result"
  }
}

The API is asynchronous: the call returns a task_id immediately and the result arrives by webhook. Polling is capped at 1 req/s per task.

Per request$0.002

Published price — no tokens, no invented credits. A failed task is never charged.

HTTPCodeMeaning
401unauthorizedMissing or invalid API key.
402insufficient_balanceYour balance doesn't cover the task price.
404unknown_typeThat task type doesn't exist.
429rate_limitedToo many requests. Use the webhook instead of polling.

Read the full KIT documentation →