Skip to content
Python library implementing the GitHub API v3
Python Shell
Fetching latest commit...
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


This is a Python (2 and 3) library to access the Github API v3. With it, you can manage your Github resources (repositories, user profiles, organizations, etc.) from Python scripts.

It covers the full API (except recent additions, see "What's missing" bellow), and all methods are tested against the real Github site.

Should you have any question, any remark, or if you find a bug, or if there is something you can do with the API but not with PyGithub, please open an issue.

PyGithub is stable. I will maintain it up to date with the API, and fix bugs if any, but I don't plan new heavy developments.

What's new?

Thank you, dear stargazers!

Starting today (September 5th, 2013), we now need more than 8 bits to store the number of stargazers! Thank you so much!

Version 1.21.0 (November ??th, 2013)

  • Accept strings as well as Label objects in Issue.add_to_labels, Issue.remove_from_labels and Issue.set_labels. Thank you acdha for asking
  • Implement equality comparison for completable github objects (ie. those who have a url attribute). Warning, comparison is still not implemented for non-completable objects. This will be done in version 2.0 of PyGithub. Thank you OddBloke for asking
  • Add parameter author to Repository.get_commits. Thank you naorrosenberg for asking
  • Implement the statistics end points. Thank you naorrosenberg for asking


Starting with version 1.21.0, I'm going to twitt each new release. I rarelly twitt, and always about software development, so you might want to follow me to stay informed.

What's missing?

We now have automated ways to list URLs documented in the reference of Github API v3 and not covered by PyGithub.

Github API v3 URLs not (yet) covered by PyGithub

  • /applications/:client_id/tokens/:access_token (GET)
  • /authorizations/clients/:client_id (PUT)
  • /emojis (GET)
  • /feeds (GET)
  • /meta (GET)
  • /notifications (PUT)
  • /notifications/emails (GET)
  • /notifications/emails (PATCH)
  • /notifications/global/emails (GET)
  • /notifications/global/emails (PUT)
  • /notifications/organization/:org/emails (GET)
  • /notifications/organization/:org/emails (PUT)
  • /notifications/settings (GET)
  • /notifications/settings (PATCH)
  • /notifications/threads/:id (PATCH)
  • /notifications/threads/:id/subscription (DELETE)
  • /notifications/threads/:id/subscription (GET)
  • /notifications/threads/:id/subscription (PUT)
  • /repos/:owner/:repo/contents/:path (DELETE)
  • /repos/:owner/:repo/contents/:path (PUT)
  • /repos/:owner/:repo/notifications (GET)
  • /repos/:owner/:repo/notifications (PUT)
  • /repos/:owner/:repo/releases (GET)
  • /repos/:owner/:repo/releases (POST)
  • /repos/:owner/:repo/releases/:id (DELETE)
  • /repos/:owner/:repo/releases/:id (GET)
  • /repos/:owner/:repo/releases/:id (PATCH)
  • /repos/:owner/:repo/releases/:id/assets (GET)
  • /repos/:owner/:repo/releases/assets/:id (DELETE)
  • /repos/:owner/:repo/releases/assets/:id (GET)
  • /repos/:owner/:repo/releases/assets/:id (PATCH)
  • /repos/:owner/:repo/subscription (DELETE)
  • /repos/:owner/:repo/subscription (GET)
  • /repos/:owner/:repo/subscription (PUT)
  • /search/code (GET)
  • /search/issues (GET)
  • /search/repositories (GET)
  • /search/users (GET)
  • /user/teams (GET)


All the documentation is here:

Something went wrong with that request. Please try again.