开发者文档

Facebook Scraper:主页帖子与广告库采集

集为异步**:提交 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 + 任务号,statusqueued

{ "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 + 任务号,statusqueued

{ "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,后台执行,你轮询 idsucceeded 后再按 id 取记录或下载。

Q: 广告库检索必须填哪些字段?

countries 必填(至少一个国家码)以圈定检索范围,search_terms / ad_type 等为可选筛选。

Q: 采集失败会扣费吗?

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


下一步