Apify × n8n:从 Actor run 到可用数据的最小工作流
披露:本页含联盟推广链接。你通过本页链接注册 Apify 并付费,我们可能获得佣金——不影响你支付的价格,也不改变我们如实记录的实测数据。 我们如何实测 →
证据口径:本页于 2026-07-30 按 Apify n8n 官方集成文档 核对。示例没有连接本站账户、没有触发新 run,因此不写“本站已跑通”。
Apify 在 n8n 中使用 community node,包名是 @apify/n8n-nodes-apify。它能运行 Actor/Task、读取 run 与存储,也能在 Actor/Task 运行结束时触发工作流。
官方节点也提供“运行并返回 Dataset items”的组合操作。它适合短流程;需要审计状态、日志与结果归属时,保留显式步骤更容易定位失败:
Manual Trigger
→ Apify: Run Actor (Wait for finish = true)
→ IF Run.status = SUCCEEDED
→ Apify: Get Dataset Items
Dataset ID = 同一个 Run 的 defaultDatasetId
→ 你的下游:Google Sheets / 数据库 / HTTP
Wait for finish 返回后,SUCCEEDED、FAILED、TIMED-OUT 和 ABORTED 都可能是终态。只有 SUCCEEDED 进入取数分支;其他终态记录 runId、status 与 statusMessage 后停止写入。不要在第一次就加入 AI 总结、十个分支和自动群发,先证明一条输入能产生正确 Dataset,再扩工作流。
安装与认证怎么选
| 环境 | 节点安装 | 认证建议 |
|---|---|---|
| n8n Cloud | 从 canvas 搜索并安装允许的 verified community node | 可按官方当前支持选择 OAuth2 或 API key |
| 自托管 n8n | 在 Community Nodes 安装包名 | API key 放 n8n Credentials,不进节点字段 |
API key 只放 Credentials。不要把 token 写进 HTTP URL、Code node、工作流名称或可导出的 JSON。
自托管 n8n 只有在使用 Apify 完成事件 trigger 时,才需要把 WEBHOOK_URL 配成 Apify 可访问的外部地址;默认指向 localhost 的 webhook 无法接收平台回调。纯 Manual/Cron → Run Actor action 流程不依赖这个外部回调。
节点配置顺序
- 在任务页确认 Actor slug、输入字段和小样本上限。
- 添加 Run Actor,先用固定 JSON 输入,并开启 Wait for finish。
- 从等待完成后的 Run 输出读取
id、status、statusMessage和defaultDatasetId,不要拿启动时的旧响应猜最终状态。 - 加状态门禁:仅
SUCCEEDED进入结果分支;FAILED、TIMED-OUT、ABORTED进入告警或人工复核。 - 添加 Get Dataset Items,Dataset ID 使用同一个 Run 的
defaultDatasetId,不写死测试 ID。 - 在结果后检查 0 条、必需字段、字段选择与去重,再写入下游;从 Run 输出显式补充追踪字段。
- 需要持续运行时,最后才换成 Cron 或 Apify trigger。若使用 trigger,同样只让成功事件进入取数分支。
一份 Actor 专属的输入边界示例
{
"queries": "coffee shops in Shanghai",
"maxCrawledPlacesPerSearch": 10
}
这两个字段来自特定 Google Maps 类 Actor 的结构示例,不是 Apify Actor 的通用输入。必须以所选 Actor 的当前 input schema 为准;换 Actor 时不要照抄字段名。上线前把数量、地区、语言、允许的目标域名和最大费用写成工作流约束。Actor、Task 与输入复用的区别见 Actors 与 Store 指南。
常见故障
| 现象 | 先查哪里 | 不要怎么做 |
|---|---|---|
| Run 节点结束但没有数据 | 终态是否为 SUCCEEDED,Dataset 是否确有 items | 把 Wait for finish 当作成功 |
| 下游读到旧数据 | defaultDatasetId 是否来自同一次、已完成的 run | 写死旧 Dataset ID |
| 节点超时 | run 的 TIMED-OUT 状态、Actor 日志与输入上限 | 无上限地重复启动 Actor |
| 自托管 trigger 不触发 | WEBHOOK_URL 是否能从外部访问 | 用 localhost URL 等待 Apify 回调 |
| 同一批数据写入多次 | 用 Run ID + 业务键做幂等 | 只靠“节点执行一次”的假设 |
| 字段映射突然报错 | 保存原始 item,核对 Actor schema 变化 | 用空字符串吞掉所有错误 |
把 Google Sheets 当交付层,而不是数据库
小批量名单和人工复核适合写进 Sheets;大结果、嵌套字段、长期历史或多人并发更新更适合数据库/对象存储。先在 n8n 里选择需要的列,再从 Run 节点显式补充来源 URL、Run ID 和采集时间后写表格。完整交付路线见 Apify → Google Sheets 指南。
自动化的完成标准是:能从下游的一行数据追溯到同一次 Actor run,而不是画布上所有节点都变绿。
先用 10 条可人工检查的数据跑通三节点闭环。
compass/crawler-google-places 按 $0.004/条计,$5 免费额度约合 1,250 条;不绑卡,跑完再决定要不要付费。
免费跑我自己的第一批 →