HoYoLAB APIhoyolab.com ↗
Access HoYoLAB character wikis, player profiles, and community posts for Genshin Impact, Honkai: Star Rail, and Zenless Zone Zero via a single REST API.
What is the HoYoLAB API?
This API exposes 5 endpoints covering HoYoLAB's character wiki, user profiles, and community feed across three games: Genshin Impact, Honkai: Star Rail, and Zenless Zone Zero. get_wiki_character_detail returns structured module data including ascension materials, talent info, and gallery assets. get_community_posts surfaces live post feeds with engagement stats and images, while get_user_profile retrieves any public player profile by numeric UID.
curl -X GET 'https://api.parse.bot/scraper/25bc7081-3f3a-46af-af7f-8569f84d11da/get_user_profile?uid=1015537' \ -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 hoyolab-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.hoyolab_api import HoYoLAB, GameSlug, GameId, FeedType
client = HoYoLAB()
# Browse Genshin Impact characters from the wiki
for character in client.characters.list(game=GameSlug.GENSHIN, page_size=5):
print(character.name, character.icon_url, character.entry_page_id)
# Get a user profile by UID
profile = client.userprofiles.get(uid="1015537")
print(profile.nickname, profile.avatar_url, profile.uid)
print(profile.achieve.like_num, profile.achieve.followed_cnt)
# Browse hot community posts for Honkai: Star Rail
for post in client.communityposts.feed(gids=GameId.HSR, type=FeedType.HOT, limit=10):
print(post.post.subject, post.stat.view_num, post.user.nickname)
# Search community posts by keyword
for result in client.communityposts.search(keyword="build guide", gids=GameId.GENSHIN, limit=5):
print(result.post.subject, result.stat.like_num, result.user.nickname)
Retrieve a public HoYoLAB user profile by UID. Returns user info including nickname, avatar URL, achievement stats (posts, likes, followers), community settings, and game permissions. The profile is publicly visible unless the user has set privacy restrictions.
| Param | Type | Description |
|---|---|---|
| uidrequired | string | HoYoLAB User ID (numeric string, e.g. '1015537'). |
{
"type": "object",
"fields": {
"user_info": "object containing uid, nickname, introduce, avatar_url, bg_url, achieve (stats), community_info, and certification",
"perm_game_list": "array of game permission objects with game_id and is_official",
"follow_relation": "follow status between viewer and target user (null for anonymous)"
},
"sample": {
"data": {
"user_info": {
"uid": "1015537",
"achieve": {
"like_num": "23961844",
"post_num": "4389",
"followed_cnt": "4783786"
},
"nickname": "Genshin Impact Official",
"introduce": "Grand Master of Genshin Impact Forum",
"avatar_url": "https://fastcdn.hoyoverse.com/static-resource-v2/2024/04/10/71a62b9a993534f3db7896fc6f725ff8_4436020059642725994.webp"
},
"perm_game_list": [
{
"game_id": 2,
"is_official": true
}
]
},
"status": "success"
}
}About the HoYoLAB API
Character Wiki Data
get_wiki_character_list accepts a game slug (genshin, hsr, or zzz) plus optional page_num and page_size parameters and returns a paginated array of character entries. Each entry includes entry_page_id, name, icon_url, and filter_values covering element, weapon type, rarity, and region. The total field in the response tells you the full count so you can page through the complete roster.
get_wiki_character_detail takes a character_id (the entry_page_id from the list endpoint) and returns the full wiki page for that character. The modules array contains structured sections for attributes, ascension materials, talent descriptions, and gallery images. The filter_values field on the detail response mirrors the list endpoint, making it straightforward to cross-reference.
Community Posts and Search
get_community_posts accepts a gids integer (2 for Genshin Impact, 6 for Honkai: Star Rail, 8 for Zenless Zone Zero) and a type flag controlling whether you receive Hot (1), New (2), or Official (3) posts. Each post object in the response list contains a post block with title and body metadata, a user block, a stat block with view and like counts, topics, and an image_list. Pagination uses a cursor pattern: pass the last_id value from one response as the input to the next call.
search_posts lets you query posts by keyword within a specific game's forum. Results use a different pagination key — next_offset rather than last_id — so check is_last to know when you've exhausted the result set. get_user_profile accepts any public HoYoLAB uid and returns user_info containing nickname, avatar_url, achievement stats, and community settings.
The HoYoLAB API is a managed, monitored endpoint for hoyolab.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when hoyolab.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 hoyolab.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 character comparison tool using ascension materials and filter values from
get_wiki_character_detail - Aggregate community sentiment around new game patches by searching posts with relevant keywords via
search_posts - Display a player's public profile card including nickname and achievement stats using
get_user_profile - Monitor official announcements for Genshin Impact by polling
get_community_postswithtype=3 - Populate a game database with character rosters, icons, and rarity data from
get_wiki_character_listfor all three supported games - Track trending community discussions in Honkai: Star Rail by fetching Hot posts (
type=1) withgids=6 - Build a talent reference sheet by extracting the
modulesarray fromget_wiki_character_detail
| 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 HoYoLAB have an official developer API?+
How does pagination work across the different endpoints?+
get_wiki_character_list uses numeric page_num and page_size parameters. get_community_posts uses a cursor: take the last_id from the previous response and pass it as the last_id input on the next call. search_posts uses a separate next_offset integer field from the response — not last_id — for its pagination cursor. Check is_last on both post endpoints to detect the final page.Does `get_wiki_character_detail` return skill damage multipliers or stat scaling tables?+
modules array as structured sections reflecting the HoYoWiki page, which includes talent descriptions and ascension material lists. Numeric damage multiplier tables depend on how HoYoWiki structures that content per character and are not guaranteed as a distinct parsed field. You can fork this API on Parse and revise it to extract or reshape specific module sections if the default structure doesn't match your needs.Is in-game data like spiral abyss records or real-time stamina available?+
What does `retcode` indicate in responses?+
retcode integer alongside a message string. A retcode of 0 means the request succeeded. Non-zero values indicate an error condition — for example, an invalid UID passed to get_user_profile or an unrecognized character_id passed to get_wiki_character_detail. Always check retcode before consuming the data object.