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 2026-08-21

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 2026-08-21, 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

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