GitHub contribution calendar API
The public contribution graph for one year: the total and a count per day.
GET /v1/github/user/contributions
GET /v1/github/user/contributions
The public contribution graph for one year: the total and a count per day.
- Cost: 1 credit
- Cache: Results are kept up to 30 days; send
max_age_daysto reuse them for free. - Timeout: A request still running after about 25 seconds answers
202with a job to poll (Batch and jobs).
Parameters#
| Name | Type | Required | Description |
|---|---|---|---|
handle | string | one of | GitHub username. Also accepted as username, login. |
url | URL | one of | Profile URL (github.com/<user>). Accepted hosts: github.com. |
year | integer | no | Calendar year (2008 onward); default the current year. Range 2008 to 2100. Example 2025. |
Send at least one of handle, url. If you send several, the first listed is used and the rest are ignored.
Every request also accepts:
trim:truefor a smaller response withoutnullfields andextra.raw:trueto also get the platform's original object asraw.max_age_days: accept a cached result up to this many days old, for 0 credits (Caching).
Example request#
Set your key in the environment first (see Authentication).
1curl -G "https://api.socialscrape.dev/v1/github/user/contributions" \2 -H "x-api-key: $SOCIALSCRAPE_API_KEY" \3 --data-urlencode "handle=torvalds" \4 --data-urlencode "year=2025"1import os2import requests34params = {5 "handle": "torvalds",6 "year": "2025",7}8res = requests.get(9 "https://api.socialscrape.dev/v1/github/user/contributions",10 headers={"x-api-key": os.environ["SOCIALSCRAPE_API_KEY"]},11 params=params,12)13body = res.json()1415if body["ok"]:16 print(body["data"])17else:18 print(body["error"]["code"], body["error"]["message"])1const url = new URL("https://api.socialscrape.dev/v1/github/user/contributions");2url.search = new URLSearchParams({3 "handle": "torvalds",4 "year": "2025"5}).toString();6const res = await fetch(url, {7 headers: { "x-api-key": process.env.SOCIALSCRAPE_API_KEY! },8});9const body = await res.json();1011if (body.ok) {12 console.log(body.data);13} else {14 console.error(body.error.code, body.error.message);15}1{2 "nodes": [3 {4 "name": "SocialScrape GitHub contribution calendar",5 "type": "n8n-nodes-base.httpRequest",6 "typeVersion": 4.2,7 "position": [8 0,9 010 ],11 "parameters": {12 "method": "GET",13 "url": "https://api.socialscrape.dev/v1/github/user/contributions",14 "sendQuery": true,15 "queryParameters": {16 "parameters": [17 {18 "name": "handle",19 "value": "torvalds"20 },21 {22 "name": "year",23 "value": "2025"24 }25 ]26 },27 "sendHeaders": true,28 "headerParameters": {29 "parameters": [30 {31 "name": "x-api-key",32 "value": "={{ $env.SOCIALSCRAPE_API_KEY }}"33 }34 ]35 }36 }37 }38 ],39 "connections": {}40}Example response#
This is a sample from a recorded response, lists and long text are shortened. Status 200.
1{2 "ok": true,3 "credits_charged": 1,4 "credits_remaining": 4999,5 "cached": false,6 "cached_at": null,7 "request_id": "req_529d5fd94d1524174537336b",8 "data": {9 "object": "contributions",10 "platform": "github",11 "handle": "torvalds",12 "total": 2925,13 "days": [14 {15 "date": "2025-01-01",16 "count": 117 },18 {19 "date": "2025-01-02",20 "count": 221 },22 {23 "date": "2025-01-03",24 "count": 1125 }26 ],27 "extra": {28 "intensity_by_date": {29 "2025-01-01": 1,30 "2025-01-02": 1,31 "2025-01-03": 2,32 "2025-01-04": 1,33 "2025-01-05": 1,34 "2025-01-06": 1,35 "2025-01-07": 1,36 "2025-01-08": 1,37 "2025-01-09": 1,38 "2025-01-10": 2,39 "2025-01-11": 1,40 "2025-01-12": 1,41 "2025-01-13": 1,42 "2025-01-14": 1,43 "2025-01-15": 0,44 "2025-01-16": 1,45 "2025-01-17": 1,46 "2025-01-18": 1,47 "2025-01-19": 1,48 "2025-01-20": 3,49 "2025-01-21": 4,50 "2025-01-22": 3,51 "2025-01-23": 2,52 "2025-01-24": 3,53 "2025-01-25": 2,54 "2025-01-26": 1,55 "2025-01-27": 2,56 "2025-01-28": 2,57 "2025-01-29": 2,58 "2025-01-30": 2,59 "2025-01-31": 2,60 "2025-02-01": 1,61 "2025-02-02": 1,62 "2025-02-03": 1,63 "2025-02-04": 1,64 "2025-02-05": 1,65 "2025-02-06": 1,66 "2025-02-07": 1,67 "2025-02-08": 2,68 "2025-02-09": 1,69 "2025-02-10": 1,70 "2025-02-11": 1,71 "2025-02-12": 1,72 "2025-02-13": 1,73 "2025-02-14": 2,74 "2025-02-15": 1,75 "2025-02-16": 2,76 "2025-02-17": 1,77 "2025-02-18": 1,78 "2025-02-19": 1,79 "2025-02-20": 1,80 "2025-02-21": 1,81 "2025-02-22": 1,82 "2025-02-23": 1,83 "2025-02-24": 1,84 "2025-02-25": 1,85 "2025-02-26": 1,86 "2025-02-27": 1,87 "2025-02-28": 2,88 "2025-03-01": 1,89 "2025-03-02": 1,90 "2025-03-03": 1,91 "2025-03-04": 1,92 "2025-03-05": 1,93 "2025-03-06": 2,94 "2025-03-07": 2,95 "2025-03-08": 1,96 "2025-03-09": 1,97 "2025-03-10": 1,98 "2025-03-11": 1,99 "2025-03-12": 1,100 "2025-03-13": 1,101 "2025-03-14": 2,102 "2025-03-15": 1,103 "2025-03-16": 1,104 "2025-03-17": 1,105 "2025-03-18": 1,106 "2025-03-19": 1,107 "2025-03-20": 1,108 "2025-03-21": 1,109 "2025-03-22": 1,110 "2025-03-23": 0,111 "2025-03-24": 4,112 "2025-03-25": 4,113 "2025-03-26": 2,114 "2025-03-27": 3,115 "2025-03-28": 2,116 "2025-03-29": 2,117 "2025-03-30": 1,118 "2025-03-31": 2,119 "2025-04-01": 2,120 "2025-04-02": 3,121 "2025-04-03": 2,122 "2025-04-04": 2,123 "2025-04-05": 1,124 "2025-04-06": 2,125 "2025-04-07": 0,126 "2025-04-08": 1,127 "2025-04-09": 1,128 "2025-04-10": 2,129 "2025-04-11": 1,130 "2025-04-12": 1,131 "2025-04-13": 1,132 "2025-04-14": 1,133 "2025-04-15": 1,134 "2025-04-16": 1,135 "2025-04-17": 2,136 "2025-04-18": 2,137 "2025-04-19": 1,138 "2025-04-20": 1,139 "2025-04-21": 1,140 "2025-04-22": 1,141 "2025-04-23": 1,142 "2025-04-24": 1,143 "2025-04-25": 2,144 "2025-04-26": 2,145 "2025-04-27": 1,146 "2025-04-28": 1,147 "2025-04-29": 1,148 "2025-04-30": 1,149 "2025-05-01": 1,150 "2025-05-02": 2,151 "2025-05-03": 1,152 "2025-05-04": 1,153 "2025-05-05": 1,154 "2025-05-06": 1,155 "2025-05-07": 1,156 "2025-05-08": 1,157 "2025-05-09": 1,158 "2025-05-10": 1,159 "2025-05-11": 2,160 "2025-05-12": 1,161 "2025-05-13": 1,162 "2025-05-14": 1,163 "2025-05-15": 1,164 "2025-05-16": 2,165 "2025-05-17": 1,166 "2025-05-18": 1,167 "2025-05-19": 0,168 "2025-05-20": 1,169 "2025-05-21": 1,170 "2025-05-22": 1,171 "2025-05-23": 1,172 "2025-05-24": 1,173 "2025-05-25": 1,174 "2025-05-26": 4,175 "2025-05-27": 4,176 "2025-05-28": 3,177 "2025-05-29": 2,178 "2025-05-30": 2,179 "2025-05-31": 2,180 "2025-06-01": 1,181 "2025-06-02": 2,182 "2025-06-03": 2,183 "2025-06-04": 1,184 "2025-06-05": 1,185 "2025-06-06": 3,186 "2025-06-07": 1,187 "2025-06-08": 2,188 "2025-06-09": 1,189 "2025-06-10": 1,190 "2025-06-11": 1,191 "2025-06-12": 1,192 "2025-06-13": 2,193 "2025-06-14": 1,194 "2025-06-15": 1,195 "2025-06-16": 1,196 "2025-06-17": 1,197 "2025-06-18": 1,198 "2025-06-19": 1,199 "2025-06-20": 1,200 "2025-06-21": 1,201 "2025-06-22": 1,202 "2025-06-23": 1,203 "2025-06-24": 1,204 "2025-06-25": 1,205 "2025-06-26": 1,206 "2025-06-27": 2,207 "2025-06-28": 1,208 "2025-06-29": 1,209 "2025-06-30": 1,210 "2025-07-01": 1,211 "2025-07-02": 1,212 "2025-07-03": 1,213 "2025-07-04": 2,214 "2025-07-05": 1,215 "2025-07-06": 2,216 "2025-07-07": 1,217 "2025-07-08": 1,218 "2025-07-09": 1,219 "2025-07-10": 1,220 "2025-07-11": 1,221 "2025-07-12": 1,222 "2025-07-13": 1,223 "2025-07-14": 1,224 "2025-07-15": 1,225 "2025-07-16": 1,226 "2025-07-17": 1,227 "2025-07-18": 2,228 "2025-07-19": 1,229 "2025-07-20": 2,230 "2025-07-21": 1,231 "2025-07-22": 1,232 "2025-07-23": 1,233 "2025-07-24": 1,234 "2025-07-25": 1,235 "2025-07-26": 1,236 "2025-07-27": 1,237 "2025-07-28": 4,238 "2025-07-29": 4,239 "2025-07-30": 2,240 "2025-07-31": 4,241 "2025-08-01": 2,242 "2025-08-02": 1,243 "2025-08-03": 1,244 "2025-08-04": 1,245 "2025-08-05": 1,246 "2025-08-06": 1,247 "2025-08-07": 1,248 "2025-08-08": 1,249 "2025-08-09": 2,250 "2025-08-10": 1,251 "2025-08-11": 1,252 "2025-08-12": 1,253 "2025-08-13": 1,254 "2025-08-14": 1,255 "2025-08-15": 2,256 "2025-08-16": 1,257 "2025-08-17": 1,258 "2025-08-18": 1,259 "2025-08-19": 1,260 "2025-08-20": 1,261 "2025-08-21": 2,262 "2025-08-22": 2,263 "2025-08-23": 1,264 "2025-08-24": 1,265 "2025-08-25": 1,266 "2025-08-26": 0,267 "2025-08-27": 1,268 "2025-08-28": 2,269 "2025-08-29": 1,270 "2025-08-30": 1,271 "2025-08-31": 1,272 "2025-09-01": 0,273 "2025-09-02": 1,274 "2025-09-03": 1,275 "2025-09-04": 1,276 "2025-09-05": 2,277 "2025-09-06": 1,278 "2025-09-07": 1,279 "2025-09-08": 1,280 "2025-09-09": 1,281 "2025-09-10": 1,282 "2025-09-11": 1,283 "2025-09-12": 1,284 "2025-09-13": 1,285 "2025-09-14": 1,286 "2025-09-15": 1,287 "2025-09-16": 1,288 "2025-09-17": 2,289 "2025-09-18": 1,290 "2025-09-19": 2,291 "2025-09-20": 1,292 "2025-09-21": 1,293 "2025-09-22": 1,294 "2025-09-23": 1,295 "2025-09-24": 1,296 "2025-09-25": 1,297 "2025-09-26": 2,298 "2025-09-27": 1,299 "2025-09-28": 1,300 "2025-09-29": 4,301 "2025-09-30": 4,302 "2025-10-01": 4,303 "2025-10-02": 2,304 "2025-10-03": 4,305 "2025-10-04": 3,306 "2025-10-05": 2,307 "2025-10-06": 2,308 "2025-10-07": 2,309 "2025-10-08": 1,310 "2025-10-09": 1,311 "2025-10-10": 2,312 "2025-10-11": 2,313 "2025-10-12": 1,314 "2025-10-13": 0,315 "2025-10-14": 1,316 "2025-10-15": 1,317 "2025-10-16": 1,318 "2025-10-17": 1,319 "2025-10-18": 2,320 "2025-10-19": 1,321 "2025-10-20": 1,322 "2025-10-21": 1,323 "2025-10-22": 1,324 "2025-10-23": 1,325 "2025-10-24": 2,326 "2025-10-25": 1,327 "2025-10-26": 2,328 "2025-10-27": 1,329 "2025-10-28": 1,330 "2025-10-29": 0,331 "2025-10-30": 1,332 "2025-10-31": 2,333 "2025-11-01": 1,334 "2025-11-02": 1,335 "2025-11-03": 0,336 "2025-11-04": 1,337 "2025-11-05": 1,338 "2025-11-06": 1,339 "2025-11-07": 1,340 "2025-11-08": 1,341 "2025-11-09": 1,342 "2025-11-10": 1,343 "2025-11-11": 1,344 "2025-11-12": 1,345 "2025-11-13": 1,346 "2025-11-14": 2,347 "2025-11-15": 1,348 "2025-11-16": 1,349 "2025-11-17": 1,350 "2025-11-18": 1,351 "2025-11-19": 1,352 "2025-11-20": 1,353 "2025-11-21": 1,354 "2025-11-22": 1,355 "2025-11-23": 1,356 "2025-11-24": 1,357 "2025-11-25": 1,358 "2025-11-26": 1,359 "2025-11-27": 1,360 "2025-11-28": 2,361 "2025-11-29": 1,362 "2025-11-30": 1,363 "2025-12-01": 3,364 "2025-12-02": 4,365 "2025-12-03": 4,366 "2025-12-04": 4,367 "2025-12-05": 4,368 "2025-12-06": 3,369 "2025-12-07": 1,370 "2025-12-08": 1,371 "2025-12-09": 2,372 "2025-12-10": 2,373 "2025-12-11": 1,374 "2025-12-12": 1,375 "2025-12-13": 2,376 "2025-12-14": 1,377 "2025-12-15": 0,378 "2025-12-16": 1,379 "2025-12-17": 1,380 "2025-12-18": 0,381 "2025-12-19": 1,382 "2025-12-20": 2,383 "2025-12-21": 1,384 "2025-12-22": 1,385 "2025-12-23": 1,386 "2025-12-24": 1,387 "2025-12-25": 1,388 "2025-12-26": 2,389 "2025-12-27": 1,390 "2025-12-28": 2,391 "2025-12-29": 1,392 "2025-12-30": 1,393 "2025-12-31": 1394 },395 "year": 2025396 }397 },398 "cursor": null,399 "has_more": null400}Response#
A Contributions object in data.
See Data models for every field. The envelope around data is described in Responses.
Errors#
Failures are free: credits_charged is 0. Branch on error.code, never on the message.
| Code | HTTP | Retry | Meaning |
|---|---|---|---|
invalid_params | 400 | no | A parameter is missing, unknown or has the wrong type. |
unsupported_url | 400 | no | The URL is not one this endpoint accepts (wrong platform or form). |
not_found | 404 | no | The platform says this profile, post or item does not exist. |
Every request can also fail with the account and platform errors listed on the Errors page.
Example error:
1{2 "ok": false,3 "error": {4 "code": "not_found",5 "message": "The platform says this profile, post or item does not exist.",6 "retryable": false7 },8 "credits_charged": 0,9 "request_id": "req_0f8b47a070af626d548327d3"10}Related endpoints#
- GitHub user (
GET /v1/github/user) - GitHub user repositories (
GET /v1/github/user/repositories) - GitHub repository (
GET /v1/github/repository) - GitHub followers (
GET /v1/github/user/followers) - GitHub following (
GET /v1/github/user/following) - GitHub public activity (
GET /v1/github/user/activity) - GitHub pull requests by a user (
GET /v1/github/user/pull-requests) - GitHub trending repositories (
GET /v1/github/trending/repositories)