BoxRec APIboxrec.com ↗
Retrieve boxer stats, career records, KO percentages, and fight histories from BoxRec. Access trending fighters and detailed bout results via 2 endpoints.
What is the BoxRec API?
The BoxRec API provides access to professional boxing data through 2 endpoints covering individual fighter profiles and site-wide trending fighters. The get_boxer_stats endpoint returns a fighter's full career summary — division, total bouts, rounds, KO percentage, debut date, and active titles — alongside a chronological list of recent fights with opponent names, results, methods, and venue details, all keyed by BoxRec's numeric fighter ID.
curl -X GET 'https://api.parse.bot/scraper/40f10f57-6691-4b9a-80e2-859b4cd5a6a2/get_boxer_stats?boxer_id=659772' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace boxrec-com-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""BoxRec SDK — discover trending boxers and drill into their profiles."""
from parse_apis.boxrec_scraper_api import BoxRec, BoxerNotFound
client = BoxRec()
# List currently trending fighters on BoxRec (capped to 5 items).
for boxer in client.boxers.trending(limit=5):
print(boxer.name, boxer.id)
# Drill into one trending fighter's full profile.
featured = client.boxers.trending(limit=1).first()
if featured:
detail = client.boxers.get(boxer_id=featured.id)
print(detail.name, detail.division, detail.bouts, detail.kos, detail.nationality)
# Fetch a specific boxer by known ID and handle not-found gracefully.
try:
usyk = client.boxers.get(boxer_id="659772")
print(usyk.name, usyk.career, usyk.stance, usyk.titles)
except BoxerNotFound as exc:
print(f"Boxer not found: {exc}")
print("exercised: boxers.trending / boxers.get / BoxerNotFound error handling")
Get detailed statistics for a professional boxer by their BoxRec ID. Returns profile data including division, total bouts, rounds, KO percentage, career span, debut date, titles held, nationality, stance, height, and other biographical details. Fight history (recent_fights) requires site authentication and may be empty for unauthenticated access.
| Param | Type | Description |
|---|---|---|
| boxer_idrequired | string | The numeric BoxRec ID of the boxer (e.g. '659772' for Oleksandr Usyk, '628407' for Naoya Inoue). |
{
"type": "object",
"fields": {
"id": "string - BoxRec numeric ID",
"kos": "string - KO percentage",
"name": "string - fighter full name",
"bouts": "string - total number of professional bouts",
"debut": "string - debut date (YYYY-MM-DD)",
"career": "string - career span years",
"height": "string - height measurement",
"rounds": "string - total rounds fought",
"stance": "string - fighting stance",
"titles": "array of title strings held",
"division": "string - weight division",
"nationality": "string - country",
"recent_fights": "array of fight objects (may be empty without authentication)"
},
"sample": {
"data": {
"id": "659772",
"age": "39",
"kos": "64%",
"sex": "male",
"name": "Oleksandr Usyk",
"bouts": "25",
"debut": "2013-11-09",
"career": "2013-2026",
"height": "6′ 3″ / 191cm",
"rounds": "217",
"stance": "southpaw",
"titles": [
"IBF World Heavy",
"IBO World Heavy",
"WBC World Heavy"
],
"company": "Usyk17 Promotion",
"ratings": "#1 / 1,647#1 / 40",
"division": "Heavy",
"residence": "Oxnard, California, USA",
"birth_name": "Олександр Олександрович Усик",
"birth_place": "Simferopol, Crimea, Ukraine",
"nationality": "Ukraine",
"manager/agent": "Egis Klimas",
"recent_fights": []
},
"status": "success"
}
}About the BoxRec API
Fighter Profiles
The get_boxer_stats endpoint accepts a single required parameter, boxer_id, which is the numeric ID BoxRec assigns each fighter (for example, 659772 for Oleksandr Usyk or 628407 for Naoya Inoue). The response returns a fighter_info object covering the fighter's name, weight division, total bouts, total rounds, KO percentage, career span, debut date, and any titles currently held. The recent_fights array pairs with this object, providing a dated log of bouts — each entry includes the opponent name, result, method of victory or defeat, and venue.
Trending Fighters
The get_trending_fighters endpoint takes no parameters and returns up to 30 boxers currently featured as trending on BoxRec. Each entry in the trending_fighters array contains the fighter's numeric BoxRec id and full name. This endpoint is useful for surfacing which fighters are drawing current attention, and the returned IDs can feed directly into get_boxer_stats calls to pull full profiles for any of those fighters.
Coverage Notes
Data covers professional boxing records as maintained on BoxRec. The endpoints expose summary career statistics and recent fight history rather than round-by-round scoring or historical ranking timelines. The boxer_id must be known in advance; there is no search-by-name endpoint in the current API surface.
The BoxRec API is a managed, monitored endpoint for boxrec.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when boxrec.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official boxrec.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Pull a fighter's KO percentage and total bouts to build comparison tables for upcoming matchups
- Track career debut dates and division histories for historical analysis of professional boxers
- Fetch trending fighters daily to populate a boxing news or fantasy sports dashboard
- Use recent fight results and methods to identify fighters on win streaks or coming off losses
- Map title holdings from
fighter_info.titlesto produce division-level championship trackers - Seed a fighter database by iterating trending IDs through
get_boxer_statsfor bulk profile ingestion - Correlate venue data from
recent_fightswith fight outcomes for location-based performance analysis
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does BoxRec have an official developer API?+
What does `get_boxer_stats` return beyond a win-loss record?+
recent_fights array with per-bout details including opponent, result, method (e.g. KO, TKO, UD), and venue.Can I search for a boxer by name instead of by BoxRec ID?+
boxer_id for get_boxer_stats. The get_trending_fighters endpoint returns IDs paired with names, which can serve as a starting point. You can fork this API on Parse and revise it to add a name-based search endpoint.