api documentation

We've made accessing data from Goodreads easy – you can search books and authors on the site, access a member's book shelves, add book reviews, and more! You can view all the API methods or contact us if there's something you'd like to build that we don't currently support.

getting started

Some of our methods require a developer key, which you can get after you register. Most methods you can access just by passing your key, but some you'll need to use OAuth.

The easiest way to get started using our API is with curl. Just replace YOUR_KEY with your developer key in the example below:

curl http://www.goodreads.com/api/book_url/Ender%27s%2BGame?key=YOUR_KEY

Example Goodreads response:
<GoodreadsResponse>
  <Request>
    <authentication>true</authentication>
    <key>YOUR_KEY</key>
    <method>api_book_url</method>
  </Request>
  <book id="375802">
    <title>Ender's Game (Ender's Saga, Book 1)</title>
    <isbn>0812550706</isbn>
    <link>
    http://www.goodreads.com/book/show/375802.Ender_s_Game?utm_medium=api&utm_source=book_link
    </link>
  </book>
</GoodreadsResponse>
    

using oauth

Writing data on Goodreads requires OAuth for authorization. To get started, you'll first need register your app.

OAuth is a simple way to allow third-party applications access to your data securly. It's based on existing standards and doesn't require you to give third-parties your username and password.

Learn more about OAuth.

example user flow

Once you've registered your app, you'll be able to request access on behalf of users to access their data using OAuth. Users will need to allow your application access from the Goodreads site. They'll be redirected to a page on Goodreads where they'll login in order to grant access. After allowing access they'll be redirected back to your site via the callback URL you provide us. At this point you'll be able to access their data using a token until they choose to revoke it.

example code

You can check out a Ruby example of how this works. We'll be adding examples in PHP and Python soon.