hyperskill.org APIhyperskill.org ↗
Access Hyperskill.org learning data via API: browse tracks, projects, stages, topics, and providers. Filter by language, category, or track ID.
curl -X GET 'https://api.parse.bot/scraper/13ef78bb-f385-4a72-a394-aac986918253/list_tracks?page=1&page_size=20' \ -H 'X-API-Key: $PARSE_API_KEY'
List all tracks (courses) on Hyperskill. Returns paginated results. Requesting a page beyond available results returns an upstream error (404).
| Param | Type | Description |
|---|---|---|
| page | integer | Page number. |
| category | integer | Filter by track category ID (e.g. 1). |
| page_size | integer | Number of tracks per page. |
{
"type": "object",
"fields": {
"meta": "object with pagination info (page, has_next, has_previous)",
"tracks": "array of track objects"
},
"sample": {
"data": {
"meta": {
"page": 1,
"has_next": true,
"has_previous": false
},
"tracks": [
{
"id": 2,
"title": "Python Developer",
"is_public": true,
"description": "Acquire key skills to build a strong foundation for a career in tech.",
"provider_id": 2,
"topics_count": 274,
"members_count": 219766
}
]
},
"status": "success"
}
}About the hyperskill.org API
The Hyperskill.org API exposes 10 endpoints covering the platform's full curriculum catalog — tracks, projects, project stages, topics, and content providers. Use list_tracks to page through every available learning track with optional category filtering, or call get_topic to retrieve detailed metadata for any individual topic by ID. All list endpoints return paginated results with has_next and has_previous fields for cursor control.
Tracks and Projects
The list_tracks endpoint returns paginated track objects alongside a meta object containing page, has_next, and has_previous. You can narrow results with the category parameter (integer category ID) or adjust page size with page_size. For a single track, get_track accepts an id and returns the full track object inside a tracks array. list_projects works similarly and adds a language filter (e.g. python, java, kotlin) so you can pull only projects for a specific language stack.
Stages and Topics
list_project_stages requires a project_id and returns the ordered stages for that project — useful for mapping out the progression inside any given project. Note that requesting a page number beyond the available stage count returns a 404 rather than an empty list, so you should stop paginating once has_next is false. list_topics accepts an optional track_id to scope topics to a single track, letting you reconstruct the full topic syllabus for any course.
Providers
The list_providers and get_provider endpoints expose the content providers behind Hyperskill's material. Like the other list endpoints, list_providers returns a meta pagination object and a providers array. Fetching beyond the last page returns a 404, not an empty result — handle this in your pagination loop accordingly. Provider detail is available via get_provider with a required integer id.
- Build a curriculum explorer that maps every topic in a track using
list_topicsfiltered bytrack_id. - Aggregate project metadata by programming language with
list_projectsand thelanguagefilter. - Reconstruct the stage-by-stage structure of any project using
list_project_stageswith aproject_id. - Sync Hyperskill track and project data into an internal learning management or recommendation system.
- Compare content provider offerings by iterating
list_providersand pulling detail withget_provider. - Index Hyperskill's full topic catalog for a searchable developer learning resource directory.
- Monitor curriculum changes over time by periodically diffing
list_trackspaginated responses.
| 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 | 250 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 Hyperskill have an official public developer API?+
What does `list_project_stages` return, and how do I paginate it?+
list_project_stages requires a project_id and returns a stages array alongside a meta object with page, has_next, and has_previous. Requesting a page beyond the last available stage returns a 404 error rather than an empty list, so you should stop pagination as soon as has_next is false rather than relying on an empty response as the termination signal.Can I filter topics by difficulty level or completion status?+
list_topics endpoint supports filtering by track_id and controls pagination via page and page_size. Difficulty level and user completion status are not exposed as filter parameters or response fields. You can fork this API on Parse and revise it to add the missing endpoint if that data is available from the source.Does the API expose user profiles, enrollments, or progress data?+
How does pagination work across list endpoints, and what happens at the boundary?+
list_tracks, list_projects, list_project_stages, list_topics, list_providers) return a meta object with page, has_next, and has_previous fields. Requesting any page number beyond the last available page returns a 404 error from upstream — the API does not return an empty array. Build your pagination loop to stop when has_next is false to avoid triggering this error.