快速说明
- Base URL:
https://api.antsdata.com/v1 - 鉴权:请求头
Authorization: Bearer ants_xxx(静态 API Key) - Content-Type:
application/json - 请求体:所有端点均为
POST /v1/scraper/google/<资源>,请求体统一为{ "deliveryMode": "async", "recordLimit": 1000, "targets": [ … ] };targets[]每个元素即一次查询(字段见各端点「target 字段」)。
💡 也可用
deliveryMode: "sync"同步模式(小任务阻塞等终态,超时自动 fallback 转轮询)——详见 快速开始 · 同步模式。
- 提交回执:成功返回 HTTP 201 + Run 对象(含
id、status: "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 轮询取数(见快速开始)。
取数与计费
提交任一端点后:
- 轮询
GET /v1/scraper/runs/{id}至status: "succeeded"(建议退避 1s→2s→5s)。 GET /v1/scraper/runs/{id}/records?page=1&pageSize=20分页取记录,每条items[]的字段即上文各端点「输出字段」;或GET /v1/scraper/runs/{id}/download?format=csv下载整份产物。- 计费按成功产出的数据条数结算(run 对象的
chargedCredits);全部目标失败释放冻结、不计费。
下一步
- 平台指南:TikTok · X · Instagram · Facebook · LinkedIn ·· YouTube · Amazon
- 同步搜索:Google SERP
- 认证与错误处理 — 统一响应信封、run 状态机、计费与错误码
FAQ
Q: 提交后为什么没有直接返回数据?
采集是异步的:提交拿 run id,后台执行,你轮询 id 到 succeeded 再取记录 / 下载。流程见快速开始。
Q: 一次能查多个目标吗?
可以。targets 是数组,一个 run 可含多个查询(如多个搜索词 / 多个广告主),逐目标成败见轮询返回的 tasks[]。
Q: 网页搜索一定有 AI Overview 吗?
不一定。search 端点返回自然结果(organic:pos / title / url / desc 等);AI Overview 等富媒体区块仅在 Google 展示该话题时才可能出现,不保证有。pos_overall 会体现整页含非 organic 区块的全局排名。
Q: 广告透明度的花费 / 曝光是精确值吗?
不是。Google 官方只披露区间:spend_lower / spend_upper、impressions_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),但入参形态与必填项不同:以各自文档为准。
