Explore the data

The data can be extracted in a multitude of ways using the API endpoints documented below. We’re hoping by providing an array of interesting ways to query the data it will encourage exploration and experimentation. We also show you how to aggregate your own interesting data sets.

If you want queries to return the body of the text you will need to append the ?include_body=true query string. If you want to include comments you need to append ?include_comments=true.

All API endpoints also support JSONP. Just append the extension and the callback function name attribute you wish to use to your requests:


All chapters


The final revision of a specific chapter


Chapters one through to chapter nine, eg.:


All the revisions of a specific chapter


A single specific revision of a chapter


Comments can be queried specifically on a revision, eg.:


Individual comments:


The latest revision of a chapter at a specific time


The time stamp is of the format yyyy-m-d-h-m-s (year, month, day, hour [24], minute, second).

Search for all revisions of all chapters that contain a specific word


Search for all revisions of all chapters that were created after a particular point in time


Search for all revisions of all chapters that were created before a particular point in time


The to, from and query options can be combined, eg:


Instances of a word in a chapter


Instances of all words in a chapter


Instances of a word in a revision


Instances of all words in a chapter


Instances of a word the whole book


Instances of all words in the whole book


Data Visualisations

Here is a visualisation of how each chapter grew in size over the 24 hours the book was written. With 10 minute samples measuring the number of words in each chapter there are 12960 points of data powering this graph.

To extract a dataset such as this you could run the following code in Safari Web Inspector or the Chrome Developer Tools console open on this page:

After running this function you will end up with a array of data assigned to window.chapters that should look like this:

Further manipulation of the data is required before we pass it to the charting library chart.js: