Discover/Hyperskill API
live

Hyperskill APIhyperskill.org

Access Hyperskill.org learning data via API: browse tracks, projects, stages, topics, and providers. Filter by language, category, or track ID.

Endpoint health
verified 3d ago
list_providers
list_project_stages
get_provider
get_topic
list_tracks
10/10 passing latest checkself-healing
Endpoints
10
Updated
26d ago

What is the Hyperskill 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.

Try it
Page number.
Filter by track category ID (e.g. 1).
Number of tracks per page.
api.parse.bot/scraper/13ef78bb-f385-4a72-a394-aac986918253/<endpoint>
Ready to send
Fill in the parameters and hit sign in to send to see live response data here.
Call it over HTTPgrab a free API key at signup
curl -X GET 'https://api.parse.bot/scraper/13ef78bb-f385-4a72-a394-aac986918253/list_tracks?page=1&category=1&page_size=3' \
  -H 'X-API-Key: $PARSE_API_KEY'
Python SDK · recommended

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 hyperskill-org-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.

"""Walkthrough: Hyperskill SDK — explore tracks, projects, stages, topics, and providers."""
from parse_apis.hyperskill_org_scraper_api import Hyperskill, NotFound

client = Hyperskill()

# List Python tracks, capped to 5 total items
for track in client.tracks.list(page_size=5, limit=5):
    print(track.title, track.members_count, track.topics_count)

# Drill into one project and list its stages
project = client.projects.list(language="python", limit=1).first()
if project:
    print(project.title, project.language, project.stages_count)
    for stage in project.stages.list(limit=3):
        print(stage.order, stage.title, stage.description)

# Fetch a specific track by ID and walk its topics
try:
    track = client.tracks.get(id=2)
    print(track.title, track.slug)
except NotFound as exc:
    print(f"Track not found: {exc}")

# Browse topics for a track via sub-resource
if track:
    for topic in track.topics.list(page_size=3, limit=3):
        print(topic.title, topic.is_group)

# Explore content providers
provider = client.providers.list(limit=1).first()
if provider:
    print(provider.title, provider.topics_count, provider.projects_count)

print("exercised: tracks.list / tracks.get / projects.list / project.stages.list / track.topics.list / providers.list")
All endpoints · 10 totalmissing one? ·

List all tracks (courses) on Hyperskill. Returns paginated results with track summaries including title, description, member count, and topic count. Requesting a page beyond available results returns an upstream error.

Input
ParamTypeDescription
pageintegerPage number.
categoryintegerFilter by track category ID (e.g. 1).
page_sizeintegerNumber of tracks per page.
Response
{
  "type": "object",
  "fields": {
    "meta": "object with pagination info (page, has_next, has_previous)",
    "tracks": "array of track objects with id, title, description, members_count, topics_count, cover, slug, projects, provider_id"
  },
  "sample": {
    "data": {
      "meta": {
        "page": 1,
        "has_next": true,
        "has_previous": false
      },
      "tracks": [
        {
          "id": 2,
          "slug": "python-developer",
          "cover": "https://hs.azureedge.net/media/tracks/9368deaab97441f192fd4c8db42cb9bc/python.svg",
          "title": "Python Developer",
          "is_beta": false,
          "projects": [
            68,
            69,
            73
          ],
          "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": 220994
        }
      ]
    },
    "status": "success"
  }
}

About the Hyperskill API

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.

Reliability & maintenanceVerified

The Hyperskill API is a managed, monitored endpoint for hyperskill.org — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when hyperskill.org 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 hyperskill.org 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.

