A better approach has been made Contest Hive. It is open-source and has better API support.
Use Contest Hive API for production purposes.
A totally asynchronous API made with FastAPI to grab upcoming contests' information from different platforms.
If you want to use this API in production, it is highly recommended to fork this repository.
Beacause I am adding new platforms regularly and code is improving continuously.
There will come new versions of this API soon. (After May 23, 2023)
So, fork this repo so your project doesn't get hampered by new changes.
- Atcoder
- CodeChef
- Codeforces
- HackerEarth
- HackerRank
- LeetCode
- Toph
/docs
- Documentation.
Note: All responses are in pretty JSON format.
/platforms
- All available Platforms
As this API needs to make http requests fetches data, there will be some delay. So, I made a solution for that.
/cached
endpoint will give you instant response.
Every 7 minutes, it fetches data from all the platforms and stores it locally.
It is highly recommended to use /cached
endpoint. Use the direct endpoints if you feel the necessity.
The structure is like:
example.api.com/cached/<method>
Example:
https://contestsapi.onrender.com/cached/2 2 == codechef
See /platforms
for numeric names of each platform.
Sample Response:
{ "ok": true, "data": [ { "name": "Starters 78", "url": "https://www.codechef.com/START78", "startTime": "22-02-2023 14:30:00 UTC", "duration": "3 hours", "durationSeconds": 10800 }, { "name": "Starters 79", "url": "https://www.codechef.com/START79", "startTime": "01-03-2023 14:30:00 UTC", "duration": "3 hours", "durationSeconds": 10800 } ] }
Just put the method's name after /cached/
.
/all
- Contests from all Platforms
Note: The response will be very slow as this method makes http requests to all the platforms. Use /cached/all
instead.
/atcoder
or /1
- Contests of Atcoder
/codeforces
or /2
- Contests of Codeforces
/codechef
or /3
- Contests of CodeChef
/hackerearth
or /4
- Contests of HackerEarth
/toph
or /5
- Contests of Toph
/status
- A brief status of the API.
contestsapi.onrender.com
git clone https://github.com/Nusab19/ContestsAPI
cd ContestsAPI
pip install -r requirements.txt
python main.py
You may also use uvicorn main:app --reload --port 5000 --host 0.0.0.0
instead of python main.py
Visit localhost:5000
after running locally.
Make sure to give a star if you like it! :D
Made with ❤ and effort by @Nusab19