TL;DR
What it does: Provides JSON access to open source projects, users, pull requests, and organisations from the 24 Pull Requests platform — a yearly December initiative encouraging developers worldwide to send 24 pull requests during the holiday season.
Quick start: curl "https://24pullrequests.com/projects.json"
No API key needed - just use it
Overview
The 24 Pull Requests API gives developers programmatic access to a curated directory of open source projects looking for contributors, along with user profiles, pull request histories, and organisational data from the global 24 Pull Requests community. Launched in 2012, this platform runs annually from December 1st to December 24th, encouraging developers across every continent to give back to open source by submitting at least one pull request each day. The API is particularly valuable for developers wanting to discover open source projects by language, track their contribution history, or build tools that promote open source collaboration during the holiday season and beyond.
Live Example
Here's the exact URL to call and the real response you'll get:
The actual response you get:
[
{
"description": "Deliver Go binaries as fast and easily as possible",
"github_url": "https://github.com/goreleaser/goreleaser",
"main_language": "Go"
},
{
"description": "Command-line program to download videos from YouTube.com and other video sites",
"github_url": "https://github.com/rg3/youtube-dl",
"main_language": "Python"
},
{
"description": "Peace of mind from prototype to production",
"github_url": "https://github.com/phoenixframework/phoenix",
"main_language": "Elixir"
},
{
"description": "The Rust package manager",
"github_url": "https://github.com/rust-lang/cargo",
"main_language": "Rust"
},
{
"description": "MJML: the only framework that makes responsive-email easy",
"github_url": "https://github.com/mjmlio/mjml",
"main_language": "JavaScript"
}
]
What does this data mean?
Each project returned by the API contains three fields. Here's what they represent, using the Goreleaser entry as an example:
- description
- A plain-text summary of what the open source project does. Example: "Deliver Go binaries as fast and easily as possible"
- github_url
- The full GitHub URL to the project repository. Example: https://github.com/goreleaser/goreleaser
- main_language
- The primary programming language used in the project. Example: Go. This makes it easy to find projects by language.
How to use this API
JavaScript Example
fetch('https://24pullrequests.com/projects.json')
.then(response => response.json())
.then(projects => {
projects.forEach(project => {
console.log(`${project.main_language}: ${project.description}`);
});
})
.catch(error => console.error('Error:', error));
Python Example
import requests
response = requests.get('https://24pullrequests.com/projects.json')
projects = response.json()
for project in projects:
print(f"[{project['main_language']}] {project['description']}")
print(f" Repo: {project['github_url']}")
print()
cURL Example
curl "https://24pullrequests.com/projects.json" | jq '.[] | {language: .main_language, repo: .github_url}'
Frequently Asked Questions
- Do I need an API key to use the 24 Pull Requests API?
- No, the 24 Pull Requests API requires no authentication or API key. All endpoints are publicly accessible and completely free to use.
- What data can I access through the 24 Pull Requests API?
- The API provides access to suggested open source projects (
/projects.json), user profiles with contribution counts (/users.json), pull requests with titles and descriptions (/pull_requests.json), and organisations with their members (/organisations.json). - Is the 24 Pull Requests API only active in December?
- The API returns historical data year-round. You can query past contributions, projects, and users even outside the December event period. However, new pull request data is primarily generated during the annual December campaign. The
/pull_requests/meta.jsonendpoint gives you an overview of current stats including total count and total pages. - Can I filter 24 Pull Requests projects by programming language?
- The projects endpoint returns the
main_languagefield for each project. Since results are returned alphabetically, you can process and filter the data client-side by language in your application code. - Does the 24 Pull Requests API support JSONP callbacks?
- Yes, you can append a
?callbackparameter to any GET endpoint to wrap the response in a JSONP callback function. This is especially useful for browser-based applications that need to work around cross-domain restrictions. - How do I paginate through large result sets?
- Requests that return multiple items are paginated to 99 items per page by default. Use the
?pageparameter to navigate, e.g.,https://24pullrequests.com/users.json?page=2.
API Details
- Base URL
https://24pullrequests.com- Documentation
- https://24pullrequests.com/api
- Category
- Development
- Authentication
- None required - completely free
- Coverage
- Global
- CORS
- Yes (with JSONP callback support)