Characters
5,410 witches, wizards, ghosts, goblins and everyone else.
The largest collection — every named character across the novels, both film series and Hogwarts Legacy.
| List | GET /api/characters |
| Single | GET /api/characters/{slug} |
| Records | 5,410 |
Character data is sparse. Only name, slug, id and wiki are always
populated. species is 98% filled, but patronus is 4% and weight is under 1%.
Always guard against null.
Fields
The percentage is how much of the collection has a non-null value for that field.
| Field | Type | Filled |
|---|---|---|
id / slug | string | 100% |
name | string | 100% |
wiki | string | 100% |
species | string | 98% |
gender | string | 87% |
born | string | 57% |
nationality | string | 54% |
image | string | 53% |
jobs | array | 39% |
skin_color | string | 35% |
family_members | array | 34% |
hair_color | string | 33% |
blood_status | string | 26% |
eye_color | string | 25% |
house | string | 20% |
titles | array | 18% |
died | string | 17% |
marital_status | string | 10% |
wands | array | 9% |
romances | array | 7% |
alias_names | array | 5% |
patronus | string | 4% |
boggart | string | 2% |
animagus | string | 1% |
height | string | 1% |
weight | string | <1% |
Curiosities
Three fields exist purely for fun. They are present on every character, and null
for all but one apiece.
| Field | Type | Who has it |
|---|---|---|
remembrall_status | string | Neville Longbottom |
is_free | boolean | Dobby |
order_of_merlin_actual_count | integer | Gilderoy Lockhart |
Examples
Lookups accept a slug (harry-potter), the exact full name
(Harry James Potter), or anything that slugifies to a known slug — so
Hermione Granger resolves even though her stored name is Hermione Jean Granger.

