🎯 Trình duyệt đám mây tùy chỉnh, chống phát hiện được hỗ trợ bởi Chromium tự phát triển, thiết kế dành cho trình thu thập dữ liệu webtác nhân AI. 👉Dùng thử ngay
Quay lại blog

API Scraper ChatGPT: Trích xuất dữ liệu bản đồ có cấu trúc và dữ liệu doanh nghiệp địa phương

Isabella Garcia
Isabella Garcia

Web Data Collection Specialist

15-Jul-2026

Tóm tắt:

  • Trình thu thập dữ liệu ChatGPT (scraper.chatgpt) hiện trả về một đối tượng map có cấu trúc khi câu trả lời của ChatGPT bao gồm các doanh nghiệp địa phương.
  • Một yêu cầu POST gửi đến /api/v2/scraper/execute với một gợi ý liên quan đến địa phương sẽ trả về danh sách các địa điểm được xếp hạng cùng với tên, tọa độ, địa chỉ, điện thoại, trang web, giờ mở cửa, xếp hạng, số lượng đánh giá, mức giá và nhà cung cấp danh sách.
  • Không cần phải phân tích văn bản: các địa điểm mà ChatGPT đề cập trong câu trả lời "cà phê tốt nhất gần..." giờ đây được trả về dưới dạng một mảng sạch sẽ, bạn có thể sắp xếp, lọc và lưu trữ.
  • Các trường có thể là null và lấy từ nhà cung cấp: xếp hạng, giờ mở cửa và khoảng cách có thể thiếu đối với từng thực thể, vì vậy hãy phân tích một cách thận trọng.
  • Bắt đầu miễn phí. Tài khoản Scrapeless mới bao gồm tín dụng API Scraper miễn phí — đăng ký tại app.scrapeless.com.

Khi bạn hỏi ChatGPT một câu hỏi địa phương — "quán cà phê được đánh giá tốt nhất gần Times Square" — câu trả lời sẽ đề cập đến những địa điểm có thật, và cho đến gần đây dữ liệu đó bị khóa bên trong văn bản. API Scraping của Scrapeless hiện xuất hiện dưới dạng một đối tượng map chuyên dụng: một danh sách xếp hạng các doanh nghiệp với hồ sơ đầy đủ của họ, sẵn sàng để xếp hạng hoặc theo dõi. Hướng dẫn này chỉ ra cách yêu cầu dữ liệu, nội dung của đối tượng và nơi các trường cần được chú ý. Mỗi yêu cầu và trường bên dưới đều được ghi lại từ một phiên chạy thực tế.

Bạn có thể làm gì với dữ liệu bản đồ ChatGPT

Trình thu thập duyệt một gợi ý có ý định địa phương và trả về các doanh nghiệp mà ChatGPT cung cấp dưới dạng các thực thể có cấu trúc. Thực tế, điều đó cho phép bạn:

  • Theo dõi sự hiện diện của gói địa phương — xem những doanh nghiệp nào ChatGPT nêu tên cho truy vấn "ứng dụng tốt nhất gần Y", theo thứ tự nào, với xếp hạng và số lượng đánh giá của họ.
  • Xây dựng bộ dữ liệu vị trí — lấy tên, tọa độ, địa chỉ, điện thoại và trang web cho các địa điểm trong câu trả lời, cùng với các trường hồ sơ mà api địa điểm đã công khai, mà không cần phải lấy dữ liệu từ giao diện bản đồ.
  • Giám sát một thương hiệu hoặc đối thủ — kiểm tra xem một doanh nghiệp cụ thể có xuất hiện trong các đề xuất địa phương của ChatGPT theo thời gian không.
  • Cung cấp cho các hệ thống hạ nguồn — chuyển các thực thể được xếp hạng vào bảng điều khiển, bản đồ hoặc cảnh báo dưới dạng JSON sạch sẽ.

Tại sao sử dụng Trình thu thập ChatGPT từ Scrapeless

