Ad Library Video Transcripts & Hooks: TikTok, Facebook, Google avatar

Ad Library Video Transcripts & Hooks: TikTok, Facebook, Google

Pricing

from $20.00 / 1,000 video transcribeds

Go to Apify Store
Ad Library Video Transcripts & Hooks: TikTok, Facebook, Google

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

Jonathan Smith

Maintained by Community

Actor 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?

  1. 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
  2. Downloads each video and extracts the audio. Only the first N seconds are used, so long videos don't add cost.
  3. Transcribes the speech with Whisper. It detects the language automatically and handles English, German, French, Spanish, Italian, Dutch, Polish and more.
  4. Analyzes the script with AI. For each ad you get:
    • hook: the opening line that stops the scroll
    • hook_type: question, pain point, bold claim, social proof, offer, curiosity, UGC testimonial, demonstration or story
    • angle: the marketing angle
    • offer: discount, free trial, bundle and similar
    • cta: the spoken call to action
    • target_persona: who the ad is aimed at
    • script_structure: the copywriting framework, e.g. PAS, AIDA, before/after/bridge, problem/solution, listicle, testimonial, demo or story
    • key_claims: the main promises the ad makes
    • summary: a three-sentence description of the ad
  5. Exports the results:
    • a dataset with one row per ad
    • an HTML swipe file (OUTPUT.html in 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), an advertiser, or ad library startUrls. 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, daysRunning and links. A run summary is stored as OUTPUT.
  • Pay-per-event only and limited permissions, so it can be run by agents that pay per request.

How to use it

  1. Click Try for free.
  2. Pick the ad libraries (TikTok is selected by default).
  3. Enter a keyword (e.g. skincare), an advertiser (e.g. Nike), or paste ad library URLs.
  4. Choose the country, e.g. DE, FR, IT, ES or NL.
  5. Click Start. Results appear in the Overview table as ads are processed. When the run finishes, open OUTPUT.html in 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

FieldDescriptionDefault
sourcestiktok, google, meta["tiktok"]
queryKeyword search–
advertiserAdvertiser name or ID–
startUrlsAd library URLs. The source is detected from each URL.–
countryISO country code, e.g. DE. Meta and Google also accept ALL.DE
maxAdsPerSourceMax video ads per library (1–500)20
dateFrom / dateToOnly ads shown in this date range–
activeOnlyOnly ads that are still runningfalse
transcribeTranscribe each video with Whispertrue
aiAnalysisExtract hook, angle, offer, CTA, script framework and moretrue
outputLanguageLanguage of the analysis: original, en, deoriginal
maxVideoSecondsHow many seconds of each video to transcribe180
proxyConfigurationApify 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.

EventPriceWhen it is charged
Video ad scraped$0.003Each unique video ad saved with its metadata
Video transcribed$0.02Only when a non-empty transcript was produced
AI hook & script analysis$0.01Only when the analysis succeeded (also for music-only videos analyzed from their ad copy)
Actor start$0.00005Once 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 getCost 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

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.

  • 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.

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.