api

Welcome to the Goodreads API. Some of the API methods will require you to register and get a developer key. Our write API uses OAuth for authorization. Learn more about how to use the API.

api methods

auth.user   —   Get id of user who authorized OAuth.
book.show   —   Get the reviews for a book given a Goodreads book id.
book.show_by_isbn   —   Get the reviews for a book given an isbn.
book.show_by_title   —   Get the reviews for a book given a title string..
list.show   —   Get data about a listopia list.
quotes.create   —   Add a quote.
review.create   —   Add review.
reviews.list   —   Get the books on a members shelf.
review.show   —   Get a review.
review.show_by_user_and_book   —   Get a user's review for a given book.
review.update   —   Update book reviews.
search.authors   —   Find an author by name.
search.books   —   Find books by title, author, or isbn.
shelves.add_to_shelf   —   Add a book to a shelf.
shelves.create   —   Add book shelf.
updates.friends   —   Get your friend updates.
user.show   —   Get info about a member by id or username.
user.friends   —   Get a user's friends.
user_status.create   —   Update user status.
user_status.destroy   —   Delete user status.

links & widgets

book links   —   how to build proper links to Goodreads pages.
reviews widget   —   embed Goodreads book reviews on your site.
update status   —   allow users to update their Goodreads status from your site.

api documentation

Get id of user who authorized OAuth

Get a xml file with the Goodreads user_id for the user who authorized access using OAuth. You'll need to register your app (required).
url: http://www.goodreads.com/api/auth_user
http method: GET

Get the reviews for a book given a Goodreads book id

Get an xml file that contains an excerpt (first 300 characters) of the most popular reviews of a book for a given internal Goodreads book_id. The reviews are from all known editions of the book.
url: http://www.goodreads.com/book/show   (sample url)
http method: GET
params:
  • page: 1-N (default 1). The page number of reviews.
  • id: A Goodreads internal book_id

Get the reviews for a book given an isbn

Get an xml or json file that contains an excerpt (first 300 characters) of the most popular reviews of a book for a given ISBN. The reviews are from all known editions of the book.
url: http://www.goodreads.com/book/isbn   (sample url)
http method: GET
params:
  • isbn: The isbn of the book to lookup.
  • callback: function to wrap JSON response if format=json
  • page: 1-N (default 1). The page number of reviews.
  • user_id: USER_ID (required only for JSON)
  • format: xml or json

example code for using json with callback:

          <script type="text/javascript">
          function myCallback(result) {
            alert('nb of reviews for book: ' + result.reviews.length);
          }
          var scriptTag = document.createElement('script');
          scriptTag.src = "http://www.goodreads.com/book/isbn?callback=myCallback&format=json&isbn=0441172717&user_id=USER_ID";
          document.getElementsByTagName('head')[0].appendChild(scriptTag);
          </script>
        

Get the reviews for a book given a title string.

Get an xml file that contains an excerpt (first 300 characters) of the most popular reviews of a book for a given title/author. The book shown will be the most popular book that matches all the keywords in the input string. The reviews are from all known editions of the book.
url: http://www.goodreads.com/book/title   (sample url)
http method: GET
params:
  • page: 1-N (default 1). The page number of reviews.
  • title: The title/author of the book to lookup.

Get data about a listopia list

xml version of list/show
url: http://www.goodreads.com/list/show/LIST_ID.xml   (sample url)
http method: GET
params:

Add a quote

Add a quote using OAuth. If you don't specify an author_id, it will try to look one up based on the author_name you provide. You'll need to register your app (required).
url: http://www.goodreads.com/quotes.xml
http method: POST
params:
  • isbn: ISBN of the book from which the quote was taken. This will not override the book_id if it was provided
  • quote[body]: The quote! (required)
  • quote[book_id]: id of the book from which the quote was taken
  • quote[author_id]: id of the author
  • quote[tags]: Comma-separated tags
  • quote[author_name]: Name of the quote author (required)

Add review

Add book reviews for members using OAuth. You'll need to register your app (required).
url: http://www.goodreads.com/review.xml
http method: POST
params:
  • review[review]: Text of the review
  • review[read_at]: Date (YYYY-MM-DD format, e.g. 2008-02-01)
  • book_id: Goodreads book_id (required)
  • review[rating]: Rating (1-5)

Get the books on a members shelf

