SerpApiでGoogle Map上のお店のレビューを取得してみた
はじめに
Google Place API 調べると、Google Map 上のお店のレビューは なぜか 5 件までしか取れません。
プレイス ライブラリ | Maps JavaScript API | Google Developers
もっと取る方法ないか調べると、Stack Overflow でSerpApiってのを見つけました。
To get more than 5 reviews from google places API - Stack Overflow
Stack Overflow で宣伝してて草です。Disclaimer 書いてて好感持てました。
無料枠もあったので、使ってみることにしました。
SerpApi
公式サイトによると、サーチエンジンをスクレイプする API だそうです。Google メインですが、Yahoo とかもありました。
Scrape Google and other search engines from our fast, easy, and complete API.
結構、いろんな大手企業に使われてそうです。すごい。
価格の相場がよくわかりませんが、無料枠も適度にあります。1アクセス 1 セントくらい。
サインアップ
サインアップするとこんな画面が出てくる。確認メールが来るのでクリックしたら verified される。
API とトークン
トークンはここから取得できます。
ほぼコピペ。token 部分だけ、環境変数から取ってくるようにしました。
いろんな API とそれに対応する説明・コード・JSON Example が書かれてます。
かなりたくさんサンプルコードがあります。
コード
ほぼコピペだけど、Google Map 上のレビューを取ってくる API はこんな感じです。トークンだけ環境変数で取ってきました。
data_id
は SerpApi 上の ID みたいで SerpApi のGoogle Maps APIから取得できます。
const SerpApi = require("google-search-results-nodejs");
const search = new SerpApi.GoogleSearch(process.env.API_KEY);
const params = {
engine: "google_maps_reviews",
data_id: "0x89c259af336b3341:0xa4969e07ce3108de",
};
const callback = function (data) {
console.log(data["reviews"]);
};
// Show result as JSON
search.json(params, callback);
こんな感じで環境変数を設定して実行します。
API_KEY="環境変数" node index.js
おわりに
Google の情報って API になかったら、取得できない気がしてましたが、こういうサービスもあるんですね。これも一つのエコシステムなんですかね。Google API もうちょい頑張ってくれよって気もしますが・・・。
Discussion