On that page, you will see metadata about the book (e.g., title, author, language, the ISBN, etc.), as well as links to booksellers and libraries that might be able to sell you a copy of the book. Something that might be surprising is that you (and anyone else) can editthe record and see the history of revisions to the record. Think of Open Library as a big book-oriented wiki.

Using this book as an example, let's look at how to apply the three parts of the Open Library API:

get (to get an object)

things (to query for objects)

versions (to look for versions of objects)

Note that a good place to try out the API is the Open Library API Sandbox, which allows you to issue a query to the API and see the response.

First, you can issue the following get query:

curl http://www.openlibrary.org/api/get?key=/b/OL7668717M

to get a JSON object that holds metadata about the book. In fact, you can get the JSON response to show up nicely in the browser by attaching the following parameters to the URL

Second, let's figure out how to get the Open Library identifier for this book (which you needed for the get query) using a things query. If you have an ISBN-10 for the book (i.e., 0672328623) , you can use direct a query whose value is

There's plenty more to explore in the documentation of the API, including the list of types supported in the API.

It'll be interesting to see whether it will get a following primarily in the library community or in the larger world. The announcement of the API on the code4lib list (a "forum for discussion of computer programming in the area of libraries and information science") immediately prompted the question of why the API was not implemented using SRU (a protocol used, for example, at the Library of Congress). The ranges of responses in the thread (SRU is "incomprehensible to non-librarians" to "non librarian students look at the [SRU] document and start working with it straight away.") should be familiar to anyone who has struggled with the questions of whether to adopt an existing standard or protocol or to create one's own. How could concepts that are crystal clear to one group appear so obscure to another group? Who exactly is the audience for a given API? How do you accommodate multiple audiences in the design of an API?