ScavioScavio
产品定价文档
登录开始使用
  1. 首页
  2. 教程
  3. 如何在不被阻止的情况下抓取谷歌地图业务数据
教程

如何在不被阻止的情况下抓取谷歌地图业务数据

使用 Scavio API 以编程方式提取 Google 地图商户列表。获取结构化 JSON 格式的姓名、地址、评分、评论和电话号码。

获取免费API密钥API文档

Google 地图业务数据对于潜在客户开发、本地 SEO 审核和市场研究至关重要。抓取 Google 地图会直接触发积极的反机器人保护,包括验证码、IP 禁令和 JavaScript 挑战。 Scavio API 允许您按查询和位置搜索本地企业,返回包含企业名称、地址、评级、评论计数、电话号码和网站的结构化 JSON。本教程介绍如何查询任何业务类别和位置的 Google 地图数据,然后导出结果以进行推广或分析。

前置条件

  • Python 3.8 或更高版本
  • 请求已安装库
  • Scavio API 密钥
  • 要搜索的目标业务类别和位置

操作指南

步骤 1: 搜索本地企业

使用 Google 地图样式的查询(包括业务类型和位置)POST 到 Scavio 端点。 local_results 字段包含结构化的企业列表。

Python
import os
import requests

API_KEY = os.environ.get("SCAVIO_API_KEY", "your_scavio_api_key")
ENDPOINT = "https://api.scavio.dev/api/v1/search"

def search_maps(query: str, location: str) -> list[dict]:
    response = requests.post(
        ENDPOINT,
        headers={"x-api-key": API_KEY},
        json={"query": f"{query} in {location}", "country_code": "us"}
    )
    response.raise_for_status()
    return response.json().get("local_results", [])

步骤 2: 提取业务详细信息

解析每个本地结果的名称、地址、电话、评级、评论计数和网站 URL。

Python
def extract_business(result: dict) -> dict:
    return {
        "name": result.get("title"),
        "address": result.get("address"),
        "phone": result.get("phone"),
        "rating": result.get("rating"),
        "reviews": result.get("reviews"),
        "website": result.get("website"),
    }

步骤 3: 按最低评级过滤

仅将企业保留在质量领先名单评级阈值以上。

Python
def filter_by_rating(businesses: list[dict], min_rating: float = 4.0) -> list[dict]:
    return [
        b for b in businesses
        if b.get("rating") and float(b["rating"]) >= min_rating
    ]

步骤 4: 导出为 CSV

将筛选后的业务列表写入 CSV 文件,以便在 CRM 导入或外展工具中使用。

Python
import csv

def export_csv(businesses: list[dict], filename: str = "leads.csv") -> None:
    with open(filename, "w", newline="") as f:
        writer = csv.DictWriter(f, fieldnames=["name", "address", "phone", "rating", "reviews", "website"])
        writer.writeheader()
        writer.writerows(businesses)
    print(f"Exported {len(businesses)} businesses to {filename}")

Python 示例

Python
import os
import csv
import requests

API_KEY = os.environ.get("SCAVIO_API_KEY", "your_scavio_api_key")
ENDPOINT = "https://api.scavio.dev/api/v1/search"

def search_maps(query: str, location: str) -> list[dict]:
    r = requests.post(ENDPOINT, headers={"x-api-key": API_KEY},
                      json={"query": f"{query} in {location}", "country_code": "us"})
    r.raise_for_status()
    return r.json().get("local_results", [])

def extract(result: dict) -> dict:
    return {
        "name": result.get("title"),
        "address": result.get("address"),
        "phone": result.get("phone"),
        "rating": result.get("rating"),
        "reviews": result.get("reviews"),
        "website": result.get("website"),
    }