Get the books on a members shelf. Customize the feed with the below variables.
url: http://www.goodreads.com/review/list?format=xml&v=2   (sample url)
http method: GET
params:
  • v: 2
  • page: 1
  • order: a, d
  • shelf: read, currently-reading, to-read, etc
  • sort: available_for_swap, position, votes, rating, shelves, avg_rating, isbn, comments, author, title, notes, cover, review, condition, date_started, random, date_read, year_pub, date_added, date_purchased, num_ratings, purchase_location, date_updated
  • per_page: 1-200
  • id: Goodreads id of the user

Get a review

Get an xml file that contains the review and rating
url: http://www.goodreads.com/review/show.xml   (sample url)
http method: GET
params:
  • page: 1-N (default 1). The page number of comments.
  • id: id of the review

Get a user's review for a given book

Get an xml file that contains the review and rating for the specified book and user
url: http://www.goodreads.com/review/show_by_user_and_book?format=xml   (sample url)
http method: GET
params:
  • user_id: id of the user
  • book_id: id of the book

Update book reviews

Update book reviews for members using OAuth. You'll need to register your app (required). This method must be called with a PUT request and the final, numeric portion of the URL is the review ID.
url: http://www.goodreads.com/review/1212.xml
http method: PUT
params:
  • review[review]: Text of the review
  • review[read_at]: Date (YYYY-MM-DD format, e.g. 2008-02-01)
  • review[rating]: Rating (1-5)

Find an author by name

Get an xml file with the Goodreads url for the given author name.
url: http://www.goodreads.com/api/author_url   (sample url)
http method: GET
params:

Find books by title, author, or isbn

Get an xml file with the most popular books for the given query. This will search all books in the title/author/isbn fields and show matches, sorted by popularity on Goodreads.
url: http://www.goodreads.com/search/search   (sample url)
http method: GET
params:
  • search[field]: Field to search, one of title, author, or genre (default is all)
  • page: Which page to return (default 1)
  • q: The query text to match against book title, author, and isbn fields. Supports boolean operators and phrase searching.

Add a book to a shelf

Add a book to a shelf using OAuth. You'll need to register your app (required).
url: http://www.goodreads.com/shelf/add_to_shelf.xml
http method: POST
params:
  • book_id: id of the book to add to the shelf

Add book shelf

Add book shelves for members using OAuth. You'll need to register your app (required).
url: http://www.goodreads.com/shelf.xml
http method: POST
params:
  • name: Name of the new shelf

Get your friend updates

Get your friend updates (the same data you see on your homepage) using OAuth. You'll need to register your app (required).
url: http://www.goodreads.com/updates/friends.xml
http method: GET
params:
  • update_filter: Which updates to show. Options are: friends (default - includes followers), following, top_friends.
  • update: Type of update. Valid values are: books, reviews, statuses.

Get info about a member by id or username

Get an xml file with the public information about the given Goodreads user.
url: http://www.goodreads.com/user/show   (sample url)
http method: GET
params:
  • username: Goodreads user name (not first name). Usernames are optional on Goodreads.
  • id: Goodreads user id.

Get a user's friends

Get an xml file with the given user's friends.
url: http://www.goodreads.com/friend/user?format=xml   (sample url)
http method: GET
params:
  • page: 1-N (default 1)
  • sort: last_online|date_added|first_name
  • id: Goodreads user_id (required unless using OAuth)

Update user status

Add status updates for members using OAuth. You'll need to register your app (required).
url: http://www.goodreads.com/user_status.xml
http method: POST
params:
  • user_status[book_id]: id of the book being reviewed
  • user_status[page]: page of the book
  • user_status[body]: status update

Delete user status

Delete a status update for a member using OAuth. You'll need to register your app (required).
url: http://www.goodreads.com/user_status/destroy/1.xml
http method: POST


links


reviews about a book widget

This is a javascript widget designed for online book catalogues (booksellers, libraries, etc) that will display the most popular reviews given an isbn. The reviews are from all editions of the book. View the demo to see it in action. (requires developer key)

update your goodreads status

Allows users to update their Goodreads status on your site! You can pass in the isbn to the javascript to allow them to update their status for a particular book. Put as many links as you want on your page, but only include the Javascript once.

We also have some badges you can use with this widget to link back to Goodreads:


Goodreads-badge-add-16px Goodreads-badge-read-16px Goodreads-badge-add-nobg-16px Goodreads-badge-read-nobg-16px Goodreads-badge-add-38px Goodreads-badge-read-38px Goodreads-badge-add-black-38px Goodreads-badge-read-black-38px

developer key
getting started
api terms
developer group (forums)
contact us
widgets



need help?


If you have any questions about our API, need some help getting started, or want to show off what you've built then check out the developer forum. If you have something you would like to build that isn't supported, please contact us — chances are good we will add your support.