A Ruby wrapper around the Google Books API
Switch branches/tags
Latest commit 53dafd7 Aug 4, 2014 @visoft Merge pull request #4 from madwork/fix-examples
Fix require google_books for examples
Failed to load latest commit information.
lib Use HTTParty query tricks and handle API errors Jul 22, 2014
.rspec Initial Commit Aug 7, 2011
CHANGELOG.md Bumped version and added change to CHANGELOG Jul 3, 2013
Gemfile Initial Commit Aug 7, 2011
LICENSE Initial Commit Aug 7, 2011
google_books.gemspec Stopped restricting rake and made VCR use the existing cassette durin… Jul 3, 2013


Google Books

Google Books is a Ruby wrapper to the Google Books API The project was inspired by google-book. It is a nice wrapper, however the Google Book Search Data API "is deprecated as of May 26, 2011 and will be fully retired on December 1, 2011."


The usage is similar to that of google-book, but the semantics are a little different

require 'google_books' # Or hey, add it to your Gemfile

books = GoogleBooks::API.search('Douglas Crockford')
book = books.first
puts book.title
#=> "JavaScript: The Good Parts"
puts book.isbn
#=> "9780596517748"
puts book.covers[:thumbnail]
#=> "http://bks8.books.google.com/books?id=..."

In addition to the query, the GoogleBooks::API.search method takes in a hash of 3 different options:

  • count: The number of results that you want returned, currently the default is 10 (set by Google)
  • page: The page of results that you want. Combine this with total_results method of the GoogleBooks::API::Response, and implement paging in your application
  • api_key: For production apps, Google requires either OAuth 2.0 or an API key to request public data. See the API Documentation for more information.


Within your query that you pass to the search method, you can use special keywords as outlined in the API Documentation

  • intitle: Returns results where the text following this keyword is found in the title.
  • inauthor: Returns results where the text following this keyword is found in the author.
  • inpublisher: Returns results where the text following this keyword is found in the publisher.
  • subject: Returns results where the text following this keyword is listed in the category list of the volume.
  • isbn: Returns results where the text following this keyword is the ISBN number.

For example:

# Get the book with the isbn of 9781118035580
books = GoogleBooks::API.search('isbn:9781118035580')
book = books.first

puts book.title
#=> "Hands - on ASP.NET AJAX Control Toolkit"
puts book.authors.first
#=> "Damien White" (Shameless plug)
puts book.covers[:thumbnail]
#=> "http://bks7.books.google.com/books?id=..."

Book Attributes

  • title: String

    This will append a subtitle if one exists, like "JavaScript: The Good Parts"

  • authors: Array

  • publisher: String

  • published_date: String

    The published_date is represented by the format YYYY-MM-DD with MM and DD being optional

  • isbn: String

  • isbn_10: String

  • page_count: FixNum

  • categories: Array

  • description: String

  • average_rating: Float

  • ratings_count: FixNum

  • covers: Hash

    The keys are :thumbnail, :small, :medium, :large, :extra_large

    Not all of the image URLs are guaranteed to return something. Stick with thumbnail or small for the best results

  • preview_link: String

  • info_link: String