Extract Facebook ad hooks, CTAs and transcripts to Google Sheets with Apify
Ready for 3.0Ready for 3.0. This template uses no nodes that n8n 3.0 removes. No removed nodes, versions or helpers found. Static check, last run 2026-10-19.
What this workflow does
This workflow has 9 nodes and runs manually, when you click “Execute workflow”. Along the way it connects Google Sheets.
How it runs
Trigger: Manually, when you click “Execute workflow”.
- Config (Edit Fields (Set)): sets 2 fields: competitorUrl, maxAds
- Start Ad Library scrape (competitor) (HTTP Request): calls an HTTP API (POST)
- Scrape finished? (If): checks a condition and branches into true / false
- Transcribe ads by dataset ID: hooks & CTAs (HTTP Request): calls an HTTP API (POST)
- Wait for scrape (poll run) (HTTP Request): calls an HTTP API
- Teardown rows: one per ad (Code): runs custom JavaScript code
- Teardown table (one row per item) (Edit Fields (Set)): sets 10 fields: advertiser, ad_id, status…
- Append rows to Google Sheets (Google Sheets): append
Services it uses
Before you upgrade to n8n 3.0
Nothing in this workflow is removed in n8n 3.0, so it should import and run after the upgrade.
Nodes used (6)
- Manual Trigger
n8n-nodes-base.manualTrigger - Edit Fields (Set)
n8n-nodes-base.set - HTTP Request
n8n-nodes-base.httpRequest - If
n8n-nodes-base.if - Code
n8n-nodes-base.code - Google Sheets
n8n-nodes-base.googleSheets
From the author
Quick Overview This workflow runs on demand to scrape a competitor’s active Facebook video ads via Apify, transcribe each ad, extract the first-3-seconds hook and CTA, and append a one-row-per-ad teardown table to Google Sheets. How it works 1. Starts when…