开发者文档

Google Scraper 指南:地图、网页搜索、购物、新闻与广告透明度

采集为异步:提交 run → 轮询 → 取数,流程见快速开始;统一信封、run 状态机、计费与错误见认证与错误处理


快速说明

  • Base URLhttps://api.antsdata.com/v1
  • 鉴权:请求头 Authorization: Bearer ants_xxx(静态 API Key)
  • Content-Typeapplication/json
  • 请求体:所有端点均为 POST /v1/scraper/google/<资源>,请求体统一为 { "deliveryMode": "async", "recordLimit": 1000, "targets": [ … ] }targets[] 每个元素即一次查询(字段见各端点「target 字段」)。

💡 也可用 deliveryMode: "sync" 同步模式(小任务阻塞等终态,超时自动 fallback 转轮询)——详见 快速开始 · 同步模式

  • 提交回执:成功返回 HTTP 201 + Run 对象(含 idstatus: "queued"),记下 id
  • 取数:按 id 轮询 GET /v1/scraper/runs/{id}succeeded,再 GET /v1/scraper/runs/{id}/records?page=&pageSize= 分页取记录,或 GET /v1/scraper/runs/{id}/download?format=json|csv|excel 下载。完整端到端流程见快速开始
  • 计费:按成功产出的数据条数计费,失败目标释放冻结、不计费;细节见认证与错误处理

端点总览

分组 端点 说明
地图 POST /v1/scraper/google/maps 地点 / 商家搜索、经纬度反查、地理编码
网页搜索 POST /v1/scraper/google/search Google 网页搜索(organic)结果
购物 POST /v1/scraper/google/shopping Google Shopping 商品
新闻 POST /v1/scraper/google/news Google News 结果
广告透明度 POST /v1/scraper/google/ads-suggestions 广告主 / 关键词联想(定位 sponsor_id
广告透明度 POST /v1/scraper/google/ads-creatives 广告创意列表
广告透明度 POST /v1/scraper/google/ads-creative-details 单条创意详情(含花费 / 曝光区间)
广告透明度 POST /v1/scraper/google/ads-advertiser 广告主主体信息

地图搜索(Maps)

POST /v1/scraper/google/maps

采集 Google 地图的地点 / 商家信息,支持关键词搜索、经纬度反查(reverse)与地理编码(geocode)。

target 字段targets[] 每个元素):

