/alfa-leetcode-api

It's a custom leetcode api. This API provides endpoints to retrieve details about a user's profile, badges, solved questions, contest details, contest history, submissions, calendar and and also daily questions, selected problem, list of problems.

Primary LanguageTypeScriptMIT LicenseMIT

alfa-leetcode-api

The API for retrieving your LeetCode profile & Problems statistics

TypeScript Node.js Express.js REST API

About ✨

At First, I struggled to find proper documentation for the leetcode.com/graphql. After scouring various articles about the LeetCode public API, I still couldn't find the comprehensive documentation I was looking for. Fueled by the desire to fill this gap I created alfa-leetcode-api.

alfa-leetcode-api is a custom solution born out of the need for a well-documented and detailed LeetCode API. This project is designed to provide developers with endpoints that offer insights into a user's profile, badges, solved questions, contest details, contest history, submissions, and also daily questions, selected problem, list of problems.

API URL 🌐

https://alfa-leetcode-api.onrender.com/

Run with docker 🐳

docker run -p 3000:3000 alfaarghya/alfa-leetcode-api:2.0.1

Wanna Contribute 🤔??

follow this documentation => CONTRIBUTING.md

💡 Rate Limit

I've implemented a rate limit to prevent any potential server overload issues.

‼️ Note

During development, it's recommended to utilize the API locally. To do so, follow this documentation => Local Deploy

Endpoints 🚀

👤User Details

Details Endpoint Description Demo
Profile /:username Get details about a user's profile. click here
Badges /:username/badges Get the badges earned by the user. click here
Solved /:username/solved Get the total number of questions solved by the user. click here
Contest /:username/contest Get details about the user's contest participation. click here
Contest History /:username/contest/history Get contest history. click here
Submission /:username/submission Get the last 20 submissions of the user. click here
Limited Submission /:username/submission?limit=number Get a specified number of the user's last submissions. click here
Accepted Submission /:username/acSubmission Get the last 20 accepted submission of the user. click here
Limited Accepted Submission /:username/acSubmission?limit=7 Get a specified number of the user's last accepted submission. click here
Calendar /:username/calendar Get the user's submission calendar. click here

😀 New Endpoints 🎉

Details Endpoint Description
Full Profile /userProfile/:username get full profile details in one call
Year Calender /userProfileCalendar?username=yourname&year=2024 get your calendar details with year
Lang Stats /languageStats?username=yourname get the language stats of a user
Question Progress /userProfileUserQuestionProgressV2/:userSlug get your question progress
Skill Stats /skillStats/:username get your skill stats
User Contest Ranking /userContestRankingInfo/:username get contest ranking
Trending Discussion /trendingDiscuss?first=20 get top 20 trending discussions
Discussion Topic /discussTopic/:topicId get discussion topic
Discussion Comment /discussComments/:topicId get discussion comments
Raw Daily Problem /dailyQuestion get raw daily question

❓Questions Details

Details Endpoint Description Demo
Daily Problem /daily Get the daily question. click here
Selected Problem /select?titleSlug=selected-question Get details about a selected-question. click here
Problems /problems Get a list of 20 problems. click here
Limited Problems /problems?limit=number Get a list of a specified number of problems. click here
Filter Problems /problems?tags=tag1+tag2 Get a list of problems based on selected tags. click here
Skip Problems /problems?skip=number Get a list of 20 problems, skipping a specified number of problems. TODO
Filter & Limited Problems /problems?tags=tag1+tag2+tag3&limit=number Get a list of a specified number of problems based on selected tags. click here
Skip & Limited Problems /problems?limit=number&skip=number Get a list of a specified number of problems skipping a specified number of problems. TODO
Skip & Filter & Limited Problems /problems?tags=tag1+tag2+tag3&limit=number&skip=number Get a list of a specified number of problems based on selected tags skipping a specified number of problems. TODO

Author ✒️

Contributor ✏️

Contributor Contribution
@aryanpingle AC submission
@jamesh48 TypeScript Refactoring
@kvqn PORT environment variable
@changchunlei New Endpoints - language stats, integrated user profile, contest and discussions
@merakesh99 Hot reload issue solved
@ajchili Skip param to fetch problems
@theinit01 Temp fix for skip

Connect with me 📲

LinkedIn Twitter Instagram LeetCode