Skip to main content
This is a pre-production deployment of Warehouse. Changes made here affect the production instance of PyPI (
Help us improve Python packaging - Donate today!

Library to access

Project Description

A Python interface to

By Ben Rosser, released under MIT License (see LICENSE for full text).

This is a Python library for accessing and retrieving links to comics from the xkcd webcomic by Randall Munroe. It is NOT endorsed or made by him, it’s an entirely independent project.

It makes use of the JSON interface to Randall’s site to retrieve comic data. Both Python 2 and Python 3 are supported, and there are no dependencies beyond the Python standard library, so xkcd’s footprint should be very light.

There is support for accessing specific comics, the latest comic, or a random comic. Comic metadata can be queried and the comics themselves can be downloaded onto your local system. The goal is simply to provide a relatively Pythonic wrapper around the xkcd API for any Python program or library that wants to access information about xkcd comics, for one reason or another.

The xkcd module, as of version 2.4.0, also supports getting information on What If articles from This information is generated by scraping the What If archive page with a HTML parser.

Full API documentation is available here.


Version 2.4.2:

  • Switched to using HTTPS URLs for all xkcd queries.

Version 2.4.1:

  • Routines that take comic/article numbers (e.g. xkcd.getComic()) now also can take strings containing cardinal numbers.

Version 2.4.0:

  • Added preliminary What If support; routines for querying basic data about What If articles now exist.
  • will create its default directory (~/Downloads) if it does not already exist, rather than simply failing.
  • All prints to standard output are now wrapped in “silent” options that now default to True (this affects xkcd.getComic and; if silent is set, output won’t be printed.
  • Significantly improved documentation for all available functions and classes.

Version 2.3.3:

  • Made pypandoc conversion optional; long_description will be MD formatted if it cannot be imported (and rST-formatted if it can).

Version 2.3.2:

  • Fixed distutils URL to point at TC01/python-xkcd, not TC01/xkcd.
  • Started using pypandoc to dynamically turn into a RST long-description.

Version 2.3:

  • Fixed ASCII bug in Python 2.x
  • Created Sphinx documentation and uploaded it to

Version 2.2:

  • Fixed very silly bug with xkcd.getComic()
  • Added a getExplanation() which returns an explainxkcd link for a Comic().
  • Added support for Python 3!

Version 2.1:

  • Fixed bugs with function
  • Added optional parameter to to change name of output file
  • Added more information to long_description text


Contributions from (github users, unless indicated otherwise):

  • @Kyu
  • Tanya Sandoval (@tsando)
Release History

Release History

This version
History Node


History Node


History Node


History Node


History Node


History Node


History Node


History Node


History Node


History Node


Download Files

Download Files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

File Name & Checksum SHA256 Checksum Help Version File Type Upload Date
xkcd-2.4.2.tar.gz (10.1 kB) Copy SHA256 Checksum SHA256 Source Mar 26, 2017

Supported By

WebFaction WebFaction Technical Writing Elastic Elastic Search Pingdom Pingdom Monitoring Dyn Dyn DNS Sentry Sentry Error Logging CloudAMQP CloudAMQP RabbitMQ Heroku Heroku PaaS Kabu Creative Kabu Creative UX & Design Fastly Fastly CDN DigiCert DigiCert EV Certificate Rackspace Rackspace Cloud Servers DreamHost DreamHost Log Hosting