if __name__ == "__main__":
    results = search_maps("dentists", "San Francisco, CA")
    businesses = [extract(r) for r in results]
    high_rated = [b for b in businesses if b["rating"] and float(b["rating"]) >= 4.5]
    with open("leads.csv", "w", newline="") as f:
        w = csv.DictWriter(f, fieldnames=list(high_rated[0].keys()))
        w.writeheader()
        w.writerows(high_rated)
    print(f"Exported {len(high_rated)} leads")

JavaScript 示例

JavaScript
const API_KEY = process.env.SCAVIO_API_KEY || "your_scavio_api_key";
const ENDPOINT = "https://api.scavio.dev/api/v1/search";
const fs = require("fs");

async function searchMaps(query, location) {
  const res = await fetch(ENDPOINT, {
    method: "POST",
    headers: { "x-api-key": API_KEY, "Content-Type": "application/json" },
    body: JSON.stringify({ query: `${query} in ${location}`, country_code: "us" })
  });
  const data = await res.json();
  return (data.local_results || []).map(r => ({
    name: r.title, address: r.address, phone: r.phone,
    rating: r.rating, reviews: r.reviews, website: r.website
  }));
}

async function main() {
  const businesses = await searchMaps("dentists", "San Francisco, CA");
  const filtered = businesses.filter(b => b.rating && parseFloat(b.rating) >= 4.5);
  const header = "name,address,phone,rating,reviews,website";
  const rows = filtered.map(b => Object.values(b).join(","));
  fs.writeFileSync("leads.csv", [header, ...rows].join("\n"));
  console.log(`Exported ${filtered.length} leads`);
}
main().catch(console.error);

预期输出

JSON
{
  "local_results": [
    {
      "title": "Pacific Heights Dental",
      "address": "2100 Webster St, San Francisco, CA 94115",
      "phone": "(415) 555-0123",
      "rating": "4.9",
      "reviews": 342,
      "website": "https://pacificheightsdental.com",
      "hours": "Open until 5:00 PM"
    }
  ]
}

相关教程

  • 如何用 Python 获取 Google 搜索结果
  • 如何使用 Google Maps API 数据构建本地 SEO 检查器

常见问题

大多数开发者在15到30分钟内完成本教程。您需要一个Scavio API密钥(免费套餐即可)和可用的Python或JavaScript环境。

Python 3.8 或更高版本. 请求已安装库. Scavio API 密钥. 要搜索的目标业务类别和位置. Scavio API密钥注册即送50个免费积分。

可以。免费套餐注册即送50个积分,完全足够完成本教程并构建一个可运行的原型解决方案。

Scavio提供原生LangChain包(langchain-scavio)、MCP服务器以及适用于任何HTTP客户端的REST API。本教程使用 the raw REST API, 但您可以根据需要适配您选择的框架。

相关资源

Best Of

Google I/O 2026 AI模式变化后最佳搜索API

Read more
Glossary

搜索 API 供应商格局(2026)

Read more
Best Of

2026 年最佳 SERP API 提供商按价格排名

Read more
Comparison

Brave Search API vs Scavio

Read more
Solution

从 Brave Search API 迁移到 Scavio 获得更好覆盖

Read more
Use Case

n8n 搜索数据增强工作流

Read more

开始构建

使用 Scavio API 以编程方式提取 Google 地图商户列表。获取结构化 JSON 格式的姓名、地址、评分、评论和电话号码。

获取免费API密钥阅读文档
ScavioScavio

面向AI智能体的实时搜索API。搜索所有平台,不仅仅是Google。

产品

  • 功能
  • 定价
  • 控制台
  • 联盟计划

开发者

  • 文档
  • API参考
  • 快速开始
  • MCP集成
  • Python SDK

替代方案

  • Tavily替代方案
  • SerpAPI替代方案
  • Firecrawl替代方案
  • Exa替代方案

工具

  • JSON格式化
  • cURL转代码
  • Token计数器
  • 全部工具

© 2026 Scavio. 保留所有权利。

Featured on TAAFT
服务条款隐私政策