TL;DR
The 24 Pull Requests API exposes contribution data from the annual 24 Pull Requests event — a December challenge encouraging developers to submit one pull request per day to open source projects. The API provides user profiles with PR statistics, project listings, and contribution timelines. It's a motivational tool for tracking open source participation.
Quick start: https://api.24pullrequests.com/users/andrew
No API key needed — just make a request!
How to Use This API
1. Get User Profile & Stats
https://api.24pullrequests.com/users/andrew
Returns user GitHub profile, total pull requests submitted during the event, and yearly breakdown.
2. User's Pull Requests
https://api.24pullrequests.com/users/andrew/pull_requests
Lists the user's submitted pull requests with repo names, PR titles, dates, and status (open/merged/closed).
3. Projects/Repos Participating
https://api.24pullrequests.com/projects
Returns projects that are part of the 24 Pull Requests initiative, with repo URLs and descriptions.
4. JavaScript — Contribution Dashboard
async function getUserContributionStats(username) {
const resp = await fetch(
`https://api.24pullrequests.com/users/${encodeURIComponent(username)}`
);
const user = await resp.json();
const prResp = await fetch(
`https://api.24pullrequests.com/users/${encodeURIComponent(username)}/pull_requests`
);
const pullRequests = await prResp.json();
const stats = {
name: user.name || user.login,
totalPRs: pullRequests.length,
merged: pullRequests.filter(pr => pr.state === 'merged').length,
open: pullRequests.filter(pr => pr.state === 'open').length,
repos: [...new Set(pullRequests.map(pr => pr.repo_name))]
};
console.log(`${stats.name}: ${stats.totalPRs} PRs`);
console.log(`Merged: ${stats.merged}, Open: ${stats.open}`);
console.log(`Repositories: ${stats.repos.length}`);
return stats;
}
getUserContributionStats('andrew');
5. Python — Year-over-Year Comparison
import requests
def get_user_yearly_stats(username):
resp = requests.get(
f'https://api.24pullrequests.com/users/{username}'
)
user = resp.json()
pr_resp = requests.get(
f'https://api.24pullrequests.com/users/{username}/pull_requests'
)
prs = pr_resp.json()
yearly = {}
for pr in prs:
year = pr.get('created_at', '')[:4]
if year:
yearly[year] = yearly.get(year, 0) + 1
print(f"Contribution history for {user.get('name', username)}:")
for year in sorted(yearly.keys()):
print(f" {year}: {yearly[year]} PRs")
get_user_yearly_stats('andrew')
https://api.24pullrequests.com/users/andrew
Frequently Asked Questions
- What is 24 Pull Requests?
- An annual December event encouraging developers to submit one pull request per day to open source projects. It's a fun way to give back and build a contribution streak.
- Can I only see data from December?
- The API focuses on contributions made during the 24 Pull Requests event period (December), but users can submit PRs year-round through the platform.
- Do I need a 24PR account to be in the API?
- Yes, users appear in the API after they connect their GitHub account to 24pullrequests.com and join the event.
- What data is available per user?
- GitHub username, name, avatar URL, total PR count, individual PR records with repo names and states, and yearly contribution breakdowns.
- Is the API updated in real-time?
- Data is updated when users sync their GitHub accounts. It may have a slight delay from the actual GitHub PR creation.
API Details
- API URL
https://api.24pullrequests.com- Documentation
- GitHub Repository
- Category
- Development
- Authentication
- Not Required
- Geographic Coverage
- Global — Open source contributors worldwide
What You Can Build
- Open source contribution tracker dashboard
- Team challenge leaderboard for 24PR participation
- GitHub profile badge showing 24PR stats
- Contribution streak visualizer and calendar
- Developer portfolio widget with PR achievements