Pipeで使えるWeb検索:Google AJAX Search API

Googleの検索結果をAPIから取得できる。元々JavaScript向けのAPIだったが、それ以外でも使えるようになった。Google Web Search API Class Referenceの下の方にあるFlash and other Non-Javascript Environmentsに細かい仕様は書いてある。基本となるURLは下記。これにパラメーターを付け足していく。☆は必須のパラメーター。

http://ajax.googleapis.com/ajax/services/search/web

リファレンスにはhttpsって書いてあるけどYahoo Pipeshttpsをサポートしていない。

☆q 検索ワード。「site:」なんかの特殊な検索条件もここ。
☆v プロトコルバージョン。現時点では1.0固定
userip APIへのアクセス過多でGoogleから怒られたらこれくっつけとくと良いらしい。
rsz 検索結果の取得数。smallと入れたら4件、largeと入れたら8件取得する。1から8までの数字を入れても良い。Custom Search Engines用に10件まで取得できるfiltered_cseという値が用意されているがPipeから普通に使える。つまりPipeからは10件まで取得できる。デフォルトではsmall。
hl インターフェースの言語。検索する文書の言語では無い。Pipeから使うときに何か関係あるかは不明。デフォルトではen。
key 色々なサイトを見るとAPIkeyの取得が必須みたいな事を書いてあるが、別に無くても良い。リファレンスにもkeyを付けるのがベストだけど別に無くても使えるよとはっきり書いてある。APIが公開された当初は必須だったんだろう。
start 検索結果の何件目から取得するかを決める。1件目は1では無く0。
callback 要するにコールバックらしい。Pipeから使う分にはたぶんなんの関係も無い。
context コールバックに関連して云々と書いてある。これもたぶん気にしなくていい。
cx Custom Search EngineのユニークIDらしい。あんまり関係なさそう。
cref linked Custom Search Engine関連のフラグらしい。あんまり関係なさそう。
safe ぐぐるさんのSafe Searchフラグ。active、moderate、offの3つ。デフォルトではmoderate。
lr 検索する文書の言語。ここに入力値の一覧がある。日本語はlang_ja。
filter 類似ページのフィルタフラグ。0:フィルタしない、1:フィルタする。デフォルトでは1。
gl 国別コード。jpとか入る。一覧はここ。lrとの違いがいまいち分かりにくいが、あっちは検索する文書に使われている言語。日本はjp。

サンプルは下記。Fetch Dataを使うといい。検索結果はresponseData.results以下にある。

http://ajax.googleapis.com/ajax/services/search/web?v=1.0&rsz=filtered_cse&q=test&lr=lang_ja&gl=jp

結果が10件までというのが少ないが、startを10に設定して再びFetch Dataすればいい。
Pipeに組み込むに当たって問題が無い訳じゃ無い。Loopで使うと検索結果がおかしい。たぶんUrl Builderと一緒で2バイト文字が無視されてる感じ。