Facebook Ads Transcript Scraper avatar

Facebook Ads Transcript Scraper

Pricing

Pay per event

Go to Apify Store
Facebook Ads Transcript Scraper

Facebook Ads Transcript Scraper

Extract Meta/Facebook Ads Library creative copy, video URLs, and transcript/subtitle fields exposed for public ads.

Pricing

Pay per event

Rating

0.0

(0)

Developer

Stas Persiianenko

Stas Persiianenko

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

5 days ago

Last modified

Categories

Share

Extract competitor Meta/Facebook Ad Library creative copy, media URLs, and transcript/subtitle fields when Meta exposes them publicly.

Use this actor to turn Facebook ad research into structured rows for creative intelligence, hook analysis, ad swipe files, and downstream transcription workflows.

What does Facebook Ads Transcript Scraper do?

Facebook Ads Transcript Scraper searches public Meta Ads Library pages and saves one dataset row per ad creative.

It captures:

  • ๐ŸŽฌ Video ad URLs and preview images
  • ๐Ÿ“ Creative body copy and headlines
  • ๐Ÿท๏ธ Advertiser/page metadata
  • ๐Ÿ”— Landing page URLs and calls to action
  • ๐Ÿงพ Transcript, subtitle, closed-caption, speech, or voiceover fields when present
  • ๐Ÿงช Diagnostics explaining whether transcript-like data was exposed

The actor is intentionally focused on creative analysis instead of broad political-ad archiving.

Who is it for?

Performance marketers use it to monitor competitor hooks and offers.

Creative strategists use it to build swipe files from live Facebook and Instagram ads.

Agencies use it to compare messaging across client categories.

Growth teams use it to discover videos that should be transcribed or reviewed by an editor.

Researchers use it to export public ad metadata without manually opening every ad card.

Why use this actor?

Meta Ads Library is public, but it is difficult to export repeatably.

This actor handles browser loading, proxy sessions, result normalization, and dataset output.

It also separates true transcript availability from regular ad copy, so you know which creatives need external ASR.

Important transcript caveat

The actor does not invent audio transcripts.

It extracts transcript/subtitle/closed-caption/speech/voiceover fields only when Meta exposes them in the public Ad Library response.

If Meta only exposes the video URL and ad copy, the row will contain transcriptAvailable=false.

You can still use the videoUrls field to pass videos into a separate transcription workflow.

How much does it cost to extract Facebook ad transcripts?

Pricing uses pay per event.

  • Start event: small one-time run fee
  • Item event: charged per saved ad row

The default prefill is intentionally small so first runs stay cheap.

Final tiered prices are calculated from cloud validation costs before QA handoff.

Input options

You can provide one or more of these inputs:

  • searchQueries โ€” keyword searches such as brand names, products, or hooks
  • adsLibraryUrls โ€” public Meta Ads Library result or detail URLs
  • adArchiveIds โ€” known numeric ad archive IDs

Search filters

The actor supports common Meta Ads Library filters:

  • country
  • activeStatus
  • mediaType
  • maxAds
  • requireTranscript

Use mediaType=video when your goal is transcript discovery.

Example input

{
"searchQueries": ["fitness app"],
"country": "US",
"activeStatus": "all",
"mediaType": "video",
"maxAds": 25,
"requireTranscript": false
}

Example output fields

Each dataset row may include:

FieldDescription
adArchiveIdMeta Ad Library ID
pageNameAdvertiser or Facebook page name
creativeTextMain ad body copy
titleHeadline or card title
videoUrlsPublic video URLs found in the response
transcriptAvailableWhether transcript-like fields were exposed
transcriptTextExtracted transcript/subtitle text when available
diagnosticsNotes about extraction and missing transcript fields

Output quality

Rows are deduplicated by ad archive ID.

Dates are normalized to ISO date strings.

Arrays are used for media URLs because carousel/video ads can expose multiple assets.

Null values mean Meta did not expose that field for the specific ad.

