BYTETOOLS

Sumo API

Free sumo API with no key: rikishi profiles with ranks, stables, birthplaces and physical stats, plus tournament and bout results. Tested example included.

No API key requiredCORS enabledHTTPSFree tier

Endpoint tested and returned HTTP 200 on 21 Aug 2026

What is the Sumo API?

Sumo API is a free, key-free JSON API for professional sumo. The rikishi endpoint returns wrestler profiles with their shikona in both English and Japanese, current rank, stable, birthplace, height, weight and debut tournament.

Sumo results have traditionally been locked in the Japan Sumo Association's own pages and in hobbyist databases with no machine-readable output at all. This API normalises the lot into clean JSON — wrestlers, ranks, banzuke, tournament results and individual bouts — with no key and no registration, which is why the small community of sumo-analytics projects has largely converged on it.

Two conventions are worth learning before you build anything. `debut` is a tournament code in `YYYYMM` form rather than a date, because sumo counts time in six annual honbasho rather than in months. And `currentRank` is a formatted string like `Maegashira 10 East`, encoding division, numeric position and side in one field — you will need to parse it yourself if you want to sort by rank, since there is no separate numeric ordering. The response is also served with a `text/plain` content type despite being valid JSON.

Quick facts

Base URL
https://www.sumo-api.com/api
Authentication
No API key and no account.
Rate limit
No published limit. Data changes only around tournament dates, so cache generously.
Pricing
Free.
CORS
Enabled — callable directly from browser JavaScript
Official docs
Read the docs

How to use the Sumo API

Every request below was executed against the live API on 21 Aug 2026, and the response shown is the real body it returned — not an illustration.

1. List professional sumo wrestlers

GET https://www.sumo-api.com/api/rikishis?limit=2

curl
curl 'https://www.sumo-api.com/api/rikishis?limit=2'
JavaScript (fetch)
const res = await fetch("https://www.sumo-api.com/api/rikishis?limit=2");
if (!res.ok) throw new Error(`Request failed: ${res.status}`);
const data = await res.json();
console.log(data);
Python (requests)
import requests

res = requests.get("https://www.sumo-api.com/api/rikishis?limit=2", timeout=20)
res.raise_for_status()
print(res.json())
Response — HTTP 200
{
  "limit": 2,
  "skip": 0,
  "total": 599,
  "records": [
    {
      "id": 2,
      "sumodbId": 12291,
      "nskId": 3682,
      "shikonaEn": "Asanoyama",
      "shikonaJp": "朝乃山 広暉",
      "currentRank": "Maegashira 10 East",
      "heya": "Takasago",
      "birthDate": "1994-03-01T00:00:00Z",
      "shusshin": "Toyama-ken, Toyama-shi",
      "height": 188,
      "weight": 170,
      "debut": "201603",
      "updatedAt": "2026-07-10T02:36:02.628Z"
    },
    {
      "id": 3,
      "sumodbId": 12796,
      "nskId": 4187,
      "shikonaEn": "Hakunofuji",
      "shikonaJp": "伯乃富士 哲也",
      "currentRank": "Maegashira 3 West",
      "heya": "Isegahama",
      "birthDate": "2003-08-22T00:00:00Z",
      "shusshin": "Tottori-ken, Kurayoshi-shi",
      "height": 181,
      "weight": 161,
      "debut": "202301",
      "updatedAt": "2026-07-10T02:36:02.628Z"
    }
  ]
}

Parameters

ParameterTypeRequiredDescription
limitqueryOptionalHow many records to return per page. 2
skipqueryOptionalHow many records to skip, for paging. 0
shikonaEnqueryOptionalFilter by English ring name. Asanoyama
heyaqueryOptionalFilter by stable. Takasago
intaiqueryOptionalInclude retired wrestlers, who are excluded by default. true
/basho/{id}pathOptionalTournament endpoint, keyed by the same `YYYYMM` code convention. 202401

Response fields

