Ad Library Video Transcripts & Hooks: TikTok, Facebook, Google
Pricing
from $20.00 / 1,000 video transcribeds
Ad Library Video Transcripts & Hooks: TikTok, Facebook, Google
Get transcripts and AI breakdowns of competitors' video ads from the TikTok Ad Library, Facebook/Instagram (Meta) Ad Library and Google Ads Transparency Center: hook, hook type, angle, offer, CTA, persona, script structure. Find winning ads and build a swipe file.
Pricing
from $20.00 / 1,000 video transcribeds
Rating
0.0
(0)
Developer
Jonathan Smith
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
Ad Library Video Transcripts & Hooks: TikTok, Facebook (Meta) & Google Ads
Get the transcripts of your competitors' video ads, plus the hook, angle, offer and CTA behind each one. This Actor searches the public TikTok Ad Library, Meta Ad Library (Facebook & Instagram) and Google Ads Transparency Center, downloads every video ad it finds, transcribes the voice-over with Whisper and has an LLM break the script down. You get a clean dataset (JSON, CSV, Excel) and a swipe file you can share, with long-running ads (the likely winners) at the top.
Enter a keyword, a competitor name or an ad library URL. You don't need an account or an API key, and you don't have to watch hundreds of ads yourself.
What does it do?
- Finds video ads in public ad libraries:
- TikTok Ad Library: the DSA transparency library for TikTok ads shown in the EU/EEA, Switzerland, the UK and Turkey
- Meta Ad Library: Facebook and Instagram ads
- Google Ads Transparency Center: YouTube and Google video ads
- Downloads each video and extracts the audio. Only the first N seconds are used, so long videos don't add cost.
- Transcribes the speech with Whisper. It detects the language automatically and handles English, German, French, Spanish, Italian, Dutch, Polish and more.
- Analyzes the script with AI. For each ad you get:
hook: the opening line that stops the scrollhook_type: question, pain point, bold claim, social proof, offer, curiosity, UGC testimonial, demonstration or storyangle: the marketing angleoffer: discount, free trial, bundle and similarcta: the spoken call to actiontarget_persona: who the ad is aimed atscript_structure: the copywriting framework, e.g. PAS, AIDA, before/after/bridge, problem/solution, listicle, testimonial, demo or storykey_claims: the main promises the ad makessummary: a three-sentence description of the ad
- Exports the results:
- a dataset with one row per ad
- an HTML swipe file (
OUTPUT.htmlin the key-value store), sorted by days running - a run summary (
OUTPUT)
Use cases
- Creative research for agencies. See which UGC ad scripts, hooks and offers a niche is using right now, before you write your own.
- Swipe files. Build a library of winning ads and their transcripts in a few minutes and share the HTML report with clients or your creative team.
- Competitor hook tracking. Track the hooks and angles a competitor tests over time. An ad that has been running for 60+ days is usually profitable.
- Input for LLM ad-script generators. Give the transcripts and structured hooks to ChatGPT, Claude or your own GPT as few-shot examples of real ads that perform in your market.
- Automation with n8n, Make or Zapier. Run the Actor on a schedule, then send new competitor ads to Slack, Notion, Airtable or Google Sheets through the Apify integrations or webhooks.
- Market and brand research. Find out how a category talks to its customers: pain points, promises, social proof and CTAs.
Use it from Claude, ChatGPT, Cursor or any AI agent
This Actor is built to be called by AI agents through the Apify MCP server: one simple input, a small default run, and every output field described. Ask your assistant things like:
- "What hooks are HelloFresh's video ads using in Switzerland right now?"
- "Get the transcripts of the 10 longest-running TikTok ads for protein powder in Germany and summarize the angles."
- "Compare the offers in Nike's and Adidas's Facebook video ads."
- "Write 5 new ad scripts in the style of the top competitor ads for 'skincare app'."
Add it as a tool (MCP server URL):
https://mcp.apify.com?tools=zephyrous_lampshade/ad-library-video-transcripts
Minimal input an agent needs:
{ "query": "hellofresh", "country": "CH", "sources": ["tiktok", "meta", "google"], "maxAdsPerSource": 10 }
- One required idea: a
query(keyword or brand), anadvertiser, or ad librarystartUrls. Everything else has sensible defaults. - Cost is predictable: about $0.033 per fully analyzed video ad; a default run (10 ads, TikTok) costs about $0.33. Duplicates and failed steps are free. Set a max charge per run to cap spending; the Actor stops cleanly at the limit.
- Output is one row per ad with
transcript,hook,hook_type,angle,offer,cta_spoken,target_persona,script_structure,key_claims,summary,daysRunningand links. A run summary is stored asOUTPUT. - Pay-per-event only and limited permissions, so it can be run by agents that pay per request.
How to use it
- Click Try for free.
- Pick the ad libraries (TikTok is selected by default).
- Enter a keyword (e.g.
skincare), an advertiser (e.g.Nike), or paste ad library URLs. - Choose the country, e.g.
DE,FR,IT,ESorNL. - Click Start. Results appear in the Overview table as ads are processed. When the run finishes, open
OUTPUT.htmlin the key-value store to see the swipe file.
Input example
{"sources": ["tiktok", "meta", "google"],"query": "protein powder","country": "DE","maxAdsPerSource": 25,"activeOnly": true,"transcribe": true,"aiAnalysis": true,"outputLanguage": "en","maxVideoSeconds": 120,"proxyConfiguration": { "useApifyProxy": true }}
You can also start from ad library links:
{"startUrls": [{ "url": "https://library.tiktok.com/ads?region=FR&adv_name=example&sort_type=last_shown_date,desc" },{ "url": "https://www.facebook.com/ads/library/?active_status=active&ad_type=all&country=DE&q=sneakers" },{ "url": "https://adstransparency.google.com/advertiser/AR00000000000000000000?region=DE" }]}
Input fields
| Field | Description | Default |
|---|---|---|
sources | tiktok, google, meta | ["tiktok"] |
query | Keyword search | – |
advertiser | Advertiser name or ID | – |
startUrls | Ad library URLs. The source is detected from each URL. | – |
country | ISO country code, e.g. DE. Meta and Google also accept ALL. | DE |
maxAdsPerSource | Max video ads per library (1–500) | 20 |
dateFrom / dateTo | Only ads shown in this date range | – |
activeOnly | Only ads that are still running | false |
transcribe | Transcribe each video with Whisper | true |
aiAnalysis | Extract hook, angle, offer, CTA, script framework and more | true |
outputLanguage | Language of the analysis: original, en, de | original |
maxVideoSeconds | How many seconds of each video to transcribe | 180 |
proxyConfiguration | Apify Proxy. Meta uses RESIDENTIAL automatically. | Apify Proxy |
Output example
Each video ad is one dataset item:
{"source": "tiktok","adId": "1790000000000001","adUrl": "https://library.tiktok.com/ads/detail/?ad_id=1790000000000001","advertiserName": "Example Nutrition GmbH","firstShown": "2026-07-02","lastShown": "2026-10-20","daysRunning": 110,"isActive": true,"countries": ["DE", "AT"],"reach": 1250000,"adText": "Der Shake, über den alle reden 💪","videoUrl": "https://...mp4","thumbnailUrl": "https://...jpeg","durationSec": 27,"transcript": "Ich hab drei Proteinpulver getestet, damit du es nicht musst. Nummer eins ...","transcriptLanguage": "de","transcribedSeconds": 27,"hook": "I tested three protein powders so you don't have to.","hook_type": "curiosity","angle": "Honest side-by-side test that ends with one clear winner","offer": "15% off with code PROTEIN15","cta_spoken": "Link in bio, use code PROTEIN15","target_persona": "Gym-goers aged 18–30 who don't trust supplement marketing","script_structure": "listicle","key_claims": ["Best taste of the three", "Mixes without clumps", "25 g protein per serving"],"summary": "A UGC creator compares three protein powders. The advertised brand wins on taste and mixability. The ad closes with a discount code.","analysisSource": "transcript","error": null,"skipped": [],"scrapedAt": "2026-10-22T09:15:00.000Z"}
The dataset has two views:
- Overview: advertiser, library, days running, hook, hook type, angle, CTA and ad link
- Full: every field, including the full transcript
You can export either view to JSON, CSV, Excel, XML or RSS, or read it through the Apify API.
Pricing: pay per event
You pay only for results. A step that fails (download error, silent video, AI error) is recorded in the row and is not charged.
| Event | Price | When it is charged |
|---|---|---|
| Video ad scraped | $0.003 | Each unique video ad saved with its metadata |
| Video transcribed | $0.02 | Only when a non-empty transcript was produced |
| AI hook & script analysis | $0.01 | Only when the analysis succeeded (also for music-only videos analyzed from their ad copy) |
| Actor start | $0.00005 | Once per run, charged by the Apify platform |
Same video, several ads: advertisers often run one video under many ad IDs. Each video is transcribed and analyzed once per run; every further ad with the identical video gets the same transcript and analysis, marked with duplicateOfAdId, and costs only the $0.003 scrape fee.
Cost per 100 ads
| What you get | Cost per 100 ads |
|---|---|
Metadata only (transcribe: false) | $0.30 |
Metadata + transcripts (aiAnalysis: false) | $2.30 |
| Metadata + transcripts + AI hook analysis | $3.30 |
Platform compute is included. You can cap your spend with Max cost per run in the run options. When the cap is reached, the Actor stops collecting new ads, finishes the ones it is working on, saves the dataset and the swipe file, and ends with a clear status message. It never charges more than your limit.
FAQ
Is it legal to scrape ad libraries?
The Actor reads public ad transparency data — only what any visitor can see without logging in. No accounts, no private data.
- EU (DSA): the Digital Services Act requires large platforms to publish a searchable repository of the ads they show in the EU. The TikTok Ad Library and the EU part of the Meta Ad Library are such repositories.
- Google Ads Transparency Center: Google's own public transparency site, worldwide.
- No affiliation: this Actor is not affiliated with, endorsed or sponsored by TikTok, Meta or Google. All trademarks belong to their owners.
- Videos are not stored: each video is downloaded to a temporary file only to extract the audio and is deleted right after. The dataset contains links, metadata, the transcript and the analysis.
- Your responsibility: you are responsible for how you use the results. Analyzing ads and taking inspiration is common practice; copying a competitor's creative 1:1 can infringe copyright. If you are unsure, ask a lawyer.
Which ad libraries are supported?
- TikTok Ad Library (library.tiktok.com)
- Meta Ad Library (Facebook and Instagram, facebook.com/ads/library)
- Google Ads Transparency Center (adstransparency.google.com, including YouTube video ads)
Only video ads are returned. Image and text ads are skipped and not charged.
Which countries can I search?
- TikTok: EU/EEA countries plus Switzerland (
CH), the UK (GB) and Turkey (TR), about one year back. US-only ads are not in this library. Examples:DE,FR,IT,ES,NL,PL,SE,AT,BE,IE. - Meta: most countries, or
ALL. Ads that have stopped running are kept mainly for EU countries (because of the DSA). In other countries you see mostly ads that are still active. - Google: most countries, or
ALL.
Why does Meta need a residential proxy?
The Meta Ad Library blocks datacenter IP addresses. When the Meta source is selected and you use Apify Proxy, the Actor switches to the RESIDENTIAL proxy group for Meta automatically, so you don't have to change anything. If you use your own proxies, they must be residential.
Which languages are supported?
Whisper detects the spoken language automatically and supports almost every common language. The transcript always stays in the original language. With outputLanguage you can get the AI analysis in English or German.
Why do some ads have no transcript?
The video may be music-only (no speech), the video file may no longer be available, or the run may have reached your max cost. The skipped and error fields show the reason for each ad. No transcript is charged in these cases.
For music-only or silent videos that have a headline or ad text, the AI analysis is still made from that ad copy, so the hook, angle and CTA columns are filled. These rows have analysisSource: "ad_copy" (instead of "transcript") and are charged as one AI analysis.
Can I connect it to n8n, Make, Zapier or my own app?
Yes. Use the Apify integrations, webhooks or the API (run-sync-get-dataset-items) to send new ad transcripts to Google Sheets, Notion, Airtable, Slack or an LLM pipeline that writes your own ad scripts.
How fast is it?
About 4 ads are processed in parallel. Run time depends mostly on the ad library:
- TikTok and Meta are the fastest sources. TikTok limits how fast ad details can be read, so large TikTok runs slow down.
- Google Ads Transparency Center is the slowest. Google rate-limits datacenter IPs, and the Actor waits and retries instead of failing, which can add several minutes. In our tests, 3 Google ads plus 3 TikTok ads took about 3.5 minutes on a datacenter IP.
Start with a small maxAdsPerSource (for example 5) to see the speed for your query, then scale up.
Examples and code
Real teardowns (HelloFresh, Duolingo, Trade Republic), Python/Node scripts, MCP configs and prompt templates: github.com/video-ad-research/competitor-video-ads-ai.
Related keywords
TikTok ads transcript, Facebook ads transcript, Facebook Ad Library scraper, Facebook ads spy, competitor video ads, MCP tool for ad research, AI agent ad analysis, Meta Ad Library scraper, TikTok Ad Library scraper, Google Ads Transparency Center scraper, video ad transcript, ad hook extractor, competitor ads, ad spy tool, ad swipe file, UGC ad script, winning ads, creative research, ad intelligence.