:octocat: A simple API that returns number of Github trending repositories and developers.
Credits: Illustration by unDraw
Thank you to all our backers! 🙏 [Become a backer]
API status is available at uptimerobot.
See the full API documentation in Apiary.
How to scrape any website and build an API using cheerio.js
Receive an array of trending repositories.
URL Endpoint:
https://ghapi.huchen.dev/repositories?language=javascript&since=weekly
Parameters:
language
: optional, list trending repositories of certain programming languages, possible values are listed here.since
: optional, default to daily
, possible values: daily
, weekly
and monthly
.spoken_language_code
: optional, list trending repositories of certain spoken languages (e.g English, Chinese), possible values are listed here.Response:
[
...
{
"author": "google",
"name": "gvisor",
"avatar": "https://github.com/google.png",
"url": "https://github.com/google/gvisor",
"description": "Container Runtime Sandbox",
"language": "Go",
"languageColor": "#3572A5",
"stars": 3320,
"forks": 118,
"currentPeriodStars": 1624,
"builtBy": [
{
"href": "https://github.com/viatsko",
"avatar": "https://avatars0.githubusercontent.com/u/376065",
"username": "viatsko"
}
]
}
...
]
Note that GitHub trending page sometimes is empty, in that case this API returns
[]
in response, your application should be able to handle it or read from previous cache.
Receive an array of trending developers.
URL Endpoint:
https://ghapi.huchen.dev/developers?language=javascript&since=weekly
Parameters:
language
: optional, list trending repositories of certain programming languages, possible values are listed here.since
: optional, default to daily
, possible values: daily
, weekly
and monthly
.Response:
[
{
"username": "google",
"name": "Google",
"type": "organization",
"url": "https://github.com/google",
"avatar": "https://avatars0.githubusercontent.com/u/1342004",
"repo": {
"name": "traceur-compiler",
"description": "Traceur is a JavaScript.next-to-JavaScript-of-today compiler",
"url": "https://github.com/google/traceur-compiler"
}
}
]
type
could beorganization
oruser
.
URL Endpoint:
https://ghapi.huchen.dev/languages
Response:
[
{
"urlParam": "1c-enterprise",
"name": "1C Enterprise"
},
{
"urlParam": "abap",
"name": "ABAP"
},
{
"urlParam": "abnf",
"name": "ABNF"
},
{
"urlParam": "actionscript",
"name": "ActionScript"
}
]
URL Endpoint:
https://ghapi.huchen.dev/spoken_languages
Response:
[
{
"urlParam": "ab",
"name": "Abkhazian"
},
{
"urlParam": "aa",
"name": "Afar"
},
{
"urlParam": "af",
"name": "Afrikaans"
},
{
"urlParam": "ak",
"name": "Akan"
}
]
You could also use the API as a NPM package.
$ npm install --save @huchenme/github-trending
import {
languages,
spokenLanguages,
fetchRepositories,
fetchDevelopers,
} from '@huchenme/github-trending';
fetchRepositories({ language: 'ruby', since: 'monthly' }).then(
(repositories) => {
console.log(repositories);
}
);
fetchDevelopers({ language: 'javascript' }).then((developers) => {
console.log(developers);
});
console.log(languages);
console.log(spokenLanguages);
List all languages
[
{
urlParam: '1c-enterprise',
name: '1C Enterprise',
},
{
urlParam: 'abap',
name: 'ABAP',
},
{
urlParam: 'abnf',
name: 'ABNF',
},
{
urlParam: 'actionscript',
name: 'ActionScript',
},
];
List all spoken languages
[
{
urlParam: 'ab',
name: 'Abkhazian',
},
{
urlParam: 'aa',
name: 'Afar',
},
{
urlParam: 'af',
name: 'Afrikaans',
},
{
urlParam: 'ak',
name: 'Akan',
},
];
Receive an array of trending repositories.
params:
language
: possible values are the the ones from languages
or just find here.since
: daily
, weekly
or monthly
, default to daily
.spokenLanguageCode
: possible values are the the ones from spokenLanguages
or just find here.[
...
{
author: 'google',
name: 'gvisor',
avatar: 'https://github.com/google.png',
url: 'https://github.com/google/gvisor',
description: 'Container Runtime Sandbox',
language: 'Go',
languageColor: '#3572A5',
stars: 3320,
forks: 118,
currentPeriodStars: 1624,
"builtBy": [
{
"href": "https://github.com/viatsko",
"avatar": "https://avatars0.githubusercontent.com/u/376065",
"username": "viatsko"
}
]
}
...
]
Receive an array of trending developers.
params:
language
: possible values are the the ones from languages
or just find here.since
: daily
, weekly
or monthly
, default to daily
.[
...
{
username: 'google',
name: 'Google',
type: 'organization',
url: 'https://github.com/google',
avatar: 'https://avatars0.githubusercontent.com/u/1342004',
repo: {
name: 'traceur-compiler',
description:
'Traceur is a JavaScript.next-to-JavaScript-of-today compiler',
url: 'https://github.com/google/traceur-compiler'
}
}
...
]
You can develop by using docker.
$ docker build -t github-trending-api .
$ docker run -d --rm -p 8000:8888 github-trending-api:latest
This project exists thanks to all the people who contribute. [Contribute].
Become a financial contributor and help us sustain our community. [Contribute]
Support this project with your organization. Your logo will show up here with a link to your website. [Contribute]
MIT