ライブ会場、キャンプ場等、施設名 は分かっている状態で、その施設の住所を取得できないかを調べていました。
GUIで提供されている施設検索はそれなりにいろいろありそうです。

上記の検索結果を元に、スクレイピングで頑張って取得するのも、大変なのでデータとして返してくれるAPIがないか捜したところ、Google Place API目的が果たせそうでした。
使ってみた結果を、記載します。


ドキュメント

以下、Places API Web Service の APIドキュメントのリンクになります。

プレイス検索  |  Google Places API Web Service  |  Google Developers

ここに記載されているテキスト検索リクエストを使います。

たとえば、「東京のピザ屋」や「新宿駅周辺の靴店」を検索できます。

との記載があり、このテキストに「横浜アリーナ」、「海浜幕張公園」を指定すれば、施設の住所が返ってくるのではとの目論見です。

ただ、1回のリクエストで、周辺検索リクエスト 10 回分のAPI割り当て量を使用するようなので、あまり大量にリクエストは投げられません。

使用制限は、Google 周辺検索サービスと Google プレイス テキスト検索サービスとで共通ですが、テキスト検索サービスには 10 倍の乗数が適用されます。つまり、テキスト検索リクエスト 1 回で、リクエスト 10 回分の割り当て量を使用することになります。Google Maps APIs Premium Plan の契約の一部として Google Places API を購入した場合、乗数は異なります。詳しくは、Google Maps APIs Premium Plan のドキュメントをご覧ください。

使用制限と購入  |  Google Places API Web Service  |  Google Developersリクエストの上限の記載があります。

Google Places API Web Service はデフォルトで、24 時間あたりの無料リクエスト数を 1,000 件までと定めています。これは、クライアント側とサーバー側のリクエスト数の合計で計算されます。 この制限を超えると、アプリでエラーが生じるようになります。 Google API Console で課金を有効にして本人確認を行うことで、この制限を無料で 24 時間あたり最大 150,000 件のリクエストに引き上げることができます。 本人確認にはクレジット カードが必要です。 クレジット カード情報は単にユーザーの本人確認を行うために使用するものであり、 このカードに Google Places API Web Service の使用料が請求されることはありません。

本人確認のためのカード登録無しだと、テキスト検索は 24時間あたり、100リクエストまで実行可能です。


client API

Google API は大抵、Google 側で client API を準備してくれていますが、Google Place API については client API はなさそうです。third party の client は github が見つかりますので、ガッツリ使うのであれば、使用を検討してもよいかと思います。


Pythonでテキスト検索リクエストを実行してみる

