关于 scraperapi-datapipeline
ScraperAPI DataPipeline 是托管式抓取服务,适合需要定期或大规模采集数据、又不想管理代理、重试和基础设施的团队。项目可按计划运行,并通过 Webhook 投递结果或在控制面板中提供结果。
主要功能
- 01为支持的抓取类型配置项目
- 02安排定期或一次性运行
- 03通过列表、CSV 文件或 Webhook 提供输入
- 04将结果发送到 Webhook 或控制面板
- 05配置任务完成邮件通知
适用场景
- 01按固定计划收集数据
- 02通过托管任务处理大型输入列表
- 03自动将完成的结果发送至应用
- 04通过 Webhook 获取动态输入列表
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ scraperapi/ scraperapi-skills --skill scraperapi-datapipeline安装后在 Claude Code 中输入/scraperapi-datapipeline确认已加载。
详细介绍
ScraperAPI DataPipeline
DataPipeline 是一款托管式抓取产品。你只需定义一个项目(抓取内容、抓取频率、结果发送位置),ScraperAPI 就会按计划运行,无需你管理代理、重试或基础设施。
何时不该使用 DataPipeline
- 一次性抓取已知 URL 列表 → 使用 Async API — 速度更快、成本更低,也无需设置项目。
- 探索 URL 未知的网站 → 使用 Crawler。
- 需要在代码中实时获取结果 → Async API 可编程;DataPipeline 按计划运行。
- 使用免费套餐,需要定期执行 → 定期计划需要付费套餐。
适合使用 DataPipeline 的情况:按固定计划运行抓取、输入列表较大(最多 100,000 项)、希望结果自动发送到 Webhook,或希望在任务完成时收到电子邮件通知。
基础 URL 和身份验证
Base URL: https://datapipeline.scraperapi.com/api
Auth: ?api_key=YOUR_KEY (query parameter on every request)
项目类型
在创建请求中设置 projectType,以选择抓取内容:
| 类型 | 输入 |
|---|---|
urls | 任意 URL 的原始 HTML |
urls_with_js | 同上,但启用 JavaScript 渲染 |
google_search | 搜索查询 |
google_news | 搜索查询 |
google_jobs | 搜索查询 |
google_shopping | 搜索查询 |
google_maps | 搜索查询 |
amazon_product | ASIN |
amazon_search | 搜索查询 |
amazon_offers | ASIN |
walmart_product | 产品 ID |
walmart_search | 搜索查询 |
walmart_category | 类别 ID |
walmart_reviews | 产品 ID |
ebay_product | 12 位产品 ID |
ebay_search | 搜索查询 |
redfin_listing_for_sale | 房源 URL |
redfin_listing_for_rent | 房源 URL |
redfin_listing_search | 搜索结果 URL |
redfin_agent_details | Agent 个人资料 URL |
创建项目
import os, requests
API_KEY = os.environ["SCRAPERAPI_API_KEY"]
BASE = "https://datapipeline.scraperapi.com/api"
project = requests.post(
f"{BASE}/projects",
params={"api_key": API_KEY},
json={
"name": "Weekly Amazon price monitor",
"projectType": "amazon_product",
"schedulingEnabled": True,
"scrapingInterval": "weekly",
"scheduledAt": "now",
"projectInput": {
"type": "list",
"list": ["B09V3KXJPB", "B08N5WRWNW"] # ASINs
},
"apiParams": {
"country_code": "us"
},
"webhookOutput": {
"url": "https://yourapp.com/pipeline-results",
"webhookEncoding": "multipart_form_data_encoding"
},
"notificationConfig": {
"notifyOnSuccess": "with_every_run",
"notifyOnFailure": "with_every_run"
}
}
).json()
print(f"Project created: id={project['id']}")
创建请求字段
| 字段 | 必填 | 描述 |
|---|---|---|
name | 否 | 易读的项目名称 |
projectType | 是 | 抓取内容(见上表) |
schedulingEnabled | 否 | 设置为 true 以启用定期计划 |
scrapingInterval | 是(若启用计划) | 见下方的计划选项 |
scheduledAt | 否 | 设置为 "now",在创建时立即运行 |
projectInput | 是 | 输入数据(见下方的输入方式) |
apiParams | 否 | 标准 ScraperAPI 参数 |
webhookOutput | 否 | Webhook 传送配置 |
notificationConfig | 否 | 电子邮件通知设置 |
输入方式
直接提供列表(最多 500 项)
{
"projectInput": {
"type": "list",
"list": ["query one", "query two", "B09V3KXJPB"]
}
}
CSV 文件(最多 100,000 项)
上传一个 CSV 文件,每行包含一个 URL、查询或 ASIN — 不要添加标题行,也不要使用逗号。创建项目时,请通过 控制面板 执行此操作;API 仅接受列表输入。
Webhook 输入(动态轮询)
{
"projectInput": {
"type": "webhook",
"webhookUrl": "https://yourapp.com/input-items"
}
}
任务开始时,ScraperAPI 会轮询你的 Webhook URL,以获取项目列表。每行一个项目; 不要使用逗号。适用于动态生成的列表(例如,自上次运行以来新增的 ASIN)。
计划选项
scrapingInterval | 描述 |
|---|---|
"once" | 立即运行一次任务 |
"hourly" | 每小时一次 |
"daily" | 每天一次 |
"weekly" | 每周一次 |
"monthly" | 每月一次 |
"cron" | 自定义 cron 表达式(使用 cron 字段,而非 interval) |
定期计划(hourly、daily、weekly、monthly、cron)需要付费套餐。
设置 "scheduledAt": "now",即可在创建项目时立即触发首次运行。
输出 / 传送
Webhook 传送
结果会在完成后以 POST 请求发送到你的 Webhook URL。webhookEncoding 字段用于控制格式:
{
"webhookOutput": {
"url": "https://yourapp.com/results",
"webhookEncoding": "multipart_form_data_encoding"
}
}
控制面板下载
省略 webhookOutput,结果将保存到 DataPipeline 控制面板供下载。结果保留 30 天,之后会自动删除。
按项目类型划分的输出格式:
urls/urls_with_js→ 封装在 JSONL 中的 HTML- 结构化类型(Amazon、Google、Walmart、eBay、Redfin) → JSON 或 CSV
管理项目
# List all projects
projects = requests.get(f"{BASE}/projects", params={"api_key": API_KEY}).json()
# Get a single project
project = requests.get(f"{BASE}/projects/525", params={"api_key": API_KEY}).json()
# Update (partial update — only include fields to change)
requests.patch(
f"{BASE}/projects/525",
params={"api_key": API_KEY},
json={
"scrapingInterval": "daily",
"apiParams": {"premium": True},
"notificationConfig": {"notifyOnSuccess": "never"}
}
)
# Delete / archive (irreversible without support)
requests.delete(f"{BASE}/projects/525", params={"api_key": API_KEY})
可更新字段:scrapingInterval、scheduledAt、outputFormat、apiParams、notificationConfig。
管理任务
# List jobs for a project
jobs = requests.get(
f"{BASE}/projects/525/jobs",
params={"api_key": API_KEY}
).json()
# Cancel a running job
requests.delete(
f"{BASE}/projects/525/jobs/{job_id}",
params={"api_key": API_KEY}
)
# Running requests within the job finish first; final status becomes "Cancelled"
只有在该项目没有其他正在运行的任务时,才能启动新任务。
通知配置
{
"notificationConfig": {
"notifyOnSuccess": "with_every_run",
"notifyOnFailure": "with_every_run"
}
}
两个字段的可选值:"never"、"with_every_run"、"daily"、"weekly"。
apiParams 参考
apiParams 中支持所有标准 ScraperAPI 参数:
| 参数 | 用途 |
|---|---|
country_code | 地理定位(例如 "us"、"gb") |
render | JavaScript 渲染 |
premium | 高级住宅代理 |
ultra_premium | 超高级代理(与 premium 互斥) |
device_type | "desktop" 或 "mobile" |
output_format | 用于 LLM 工作流的 "text" 或 "markdown" |
autoparse | 从支持的网站提取结构化 JSON |
keep_headers | 转发自定义标头 |
follow_redirect | 控制重定向处理 |
wait_for_selector | 等待 CSS 选择器(需要 render: true) |
screenshot | 截取屏幕截图(自动启用渲染) |
retry_404 | 重试 404 响应 |
积分费用
DataPipeline 使用与标准 API 相同的底层积分费率。费用为一次任务运行中所有请求的费用总和。从控制面板启动项目之前,可以预览预估费用。
仅对成功的 200 和 404 响应收费;失败的请求不收费。
限制
| 限制 | 值 |
|---|---|
| 输入项数上限 | 每个任务 100,000 项 |
| 直接列表输入 | 500 项 |
| 数据保留时间 | 30 天 |
| 免费套餐并发数 | 5 个连接 |
| 免费套餐计划安排 | 仅限一次性运行 |