ChatGPT スクレイパー API: 構造化されたマップおよびローカルビジネスデータを抽出する
Web Data Collection Specialist
TL;DR:
- ChatGPTスクレイパー(
scraper.chatgpt)は、ChatGPTの回答にローカルビジネスが含まれる場合に構造化されたmapオブジェクトを返します。 - ローカルインテントのプロンプトを使って
/api/v2/scraper/executeにPOSTを1回送信すると、名前、座標、住所、電話番号、ウェブサイト、営業時間、評価、レビュー数、価格レベル、リスティングプロバイダーが含まれるランキングされた場所が返されます。 - もう文章を解析する必要はありません: "best coffee near..." の回答でChatGPTが挙げる場所は、ソート、フィルタリング、保存できるクリーンな配列として返されます。
- フィールドはヌル可能で、プロバイダーソースです: 評価、営業時間、距離はエンティティごとに欠落する場合があるため、安全に解析してください。
- 無料で始めましょう。 新しいScrapelessアカウントには無料のScraper APIクレジットが含まれています — app.scrapeless.comで登録してください。
ChatGPTに“Times Square近くの最高評価のコーヒーショップ”とローカルな質問をすると、答えには実際の場所が名前列挙され、最近までそのデータは文章の中に閉じ込められていました。ScrapelessのスクレイピングAPIは、これを専用のmapオブジェクトとして引き上げます:完全なプロファイルを持つビジネスのランキングリストで、ランキングやモニタリングに利用できます。このガイドでは、リクエスト方法、オブジェクトの内容、注意が必要なフィールドについて説明します。以下のリクエストとフィールドは、アクターのライブ実行からキャプチャされたものです。
ChatGPTマップデータでできること
アクターはローカルインテントのプロンプトを取得し、ChatGPTが提供するビジネスを構造化されたエンティティとして返します。実際には、これにより次のことが可能になります:
- ローカルパックの可視性を追跡する — "best X near Y"クエリに対してチャットGPTが名前を挙げるビジネスを、どの順番で、評価とレビュー数とともに確認することができます。
- ロケーションデータセットを構築する — 回答内の場所の名前、座標、住所、電話、ウェブサイトを取得します。これは、Places APIが公開する同じプロファイルフィールドであり、マップUIをスクレイピングする必要はありません。
- ブランドや競合を監視する — 特定のビジネスが時間をかけてChatGPTのローカル推奨に登場するかどうかをチェックします。
- ダウンストリームシステムに情報を供給する — ランキングされたエンティティをクリーンなJSONとしてダッシュボード、マップ、アラートに送信します。
Scrapeless ChatGPTアクターの理由
ChatGPTの回答はインターフェースの裏で生成され、構造化されたフィードとして提供されるわけではありません。Scrapelessアクターはクエリを実行し、開発者に優しいエンベロープを返すため、あなたのコードは回答を正規表現で解析したり、ブラウザを操作したり、アンチブロッキングインフラを維持したりする必要がありません。mapオブジェクトは、回答テキスト、検索結果、および製品と共にChatGPTアクターから受け取る同じレスポンスの一部です。
エンドポイントとパラメータ
アクターは同期Scraper APIエンドポイントで動作します。トークンをx-api-tokenヘッダーで認証します。
- エンドポイント:
POST https://api.scrapeless.com/api/v2/scraper/execute - アクター:
scraper.chatgpt
| 入力フィールド | 型 | 必須 | 説明 |
|---|---|---|---|
prompt |
文字列 | はい | ChatGPTに送信する質問。ローカルインテントを使用して(例: "best coffee near...")mapを生成します。 |
country |
文字列 | はい | 目標国コード、例えばUS。 |
web_search |
ブール値 | いいえ | ウェブ検索の強化を有効にします。ローカルクエリには推奨されます。 |
shopping |
ブール値 | いいえ | productsに商品データを取得します(高い料金が課金されます)。 |
mapオブジェクトは、回答にローカルビジネスが含まれる場合にtask_resultに現れます。非ローカルなプロンプトは空のmapを返します。
認証済みリクエスト
最小限のリクエストは以下のようになります(例示的なものです — トークンを置き換えてください):
bash
curl 'https://api.scrapeless.com/api/v2/scraper/execute' \
--header 'Content-Type: application/json' \
--header 'x-api-token: YOUR_API_TOKEN' \
--data '{
"actor": "scraper.chatgpt",
"input": {
"prompt": "best rated coffee shops near Times Square New York",
"country": "US",
"web_search": true
}
}'
Python統合
この例は、SCRAPELESS_API_KEY環境変数からトークンを読み取り、ローカルクエリを送信し、mapオブジェクトからランキングされた場所を印刷します。Python標準ライブラリのみを使用しています。
python
import json
import os
import urllib.request
API_URL = "https://api.scrapeless.com/api/v2/scraper/execute"
API_TOKEN = os.environ["SCRAPELESS_API_KEY"]
payload = {
"actor": "scraper.chatgpt",
"input": {
"prompt": "best rated coffee shops near Times Square New York",
"country": "US",
"web_search": True,
},
}
request = urllib.request.Request(
API_URL,
data=json.dumps(payload).encode("utf-8"),
headers={"Content-Type": "application/json", "x-api-token": API_TOKEN},
method="POST",
)
with urllib.request.urlopen(request, timeout=180) as response:
次の英語のテキストを日本語に翻訳します:
データ = json.loads(response.read().decode("utf-8"))
結果 = データ.get("task_result", {})
エンティティ = (結果.get("map") or {}).get("entities") or []
print("ステータス:", データ.get("status"))
print("マップエンティティの数:", len(エンティティ))
for 場所 in エンティティ[:5]:
内部 = 場所.get("entity", {})
print("-", 場所.get("name"))
print(" レーティング:", 内部.get("rating"), "| レビュー数:", 内部.get("review_count"), "| 価格:", 内部.get("price_str"))
print(" 住所:", 内部.get("address"))
マップオブジェクト
mapオブジェクトはtask_resultにあり、ランク付けされたentitiesリストとアンランク付けされたraw_search_entitiesリストを保持しています。以下のフィールドが最もよく使用されるものです。値は実行の例からのサンプルで、長さのために切り取られています。
json
// 実行中のスクレイパー.chatgptからの例 — フィールド名は実際のもので、値は切り取られています。
{
"status": "success",
"task_result": {
"map": {
"entities": [
{
"name": "Frisson Espresso",
"category": "coffee_shop",
"latitude": 40.760837,
"longitude": -73.9889995,
"entity": {
"address": "326 W 47th St, New York, NY 10036, United States",
"phone": "+1 646-850-3928",
"website_url": "<ビジネスウェブサイト>",
"hours": [{ "day": 5, "start": "0700", "end": "1800" }],
"is_open": false,
"categories": ["コーヒーショップ", "カフェ", "エスプレッソバー"],
"rating": 4.6,
"review_count": 1006,
"price_str": "$",
"provider": "yelp-feed",
"provider_url": "<プロバイダーリスティングURL>",
"distance_meters": null
}
}
],
"raw_search_entities": []
}
}
}
| フィールド | 型 | 説明 |
|---|---|---|
entities |
配列 | クエリに対してチャットGPTが抽出したランク付けされた場所。 |
entities[].name |
文字列 | ビジネス名。 |
entities[].latitude / longitude |
数値 | マップピンの座標。 |
entities[].category |
文字列 | エンティティタイプ(例:coffee_shop)。 |
entities[].entity.address |
文字列 | 完全な住所。 |
entities[].entity.phone |
文字列 | 電話番号。 |
entities[].entity.website_url |
文字列 | 公式ウェブサイト。 |
entities[].entity.hours |
配列 | 曜日ごとの営業時間。 |
entities[].entity.is_open |
ブール | 現在オープンであるかどうか。 |
entities[].entity.categories |
配列 | 人間が読み取れるカテゴリラベル。 |
entities[].entity.rating |
数値 | 平均レーティング。 |
entities[].entity.review_count |
数値 | レビュー数。 |
entities[].entity.price_str |
文字列 | 価格レベル(例:$)。 |
entities[].entity.provider |
文字列 | リスティング元(例:yelp-feed)。 |
entities[].entity.provider_url |
文字列 | プロバイダーのリスティングページ。 |
entities[].entity.distance_meters |
数値 | 検索した場所からの距離(nullの可能性あり)。 |
raw_search_entities |
配列 | ランク付けされていない候補エンティティ。 |
タイムズスクエア近くのコーヒーに対するライブクエリは、8つのランク付けされた場所を返しました。最上位の結果であるフリッソンエスプレッソは、1,006件のレビューに対して4.6の評価、価格レベルが$、営業時間が完全で、リスティングプロバイダーが添付されていました。
一般的なデータ形状の問題
- 非ローカルなプロンプトに対する
mapが空です。 このオブジェクトは答えにビジネスが含まれている場合にのみ埋まります。空のmapが返ってきた場合、クエリにはローカルな意図がありませんでした — プロンプトに場所を追加し、web_searchを有効にしてください。 - プレイスプロファイルは1レベル下にネストされています。 ランキングフィールド(
name、latitude、longitude、category)はエンティティにあり、連絡先およびプロファイルフィールドはentity.*の下にあります。place["entity"]["rating"]を読み取り、place["rating"]ではありません。 - フィールドはプロバイダーからのものであり、nullableです。
distance_meters、hours、さらにはratingは、プロバイダーによって特定のエンティティに対してnullになる可能性があるため、使用する前に確認してください。 - リコールには
raw_search_entitiesを使用します。 ランク付けされたentitiesリストはチャットGPTが抽出したものであり、raw_search_entitiesはより広範なカバレッジが必要な場合に追加の候補を保持します。
伴侶アクター
mapオブジェクトはチャットGPTのレスポンスの一部で、回答テキスト、search_result、およびproductsも含まれています。同じリクエスト形状は他の回答エンジンをカバーします — scraper.chatgptの代わりにscraper.gemini、scraper.perplexity、その他を入れ替えます。Scrapelessは、実行可能なコードを含むオープンソースのChatGPTスクレイパー例リポジトリを公開し、完全なレスポンスエンベロープの詳細についてはChatGPTスクレイパーAPIガイドを参照してください。
結論
ChatGPTスクレイパーのmapオブジェクトは、会話型のローカル推薦を構造化データに変換します:ローカルインテントのプロンプトを送信し、座標、連絡先の詳細、営業時間、評価、提供者とともに、ランク付けされたビジネスのリストを取得します。プロファイルフィールドはentityの下にネストされていること、いくつかのフィールドはヌル可能であること、非ローカルプロンプトは空のマップを返すことを覚えておいてください。基礎となる場所データは、Yelpなどの提供者から取得され、周囲の回答構造はChatGPTアクターリファレンスに文書化されています。
ChatGPTのローカルデータをキャプチャする準備はできましたか?Scrapelessダッシュボードから無料で開始し、アクターがどこにフィットするかを確認するには、Scraping API製品ページをご覧いただくか、Scrapelessの価格でプランを比較してください。
FAQ
Q: ChatGPTのマップオブジェクトとは何ですか?
A: それは、クエリに対してChatGPTが提示するローカルビジネスをリストするscraper.chatgptレスポンス内の構造化フィールドです。各ビジネスには、名前、座標、住所、電話、ウェブサイト、営業時間、評価、レビュー数、価格レベル、リスティングプロバイダーが含まれます。
Q: マップオブジェクトをポピュレートするにはどうすればよいですか?
A: ローカルインテントを持つプロンプト(「Yの近くのベストX」スタイルの質問)を送信し、web_searchを有効にしてください。非ローカルプロンプトは空のmapを返します。
Q: どのエンドポイントとパラメータを使用しますか?
A: POST https://api.scrapeless.com/api/v2/scraper/execute に対して、actorをscraper.chatgptに設定し、prompt、country、オプションでweb_searchを含むinputオブジェクトを渡します。x-api-tokenでトークンを使用して認証します。
Q: レスポンス内の評価と住所はどこにありますか?
A: nameや座標のようなランキングフィールドはエンティティにありますが、連絡先やプロファイルフィールド(address、phone、rating、review_count、hours)はentity.*の下にあります。place["entity"]["rating"]を読み取ります。
Q: フィールドは常に存在しますか?
A: いいえ。値は提供者から取得されるため、distance_meters、hours、ratingは特定のエンティティに対してヌルである可能性があります。使用する前に欠落値に対してガードしてください。
Q: 他のAIアシスタントにも同じコードを使用できますか?
A: はい。ChatGPTアクターは、LLM Chat Scraperリクエストの形状を共有しているため、scraper.chatgptをscraper.geminiやscraper.perplexityに置き換えることで、同じ統合を再利用できます。
Scrapelessでは、適用される法律、規制、およびWebサイトのプライバシーポリシーを厳密に遵守しながら、公開されているデータのみにアクセスします。 このブログのコンテンツは、デモンストレーションのみを目的としており、違法または侵害の活動は含まれません。 このブログまたはサードパーティのリンクからの情報の使用に対するすべての責任を保証せず、放棄します。 スクレイピング活動に従事する前に、法律顧問に相談し、ターゲットウェブサイトの利用規約を確認するか、必要な許可を取得してください。



