集为异步**:提交 run → 轮询状态 → 取数,端到端流程见 快速开始;统一响应信封、run 状态机、计费与错误码见 认证与错误处理。本文只列 Facebook 各端点的提交路径、target 字段与输出字段。
端点总览
| 端点 | 路径 | 说明 | 每 target |
|---|---|---|---|
| 主页帖子 | POST /v1/scraper/facebook/page-posts |
采集指定主页的帖子、互动、附件与评论 | 一组主页 |
| 广告库 | POST /v1/scraper/facebook/ads-library |
检索 Facebook 广告库中投放的广告 | 一次检索 |
通用请求头:
Authorization: Bearer ants_xxxxxxxxxxxx
Content-Type: application/json
提交体统一为
{ "deliveryMode": "async", "recordLimit": 1000, "targets": [ … ] }:recordLimit控制每个 target 的记录上限,targets里每个元素的字段见下方各端点。
💡 也可用
deliveryMode: "sync"同步模式(小任务阻塞等终态,超时自动 fallback 转轮询)——详见 快速开始 · 同步模式。
主页帖子 — Page Posts
采集一个或多个 Facebook 主页的帖子,含正文、发布时间、互动、附件与评论。
端点: POST /v1/scraper/facebook/page-posts
target 字段(targets[] 每个元素):
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
pageUrls |
string | 二选一 | 主页链接列表(JSON 数组字符串,如 ["https://facebook.com/nike"];与 pageIds 二选一) |
pageIds |
string | 二选一 | 主页 ID 列表(JSON 数组字符串,如 ["123456789012345"];与 pageUrls 二选一) |
resultsLimit |
number | — | 每主页帖子上限(默认 50,最大 500) |
max_pages |
number | — | 最大页数(映射 resultsLimit) |
since |
string | — | 起始时间(YYYY-MM-DD / ISO),只取该时间之后的帖子 |
until |
string | — | 截止时间,只取该时间之前的帖子 |
includeComments |
boolean | — | 是否附带评论,默认 false |
commentsLimit |
number | — | 每帖评论上限(includeComments=true 时生效,默认 10) |
每主页的帖子数上限亦可由提交体顶层
recordLimit控制(见 快速开始)。
输出字段(records 里每条记录):
| 字段 | 类型 | 说明 |
|---|---|---|
postId |
string | 帖子 ID |
permalinkUrl |
string | 帖子永久链接 |
message |
string | 帖子文本内容 |
createdTime |
string | 发布时间 |
page |
object | 主页信息 |
page.pageId |
string | Page ID |
page.name |
string | Page 名称 |
page.category |
string | Page 类目 |
engagement |
object | 互动数据 |
engagement.reactions |
object | 表情反应明细 |
engagement.reactions.like |
number | 赞 |
engagement.reactions.love |
number | 爱心 |
engagement.reactions.wow |
number | 惊讶 |
engagement.reactions.haha |
number | 哈哈 |
engagement.reactions.sad |
number | 难过 |
engagement.reactions.angry |
number | 愤怒 |
engagement.reactions.care |
number | 加油 |
engagement.reactions.total |
number | 表情总数 |
engagement.commentsCount |
number | 评论数 |
engagement.sharesCount |
number | 分享数 |
attachments |
array | 附件 |
attachments.type |
string | photo / video / link / album |
attachments.url |
string | 媒体 URL |
attachments.title |
string | 链接标题(link 类型) |
attachments.description |
string | 链接描述 |
attachments.targetUrl |
string | 跳转目标 URL |
comments |
array | 评论(includeComments=true 时) |
comments.commentId |
string | 评论 ID |
comments.message |
string | 评论内容 |
comments.createdTime |
string | 评论时间 |
comments.from |
object | 评论者 |
comments.from.name |
string | 评论者名称 |
comments.from.id |
string | 评论者 ID |
comments.likeCount |
number | 评论点赞数 |
comments.replyCount |
number | 评论回复数 |
提交示例:
curl -X POST "https://api.antsdata.com/v1/scraper/facebook/page-posts" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"deliveryMode": "async",
"recordLimit": 1000,
"targets": [
{ "pageUrls": "[\"https://facebook.com/nike\"]", "since": "2026-01-01", "includeComments": true, "commentsLimit": 20 },
{ "pageIds": "[\"15087023444\"]" }
]
}'
提交成功返回 HTTP 201 + 任务号,status 为 queued:
{ "code": 0, "message": "ok", "data": { "id": 1287346, "status": "queued" } }
随后按 id 轮询 GET /v1/scraper/runs/{id} 至 succeeded,再取记录或下载——完整轮询与取数流程见 快速开始。
广告库 — Ads Library
检索 Facebook 广告库中正在或曾经投放的广告,按关键词、国家/地区、类型等条件筛选。一个 target = 一次检索。
端点: POST /v1/scraper/facebook/ads-library
target 字段(targets[] 每个元素 = 一次检索):
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
countries |
array | ✅必填 | 国家代码列表(例 ["US"]) |
search_terms |
array | — | 搜索关键词列表 |
ad_type |
string | — | 广告类型筛选:ALL / POLITICAL_AND_ISSUE_ADS / HOUSING_ADS |
active_status |
string | — | 投放状态筛选:active / inactive / all |
media_type |
string | — | 媒体类型筛选:all / image / video / none |
start_date |
string | — | 投放起 YYYY-MM-DD |
end_date |
string | — | 投放止 YYYY-MM-DD |
countries必填(至少一个国家码)以圈定检索范围;search_terms/ad_type等为可选筛选。返回的广告数上限由提交体顶层recordLimit控制。
输出字段(records 里每条记录):
| 字段 | 类型 | 说明 |
|---|---|---|
adArchiveId |
string | 广告存档 ID |
snapshotUrl |
string | 广告快照页面 URL |
creationTime |
string | 广告创建时间 |
startDate |
string | 开始投放日期 |
endDate |
string | 结束投放日期 |
advertiser |
object | 投放方 |
advertiser.pageId |
string | Page ID |
advertiser.pageName |
string | Page 名称 |
advertiser.pageUrl |
string | Page 链接 |
body |
string | 广告文案正文 |
ctaText |
string | CTA 按钮文案 |
linkUrl |
string | 落地页 URL |
platforms |
array | 投放平台(如 facebook / instagram) |
creative |
object | 素材 |
creative.type |
string | image / video / carousel |
creative.images |
array | 图片素材 |
creative.images.url |
string | 图片 URL |
creative.images.caption |
string | 图片描述 |
creative.videos |
array | 视频素材 |
creative.videos.url |
string | 视频 URL |
creative.videos.thumbnailUrl |
string | 视频封面 |
creative.videos.duration |
string | 时长(秒) |
creative.carouselItems |
array | 轮播项 |
creative.carouselItems.title |
string | 标题 |
creative.carouselItems.description |
string | 描述 |
creative.carouselItems.imageUrl |
string | 图片 URL |
creative.carouselItems.linkUrl |
string | 跳转 URL |
spend |
object | 花费区间 |
spend.lowerBound |
number | 花费下限(USD) |
spend.upperBound |
number | 花费上限(USD) |
impressions |
object | 曝光区间 |
impressions.lowerBound |
number | 曝光下限 |
impressions.upperBound |
number | 曝光上限 |
提交示例:
curl -X POST "https://api.antsdata.com/v1/scraper/facebook/ads-library" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"deliveryMode": "async",
"recordLimit": 1000,
"targets": [
{
"countries": ["US", "GB"],
"search_terms": ["nike"],
"ad_type": "ALL",
"active_status": "active",
"start_date": "2026-05-01",
"end_date": "2026-06-30"
}
]
}'
提交成功返回 HTTP 201 + 任务号,status 为 queued:
{ "code": 0, "message": "ok", "data": { "id": 1287347, "status": "queued" } }
随后按 id 轮询 GET /v1/scraper/runs/{id} 至 succeeded,再取记录或下载——见 快速开始。
取数与错误
- 取数:run 到
succeeded后,GET /v1/scraper/runs/{id}/records?page=1&pageSize=20分页取记录,或GET /v1/scraper/runs/{id}/download?format=json|csv|excel下载整份产物。 - 进度与逐目标结果:轮询 run 对象的
targetsOk/targetsFailed看进度;单个主页 / 检索失败不影响整 run,失败细节在tasks[].errorMessage。 - 计费:按成功产出的数据条数结算;全部目标失败释放冻结、不计费。
- 错误:整请求错误返回对应 HTTP 状态码 +
{ "code": <int>, "message": <msg> }(如积分不足402、限流429+Retry-After)。
信封、状态机、计费与完整错误码见 认证与错误处理。
FAQ
Q: 一次能采集多个主页吗?
可以。targets 是数组,一个 run 可含多次检索;单个 target 的 pageUrls / pageIds 本身也可携带多个主页。逐目标状态见 run 对象的 tasks[]。
Q: 提交后为什么没有直接返回帖子 / 广告数据?
采集是异步的:提交拿任务 id,后台执行,你轮询 id 到 succeeded 后再按 id 取记录或下载。
Q: 广告库检索必须填哪些字段?
countries 必填(至少一个国家码)以圈定检索范围,search_terms / ad_type 等为可选筛选。
Q: 采集失败会扣费吗?
不会。全部目标失败释放冻结、不计费;部分成功只按成功产出的条数结算。详见 认证与错误处理。
