NeetCode APIneetcode.io ↗
Access NeetCode problem lists (Blind 75, NeetCode 150, NeetCode 250), full problem details with multi-language solutions, and course chapter/lesson content via a single API.
What is the NeetCode API?
This API exposes 8 endpoints covering NeetCode's curated problem collections and course content. Use get_problem_detail to retrieve a problem's full description, solutions in multiple programming languages, editorial article, and video embed — all keyed by slug. The collection endpoints (Blind 75, NeetCode 150, NeetCode 250, Core Skills, and All) return problems grouped by topic category with difficulty, free-access flag, and direct URL for each entry.
No input parameters required.
curl -X GET 'https://api.parse.bot/scraper/fe2f54eb-de40-436d-871b-707d154427d4/get_core_skills_problems' \ -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 neetcode-io-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.neetcode_api import NeetCode, ProblemCollection, ProblemDetail, Course, Difficulty, CollectionFilter, CourseId
neetcode = NeetCode()
# Browse the Blind 75 collection
blind75 = neetcode.problemcollections.blind75()
print(blind75.filter, blind75.total_problems)
# Navigate from a problem in the collection to its full detail
for category_name, problems in blind75.categories.items():
for problem in problems:
if problem.difficulty == Difficulty.EASY:
detail = problem.detail()
print(detail.name, detail.difficulty, detail.has_article)
for lang, code in detail.solutions.items():
print(lang, len(code))
break
break
# Fetch a course using the CourseId enum and read its structure
course = neetcode.courses.get(course_id=CourseId.DSA_FOR_BEGINNERS)
print(course.name, course.course_id)
for section in course.sections:
print(section.name)
for lesson in section.lessons:
print(lesson.name, lesson.length)
break
# Fetch an article for a lesson within the course
article = course.get_article(lesson_name="RAM")
print(article.lesson_name, article.course_id, len(article.content))
Retrieve all problems in the Core Skills collection, grouped by category (Implement Data Structures, Sorting, Graphs, Dynamic Programming, Design Patterns, SQL, Machine Learning). Each problem includes its slug, display name, difficulty, free-access flag, and URL.
No input parameters required.
{
"type": "object",
"fields": {
"filter": "string, the filter identifier used ('coreSkills')",
"categories": "object mapping category names to arrays of problem objects, each with slug, name, difficulty, free, and url",
"total_problems": "integer, total number of problems across all categories"
},
"sample": {
"data": {
"filter": "coreSkills",
"categories": {
"Implement Data Structures": [
{
"url": "https://neetcode.io/problems/dynamicArray",
"free": true,
"name": "Design Dynamic Array (Resizable Array)",
"slug": "dynamicArray",
"difficulty": "Easy"
}
]
},
"total_problems": 116
},
"status": "success"
}
}About the NeetCode API
Problem Collections
Five endpoints cover NeetCode's distinct curated sets: get_blind75_problems, get_neetcode150_problems, get_neetcode250_problems, get_core_skills_problems, and get_neetcode_all_problems. Each returns a filter identifier, a categories object mapping topic names (e.g., Array, Two Pointers, Dynamic Programming) to arrays of problem objects, and a total_problems integer. Every problem object includes slug, name, difficulty, free (boolean), and url. Core Skills organizes differently — its categories cover Implement Data Structures, Sorting, Graphs, SQL, Machine Learning, and Design Patterns, making it distinct from the algorithm-focused sets.
Problem Detail
get_problem_detail takes a slug string (e.g., two-integer-sum) and returns the full problem record: description (markdown/HTML with examples and constraints), solutions as an object mapping language names to code strings, topics array, difficulty, free flag, a video embed string, has_article boolean, and article_body with the full editorial in markdown when an article exists. This is the endpoint to use when you need runnable code or the written editorial for a specific problem.
Course Structure and Lessons
get_course_chapters accepts a course_id (accepted values include dsa-for-beginners, advanced-algorithms, system-design-interview) and returns the course name, course_id, optional baseCodeUrl, and a sections array. Each section contains a lessons array with metadata including video IDs, suggested problems, and lesson length. get_lesson_article retrieves the markdown/HTML content for a named lesson; it requires both course_id and a case-sensitive lesson_name exactly matching a value from get_course_chapters. If no article exists for the lesson, the endpoint returns a stale_input error with kind input_not_found.
The NeetCode API is a managed, monitored endpoint for neetcode.io — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when neetcode.io 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 neetcode.io 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 study tracker that syncs a user's progress against the full Blind 75 or NeetCode 150 problem list by category and difficulty.
- Generate a spaced-repetition flashcard deck from problem descriptions and editorial articles returned by
get_problem_detail. - Create a multi-language solution browser that displays Python, Java, and C++ solutions side-by-side for any problem slug.
- Populate a custom learning management system with NeetCode course chapters and lesson articles from
get_course_chaptersandget_lesson_article. - Filter all NeetCode 250 problems by difficulty and free-access flag to build a curated free-only study list.
- Index problem topics and descriptions for semantic search across the full NeetCode problem set using
get_neetcode_all_problems. - Automate a daily interview prep digest that surfaces one random Hard problem with its editorial for a newsletter or Slack bot.
| 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 NeetCode have an official public developer API?+
What does `get_problem_detail` return beyond the problem statement?+
get_problem_detail returns the full description with examples and constraints, a solutions object keyed by language name (e.g., Python, Java, C++), a video embed string, topics array, difficulty, free boolean, has_article boolean, and article_body containing the full editorial in markdown when one exists. Not all problems have an editorial — check has_article before reading article_body.Does the API expose user submission history or accepted/rejected status for problems?+
How does `get_lesson_article` handle lessons that have no written article?+
stale_input error with kind set to input_not_found. The lesson_name parameter is also case-sensitive and must exactly match the value returned by get_course_chapters — a mismatch will produce the same error.Does the API include LeetCode problem numbers or links to the corresponding LeetCode problem page?+
slug, name, difficulty, free flag, and a url pointing to the NeetCode problem page. LeetCode problem IDs or direct LeetCode URLs are not part of the response. You can fork it on Parse and revise to add the missing endpoint if you need cross-referencing to LeetCode.