Kanshudo APIkanshudo.com ↗
Access kanji details, JLPT collections, stroke order SVGs, word lookups, and component search from Kanshudo via 8 structured endpoints.
What is the Kanshudo API?
The Kanshudo API exposes 8 endpoints covering kanji lookups, JLPT-level collections, word details, and stroke order data from Kanshudo. The get_kanji_detail endpoint returns readings (on and kun), English meanings, stroke count, radical number, frequency rank, JLPT level, and an SVG stroke order URL for any single kanji. Companion endpoints handle component-based search, the top-100 frequency list, and a full index of curated collections.
No input parameters required.
curl -X GET 'https://api.parse.bot/scraper/1609b110-1059-49d5-b95d-ffd2a3c18407/get_100_most_frequent_kanji_list' \ -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 kanshudo-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.
from parse_apis.kanshudo_kanji_api import Kanshudo, JlptLevel
kanshudo = Kanshudo()
# Search for kanji related to "water"
for result in kanshudo.kanjis.search(query="water"):
print(result.kanji, result.meaning)
# Get detailed info for a specific kanji
detail = kanshudo.kanjis.get(kanji="水")
print(detail.meaning, detail.stroke_order_svg)
print(detail.readings.on, detail.readings.kun)
for ex in detail.examples:
print(ex.word, ex.reading, ex.meaning)
# Get stroke order for that kanji (instance method)
stroke = detail.stroke_order()
print(stroke.svg_url, stroke.animation_url)
# List JLPT N5 kanji using enum
for char in kanshudo.kanjis.list_by_jlpt(level=JlptLevel.N5):
print(char)
# Get word detail
word = kanshudo.words.get(word="外国人")
print(word.reading, word.meaning)
for comp in word.kanji_components:
print(comp)
# Browse available collections
for coll in kanshudo.collections.list():
print(coll.title, coll.url)
Retrieves the 100 most frequently used kanji characters from Kanshudo's frequency ranking. Returns an ordered array of single kanji character strings. No parameters required.
No input parameters required.
{
"type": "object",
"fields": {
"kanji": "array of single kanji character strings, ordered by frequency"
},
"sample": {
"data": {
"kanji": [
"人",
"一",
"日",
"大",
"年",
"出",
"本",
"中",
"子",
"見"
]
},
"status": "success"
}
}About the Kanshudo API
Kanji Detail and Stroke Order
The get_kanji_detail endpoint accepts a single kanji character and returns a stats object containing strokes, radical_number, frequency, and jlpt level, alongside readings split into on and kun arrays, an English meaning string, a stroke_order_svg URL, and an examples array of words each with word, reading, and meaning fields. If you only need stroke order assets, get_kanji_stroke_order returns an svg_url pointing to the S3-hosted SVG and an animation_url for the Kanshudo animation page — no additional network lookup required beyond the kanji's Unicode code point.
Search and Component Lookup
search_kanji takes a query parameter (English keyword or Japanese text such as "water" or "水") and returns a mixed results array where kanji entries carry kanji, readings, and meaning fields, while word entries additionally include a type field. get_kanji_by_component accepts a radical or component character and returns an array of kanji strings that contain it, useful for building component-based study tools or filtering kanji by shared structure.
JLPT Collections and Word Details
get_jlpt_kanji_collection accepts a level parameter (n1 through n5) and returns the full list of kanji characters assigned to that JLPT tier. get_word_detail takes a Japanese word in kanji or kana and returns its hiragana reading, English meaning, and a kanji_components array of individual characters composing the word — useful for drilling down from vocabulary into constituent kanji.
Collections Index and Frequency List
get_kanji_collections_index returns every available kanji and word collection on Kanshudo as an array of title and url pairs, covering JLPT, textbook, and thematic groupings. get_100_most_frequent_kanji_list returns an ordered array of the 100 most common kanji by Kanshudo's frequency ranking, with no input parameters required.
The Kanshudo API is a managed, monitored endpoint for kanshudo.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when kanshudo.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 kanshudo.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?+
- Build a JLPT study app that pulls kanji lists for each level using
get_jlpt_kanji_collectionand displays readings and meanings. - Generate kanji flashcards with stroke order diagrams using the
stroke_order_svgURL returned byget_kanji_detail. - Create a radical/component explorer that takes user-selected radicals and returns containing kanji via
get_kanji_by_component. - Display vocabulary breakdowns showing individual kanji components for any Japanese word using
get_word_detail'skanji_componentsarray. - Seed a frequency-ranked kanji curriculum using the ordered output from
get_100_most_frequent_kanji_list. - Index all available Kanshudo thematic and textbook collections for a lesson-planning tool using
get_kanji_collections_index. - Implement a kanji/word search bar that accepts both English and Japanese input and renders mixed results using
search_kanji.
| 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 Kanshudo offer an official developer API?+
What does `get_kanji_detail` return beyond the basic reading and meaning?+
stats object with strokes, radical_number, frequency, and jlpt; separate on and kun reading arrays; an examples array of example words each with word, reading, and meaning; and a stroke_order_svg URL. All fields are returned in one call for a single kanji character.Does the API return kanji etymology, mnemonics, or story-based memory aids?+
Can I retrieve user progress data, saved collections, or account-specific content?+
Does `search_kanji` support pagination or filtering by JLPT level?+
query string and returns a flat results array. Pagination and JLPT-level filtering within search results are not currently supported. For level-specific kanji, use get_jlpt_kanji_collection with the desired level parameter instead. You can fork the API on Parse and revise search_kanji to add filtering behavior.