24 Pull Requests

Development API · Open source contributions · PR tracking · GitHub stats

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')
Try user stats: 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