Handball API pricing
Every plan calls the same endpoints and gets the same fields. Paid plans reach further back, open the player and goalkeeper lines, and call more often. Prices in US dollars, cancel any time.
- 50 calls a day, 10 a minute
- Yesterday and today
- Results, fixtures and one-match details
- Find leagues, clubs, players, referees and halls
- MCP server for your assistant
- 5,000 calls a day, 60 a minute
- This season and last
- Player lines, goalkeepers and discipline
- Tables, form, runs, leaders and season figures
- Referee records and home advantage
- 25,000 calls a day, 120 a minute
- Every season, back to 2004
- Every endpoint and every field
- Careers and records across every season
- MCP server, same limits
The archive runs from the first season we hold to today. The free key sees the last two days; Results the current season and the last; Archive all of it.
The same list the API reference shows. Ids are our own and stay the same across seasons; times are UTC with the league's own time zone alongside.
| Endpoint | Free key | Results | Archive |
|---|---|---|---|
GET /v1/results/yesterdayYesterday's results | |||
GET /v1/results/latestLatest results | |||
GET /v1/resultsResults on a day | |||
GET /v1/matches/{id}One match | |||
GET /v1/matches/{id}/playersPlayer lines of a match | |||
GET /v1/fixturesFixtures ahead | |||
GET /v1/competitions/{id}/tableLeague table | |||
GET /v1/competitions/{id}/scorersTop scorers | |||
GET /v1/teams/{id}/head-to-headHead to head | |||
GET /v1/meta/coverageCoverage | |||
GET /v1/meta/completenessCompleteness | |||
GET /v1/usageYour usage | |||
GET /v1/results/todayToday's results | |||
GET /v1/results/rangeResults between two days | |||
GET /v1/fixtures/todayToday's fixtures | |||
GET /v1/fixtures/tomorrowTomorrow's fixtures | |||
GET /v1/matchesFind matches | |||
GET /v1/matches/{id}/officialsOfficials of a match | |||
GET /v1/competitionsCompetitions | |||
GET /v1/competitions/{id}One competition | |||
GET /v1/competitions/{id}/seasonsSeasons of a competition | |||
GET /v1/competitions/{id}/resultsResults of a competition | |||
GET /v1/competitions/{id}/fixturesFixtures of a competition | |||
GET /v1/competitions/{id}/teamsTeams of a competition | |||
GET /v1/competitions/{id}/goalkeepersGoalkeepers of a season | |||
GET /v1/competitions/{id}/seven-metres7m takers of a season | |||
GET /v1/competitions/{id}/disciplineDiscipline of a season | |||
GET /v1/competitions/{id}/assistsAssists of a season | |||
GET /v1/competitions/{id}/home-awayHome and away tables | |||
GET /v1/competitions/{id}/formForm table | |||
GET /v1/competitions/{id}/statsSeason figures | |||
GET /v1/competitions/{id}/recordsSeason records | |||
GET /v1/competitions/{id}/attendanceCrowds of a season | |||
GET /v1/teamsFind teams | |||
GET /v1/teams/{id}One team | |||
GET /v1/teams/{id}/resultsResults of a team | |||
GET /v1/teams/{id}/fixturesFixtures of a team | |||
GET /v1/teams/{id}/squadSquad of a season | |||
GET /v1/teams/{id}/statsSeason figures of a team | |||
GET /v1/teams/{id}/formForm of a team | |||
GET /v1/teams/{id}/scorersScorers of a team | |||
GET /v1/teams/{id}/seasonsSeasons of a team | |||
GET /v1/teams/{id}/streaksRuns of a team | |||
GET /v1/players/leadersLeaders | |||
GET /v1/playersFind players | |||
GET /v1/players/{id}One player | |||
GET /v1/players/{id}/matchesMatches of a player | |||
GET /v1/players/{id}/seasonsSeasons of a player | |||
GET /v1/players/{id}/careerCareer of a player | |||
GET /v1/goalkeepers/leadersGoalkeeper leaders | |||
GET /v1/refereesFind referees | |||
GET /v1/referees/{id}One referee | |||
GET /v1/referees/{id}/matchesMatches of a referee | |||
GET /v1/referees/{id}/statsRecord of a referee | |||
GET /v1/venuesFind venues | |||
GET /v1/venues/{id}/matchesMatches at a venue | |||
GET /v1/countriesCountries | |||
GET /v1/countries/{code}/competitionsCompetitions of a country | |||
GET /v1/meta/seasonsSeasons held | |||
GET /v1/updatesChanged since | |||
GET /v1/stats/home-advantageHome advantage | |||
GET /v1/stats/half-time-full-timeHalf-time and full-time |
Every reply tells you where you stand, so nothing comes as a surprise.
Calls each UTC day on Results. The allowance resets at 00:00 UTC. Past it, calls get a 429 with the code quota_exceeded until the reset.
Requests each minute on Results. Past it, a 429 with the code rate_limited and a Retry-After header saying how many seconds to wait.
The same headers on every call, so an app can slow itself down before it is refused.
Paid through Stripe. Your key changes plan the moment the payment goes through.
When you choose a plan, through a secure Stripe checkout, then on the same day each month or year. Your key moves to the new plan as soon as the payment goes through.
Yes, from your account, under Billing, at any time. The plan runs to the end of the period you paid for, then your key goes back to the free key. Nothing more is charged.
Yearly costs ten months, so two are free. Moving from monthly to yearly takes effect at your next renewal; nothing is charged on the day you switch.
Through the form on the refunds page. Every request is read and answered, on your ticket and by email.
The charge shows as DEVELOPERDATA.NET. Billing questions go to developerdata.net/support.
Yes. A tool call through the MCP server counts as one call, the same as a REST request. The usage endpoint never counts.