見出し画像

Google Places API (New) を使った店舗情報と口コミデータの取得方法

はじめに

Google mapはさまざまな店舗・口コミ情報が掲載されており、観光などのビジネスで活用できる情報がたくさんあります。

今回はそんなgoogle mapの情報をAPI経由で使う方法をご紹介します!

そこで、Google Maps Platform の Places API (New) を使って、簡単に店舗情報や口コミデータを取得する方法を紹介します。この記事では、Pythonを使った実装方法をステップバイステップで解説しますので、ぜひ参考にしてください。



注意事項: Google Mapのスクレイピングは利用規約で禁止されています

まず始めに、Google Maps の利用規約を確認しましょう。Googleは、Google Mapsのデータをスクレイピングすることを明確に禁止しています。そのため、データを取得する際には、必ず公式APIを使用してください。詳細はGoogle Maps Platform 利用規約をご覧ください。

ネットを検索すると、さまざまなスクレイピングツールなどが出てきますが、しっかり規約を確認しておきましょう。

利用規約より抜粋

以下に日本語訳にしたものを提供します。

3.2.3 サービスの不正使用に関する制限。

(a) スクレイピングの禁止。お客様は、サービス外での使用を目的として、Google マップ コンテンツをエクスポート、抽出、またはその他の方法でスクレイピングしてはなりません。たとえば、お客様は次の行為を行ってはなりません。
(i) サービス外で Google マップ コンテンツをプリフェッチ、インデックス登録、保存、再共有、または再ホストすること。
(ii) Google マップ タイル、ストリートビュー画像、ジオコード、ルート案内、距離マトリックス結果、道路情報、場所情報、標高値、およびタイムゾーンの詳細を一括ダウンロードすること。
(iii) 会社名、住所、またはユーザー レビューをコピーして保存すること。
(iv) テキスト読み上げサービスで Google マップコンテンツを使用すること。

https://cloud.google.com/maps-platform/terms#3.-license

1. Google Cloud Platform プロジェクトの作成と Places API の有効化

まずはじめに、Google Cloud Platform (GCP) でプロジェクトを作成し、Places API を有効化する必要があります。

  1. Google Cloud Consoleにログインし、Google Cloud Consoleにアクセスします。

  2. 新しいプロジェクトを作成します。プロジェクト名を入力し、作成ボタンをクリックします。

  3. ナビゲーションメニューから**「API とサービス」** > **「ライブラリ」**に移動します。

  4. 検索バーに**「Places API」と入力し、表示された「Places API」をクリックして「有効化」**を選択します。

特に以下に注意してください。まずはgoogle cloudのプロジェクトを設定しPlace APIを有効にします。実際に有効になっているかは以下の2つで確認してください。

APIが自分のPJに登録されている
ENABLE APISが完了している

2. API キーの取得と制限の設定

次に、API キーを取得して、適切な制限をかけます。

  1. 「API とサービス」 > **「認証情報」**に移動します。

  2. **「認証情報を作成」ボタンをクリックし、「API キー」**を選択します。

  3. 作成された API キーをコピーし、**「API キーの制限と名前変更」**から適切な制限(IP アドレスやリファラ制限)を設定します。

3. Places API を使って店舗情報と口コミデータを取得

Pythonを使って、実際に API リクエストを送信し、データを取得する方法を紹介します。

import requests
import json

API_KEY = "xxxx"

# 場所の検索エンドポイント
search_url = "https://maps.googleapis.com/maps/api/place/findplacefromtext/json"
search_params = {
    'input': 'スターバックス',
    'inputtype': 'textquery',
    'fields': 'place_id',
    'key': API_KEY
}

# 場所の検索リクエスト
response = requests.get(search_url, params=search_params)
response_data = response.json()

# レスポンスデータのデバッグ出力
print("Search Response:", json.dumps(response_data, indent=2, ensure_ascii=False))

if 'candidates' in response_data and len(response_data['candidates']) > 0:
    place_id = response_data['candidates'][0]['place_id']
else:
    raise Exception("Place not found")

# 場所の詳細エンドポイント
details_url = "https://maps.googleapis.com/maps/api/place/details/json"
details_params = {
    'place_id': place_id,
    'fields': 'name,rating,reviews',
    'key': API_KEY
}

# 場所の詳細リクエスト
response = requests.get(details_url, params=details_params)
details = response.json()

# レスポンスデータのデバッグ出力
print("Details Response:", json.dumps(details, indent=2, ensure_ascii=False))

# 口コミデータの抽出
reviews = details.get('result', {}).get('reviews', [])
for review in reviews:
    print(f"Review by {review['author_name']}: {review['text']} (Rating: {review['rating']})")

# レスポンスデータを JSON ファイルに保存
with open('place_details.json', 'w', encoding='utf-8') as json_file:
    json.dump(details, json_file, ensure_ascii=False, indent=2)

print("詳細情報が place_details.json に保存されました。")

このコードでは、まず`findplacefromtext`エンドポイントを使って「スターバックス」の場所IDを取得しています。次に、`place/details`エンドポイントを使って、その場所の詳細情報(名前、評価、口コミ)を取得しています。最後に、取得した詳細情報を`place_details.json`ファイルに保存しています。

エラーの対処方法

もし以下のエラーが発生した場合、

This API project is not authorized to use this API.

以下の点を確認してください:

  1. API の有効化: Places API が有効になっているか確認します。

  2. API キーの制限: API キーの使用範囲が正しく設定されているか確認します。

  3. 課金情報: GCP プロジェクトに課金情報が設定されているか確認します。

まとめ

Google Places API (New) を使うことで、簡単に店舗情報や口コミデータを取得することができます。この記事では、Pythonを使ってAPIリクエストを送信し、データを取得して JSON ファイルに保存する方法を紹介しました。ぜひ試してみてください!

参考にした記事もぜひご覧ください:

これで、Google Places API (New) の基本的な使い方とできることが理解できたと思います。次回はさらに応用的な使い方を紹介していきますので、お楽しみに!