python で テキスト検索リクエストを実行してみます。
library を使うほどではないかと思いましたので、requestsAPI を叩きます。

  • 東京 Zepp DiverCity TOKYO指定
    日本語で住所が返ってこないので、 'language': 'ja' クエリに指定しておきます。

    url = 'https://maps.googleapis.com/maps/api/place/textsearch/json'
    q = {'query': '東京 Zepp DiverCity TOKYO',
         'language': 'ja',
         'key': 'Google API キーを指定する'}
    import requests
    s = requests.Session()
    s.headers.update({'Referer': 'www.monotalk.xyz/example'})
    r = s.get(url, params=q)
    json_o = r.json()
    print(json_o)
    

  • Output

    {'html_attributions': [], 'status': 'OK', 'results': [{'rating': 4.2, 'id': '6b743b81b84f609f0b1f37eef1070aca756382e8', 'name': 'Zepp DiverCity (TOKYO)', 'types': ['point_of_interest', 'establishment'], 'geometry': {'location': {'lat': 35.6247662, 'lng': 139.7746041}}, 'formatted_address': '日本, 〒135-0064 東京都江東区青海1丁目1−10', 'reference': 'CmRRAAAAUFO-W0RMybiQvu_6AJtGOLPXtDhp8cD4NoIY1Ke6gII2uEFSg84TMTu6KKsy1BuRbAOmQTMTbjzTx3R5sG5OKSO66WkU6a_I178ft7tnfDhndGJEhBfMrn_NgaQh7yfAv_Ds-JvGhRNT-YNUT_X2eYhHT4Ba9jzOHsy7A', 'icon': 'https://maps.gstatic.com/mapfiles/place_api/icons/generic_business-71.png', 'photos': [{'height': 1520, 'width': 2688, 'html_attributions': ['<a href="https://maps.google.com/maps/contrib/110360010794398167016/photos">Alen Lin</a>'], 'photo_reference': 'CoQBdwAAANyPNFDa5s7ulWuaXMZXkyAO5NHsFVZbqbgAncs4WF3z3SE5Ea5ZTx94BP6vONCRt5NY9PkHjZdifAsEdalHVBlYIGNjcMe0OSoDGxDydaQImIC3E7c3fUTQMxwPr4I0QsS4_VKvM9k5shUa11gcm75HAqF_s6MUVdN4DC5t5JZpEhDjBj6Kew8q1hEVeAc0GPUkGhTPvgF3CgjLUu47ULf7bbE9YAbi0g'}], 'place_id': 'ChIJ9asxJPiJGGARYejRf2YfJHg'}]}
    

  • 若洲公園指定

    url = 'https://maps.googleapis.com/maps/api/place/textsearch/json'
    q = {'query': '若洲公園',
         'language': 'ja',
         'key': 'Google API キーを指定する'}
    import requests
    s = requests.Session()
    s.headers.update({'Referer': 'www.monotalk.xyz/example'})
    r = s.get(url, params=q)
    json_o = r.json()
    print(json_o)
    

  • Output
    場所によっては複数候補地が返ってきます。

    {'results': [{'reference': 'CmRRAAAA0joK_o2c-eQFk_Y1UD1wuLxFC4u4UqNs0pjiZs9e9jwX8OtdCXx3zuEuehMSUdNgwqJHDEsTi2O1a7khRYa3zJKqgSp0qquNYahMxuGXqNHmUkCMUSxor_P-yZ3IwtRQEhDXek4qCVBtxyEpDOF0Hf_7GhQxoPV8EgKAqRHcokWaE3NJWN9jnA', 'photos': [{'photo_reference': 'CoQBdwAAAKA0XT2ibyc2g0gjVpUOnonCLO8you4cjwANA183GGlYFKJQuRe37stI0MxI7qkpzEzdXf6hx83H0NYRWHoVIuFY_ph2B-bjWRSd45wgtimGJeCBBN9Fk7wBJ5YgVkDpK28d6nlglxs6GTCsozb4GcF-juDxn4eImFuO3687lAEAEhAojDDTVQWrja0hrK5Yvt5eGhS2IADJUym4G7TSbKwprOKNYv_9tA', 'height': 3024, 'html_attributions': ['<a href="https://maps.google.com/maps/contrib/116199814765605130542/photos">Zaki Toshi</a>'], 'width': 4032}], 'rating': 3.9, 'geometry': {'location': {'lat': 35.6186584, 'lng': 139.8338709}}, 'formatted_address': '日本, 〒136-0083 東京都江東区若洲36', 'place_id': 'ChIJ7YoLfOpiGGARseeVoAT541U', 'types': ['park', 'campground', 'lodging', 'point_of_interest', 'establishment'], 'id': 'f815419c09131f936cb3266cec334e5f9e46ae82', 'name': '江東区立若洲公園キャンプ場', 'icon': 'https://maps.gstatic.com/mapfiles/place_api/icons/generic_recreational-71.png'}, {'reference': 'CmRSAAAAxwKMc3hul-Zem1Kekz_vG2j0u-BAT9qSNFVnLAT02wjej32tQq_Th9UuLRvGp_2Lft5hmtZXLJTemDsbETyX427xAYxhJI7coriRENJ6MeQb1DJXJuHBO9e0MKcAOvcKEhDhp5zFThabi4QAqGZpklMfGhRyuPOsTzSmIP4LbEDCM5kwWcFfmA', 'photos': [{'photo_reference': 'CoQBdwAAAKRm8nLZyjUNvID4FOLGS0lKXBQv3KRjICAlD90FzHojukDNLMP-ZocHos4yNROJWA9e79KFJK-sRi3aOHyrktlS-OjzZO3lY_x-hXy0fCSnuyAlLQsexe9qYuPE-yL5l9dQOA3jNtfOI4qBTVfNG_Au9a8HKsdMZabej_skjv2HEhCQZPVQXuUDDG6D-GpYRoHbGhT58U1nBX7G9X7mUdxK6DBJ637osA', 'height': 1152, 'html_attributions': ['<a href="https://maps.google.com/maps/contrib/103948332800678130729/photos">Kenichi Hidai</a>'], 'width': 2048}], 'rating': 4.1, 'geometry': {'location': {'lat': 35.6223006, 'lng': 139.837246}}, 'formatted_address': '日本, 〒136-0083 東京都江東区若洲3−1−2', 'place_id': 'ChIJD3pXJupiGGARR2IX7ZKArrM', 'types': ['park', 'point_of_interest', 'establishment'], 'id': 'a8b454f7540a4d48bb6cc6253b92c5bebcff3d4c', 'name': '若洲海浜公園', 'icon': 'https://maps.gstatic.com/mapfiles/place_api/icons/generic_recreational-71.png'}, {'reference': 'CmRRAAAAFhGPkkPzJ5_dKVHuybuhQ2hr5yRagvisNadWz0ruj_QmNmi95_NxXZuTHKrJPM-V61JRFFlGfIqd6RI8XrifHSm-2l1igqAx2pBCHu-bjvj9DAmYiuqvJt_ZzuX26H0dEhDClwxImamGffLcitiIdkC0GhQv5hwoTTwVy23VTzDfGwnJCWf2ng', 'photos': [{'photo_reference': 'CoQBdwAAAAMMN92IUIYdv8LVmt2HL9aWy-L6dLwkF64juvWd-7zAmIqkF2mF-P8XqeuX-DrHoe1oa6zlS1io2O3WgmqwHGD6bGhL2GkaVh80TevKE37rlMatvhZrynEZ_rsRJMdN75P2RJljZcvDlUOEKSceutRT_hQY69Q5dg8b2fAEQtmKEhD-Z2vaqZktE4Kui8zl_dDlGhQKZ2JsewnHk-hNHilL0CsHw4uLdw', 'height': 2160, 'html_attributions': ['<a href="https://maps.google.com/maps/contrib/113775032873341935563/photos">林芳彦</a>'], 'width': 3840}], 'geometry': {'location': {'lat': 35.630678, 'lng': 139.837665}}, 'formatted_address': '日本, 〒136-0083 東京都江東区若洲3丁目1−1', 'place_id': 'ChIJicWY6bxiGGAR2nyKPply2SE', 'types': ['park', 'point_of_interest', 'establishment'], 'id': '1642053d1810f50b0177ee8a0ef6e87304413686', 'name': '若洲海浜公園 ヨット訓練所', 'icon': 'https://maps.gstatic.com/mapfiles/place_api/icons/generic_recreational-71.png'}, {'reference': 'CmRSAAAAy9PzOwjFRgR636OxiqAX-S_gkV8R8s0D1kCJMMTmAJtLyID15r8WPebmm9FX9ZE4r1DIh2OX-oJWiR0ZtweDy-4FNJ8hrHXPNouJ9RIEhEIbyokXhINEE0OJuzENt1OiEhBr3Hm_5n9qkGsiLm7dn4Z-GhQQuliGjuQCDD59_2XJ2QlwzNX1gg', 'photos': [{'photo_reference': 'CoQBdwAAAEa3IxA7F-nSQBKTc-rIkZZnUvdxa7qIvXTKEB9Mfvvc8uoIFTETcFvaz4FEc7-lbcGk47zjzxIhw1TSgpjr2hSpvC0uJ2DB6YF8D2L1Vw4vlXSlmlgBRzS56C_Y-TS9JuvP4mcPclhqYFhumSZwQhLoEXuMneXMiAN_yGdeLJ6UEhAAmbYEPSwy7zXDxm2fTxXrGhRwzC3BPfsAGLi8ajDoyU41X_ox9A', 'height': 1152, 'html_attributions': ['<a href="https://maps.google.com/maps/contrib/103863857639851148185/photos">Takeshi W</a>'], 'width': 2048}], 'rating': 3.8, 'geometry': {'location': {'lat': 35.61902420000001, 'lng': 139.83403}}, 'formatted_address': '日本, 〒136-0083 東京都江東区若洲3−2−1', 'place_id': 'ChIJzZCZgOpiGGARTg_xJ7S2C-o', 'types': ['point_of_interest', 'establishment'], 'id': 'a347c294ef7e5c3c17d16dfc073bc26c6be8aba7', 'name': '若洲海浜公園サイクリングコース', 'icon': 'https://maps.gstatic.com/mapfiles/place_api/icons/generic_business-71.png'}, {'reference': 'CmRRAAAASS5_s2oHtvE1P20EQIqP-PcFvVCLkEuVk0_aYUxnFVO_ph54QidI5nJTvwBk6dDz6I7n67GTHdDYfUN-AwRd6Y6SSyQIk-J1GQerkIIT1ZxMdXrQwo14zK_Bw7omC3DhEhDBr-XioXjLPblBQNxeg3ubGhRRvDfRcBb_uGakNuY4sRbaoQ7fbg', 'photos': [{'photo_reference': 'CoQBdwAAAFzl1N-WkKJ-TdcupSM7s3o8ApNxP18S_eETbiasn69pXsXn7zvpIxEC2QG4wjw9_IfGYeGKq0dDZJ08K8mokcug_ATaPTGBDAKm5V2RqnEhxPrBexsJb66OKKbqlZwrAr3HfLa1_sltIWes3IPFu4VdmGHRDhLYpU3lpAsS-JOPEhB5kz-9IKAHs_wyv0w0IpFAGhSCoazXIRSI1JZiGGOE4KffyX2fcw', 'height': 1704, 'html_attributions': ['<a href="https://maps.google.com/maps/contrib/103953202283973195473/photos">juicymilk g</a>'], 'width': 2272}], 'geometry': {'location': {'lat': 35.6186492, 'lng': 139.8338437}}, 'formatted_address': '日本, 〒136-0083 東京都江東区若洲3丁目2−1', 'place_id': 'ChIJg4d0fOpiGGARx0hSDaoyVw0', 'types': ['point_of_interest', 'establishment'], 'id': '819f28ee3c5a78e63a1aee90693fd66c2bce4b20', 'name': '若洲アウトドアセンター', 'icon': 'https://maps.gstatic.com/mapfiles/place_api/icons/generic_business-71.png'}], 'status': 'OK', 'html_attributions': []}     
    

複数取れた場合の優先順位付け、APIの制限が厳しい毎日少しづつ取得するなどの工夫は必要ですが、やりたかったことは実現できそうです。
以上です。

コメント