Câu trả lời của ChatGPT được tạo ra sau một giao diện, không được phục vụ dưới dạng một luồng có cấu trúc. Trình thu thập Scrapeless thực hiện truy vấn và trả về một envelop thân thiện với nhà phát triển, vì vậy mã của bạn đọc các trường thay vì phải phân tích cú pháp một câu trả lời, điều khiển trình duyệt hoặc duy trì cơ sở hạ tầng chống chặn. Đối tượng map là một phần của cùng một phản hồi mà bạn đã nhận được từ trình thu thập ChatGPT, cùng với văn bản câu trả lời, kết quả tìm kiếm và sản phẩm.

Điểm cuối và Tham số

Trình thu thập chạy trên điểm cuối Synchronous Scraper API. Xác thực với mã thông báo của bạn trong tiêu đề x-api-token.

  • Điểm cuối: POST https://api.scrapeless.com/api/v2/scraper/execute
  • Trình thu thập: scraper.chatgpt
Trường đầu vào Loại Bắt buộc Mô tả
prompt chuỗi Câu hỏi gửi đến ChatGPT. Sử dụng ý định địa phương (ví dụ: "cà phê tốt nhất gần…") để điền vào map.
country chuỗi Mã quốc gia mục tiêu, ví dụ: US.
web_search bool không Kích hoạt làm phong phú tìm kiếm trên web; được khuyến nghị cho các truy vấn địa phương.
shopping bool không Lấy dữ liệu sản phẩm vào products (bị tính phí ở mức cao hơn).

Đối tượng map xuất hiện trong task_result khi câu trả lời có các doanh nghiệp địa phương; một gợi ý không có liên quan đến địa phương sẽ trả về một map rỗng.

Yêu cầu được xác thực

Một yêu cầu tối thiểu sẽ trông giống như sau (có tính minh họa — thay thế mã thông báo):

bash Copy
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": "quán cà phê được đánh giá tốt nhất gần Times Square New York",
      "country": "US",
      "web_search": true
    }
  }'

Tích hợp Python

Ví dụ này đọc mã thông báo từ biến môi trường SCRAPELESS_API_KEY, gửi một truy vấn địa phương và in ra các địa điểm xếp hạng từ đối tượng map. Nó chỉ sử dụng thư viện chuẩn của Python.

python Copy
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": "quán cà phê được đánh giá tốt nhất gần 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:
python Copy
data = json.loads(response.read().decode("utf-8"))

result = data.get("task_result", {})
entities = (result.get("map") or {}).get("entities") or []

print("trạng thái:", data.get("status"))
print("thực thể bản đồ:", len(entities))

for place in entities[:5]:
    inner = place.get("entity", {})
    print("-", place.get("name"))
    print("   đánh giá:", inner.get("rating"), "| số đánh giá:", inner.get("review_count"), "| giá:", inner.get("price_str"))
    print("   địa chỉ:", inner.get("address"))

Đối Tượng Bản Đồ

Đối tượng map nằm trong task_result và chứa danh sách entities đã được xếp hạng cùng với danh sách raw_search_entities chưa được xếp hạng. Các trường dưới đây là những trường bạn sẽ thường sử dụng nhất; giá trị là một ví dụ minh họa từ một lần chạy thực tế, đã được cắt ngắn cho ngắn gọn.

