如何擷取 Google Local Pack 搜尋結果

了解如何使用 SERP API 擷取 Google Local Pack 結果,提取商家名稱、排名、評分、評論數、地址、網站、電話和本地 SEO metadata。

talor ai
Last updated on
4 min read

Google Local Pack 是當使用者搜尋帶有本地意圖的 query 時,Google 搜尋結果中出現的本地商家列表,例如 “dentist near me”、“coffee shop in Austin” 或 “best plumber in Chicago”。

對 Local SEO 團隊來說,Local Pack 往往比普通 organic links 更重要。它能顯示某個城市、街區或服務範圍內,哪些商家真正出現在使用者面前。

要擷取 Google Local Pack results,較穩定的方式是使用 SERP API:發送本地化 search query,取得結構化 JSON,然後提取 business name、ranking position、rating、review count、address、phone number、website 和 place ID 等欄位。

可以擷取哪些資料?

Google Local Pack result 通常是商家級資料,而不是普通網頁結果。

欄位

為什麼重要

position

本地排名位置

title / name

商家名稱

rating

平均評分

reviews

評論數

address

商家地址

phone

聯絡電話

website

商家網站

place_id

穩定商家識別碼

gps_coordinates

經緯度

type / category

商家分類

hours

營業時間,如果有

基礎 Local Pack Request

一個通用 request 可能像這樣:

{
  "engine": "google_local",
  "query": "coffee shops in Seattle",
  "location": "Seattle, Washington, United States",
  "language": "en",
  "device": "desktop",
  "output": "json"
}

不同供應商可能使用 google_mapsgoogle_local,或在標準 google engine 中返回 local results。參數命名可能不同,但核心概念一致:定義 query、location、language 和 output format。

對 Local SEO 來說,location 不是可有可無的參數。同一個 “emergency dentist”,在 New York、Dallas、Miami 和 San Jose 可能返回完全不同的商家。

Python 範例:抓取並解析 Local Pack Results

下面是 provider-neutral 範例。你可以根據所選 SERP API 調整 endpoint 和 authentication。

import os
import csv
import requests


SERP_API_KEY = os.getenv("SERP_API_KEY")
SERP_API_ENDPOINT = os.getenv("SERP_API_ENDPOINT")


def clean_text(value):
    if not value:
        return ""
    return " ".join(str(value).split())


def fetch_local_pack(query, location):
    params = {
        "engine": "google_local",
        "query": query,
        "location": location,
        "language": "en",
        "device": "desktop",
        "output": "json"
    }

    headers = {
        "Authorization": f"Bearer {SERP_API_KEY}"
    }

    response = requests.get(
        SERP_API_ENDPOINT,
        params=params,
        headers=headers,
        timeout=30
    )
    response.raise_for_status()
    return response.json()


def extract_local_results(serp_json):
    raw_results = (
        serp_json.get("local_results")
        or serp_json.get("places_results")
        or serp_json.get("maps_results")
        or []
    )

    extracted = []

    for index, item in enumerate(raw_results, start=1):
        coordinates = item.get("gps_coordinates") or {}

        extracted.append({
            "position": item.get("position") or index,
            "business_name": clean_text(item.get("title") or item.get("name")),
            "rating": item.get("rating"),
            "reviews": item.get("reviews"),
            "address": clean_text(item.get("address")),
            "phone": clean_text(item.get("phone")),
            "website": item.get("website") or item.get("link") or "",
            "place_id": item.get("place_id") or item.get("data_id") or "",
            "latitude": coordinates.get("latitude"),
            "longitude": coordinates.get("longitude"),
            "category": clean_text(item.get("type") or item.get("category"))
        })

    return extracted

這樣可以把原始 Local Pack JSON 轉成乾淨的商家列表。

匯出為 CSV

def save_to_csv(results, filename="google_local_pack_results.csv"):
    fieldnames = [
        "position",
        "business_name",
        "rating",
        "reviews",
        "address",
        "phone",
        "website",
        "place_id",
        "latitude",
        "longitude",
        "category"
    ]

    with open(filename, "w", newline="", encoding="utf-8") as file:
        writer = csv.DictWriter(file, fieldnames=fieldnames)
        writer.writeheader()
        writer.writerows(results)

