hackerrank.com APIhackerrank.com ↗
Access HackerRank challenge scores, difficulty ratings, success ratios, and track-level rankings via 2 structured API endpoints. Filter by track, paginate results.
curl -X GET 'https://api.parse.bot/scraper/b59ecdc9-59f5-4d6b-b890-daba4a62f7c0/get_challenges?limit=5&track=algorithms&offset=0' \ -H 'X-API-Key: $PARSE_API_KEY'
Get challenges with their score data including max_score, difficulty rating, success_ratio, total submissions, and solved count. Can be filtered by track or return all challenges. Results are paginated with offset/limit.
| Param | Type | Description |
|---|---|---|
| limit | integer | Number of challenges to return per page (max observed: 100). |
| track | string | Track slug to filter challenges. Accepted values: algorithms, data-structures, mathematics, sql, databases, regex, security, distributed-systems, tutorials, c, cpp, java, python, ruby, shell, fp, ai, react, general-programming. When omitted, returns all challenges across all tracks. |
| offset | integer | Pagination offset (number of items to skip). |
{
"type": "object",
"fields": {
"limit": "integer current page size",
"total": "integer total number of challenges matching the query",
"offset": "integer current pagination offset",
"challenges": "array of challenge objects with id, slug, name, max_score, difficulty, difficulty_name, success_ratio, total_count, solved_count, category, kind, track, skill, preview, created_at, tag_names"
},
"sample": {
"data": {
"limit": 5,
"total": 442,
"offset": 0,
"challenges": [
{
"id": 2532,
"kind": "code",
"name": "Solve Me First",
"slug": "solve-me-first",
"skill": "Problem Solving (Basic)",
"track": {
"id": 43,
"name": "Warmup",
"slug": "warmup",
"track_id": 3,
"track_name": "Algorithms",
"track_slug": "algorithms"
},
"preview": "This is an easy challenge to help you start coding in your favorite languages!",
"category": "ai",
"max_score": 1,
"tag_names": [
"Easy",
"Basic Programming",
"Core CS",
"General Programming"
],
"created_at": "2014-05-17T09:05:03.000Z",
"difficulty": 0.995,
"total_count": 5049269,
"solved_count": 4926745,
"success_ratio": 0.976,
"difficulty_name": "Easy"
}
]
},
"status": "success"
}
}About the hackerrank.com API
The HackerRank API exposes 2 endpoints covering challenge metadata and track-level scoring data from HackerRank's public practice platform. The get_challenges endpoint returns per-challenge fields including max_score, difficulty, success_ratio, total_count, and solved_count, with filtering by track slug and pagination via offset and limit. The get_track_scores endpoint surfaces practice and contest rankings across all tracks in a single call.
Challenge Data
The get_challenges endpoint returns a paginated list of challenges from HackerRank's practice platform. Each challenge object includes id, slug, name, max_score, difficulty, difficulty_name, success_ratio, total_count, and solved_count. Use the track parameter to scope results to a specific domain — accepted slugs are algorithms, data-structures, mathematics, sql, databases, and re. The limit parameter caps page size (up to 100), and offset controls pagination. The total field in the response lets you calculate how many pages exist for a given query.
Track-Level Rankings
The get_track_scores endpoint returns aggregate scoring and ranking data across all HackerRank tracks. Each entry in the tracks array carries name, slug, practice_score, practice_rank, practice_level, contest_score, contest_rank, and contest_level fields. The optional type parameter accepts practice or contest to narrow the returned score type. Rank values reflect the scale of participation across each track and can be used to gauge relative difficulty or popularity.
Scope and Coverage
Both endpoints cover HackerRank's publicly accessible practice content. Challenge-level data is sourced per-track and reflects submission statistics visible on the platform, including how many users have solved a given challenge and the overall success ratio. Private company challenges, interview kits behind login walls, and user-specific profile data are outside the scope of these endpoints.
- Build a difficulty-ranked challenge browser filtered by track slug such as
algorithmsorsql. - Compute the average
success_ratioacross a track to benchmark relative problem difficulty. - Identify the least-solved challenges using
solved_countrelative tototal_countfor study prioritization. - Compare
practice_rankandcontest_rankacross tracks to find where competition is most or least dense. - Populate a coding curriculum tool with
max_scoreanddifficulty_namefor each challenge in a track. - Track changes in
total_countandsolved_countover time to monitor challenge popularity trends. - Aggregate
practice_scoreandpractice_leveldata across all tracks for a full-platform leaderboard view.
| 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 HackerRank have an official developer API?+
What does `get_challenges` return and how do I filter by track?+
id, slug, name, max_score, difficulty, difficulty_name, success_ratio, total_count, and solved_count, plus top-level total, limit, and offset fields for pagination. Pass a track parameter with a slug like algorithms or data-structures to restrict results. Omitting track returns challenges across all available tracks.Does the API return user profile data or individual solve history?+
Are all HackerRank tracks available in the `track` filter?+
get_challenges endpoint currently accepts six track slugs: algorithms, data-structures, mathematics, sql, databases, and re. Tracks like fp (functional programming) or ai are not listed as accepted values for that parameter. You can fork this API on Parse and revise it to add support for additional track slugs.How does pagination work in `get_challenges`?+
total, limit, and offset. To page through results, increment offset by your limit value on each request. The maximum observed page size via the limit parameter is 100. If total exceeds your limit, multiple requests are needed to retrieve all matching challenges.