json Copy
// Ví dụ minh họa từ một lần chạy scraper.chatgpt thực tế — tên trường là thật, giá trị đã được cắt ngắn.
{
  "status": "thành công",
  "task_result": {
    "map": {
      "entities": [
        {
          "name": "Frisson Espresso",
          "category": "cửa_hàng_cà_phê",
          "latitude": 40.760837,
          "longitude": -73.9889995,
          "entity": {
            "address": "326 W 47th St, New York, NY 10036, Hoa Kỳ",
            "phone": "+1 646-850-3928",
            "website_url": "<website doanh nghiệp>",
            "hours": [{ "day": 5, "start": "0700", "end": "1800" }],
            "is_open": false,
            "categories": ["Cửa hàng cà phê", "Quán cà phê", "Quán espresso"],
            "rating": 4.6,
            "review_count": 1006,
            "price_str": "$",
            "provider": "yelp-feed",
            "provider_url": "<URL danh sách nhà cung cấp>",
            "distance_meters": null
          }
        }
      ],
      "raw_search_entities": []
    }
  }
}
Trường Loại Mô tả
entities mảng Các địa điểm được ChatGPT gợi ý cho truy vấn.
entities[].name chuỗi Tên doanh nghiệp.
entities[].latitude / longitude số Tọa độ cho ghim bản đồ.
entities[].category chuỗi Loại thực thể, ví dụ cửa_hàng_cà_phê.
entities[].entity.address chuỗi Địa chỉ đầy đủ.
entities[].entity.phone chuỗi Số điện thoại.
entities[].entity.website_url chuỗi Website chính thức.
entities[].entity.hours mảng Giờ mở cửa theo ngày.
entities[].entity.is_open boolean Liệu nó có mở cửa hay không.
entities[].entity.categories mảng Nhãn danh mục dễ đọc cho con người.
entities[].entity.rating số Đánh giá trung bình.
entities[].entity.review_count số Số lượng đánh giá.
entities[].entity.price_str chuỗi Mức giá, ví dụ $.
entities[].entity.provider chuỗi Nguồn danh sách, ví dụ yelp-feed.
entities[].entity.provider_url chuỗi Trang danh sách của nhà cung cấp.
entities[].entity.distance_meters số Khoảng cách từ vị trí tìm kiếm; có thể là null.
raw_search_entities mảng Các thực thể ứng viên chưa được xếp hạng.

Một truy vấn thực tế cho cà phê gần Times Square đã trả về tám địa điểm đã được xếp hạng; kết quả hàng đầu, Frisson Espresso, có đánh giá 4.6 trên 1,006 đánh giá, mức giá $, giờ mở cửa đầy đủ và nhà cung cấp danh sách của nó được đính kèm.

Các Vấn Đề Hình Dạng Dữ Liệu Thường Gặp

  • map trống cho các truy vấn không địa phương. Đối tượng chỉ được điền khi câu trả lời chứa các doanh nghiệp. Nếu bạn nhận được một map trống, truy vấn không có ý định địa phương — hãy thêm một địa điểm vào câu hỏi và kích hoạt web_search.
  • Hồ sơ địa điểm được lồng vào một cấp độ bên dưới. Các trường xếp hạng (name, latitude, longitude, category) nằm trên thực thể, nhưng các trường liên hệ và hồ sơ nằm dưới entity.*. Đọc place["entity"]["rating"], không phải place["rating"].
  • Các trường được nguồn cung cấp và có thể là null. distance_meters, hours, và thậm chí rating có thể là null cho một thực thể nhất định tùy thuộc vào nhà cung cấp, vì vậy hãy thận trọng trước khi sử dụng chúng.
  • Sử dụng raw_search_entities để gọi lại. Danh sách entities đã được xếp hạng là những gì ChatGPT đã gợi ý; raw_search_entities lưu trữ thêm các ứng viên khi bạn cần độ phủ rộng hơn.

Các Diễn Viên Kèm Theo

Đối tượng map là một phần của phản hồi từ ChatGPT, cũng mang theo văn bản câu trả lời, search_result, và products. Hình dạng cùng yêu cầu này bao phủ các động cơ câu trả lời khác — thay thế scraper.chatgpt bằng scraper.gemini, scraper.perplexity, và những cái còn lại. Scrapeless xuất bản một ví dụ kho scraper ChatGPT mã nguồn mở với mã có thể chạy, và để biết toàn bộ thông điệp phản hồi xem hướng dẫn API Scraper ChatGPT.

Kết Luận

Copy
Đối tượng `map` của ChatGPT Scraper biến một khuyến nghị địa phương thành dữ liệu có cấu trúc: gửi một lời nhắc có ý định địa phương, đọc lại danh sách các doanh nghiệp được xếp hạng với tọa độ, thông tin liên hệ, giờ làm việc, đánh giá và nhà cung cấp. Hãy nhớ rằng các trường thông tin cá nhân được lồng trong `entity`, rằng một số trường có thể là null, và rằng lời nhắc không phải địa phương sẽ trả về một bản đồ trống. Dữ liệu địa điểm cơ sở được lấy từ các nhà cung cấp như <a href="https://en.wikipedia.org/wiki/Yelp" rel="nofollow"><strong>Yelp</strong></a>, và cấu trúc câu trả lời xung quanh được tài liệu hóa trong tài liệu tham khảo diễn viên ChatGPT.