CSV 可用於 Local SEO reporting、competitor analysis、lead research 或 dashboard 匯入。

加入 Search Metadata

Local Pack data 必須和搜尋上下文一起保存。

def add_metadata(results, query, location, language="en", device="desktop"):
    for result in results:
        result["query"] = query
        result["location"] = location
        result["language"] = language
        result["device"] = device

    return results

某商家在 Seattle 的 “coffee shops” 排名第一,不代表它在 Portland 也排名第一。Query、location、language、device 和 timestamp 都應保存。

常見使用場景

Local SEO Rank Tracking

Local SEO 團隊可以監測目標 keyword 在不同城市中出現的商家。

常見 query 包括:

dentist in Austin
personal injury lawyer in Miami
best coffee shop in Seattle
emergency plumber in Chicago
nearby car repair shop

Competitor Monitoring

你可以追蹤哪些 competitors 出現在 Local Pack 中、排名如何變化,以及是否有新商家進入結果集。

Multi-Location Brand Monitoring

對多門店品牌來說,Local Pack data 可以幫助比較不同城市、街區和服務範圍的搜尋可見度。

AI Agent 和 RAG Workflow

AI Agent 可以把 Local Pack results 當作 location-based task 的 source discovery layer。例如,Agent 可以先收集本地商家,再按 rating 和 review count 篩選,最後抓取網站或評論做 deeper analysis。

如何選擇 SERP API?

Local Pack scraping 應重點比較 field completeness、location control、schema stability 和 successful-request billing。

SerpApi 有 Google Local 和 Google Maps API,可提取 rating、review、address、hours、GPS coordinates 和 place ID 等本地商家欄位。

Bright Data 的 SERP API 強調 JSON、HTML、Markdown output、geo-location targeting,以及 pay-only-for-successful-delivery billing。

Serper.dev 支援 Google Maps 和 Places 等 search types,並提供免費 queries 用於測試。

如果 workflow 需要 structured SERP data、geo-targeted search results、JSON / HTML output 和 multi-engine coverage,也可以將 Talordata 放入測試名單。Talordata 產品頁說明其 SERP API 支援 Google 和其他主要搜尋引擎、geo targeting、structured output,以及 successful-request-based usage。獲取1000次免費測試額度>>

實際選型方式很簡單:用同一個本地 query 和同一個城市,在 2–3 個 API 中測試,然後比較 business name、position、rating、review count、address、coordinates、missing fields 和 cost per usable result。

FAQ

什麼是 Google Local Pack scraping?

Google Local Pack scraping 是指從本地化 Google query 中收集 local business results 的結構化資料,包括商家名稱、評分、評論數、地址、網站、電話和排名位置。

Google Local Pack 和 Google Maps 一樣嗎?

不完全一樣。Local Pack 通常出現在 Google Search results 中,而 Google Maps 是基於地圖的商家搜尋體驗。它們可能共享商家資料,但 layout、ranking context 和可用欄位可能不同。

Local Pack results 應該提取哪些欄位?

Local SEO 建議提取 position、business name、rating、review count、address、website、phone number、place ID、category、coordinates、query、location、device 和 timestamp。

可以用 Python 擷取 Google Local Pack results 嗎?

可以。最簡單的方式是用 Python 調用 SERP API,接收 structured JSON,解析 local result array,normalize 欄位,並將資料匯出為 CSV 或寫入資料庫。

結語

擷取 Google Local Pack results,本質上是從搜尋結果中收集結構化本地商家資料。

先從清晰的 query 和 location 開始,再提取 workflow 需要的欄位:business name、position、rating、reviews、address、website、phone、place ID 和 coordinates。

對 Local SEO 來說,它可以追蹤不同城市或街區的搜尋可見度。對競品研究來說,它能顯示誰出現在高意圖本地 query 中。對 AI Agent 來說,它能建立結構化本地任務 source list。

最好的 workflow 很簡單:發送 localized query,接收 Local Pack JSON,normalize fields,保存 metadata,並隨時間比較結果變化。

Scale Your Data
Operations Today.

Join the world's most robust proxy network.

Start Free Trial