BUZZERBEATER / DEVELOPERS

Build for the game.

Community tools, training planners, league statistics. Everything you need to connect your idea to BuzzerBeater.

Quotas, rate limits and errors

Limits

LimitDevelopment tier¹Approved applicationCounted per
Burst30 calls / minute60 calls / minutetoken
Daily quota1,500 calls5,000 callsmanager × application
Supporter managersdaily quota × 2daily quota × 2
Other clubs looked into400 / day400 / daymanager, across every tool
Other players looked up1,500 / day1,500 / daymanager, across every tool
Listed players' skills revealed20 / day, 150 / 30 dayssamemanager
Listed players' skills revealed300 / day, 2,000 / 30 dayssameapplication, across all its users
Transfer list search depth150 players (pages of up to 30)samesearch
Token endpoint20 requests / minutesameaddress

¹ Personal tokens, and applications not approved yet.

Days are UTC days: every counter resets at 00:00 UTC. Staff may give an approved application a different daily quota when it needs one — ask in its review.

Each data response tells you where you stand:

X-RateLimit-Limit: 10000
X-RateLimit-Remaining: 9731
X-RateLimit-Reset: 1790640000

X-RateLimit-Reset is the Unix time the daily quota resets. When the burst limit is hit the answer is 429 with a Retry-After header in seconds.

Errors

Every error of a data call is JSON with a stable code to branch on and a description for humans:

{ "error": { "code": "PublicApiQuotaExceeded", "description": "The daily call quota for this manager and application is used up. It resets at midnight UTC." } }
StatusWhenTypical codes
400The request is malformed or out of rangeInvalidData, PublicApiPageInvalid, PublicApiSearchTooDeep, …
401No token, or it is unknown, expired or revokedInvalidToken
403The token lacks the scope, or the manager may not see thisInsufficientScope, PublicApiScopeMissing, MissingPermission, SupporterRequired
404The club, player, match … does not existTeamIdInvalid, PlayerIdInvalid, NotFound, …
429A limit was reachedRateLimited (burst, see Retry-After), PublicApiQuotaExceeded, PublicApiBreadthExceeded, PublicApiListedSkillsExceeded
503A short conflict inside the game; try again shortlyRetry
500Our faultInternalServerError

Branch on the status first and on code when you need detail. New codes may appear within v1; treat an unknown code like the others of its status.

Retrying

  • 401: refresh the access token once; if that fails, sign the manager in again.
  • 429 RateLimited and 503: wait (Retry-After when given, otherwise a few seconds with backoff) and retry.
  • 429 PublicApiQuotaExceeded / PublicApiBreadthExceeded: stop until X-RateLimit-Reset. Retrying earlier only fails.
  • 429 PublicApiListedSkillsExceeded: the listed-skill caps count over a day and over 30 days; show the auction without skills and let the manager open the player in the game.
  • Never retry 400, 403 or 404 unchanged.

Staying well within the quota

  • Cache: seasons, countries and leagues change a few times a season; a finished match never changes; a roster changes at most a few times a day.
  • Ask for the whole thing once rather than piece by piece: a roster includes its players' public figures, so you rarely need one call per player.
  • Schedule background refreshes around the game's own updates (training, matches) rather than polling.