Last verified
3d ago
Latest check
10/10 endpoints passing
Maintenance
Monitored & self-healing
Will this API break when the source site changes?+
It's built not to. Every endpoint is health-checked on a schedule with automated test probes. When the source site changes and a check fails, the API is automatically queued for repair and re-verified — that's the self-healing layer. Each API page shows when its endpoints were last verified. And because marketplace APIs are shared, any fix reaches everyone using it.
Is this an official API from the source site?+
No — Parse APIs are independent, managed REST wrappers over publicly available data. That is the point: where a site has no official API (or only a limited one), Parse gives you a maintained, monitored endpoint for that data and keeps it working as the site changes — so you get a stable contract over a source that never promised one.
Can I fix or extend this API myself if I need a new endpoint or field?+
Yes — and you don't have to wait on us. This API was generated by the Parse agent, which stays attached. Describe the change in plain English ("add an endpoint that returns reviews", "fix the price field") in the revise box on the API page or via the revise_api MCP tool, and the agent rebuilds it against the live site in minutes. Contributing the change back to the public API is free.
What happens if I call an endpoint that has an issue?+
Errors are machine-readable: a bad call returns a clean status with the list of available endpoints and a repair hint, so an agent (or you) can recover or trigger a fix instead of failing silently. Confirmed failures feed the automatic repair queue.
Common use cases
  • Build a curriculum explorer that maps every topic in a track using list_topics filtered by track_id.
  • Aggregate project metadata by programming language with list_projects and the language filter.
  • Reconstruct the stage-by-stage structure of any project using list_project_stages with a project_id.
  • Sync Hyperskill track and project data into an internal learning management or recommendation system.
  • Compare content provider offerings by iterating list_providers and pulling detail with get_provider.
  • Index Hyperskill's full topic catalog for a searchable developer learning resource directory.
  • Monitor curriculum changes over time by periodically diffing list_tracks paginated responses.
Pricing & limitsSee full pricing →
TierPriceCredits/monthRate limit
Free$0/mo1005 req/min
Hobby$30/mo1,00020 req/min
Developer$100/mo5,000100 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.

Frequently asked questions
Does Hyperskill have an official public developer API?+
Hyperskill does not publish a documented public developer API for third-party access to its curriculum data. This Parse API provides structured access to tracks, projects, stages, topics, and providers from the platform.
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?+
Not currently. The 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?+
Not currently. The API covers catalog-level data: tracks, projects, stages, topics, and providers. User accounts, enrollment records, and learning progress are not included in any endpoint's response. You can fork the API on Parse and revise it to add the missing endpoint if that surface is accessible.
How does pagination work across list endpoints, and what happens at the boundary?+
All list endpoints (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.
Page content last updated . Spec covers 10 endpoints from hyperskill.org.
Related APIs in EducationSee all →
hackerrank.com API
Retrieve challenge scores, difficulty ratings, success ratios, and track-level ranking data from HackerRank's public practice platform. Browse challenges by track, view submission statistics, and access ranking metrics across all available tracks.
theodinproject.com API
Access The Odin Project's complete curriculum structure including paths, courses, lessons, resources, and projects, plus search lessons and view detailed changelogs. Browse course outlines, find specific lessons and their learning materials all in one place.
roadmap.sh API
Discover and access structured learning roadmaps, detailed guides, interview questions, and community projects to build your development skills across different technologies and career paths. Search through curated learning content, explore topic breakdowns, and find project ideas tailored to your learning goals.
scholarshipportal.com API
Search and discover scholarships, degree programmes, and universities across StudyPortals' global education database, with the ability to filter by countries, disciplines, and other criteria. Get detailed information about specific scholarships and programmes to compare educational opportunities that match your academic interests.
ucas.com API
Search and explore UK university courses, apprenticeships, and scholarships all in one place, while discovering detailed information about education providers and their offerings. Find the perfect educational path by filtering courses and apprenticeships by your preferences and accessing comprehensive provider details to inform your decisions.
bsigroup.com API
Search and discover BSI Group training courses, qualifications, and schedules across multiple categories, topics, levels, standards, and delivery formats to find the perfect certification program for your needs. Filter results by course details, availability, and format to compare options and plan your professional development.
cses.fi API
Explore the CSES Problem Set by browsing problems across different categories, viewing detailed problem information, and discovering available courses and contests. Access comprehensive problem lists organized by topic to find coding challenges tailored to your learning goals.
1001tracklists.com API
Access complete DJ set tracklists, chart rankings, and event metadata from 1001tracklists.com. Retrieve individual track details — including artist, title, remix information, record labels, and linked streaming URLs — for any tracklist page, and browse the latest sets or currently charting tracks across weekly, trending, and most-heard categories.