Sẵn sàng để bắt lấy dữ liệu địa phương của ChatGPT? Bắt đầu miễn phí từ [bảng điều khiển Scrapeless](https://app.scrapeless.com/passport/login?utm_source=website&utm_medium=blog&utm_campaign=scraperapi&utm_term=chatgpt-scraper-map-data), xem diễn viên phù hợp như thế nào trên [trang sản phẩm API Scraping](https://www.scrapeless.com/vi/product/scraping-api?utm_source=website&utm_medium=blog&utm_campaign=scraperapi&utm_term=chatgpt-scraper-map-data), hoặc so sánh các gói trên [giá Scrapeless](https://www.scrapeless.com/vi/pricing?utm_source=website&utm_medium=blog&utm_campaign=scraperapi&utm_term=chatgpt-scraper-map-data).

## Câu hỏi thường gặp

**H: Đối tượng bản đồ ChatGPT là gì?**
Đ: Đây là một trường có cấu trúc trong phản hồi `scraper.chatgpt` liệt kê các doanh nghiệp địa phương mà ChatGPT đưa ra cho một truy vấn — mỗi doanh nghiệp đều có tên, tọa độ, địa chỉ, điện thoại, trang web, giờ làm việc, đánh giá, số lượng đánh giá, mức giá và nhà cung cấp danh sách.

**H: Làm thế nào để tôi làm cho đối tượng bản đồ được điền?**
Đ: Gửi một lời nhắc với ý định địa phương (một câu hỏi kiểu "X tốt nhất gần Y") và kích hoạt `web_search`. Một lời nhắc không phải địa phương sẽ trả về một `map` trống.

**H: Điểm cuối nào và các tham số nào được sử dụng?**
Đ: `POST https://api.scrapeless.com/api/v2/scraper/execute` với `actor` được đặt thành `scraper.chatgpt` và một đối tượng `input` chứa `prompt`, `country`, và tùy chọn `web_search`. Xác thực với token của bạn trong `x-api-token`.

**H: Đánh giá và địa chỉ ở đâu trong phản hồi?**
Đ: Các trường xếp hạng như `name` và tọa độ nằm trên thực thể, nhưng các trường liên hệ và hồ sơ — `address`, `phone`, `rating`, `review_count`, `hours` — nằm dưới `entity.*`. Đọc `place["entity"]["rating"]`.

**H: Các trường thông tin có luôn hiện diện không?**
Đ: Không. Các giá trị được lấy từ nhà cung cấp, vì vậy `distance_meters`, `hours`, và `rating` có thể là null cho một thực thể nhất định. Cần kiểm tra các giá trị bị thiếu trước khi sử dụng chúng.

**H: Tôi có thể sử dụng mã giống nhau cho các trợ lý AI khác không?**
Đ: Có. Diễn viên ChatGPT chia sẻ hình dạng yêu cầu LLM Chat Scraper, vì vậy việc đổi `scraper.chatgpt` thành `scraper.gemini` hoặc `scraper.perplexity` sẽ tái sử dụng cùng một tích hợp.

Tại Scrapless, chúng tôi chỉ truy cập dữ liệu có sẵn công khai trong khi tuân thủ nghiêm ngặt các luật, quy định và chính sách bảo mật trang web hiện hành. Nội dung trong blog này chỉ nhằm mục đích trình diễn và không liên quan đến bất kỳ hoạt động bất hợp pháp hoặc vi phạm nào. Chúng tôi không đảm bảo và từ chối mọi trách nhiệm đối với việc sử dụng thông tin từ blog này hoặc các liên kết của bên thứ ba. Trước khi tham gia vào bất kỳ hoạt động cạo nào, hãy tham khảo ý kiến ​​cố vấn pháp lý của bạn và xem xét các điều khoản dịch vụ của trang web mục tiêu hoặc có được các quyền cần thiết.

Bài viết phổ biến nhất

Danh mục