How to use it

  1. Open the actor on Apify.
  2. Enter competitor keywords, Ads Library URLs, or ad archive IDs.
  3. Keep maxAds small for the first run.
  4. Run the actor.
  5. Export the dataset as JSON, CSV, Excel, or via API.
  6. Filter rows where transcriptAvailable=true for transcript-ready creatives.
  7. Send rows with only videoUrls to your ASR pipeline if needed.

Tips for better results

Use specific brand or product keywords.

Use activeStatus=active for current market research.

Use activeStatus=all for historical creative analysis.

Use mediaType=video for transcript workflows.

Disable requireTranscript if you also want video URLs and creative copy.

Enable requireTranscript only when you need a transcript-only dataset.

Integrations

Use this actor with:

  • Google Sheets for competitor swipe files
  • Airtable for creative review boards
  • Slack alerts for new competitor ads
  • BI dashboards for messaging trends
  • Whisper or another ASR actor for videos without exposed transcripts
  • LLM tools for hook, offer, and CTA classification

API usage with Node.js

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('automation-lab/facebook-ads-transcript-scraper').call({
searchQueries: ['fitness app'],
country: 'US',
mediaType: 'video',
maxAds: 10
});
console.log(run.defaultDatasetId);

API usage with Python

from apify_client import ApifyClient
client = ApifyClient('YOUR_APIFY_TOKEN')
run = client.actor('automation-lab/facebook-ads-transcript-scraper').call(run_input={
'searchQueries': ['fitness app'],
'country': 'US',
'mediaType': 'video',
'maxAds': 10,
})
print(run['defaultDatasetId'])

API usage with cURL

curl -X POST 'https://api.apify.com/v2/acts/automation-lab~facebook-ads-transcript-scraper/runs?token=YOUR_APIFY_TOKEN' \
-H 'Content-Type: application/json' \
-d '{"searchQueries":["fitness app"],"country":"US","mediaType":"video","maxAds":10}'

MCP usage

Connect Apify MCP with this actor enabled:

$claude mcp add apify-facebook-ads-transcripts https://mcp.apify.com/?tools=automation-lab/facebook-ads-transcript-scraper

Claude Desktop JSON configuration:

{
"mcpServers": {
"apify-facebook-ads-transcripts": {
"url": "https://mcp.apify.com/?tools=automation-lab/facebook-ads-transcript-scraper"
}
}
}

Example prompts:

  • "Find active video ads for meal prep apps and summarize the hooks."
  • "Export Facebook ad video URLs for this competitor keyword."
  • "Show only ads where transcriptAvailable is true."

Legality and ethical use

This actor extracts publicly available Meta Ads Library data.

Respect Meta terms, privacy rules, and local laws.

Do not use scraped data for harassment, discrimination, or unlawful profiling.

FAQ

Does it always return a transcript?

No. Meta does not expose transcript-like fields for every video ad. The actor returns transcriptAvailable=false when only video URLs and creative copy are available.

Can I use the video URL with another transcription tool?

Yes. Use videoUrls for downstream ASR workflows when Meta does not expose transcript text directly.

Troubleshooting: no results

If a query returns no rows, try a broader keyword, a different country, or activeStatus=all.

Facebook may also temporarily block or throttle a session.

Troubleshooting: no transcripts

Many video ads expose only the video URL and ad copy.

That is normal.

Use transcriptAvailable and diagnostics.extractionNotes to understand what happened.

Related automation-lab actors:

Best practices

Start with 10 to 25 ads.

Validate output fields.

Increase limits only after confirming the query returns useful creatives.

Run separate jobs for separate competitors so datasets stay easy to compare.

Data retention

Apify stores run datasets according to your account settings.

Export or integrate important results into your own systems.

Support

If a public Ads Library URL fails repeatedly, include the run ID and input when reporting the issue.

Changelog

Initial version: keyword, Ads Library URL, and ad archive ID inputs with creative metadata, media URLs, transcript availability flags, and diagnostics.