字段 类型 必填 说明
query string 二选一 地址 / 地名 / 商家搜索词(与 lat+lng 二选一)
lat number 反查纬度(与 lng 成对)
lng number 反查经度(与 lat 成对)
mode string geocode / reverse / places(留空自动判断)
ll string 商家搜索中心点(例 @40.7128,-74.0060,15z
location string 商家搜索自然语言区域
gl string 国家地区代码(默认 us
hl string 界面语言(默认 en
openNow boolean 仅营业中(默认 false
minRating number 最低评分过滤
resultsLimit number 商家搜索返回上限(默认 20)
pageToken string 翻页 token

输出字段(取数时每条记录):

字段 类型 说明
places array 命中地点列表
places.placeId string Google Place ID
places.dataId string Maps data_id
places.title string 商家名称
places.address string 地址
places.rating string 用户评分
places.reviewsCount number 评论总数
places.priceLevel string 价位等级
places.categories array 经营类目
places.lat string 纬度
places.lng string 经度
places.phone string 联系电话
places.website string 官网
places.thumbnail string 封面缩略图 URL
nextPageToken string 下一页 token

提交示例:

curl -X POST "https://api.antsdata.com/v1/scraper/google/maps" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "deliveryMode": "async",
    "recordLimit": 1000,
    "targets": [
      { "query": "coffee shop", "location": "San Francisco, CA", "resultsLimit": 20 }
    ]
  }'

→ 201 { "id": <run_id>, "status": "queued" },随后按 id 轮询取数(见快速开始)。


网页搜索(Search)

POST /v1/scraper/google/search

采集 Google 网页搜索的自然结果(organic)。

target 字段targets[] 每个元素):

字段 类型 必填 说明
query string 搜索关键词
searchType string web 网页 / image 图片(默认 web
geo_location string 地理位置(例 California,United States
host_language string 界面语言 hl(不传则忽略)
domain string Google 域名后缀 google.<domain>(默认 com
page number SERP 页码(默认 1)

输出字段(取数时每条记录):

字段 类型 说明
organic array 自然搜索结果(网页搜索,每条一记录)
organic.pos number 板块内排名
organic.pos_overall number 整页综合排名(含非 organic 区块)
organic.title string 标题
organic.favicon_text string 站点名 / favicon 文本
organic.url_shown string 面包屑 / 显示 URL
organic.url string 落地 URL
organic.desc string 摘要片段
imageResults array 图片搜索结果(searchType=image,每条一记录)
imageResults.position number 排序序号
imageResults.thumbnailUrl string 缩略图 URL
imageResults.originalUrl string 原图 URL
imageResults.source string 来源域名
imageResults.title string 图片标题
total_results_count string 结果总数文本(如 About 1,230,000 results;部分查询为 null
ai_overview string AI 概览摘要纯文本(无则 null

提交示例:

curl -X POST "https://api.antsdata.com/v1/scraper/google/search" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "deliveryMode": "async",
    "recordLimit": 1000,
    "targets": [
      { "query": "best web scraping tools", "geo_location": "California,United States", "host_language": "en" }
    ]
  }'

→ 201 { "id": <run_id>, "status": "queued" },随后按 id 轮询取数(见快速开始)。


购物(Shopping)

POST /v1/scraper/google/shopping

采集 Google Shopping 商品列表。

target 字段targets[] 每个元素):

字段 类型 必填 说明
query string 商品搜索词
gl string 国家地区(默认 us
hl string 界面语言(默认 en
minPrice number 价格下限(本地币种)
maxPrice number 价格上限
condition string new / used / refurbished
sortBy string relevance / price_asc / price_desc / rating
resultsLimit number 返回上限(默认 30,上限 200)

输出字段(取数时每条记录):

字段 类型 说明
totalResults number 命中估算总数
products array 商品列表
products.position number 排名序号
products.productId string Google Shopping 商品 ID
products.title string 商品标题
products.link string Shopping 商品详情页
products.price object 价格信息
products.price.amount string 当前价
products.price.currency string 币种
products.price.originalAmount string 划线原价
products.seller string 卖家名称
products.rating string 商品评分
products.reviewsCount number 评论数
products.thumbnail string 主图缩略图 URL
products.isSponsored boolean 是否为赞助 / 广告位
products.shipping string 配送说明
products.badges array 平台标签徽章
products.offers array 各卖家报价列表
products.offers.seller string 卖家名
products.offers.price string 该卖家价格
products.offers.currency string 币种
products.offers.condition string 商品状态
products.offers.link string 卖家落地页

提交示例:

curl -X POST "https://api.antsdata.com/v1/scraper/google/shopping" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "deliveryMode": "async",
    "recordLimit": 1000,
    "targets": [
      { "query": "wireless earbuds", "gl": "us", "sortBy": "price_asc", "resultsLimit": 30 }
    ]
  }'

→ 201 { "id": <run_id>, "status": "queued" },随后按 id 轮询取数(见快速开始)。


新闻(News)

POST /v1/scraper/google/news

采集 Google News 结果,支持关键词、头条、主题与媒体多种 feed。

target 字段targets[] 每个元素):

字段 类型 必填 说明
feedType string keyword / top / topic / publication
query string 条件必填 feedType=keyword 时必填(搜索词)
topicId string 条件必填 feedType=topic 时必填
publicationId string 条件必填 feedType=publication 时必填
timeRange string 1h / 1d / 7d / 1m / 1y(仅 keyword
cluster boolean 同事件聚类去重(默认 true,仅 keyword
hl string 语言-地区(默认 en-US
gl string 国家地区(默认 US

输出字段(取数时每条记录):

字段 类型 说明
feedType string 回显采集类型
articles array 新闻文章列表
articles.title string 文章标题
articles.link string News 跳转链接
articles.source string 发布媒体名称
articles.published string 发布时间
articles.snippet string 内容摘要
articles.thumbnail string 配图缩略图 URL
articles.clusterSize number 该事件关联的报道数量(聚类开启时返回)

提交示例:

curl -X POST "https://api.antsdata.com/v1/scraper/google/news" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "deliveryMode": "async",
    "recordLimit": 1000,
    "targets": [
      { "feedType": "keyword", "query": "artificial intelligence", "timeRange": "7d", "gl": "US" }
    ]
  }'

→ 201 { "id": <run_id>, "status": "queued" },随后按 id 轮询取数(见快速开始)。


广告透明度(Ads Transparency)

采集 Google 广告透明度中心(Ads Transparency Center):广告主、广告创意及其投放 / 花费 / 曝光信息。典型链路:先用广告联想sponsor_id广告创意列出 creative_id创意详情看花费 / 曝光区间;广告主查主体信息。

广告联想(Ads Suggestions)

POST /v1/scraper/google/ads-suggestions

按搜索词联想广告主 / 关键词,用于定位 sponsor_id

target 字段targets[] 每个元素):

字段 类型 必填 说明
keyword string 搜索词(如 nike / car insurance

输出字段(取数时每条记录):

字段 类型 说明
kind string 类型:advertiser / keyword / topic
name string 显示名
sponsor_id string 广告主 ID(kind=advertiser 时返回,可作后续接口入参)
region string 推荐地区

提交示例:

curl -X POST "https://api.antsdata.com/v1/scraper/google/ads-suggestions" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "deliveryMode": "async",
    "recordLimit": 1000,
    "targets": [
      { "keyword": "nike" }
    ]
  }'

→ 201 { "id": <run_id>, "status": "queued" },随后按 id 轮询取数(见快速开始)。

广告创意(Ads Creatives)

POST /v1/scraper/google/ads-creatives

按广告主或关键词拉取广告创意列表。

target 字段targets[] 每个元素):

字段 类型 必填 说明
advertiser_id string 二选一 广告主 ID(与 query 二选一,来自联想结果)
query string 二选一 网站域名 / 关键词(与 advertiser_id 二选一,如 nike.com
regions array 地区代码数组过滤(如 ["US","GB"]
start_date string 投放起 YYYY-MM-DD
end_date string 投放止 YYYY-MM-DD
platform number 平台过滤 1–6(1=Search / 2=Display / 3=YouTube / 4=Maps / 5=Play / 6=Shopping)
limit number 返回创意上限(1–1000,默认 100)
topic string political 切到政治广告 schema

输出字段(取数时每条记录):

字段 类型 说明
creative_id string 创意 ID(可作创意详情入参)
sponsor_id string 广告主 ID
format string 创意格式
regions array 投放地区
first_shown string 首次曝光
last_shown string 末次曝光

提交示例:

curl -X POST "https://api.antsdata.com/v1/scraper/google/ads-creatives" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "deliveryMode": "async",
    "recordLimit": 1000,
    "targets": [
      { "advertiser_id": "AR16735076323512287233", "regions": ["US"], "platform": 1, "limit": 100 }
    ]
  }'

→ 201 { "id": <run_id>, "status": "queued" },随后按 id 轮询取数(见快速开始)。

创意详情(Ads Creative Details)

POST /v1/scraper/google/ads-creative-details

单条创意的完整详情,含花费与曝光区间。

target 字段targets[] 每个元素):

字段 类型 必填 说明
sponsor_id string 广告主 ID
creative_id string 创意 ID(先从广告创意接口获取,勿硬编码)
topic string political 切到政治 schema

输出字段(取数时每条记录):

字段 类型 说明
creative_id string 创意 ID
sponsor_id string 广告主 ID
first_shown string 首次曝光时间(ISO 8601)
last_shown string 末次曝光时间(ISO 8601)
topic string 广告主题(political 时非空,否则空串)
funder string 出资方 / 资助者(政治广告披露,普通广告为空串)
regions array 投放地区明细,每项 { code, first_shown, last_shown, min_times, max_times }(曝光次数区间为字符串)
impressions_lower number 曝光量下界(政治 / EU 广告披露,普通广告为 null
impressions_upper number 曝光量上界(同上)
spend_lower number 花费下界(政治 / EU 广告披露,普通广告为 null
spend_upper number 花费上界(同上)
eu_reach number 欧盟触达人数(EU 政治广告披露,否则 null

提交示例:

curl -X POST "https://api.antsdata.com/v1/scraper/google/ads-creative-details" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "deliveryMode": "async",
    "recordLimit": 1000,
    "targets": [
      { "sponsor_id": "AR16735076323512287233", "creative_id": "CR12886158981977866241" }
    ]
  }'

→ 201 { "id": <run_id>, "status": "queued" },随后按 id 轮询取数(见快速开始)。

广告主(Ads Advertiser)

POST /v1/scraper/google/ads-advertiser

广告主主体信息。

target 字段targets[] 每个元素):

字段 类型 必填 说明
advertiser_id string 广告主 ID(AR…
topic string political 切到政治广告主 schema

输出字段(取数时每条记录):

字段 类型 说明
name string 广告主名称
legal_name string 法定名称
disclosed_name string 披露名称
regions array 投放国家 / 地区
verified boolean 是否认证

提交示例:

curl -X POST "https://api.antsdata.com/v1/scraper/google/ads-advertiser" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "deliveryMode": "async",
    "recordLimit": 1000,
    "targets": [
      { "advertiser_id": "AR16735076323512287233" }
    ]
  }'

→ 201 { "id": <run_id>, "status": "queued" },随后按 id 轮询取数(见快速开始)。


取数与计费

提交任一端点后:

  1. 轮询 GET /v1/scraper/runs/{id}status: "succeeded"(建议退避 1s→2s→5s)。
  2. GET /v1/scraper/runs/{id}/records?page=1&pageSize=20 分页取记录,每条 items[] 的字段即上文各端点「输出字段」;或 GET /v1/scraper/runs/{id}/download?format=csv 下载整份产物。
  3. 计费按成功产出的数据条数结算(run 对象的 chargedCredits);全部目标失败释放冻结、不计费。

端到端示例与 run 状态机见快速开始认证与错误处理


下一步


FAQ

Q: 提交后为什么没有直接返回数据?

采集是异步的:提交拿 run id,后台执行,你轮询 idsucceeded 再取记录 / 下载。流程见快速开始

Q: 一次能查多个目标吗?

可以。targets 是数组,一个 run 可含多个查询(如多个搜索词 / 多个广告主),逐目标成败见轮询返回的 tasks[]

Q: 网页搜索一定有 AI Overview 吗?

不一定。search 端点返回自然结果(organic:pos / title / url / desc 等);AI Overview 等富媒体区块仅在 Google 展示该话题时才可能出现,不保证有。pos_overall 会体现整页含非 organic 区块的全局排名。

Q: 广告透明度的花费 / 曝光是精确值吗?

不是。Google 官方只披露区间spend_lower / spend_upperimpressions_lower / impressions_upper,且通常仅政治 / EU 广告披露,普通广告这些字段为 null。本 API 原样返回。

Q: 广告创意的 creative_id 从哪来?

先调广告联想sponsor_id,再调广告创意列出 creative_id,最后用二者查创意详情。请勿硬编码 creative_id

Q: 采集失败会扣费吗?

不会。全部目标失败释放冻结、不计费;部分成功只按成功产出的条数结算。详见认证与错误处理

Q: 本页的 Google 和「Google SERP」有什么区别?

本页是 scraper 产品线/v1/scraper/google/*):异步 run,入参为 targets[] 数组,提交后轮询取数。若你要的是同步直返搜索结果(扁平入参、一次调用直接拿数据),用 Google SERP/v1/serp/google/*)。两者端点同名(search / shopping / news / maps / ads-creatives / ads-creative-details),但入参形态与必填项不同:以各自文档为准。