Help us understand the problem. What is going on with this article?

GoogleBooksAPIでISBNコードを使って書籍を検索するときのワナ

More than 3 years have passed since last update.

はじめに

GoogleBooksAPIを使うと様々な条件で書籍の検索ができます。
ややこしい登録や認証が不要なのでとても使いやすいです。
ですがISBNコードで書籍を検索するときはちょっと注意が必要という話です。

忙しい人のために

ISBNで検索するときは、

https://www.googleapis.com/books/v1/volumes?q=search+isbn=[ISBN10]

じゃなくて

https://www.googleapis.com/books/v1/volumes?q=isbn:[ISBN10]

で検索しよう。

説明

GoogleBooksAPIによると検索APIの基本形は以下のようになっています。

https://www.googleapis.com/books/v1/volumes?q=search+terms

この"terms"の部分に検索パラメータを当てはめればOKということらしいです。
例えばISBN10で検索したいときは次のURLになるわけです。

https://www.googleapis.com/books/v1/volumes?q=search+isbn=489471194X

ですがこのURLでリクエストを送ると書籍が4つも返ってきます(実際の結果は上記URL参照)。

Title ISBN10
C++ FAQ 489471194X
雲の王 4087453405
エキスパート Cプログラミング 4756116396
C言語ポインタ完全制覇 4774111422

ISBNでちゃんと検索できているのは最初の一冊だけです。
「雲の王」というのは普通の小説なので関連性もありません。

なぜ固有IDであるはずのISBNで複数の本が引っかかるのかというと、どうやらレスポンスの"PreviewLink"という項目の値に検索対象のISBNと同じ文字列が入っているからのようです。

"previewLink":http://books.google.co.jp/books?id=QRkPswEACAAJ&dq=search+isbn%3D489471194X&hl=&cd=2&source=gbs_api

結局のところISBNで正しく検索するためのURLは次の形式になります。

https://www.googleapis.com/books/v1/volumes?q=isbn:[ISBN10]

今度はちゃんとISBNで検索できます。

https://www.googleapis.com/books/v1/volumes?q=isbn:489471194X

  • ISBN10じゃなくてISBN13を使ってももちろんOKです。
  • 他の検索パラメータでも同じ事象があるかもしれませんが、試していません。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away