Tony Wang4 分で読めますYelpビジネスデータをスクレイピングする方法(2026年版・API & Python)
2026年にYelpのビジネス検索、プロフィール、レビュー、メニューをスクレイピング — DIY、ノーコード、またはYelp自身のアプリバックエンドを呼び出す構造化APIで。法的な基本事項も解説します。
2026年にYelpのビジネスデータをスクレイピングする最速の方法は、Yelpのアンチボット対策と戦ったり、Yelp自身のデベロッパーAPIの無料枠の上限にぶつかったりする代わりに、正規化されたJSONを返す構造化APIを呼び出すことです。このJSONには検索、ビジネスプロフィール、レビュー、メニュー、写真が含まれます。本ガイドでは、3つのアプローチすべてについて、それぞれが何を返し、どこで破綻し、そして法的な基本事項がどうなっているのかを解説します。
なぜYelpをスクレイピングするのか?
Yelpは何百万ものローカルビジネスの評価、レビュー、営業情報を集約しており、次のような用途に役立ちます。
- ローカルSEO・リード獲得 — カテゴリーとエリアでビジネスを見つけ、連絡先や評価データを取得します。
- レビュー・評判モニタリング — 自社または競合のビジネスの評価とレビュー数の推移を追跡します。
- 市場リサーチ — 市場全体にわたるカテゴリー密度、価格帯、レビューのセンチメントをマッピングします。
- レストラン・メニューインテリジェンス — レビューのシグナルとあわせて、メニュー項目や価格を取得します。
Yelpのスクレイピングは合法か?
選択肢 1: Python での DIY(そしてなぜ破綻するのか)
Yelpのウェブサイトは検索ページとビジネスページをJavaScriptの裏でレンダリングし、多層のアンチボット検知で防御しています。
import requests
# Yelp's public site trips CAPTCHAs and bot-detection fast on datacenter IPs
resp = requests.get("https://www.yelp.com/search?find_desc=pizza&find_loc=Chicago,+IL")
デモでは動きますが、その後すぐに破綻します。
- ウェブサイト上の強力なアンチボット。 データセンターIPは数回のリクエストのうちにCAPTCHAやブロックを引き起こすため、DIYではレジデンシャルプロキシ、現実的なヘッダー、そしてJS依存度の高いページのためのブラウザレンダリングが必要になります。
- Yelp Fusionの無料枠の上限。 公式のデベロッパーAPIは無料枠で1日5,000コールに制限されており、削られたデータセットしか返しません — レビュー本文の全文はなく(1ビジネスにつき最大3件の抜粋のみ)、メニューや写真のエンドポイントもありません。
- 公式のメニューやハイライトAPIがない。 メニュー項目、写真ギャラリー全体、そしてYelpのAI生成レビュー「ハイライト」には、Fusionに相当するものが一切ありません。
- 移り変わる内部構造。 ウェブサイトをパースする場合でも、Yelp自身のアプリバックエンドの呼び出しを再現する場合でも、フィールド名とレスポンスの形は変更履歴なしに変わります。
選択肢 2: ノーコードツール
ビジュアルスクレイパーやマーケットプレイスの「Yelpスクレイパー」アクターはCSV/JSONをエクスポートし、単発の取得に向いていますが、パイプラインでのスケジュール実行には向かず、DIYスクレイパーと同じアンチボットの脆さを引き継ぎます。
選択肢 3: 構造化された Yelp API
繰り返し行うワークフローには、Yelpスクレイピング APIがYelp自身のモバイルアプリのバックエンドを直接呼び出し、正規化されたJSONを返します — 認証情報不要で、Yelpのログインや API キーは必要ありません。キーワードと位置情報で検索するには次のようにします。
curl "https://api.crawlora.net/api/v1/yelp/search?term=pizza&location=Chicago,%20IL" \
-H "x-api-key: $CRAWLORA_API_KEY"
続いて、ビジネスをそのエイリアスで解決し、Pythonでプロフィール、レビュー、メニューを取得します。
import requests
h = {"x-api-key": "YOUR_API_KEY"}
base = "https://api.crawlora.net/api/v1/yelp"
results = requests.get(f"{base}/search", headers=h,
params={"term": "pizza", "location": "Chicago, IL"}).json()["data"]["results"]
alias = results[0]["alias"] # e.g. "pequods-pizza-chicago-3"
business = requests.get(f"{base}/business/{alias}", headers=h).json()["data"]
reviews = requests.get(f"{base}/business/{alias}/reviews", headers=h,
params={"limit": 20}).json()["data"]["reviews"]
menu = requests.get(f"{base}/business/{alias}/menu", headers=h).json()["data"]["items"]
検索レスポンスは、そのまま保存できる正規化されたJSONです(実際のフィールド)。
{
"code": 200,
"msg": "OK",
"data": {
"term": "pizza",
"location": "Chicago, IL",
"total": 240,
"results": [
{ "id": "pequods-pizza-chicago-3", "alias": "pequods-pizza-chicago-3", "name": "Pequod's Pizza", "rating": 4, "review_count": 8947, "price": "$$", "categories": ["Pizza"], "address": "2207 N Clybourn Ave, Chicago, IL 60614" }
]
}
}
検索とレビュー以外にも、同じキーで /yelp/business/{id}/photos(ギャラリー)、/yelp/business/{id}/reviews/highlights(Yelpが抽出したAIによる頻出トピック、それぞれ裏付けとなる引用付き)、そして任意の自由形式の住所を座標と地域フィールドに解決する /yelp/geocode にアクセスできます。ビジネスごとに1行を保存し、スケジュールに沿って再取得してください。
収集できるもの
公開されたフィールド: ビジネス検索結果(id/alias、name、rating、review_count、price、categories、address、coordinates、photos)、ビジネスプロフィール(hours、phone、website、health score、attributes)、レビュー(rating、text、language、author、share URL)、レビューハイライト(裏付けとなる引用付きの頻出テーマ)、メニュー項目(name、description、price)、写真ギャラリー、そして住所のジオコーディング。
制約とよくある課題
- 大規模に任意のレビュー本文を取得できる公式APIがない。 Yelp Fusionの無料枠は1日5,000コールに制限されており、レビュー本文を短い抜粋に削っています — 構造化APIなら、1つのキーの裏でレビュー本文の全文とより高い制限を返します。
- メニュー、写真ギャラリー全体、レビューハイライトには、公式デベロッパーAPIに相当するものがありません — アプリ自体がアクセスするのと同じ方法でしかアクセスできません。
- レビューは個人データ。 投稿者名、レビュー本文、位置情報の文字列はGDPR/CCPAのもとで個人データです。適法な根拠のもと、公開された事実に基づくフィールドを収集し、レビュアーの身元を再公開しないでください。
- 評価とレビュー数は変動する。 評判モニタリングでは、一度きりのスナップショットを当てにするのではなく、スケジュールに沿って再取得してください。
どのような場面で使われるか
- ローカルビジネス・リード獲得 — カテゴリーとエリアでビジネスを見つけ、選別します。リード獲得のユースケースを参照してください。
- レビュー・評判モニタリング — 自社または競合のビジネスの評価とセンチメントを追跡します。レビュー・評判モニタリングのユースケースを参照してください。
- レストラン・メニューリサーチ — 市場全体にわたって評価とメニュー価格を組み合わせます。
出典
収集を始める
まずは無料で試す: 任意の公開URLを無料ウェブスクレイパーで実行するか、アンチボットチェッカーでサイトがボットをブロックするかどうかを確認できます。サインアップは不要です。
Playgroundで検索エンドポイントをテストし、APIドキュメントでスキーマを確認し、料金を確認してください。あわせて、レストラン予約についてはOpenTableをスクレイピングする方法、旅行・施設レビューについてはTripAdvisorをスクレイピングする方法、一般的なビジネスレビュー側についてはTrustpilotレビューをスクレイピングする方法、このデータが実際にどう流れるかについてはモバイルアプリAPIの仕組み、そしてウェブスクレイピングは合法かもあわせて参照してください。
本記事はhow-to-scrapeガイドシリーズの一部です — 私たちが扱うすべてのプラットフォームを、1つのインデックスにまとめています。
よくある質問
Yelpには公式APIがありますか?
はい — Yelp Fusionです — ただし無料枠は1日5,000コールに制限されており、レビュー本文は短い抜粋(1ビジネスにつき最大3件)に削られ、メニュー、写真ギャラリー、レビューハイライトのエンドポイントもありません。構造化APIなら、1つのキーの裏でレビュー本文の全文とこれらの追加フィールドを返します。
ブロックされずにYelpをスクレイピングできますか?
Yelpのウェブサイトは多層のアンチボット検知を実行しており、データセンターIPは数回のリクエストのうちにブロックされます。そのためDIYではレジデンシャルプロキシとブラウザレンダリングが必要になります。構造化APIならYelp自身のアプリバックエンドを直接呼び出し、キーの裏でこれを処理します。
Yelpのビジネスはどうやって指定しますか?
ビジネスはエイリアス(例: pequods-pizza-chicago-3)またはエンコードされたidで指定され、どちらも検索エンドポイントが返します。そのエイリアス/idをビジネス、レビュー、メニュー、写真の各エンドポイントで使用してください。
Yelpのどのようなデータを収集できますか?
公開されたフィールドです: 検索結果(評価、レビュー数、価格帯、カテゴリー、住所、座標、写真)、ビジネスプロフィール(営業時間、電話番号、ウェブサイト、健康スコア、属性)、レビュー(評価、本文、投稿者、共有URL)、AIが抽出したレビューハイライト、メニュー項目、写真ギャラリー、そして住所のジオコーディング。
Yelpのレビューは個人データですか?
はい。レビュアー名、レビュー本文、位置情報の文字列はGDPR/CCPAのもとで個人データです。適法な根拠のもと、公開された事実に基づくフィールドのみを収集し、レビュアーの身元を再公開しないでください。
どのくらいの頻度で更新できますか?
評価とレビュー数は変動するため、継続的にポーリングするのではなく、プランと責任ある利用の範囲内でスケジュールに沿って再取得してください。