recordsarray
The wrestler records for this page.
records[].shikonaEn / shikonaJpstring
Ring name in romanised and Japanese form. The Japanese version includes the given name after an ideographic space.
records[].currentRankstring
Formatted rank string such as `Maegashira 10 East`, combining division, position and side. Parse it if you need to sort.
records[].heyastring
Stable the wrestler belongs to.
records[].shusshinstring
Birthplace, given as prefecture and city in romanised Japanese.
records[].height / weightinteger
Height in centimetres and weight in kilograms.
records[].birthDatestring
ISO 8601 timestamp.
records[].debutstring
Debut tournament as a `YYYYMM` code, not a calendar date.
records[].id / sumodbId / nskIdinteger
Identifier in this API plus cross-reference ids for the SumoDB database and the Japan Sumo Association.
total / limit / skipinteger
Paging envelope. `total` is the full count matching your filters.

What you can build with the Sumo API

  • Build a sumo tournament tracker or results dashboard
  • Analyse how stable, height and weight relate to career records
  • Cross-reference wrestlers into SumoDB using the provided ids
  • Generate banzuke visualisations for a given tournament

Common errors and how to fix them

Client refuses to parse the body

The content type is `text/plain` even though the payload is JSON.

Fix: Parse it as JSON explicitly rather than relying on the declared type.

Ranks sort alphabetically

`currentRank` is a formatted string, not a numeric field.

Fix: Parse division, number and side out of the string and sort on those. There is no pre-sorted rank value.

Wrestler missing

Retired wrestlers are excluded unless you ask for them.

Fix: Add `intai=true` to include retirements.

Date parsing fails on debut

It is a `YYYYMM` tournament code, not an ISO date.

Fix: Treat it as a tournament identifier. The same convention keys the `/basho/` endpoint.

Sumo API — frequently asked questions

Is the Sumo API free?

Yes, free with no key and no account. It is a community project serving professional sumo data as JSON.

What does a rank like `Maegashira 10 East` mean?

Division, numeric position within it, and which side of the banzuke the wrestler sits on. Higher divisions and lower numbers mean higher rank, and East outranks West at the same number.

Why is debut formatted as 201603?

Sumo runs six tournaments a year and counts time in them rather than in months. `201603` is the March 2016 tournament, and the same code identifies tournaments elsewhere in the API.

Can I get retired wrestlers?

Yes, by passing `intai=true`. They are excluded by default so the standard listing reflects the active roster.

Tools that pair with this API

Alternatives to Sumo API

If Sumo API does not fit, these sports & fitness apis cover similar ground. Every one was called before publishing, and each links to its own reference page with a working curl command and the response it returned.

APIWhat it doesAuthCORSLast verified
TheSportsDBFree sports database API with a public test key: teams, players, leagues, fixtures and results across football, basketball, cricket and more, with images. Tested.No keyYes19 Aug 2026
NHL Web APIFree NHL API with no key: live scores, standings, team rosters, player statistics and schedules from the official NHL data service. Tested curl example.No keyNo19 Aug 2026
OpenLigaDBFree OpenLigaDB API with no key: Bundesliga fixtures, results, tables and goalscorers, plus other leagues. Community-maintained open data. Tested example.No keyNo19 Aug 2026
wger Workout ManagerFree wger fitness API with no key for public data: exercise database with muscles worked, equipment, categories, images and nutrition information. Tested.No keyYes19 Aug 2026
TourneyRadarFree chess tournament API with no key: upcoming events aggregated from 140+ national federations, plus a country index and keyword search. Tested example included.No keyYes21 Aug 2026
DiscGolfAPIFree disc golf course API with no key: mapped courses by country with coordinates, region codes, operator details and explicit licence metadata. Tested example included.No keyYes21 Aug 2026
All Sports & Fitness APIs

Sumo API is an independent third-party service and is not affiliated with ByteTools or ByteVancer. Details on this page were verified on 21 Aug 2026; always check the official documentation before relying on this API in production, as terms and limits can change.