YouTube Transcript Scraper | Captions API, Bulk, Shorts avatar

YouTube Transcript Scraper | Captions API, Bulk, Shorts

Pricing

from $0.60 / 1,000 transcript results

Go to Apify Store
YouTube Transcript Scraper | Captions API, Bulk, Shorts

YouTube Transcript Scraper | Captions API, Bulk, Shorts

Extract YouTube transcripts in bulk at $0.90 per 1,000 videos ($0.60 on paid plans) plus a $0.0001 start fee and $0.0001 per hour beyond 3 h. Videos, Shorts, channels, playlists, search terms; YouTube captions as text, timestamps, AI chunks, chapters. No captions, no charge.

Pricing

from $0.60 / 1,000 transcript results

Rating

0.0

(0)

Developer

Aurelix

Aurelix

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 hours ago

Last modified

Security

Limited permissions

Share

What is YouTube Transcript Scraper?

Get the transcripts of YouTube videos, Shorts, channels, playlists or searches (text, timestamps, AI-ready chunks) for $0.90 per 1,000 videos ($0.60 on paid plans), no login. No captions, no charge.

For AI builders, researchers and content teams. One video comes back in seconds; your preferred caption language with fallback, an auto-generated flag on every row, and a status row (never charged) for videos without a transcript. Your first run with the example input costs about $0.001 (1 video in our test run).

YouTube Transcript Scraper: example output from a real run

YouTube Transcript Scraper: 75-second demo video

▶ Watch the 75-second demo

InputVideo URLs or IDs, channels, playlists, search terms
OutputTranscript text, timestamped segments, AI chunks, chapters, 26 fields incl. a status; JSON, CSV, Excel, API
LanguagesYour preference order, creator captions before auto-generated, automatic fallback
AutomateSchedules, webhooks, Zapier, Make, n8n, Google Sheets, MCP for AI agents
Price$0.90 per 1,000 videos ($0.60 per 1,000 videos on paid Apify plans)
Login neededNo

Daily monitor: only what's new, every morning

Set it once, get only the new videos every morning. With Only new videos since last run on, the first run returns everything that matches; each later run skips videos that earlier runs already returned, so you pay only for new ones.

{
"channels": [
"https://www.youtube.com/@veritasium",
"https://www.youtube.com/@mkbhd"
],
"maxVideosPerSource": 10,
"languages": [
"en"
],
"incremental": true,
"stateKey": "two-channels-daily"
}
  1. Paste this input into the Input tab (JSON view) and click Save as a new task; it appears under Saved tasks.
  2. Open the task from Saved tasks and click Schedule.
  3. Choose Daily, pick the hour, and save.

Cost example: 2 channels, about 1 new video a day ≈ $0.03/month on the free plan ($0.021 on paid plans): one run a day for 30 days, start fee included. The first run returns everything that matches, so it costs more.

Add a Slack incoming-webhook URL in slackWebhookUrl (or any URL in webhookUrl) to get a short digest of each run's new videos; nothing is sent when a run finds nothing.

Why YouTube Transcript Scraper users pick this one

  • One video in seconds. Plain HTTP, no browser start; built for AI agents.
  • Whole channels in one run. Channels, playlists and search terms, not one video per run.
  • Citations built in. Every chunk has start and end times and a timestamped link.
  • A tenth of a cent each. $0.60 per 1,000 on paid plans, $0.0001 start fee.
  • A row for every input. Missing captions or private videos say why, never charged.

Get started in 3 steps

  1. Paste video links, channel links or @handles, playlist links or search terms, and set how many videos to read per channel, playlist or search.
  2. Optionally set your preferred caption languages (e.g. en, es), turn auto-generated captions off, or change the AI chunk size.
  3. Click Start, then download JSON, CSV or Excel, or send the transcripts to your vector database, LangChain, LlamaIndex, Zapier, Make or n8n through the API.

▶ Try it with the example input

The form opens with an example input already filled in: that run costs about $0.001 on the free plan.

How much does it cost to scrape YouTube transcripts?

Pay per event: you pay only for what the run returns, plus a small start fee. Bronze, Silver, Gold and higher Apify plans pay less per result.

VideosFree planPaid plans (Bronze, Silver, Gold)
100$0.0901$0.0601
1,000$0.90$0.60
10,000$9.00$6.00

Totals include the $0.0001 start fee per run, rounded to the cent (amounts under $0.10 to four decimals). Apify's free plan includes $5 of credit a month, enough for about 5,500 videos.

$0.90 per 1,000 videos ($0.60 on paid Apify plans) plus a $0.0001 start fee per run (at the default 256 MB; Apify charges it per GB of memory), so a single video costs $0.0007 to $0.001. Very long videos add $0.0001 for each full hour beyond the first 3 hours (long-video-hour). Videos skipped for missing captions or because they are private, removed, age-restricted, members-only or live are never charged. The $0.20 residential-retry fee applies only if you turn on 'residentialFallback': at most once per run, and only when a residential IP returned at least one transcript.

Billing events

EventFree planPaid plans (Bronze, Silver, Gold)
transcript-result$0.90 per 1,000 videos$0.60 per 1,000 videos
residential-retry$0.20 per run (only with residentialFallback on, when a residential IP returned a transcript)$0.20 per run (only with residentialFallback on, when a residential IP returned a transcript)
long-video-hour$0.0001 per hour of video beyond the first 3 hours$0.0001 per hour of video beyond the first 3 hours
apify-actor-start$0.0001 per run$0.0001 per run

Benchmarks: how we compare

TestInputResultRun timePeak memory
Default input1 video1 transcript2 to 3 s48 to 67 MB
Single videos, cold start8 runs, 1 video each: watch, youtu.be, Shorts, live, embed and mobile links with timestamps8 of 8 transcripts2 to 5 s49 to 59 MB
Mixed batch20 inputs: every link format, a duplicate, a deleted, an age-restricted, a region-blocked live replay and two caption-less videos13 of 13 eligible videos; 6 status rows, not charged29 to 34 s67 to 69 MB
Channels, playlist and searches3 channels, 1 playlist, 2 searches, 15 each (90 videos, incl. 6- and 12-hour lectures)89 of 89 eligible; 1 without captions189 to 225 s136 to 153 MB
Long playlist3Blue1Brown uploads, 247 videos247 of 247 transcripts220 s93 MB
Very long videos4 streams and lectures of 12 to 26 hours4 of 4 transcripts55 s153 MB
Large search run3 searches, 40 each (120 videos), English then Spanish preferred117 of 117 eligible; 3 without captions201 s114 MB
Daily channel feeda channel, 5 latest, only-new mode, run twice5 transcripts, then 0 new (nothing charged)6 s, then 2 s46 to 64 MB
All final cloud tests25 runs on the HTTP route476 of 476 eligible videos, every run SUCCEEDED

Apify cloud runs at the default 256 MB, one run per row, plain HTTP over Apify datacenter proxy; run times include container start. YouTube refuses many datacenter IPs (70 to 90% at times); the run moves to fresh IPs, which is counted in these times.

What data you get

YouTube Transcript Scraper turns YouTube videos into clean transcripts: give video links (any format, including Shorts, youtu.be and embed links), channels (latest videos), playlists or search terms, and get one row per video with the full transcript as plain text, timestamped caption segments, ready-made chunks for RAG and embeddings, chapters, the caption language and whether it is auto-generated, plus the title, channel, publish date, duration and views. Videos it cannot read get a status row saying why, and are not charged. A single video comes back in a few seconds, so AI agents can call it through Apify's MCP server.

  • status (ok, or why there is no transcript: no_captions, unavailable, invalid_input, not_found, no_videos, failed, not_read) and error
  • video_id, url, title, channel_name, channel_id, channel_url, channel_handle, published_at (ISO 8601 UTC), duration_seconds, view_count, category, is_live_content
  • language, language_name, is_auto_generated, language_fallback, available_languages
  • transcript_text and word_count
  • segments: [{start, end, text}] in seconds
  • chapters: [{title, start, end}]; chunks: [{index, start, end, text, url}]
  • source_url, scraped_at
titlechannel_namepublished_atlanguageis_auto_generatedword_counttranscript_text
Rick Astley - Never Gonna Give You Up (Official Video) (4...Rick Astley2009-10-25T06:57:33ZenFalse487[♪♪♪] ♪ We're no strangers to love ♪ ♪ You know the rules...
PSY - GANGNAM STYLE(강남스타일) M/Vofficialpsy2012-07-15T07:46:32ZkoTrue194오반 강남 스타일 강남 스타일 낮에는 따로온 인간적인 여자 커피 한 잔에 여유를 아는 품격 있는 여자 ...
Fiber Optics are so much cooler than I thoughtVeritasium2026-10-12T17:11:45ZenFalse6412- In 1887, a young physics teacher attached a thin glass ...
The Fermi Paradox — Where Are All The Aliens? (1/2)Kurzgesagt – In a Nutshell2015-05-06T12:55:55ZenTrue1060are we the only living things in the entire universe the ...

One full video record, exactly as a real run returned it (long text and lists shortened here). From a real run:

{
"video_id": "jNQXAC9IVRw",
"url": "https://www.youtube.com/watch?v=jNQXAC9IVRw",
"title": "Me at the zoo",
"channel_name": "jawed",
"channel_id": "UC4QobU6STFB0P71PMvOGN5A",
"channel_url": "https://www.youtube.com/channel/UC4QobU6STFB0P71PMvOGN5A",
"channel_handle": "@jawed",
"published_at": "2005-04-24T03:31:52Z",
"duration_seconds": 19,
"view_count": 447765657,
"category": "Film & Animation",
"is_live_content": false,
"language": "en",
"language_name": "English",
"is_auto_generated": false,
"language_fallback": false,
"available_languages": [
{
"language": "en",
"is_auto_generated": false
},
{
"language": "de",
"is_auto_generated": false
}
],
"transcript_text": "All right, so here we are, in front of the elephants the cool thing about these guys is that they have really... really ... [97 more characters]",
"word_count": 39,
"segments": [
{
"start": 1.2,
"end": 3.36,
"text": "All right, so here we are, in front of the elephants"
},
{
"start": 5.318,
"end": 7.974,
"text": "the cool thing about these guys is that they have really..."
},
{
"start": 7.974,
"end": 12.616,
"text": "really really long trunks"
},
"... [3 more]"
],
"chapters": [
{
"title": "Intro",
"start": 0,
"end": 5
},
{
"title": "The cool thing",
"start": 5,
"end": 17
},
{
"title": "End",
"start": 17,
"end": 19
}
],
"chunks": [
{
"index": 0,
"start": 1.2,
"end": 18.881,
"text": "All right, so here we are, in front of the elephants the cool thing about these guys is that they have really... really ... [97 more characters]",
"url": "https://www.youtube.com/watch?v=jNQXAC9IVRw&t=1s"
}
],
"source_url": "https://www.youtube.com/watch?v=jNQXAC9IVRw",
"scraped_at": "2026-11-04T19:33:36Z"
}

Use cases

  • AI developers loading a channel's videos into a vector database for RAG
  • Researchers and analysts mining talks, lectures and interviews as text
  • Marketers and SEO writers turning videos into articles, summaries and quotes
  • AI agents that need a video's transcript through MCP

Use-case recipes

Build a searchable knowledge base from a channel

For AI developers and educators. Put the channel in channels and set maxVideosPerSource. Embed each entry of chunks; each chunk's url opens the video at that moment, so an answer can link to the exact spot.

{
"channels": [
"https://www.youtube.com/@veritasium"
],
"maxVideosPerSource": 10,
"languages": [
"en"
],
"chunkSize": 1000,
"chunkOverlap": 100
}

Daily new-video digest in Slack

For marketers and analysts who follow a few channels. Turn on incremental, give it a stateKey, paste a Slack webhook URL, and schedule the task daily. Each run returns only videos not returned before, and Slack gets the count and the top 10 with links.

{
"channels": [
"@mkbhd"
],
"maxVideosPerSource": 5,
"incremental": true,
"stateKey": "mkbhd-feed",
"slackWebhookUrl": "https://hooks.slack.com/services/T000/B000/XXXX"
}

Research what videos say about a topic

For content researchers. Add search terms and keep the limit small. Sort the rows by view_count, then summarise transcript_text per video; turn off includeSegments when you only need the text.

{
"searchTerms": [
"python tutorial"
],
"maxVideosPerSource": 5,
"includeSegments": false,
"chunkSize": 0
}

Turn a course playlist into study notes

For students and trainers. Give the playlist; videos come back in playlist order. Use chapters as section headings and segments to quote the exact time of each point.

{
"playlists": [
"https://www.youtube.com/playlist?list=PLFs4vir_WsTwEd-nJgVJCZPNL3HALHHpF"
],
"maxVideosPerSource": 5,
"languages": [
"en"
]
}

Input

FieldTypeWhat it doesDefault
videos (Videos)arrayVideo URLs or 11-character IDs in any form, e.g. ['https://www.youtube.com/watch?v=dQw4w9WgXcQ', 'https://youtu.be/jNQXAC9IVRw', 'dQw4w9WgXcQ'].["https://www.youtube.com/watch?v=dQw4w9WgXcQ"]
residentialFallback (Retry on a residential IP when blocked)booleanYouTube asks many cloud IPs to confirm they are not a bot.false
channels (Channels (latest videos))arrayChannel URLs, @handles or UC… channel IDs, e.g. ['https://www.youtube.com/@veritasium', '@mkbhd'].
playlists (Playlists)arrayPlaylist URLs or IDs, e.g. ['https://www.youtube.com/playlist?list=PLFs4vir_WsTwEd-nJgVJCZPNL3HALHHpF'], read in playlist order.
searchTerms (Search terms)arrayYouTube searches, e.g. ['python tutorial'].
maxVideosPerSource (Max videos per channel, playlist or search)integerHow many videos to read from each channel, playlist and search term, e.g. 20.10

All 15 fields, with examples: see the Input tab.

Use with AI agents (Apify MCP server, Claude, ChatGPT, n8n AI agent)

YouTube Transcript Scraper is a ready-made tool for AI agents. Through the Apify MCP server an agent reads this Actor's input schema, fills in the input from your request, starts the run and reads the videos back. You pay the same per-result price as a run started by hand, from your own Apify account.

Example prompts

  • "Get the transcripts of the latest 10 videos from https://www.youtube.com/@veritasium and summarise each one in three bullet points"
  • "Search YouTube for python tutorial, take the top 5 videos with English captions and give me a table of title, channel, views and word count"
  • "Pull the transcript of https://www.youtube.com/watch?v=dQw4w9WgXcQ split into chunks with timestamped links so I can cite the exact moment"

Claude (claude.ai and Claude Desktop)

Open Settings > Connectors, choose Add custom connector, paste https://mcp.apify.com/?tools=aurelix/youtube-transcript-scraper and sign in to Apify when asked. Then ask Claude one of the prompts above.

Claude Code, Cursor, VS Code and other MCP clients

$claude mcp add --transport http apify "https://mcp.apify.com/?tools=aurelix/youtube-transcript-scraper"

Clients configured with JSON take the same URL:

{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com/?tools=aurelix/youtube-transcript-scraper"
}
}
}

A client without Apify sign-in sends the header Authorization: Bearer <YOUR_APIFY_TOKEN>; to run the server locally instead, use npx -y @apify/actors-mcp-server --actors aurelix/youtube-transcript-scraper with APIFY_TOKEN set.

ChatGPT

Where your ChatGPT plan offers custom connectors (developer mode), add https://mcp.apify.com/?tools=aurelix/youtube-transcript-scraper as a connector, sign in to Apify, and ask for the data in plain words.

n8n AI agent

Give an AI Agent node an MCP Client Tool with the endpoint https://mcp.apify.com/?tools=aurelix/youtube-transcript-scraper and a Bearer credential holding your Apify token. The agent can then call YouTube Transcript Scraper whenever a workflow step needs videos; for a fixed, non-agent workflow use Apify's n8n node with Run Actor instead.

Use it from AI agents (MCP), the API or no-code

Copy this to your AI assistant

Use the Apify Actor aurelix/youtube-transcript-scraper (YouTube Transcript Scraper) through Apify's MCP server or API. Main input: videos (Videos); residentialFallback (Retry on a residential IP when blocked). Example input: {"channels": ["https://www.youtube.com/@veritasium"], "maxVideosPerSource": 20, "languages": ["en"], "chunkSize": 1000}. Each result is one video with fields such as video_id, url, title, channel_name, channel_id, channel_url, channel_handle, published_at. It costs $0.90 per 1,000 videos on Apify's free plan plus a $0.0001 start fee per run, and needs no login.

MCP server URL for this Actor: https://mcp.apify.com/?tools=aurelix/youtube-transcript-scraper (setup for each client in the section above).

API

Start a run and read the dataset with Apify's REST API or the Python and JavaScript clients:

from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("aurelix/youtube-transcript-scraper").call(run_input={'channels': ['https://www.youtube.com/@veritasium'], 'maxVideosPerSource': 20, 'languages': ['en'], 'chunkSize': 1000})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item)

No-code: schedule it in 3 clicks

Send the results to Google Sheets, Zapier, Make, n8n, Slack or any webhook URL.

  1. Fill in the input, then click Save as a new task.
  2. In the task, click Schedule and pick daily or weekly (Apify Schedules).
  3. Turn on Only new videos since last run so each run returns only what is new, and paste a Slack or webhook URL into Slack webhook URL / Webhook URL to get a digest of the new items (count plus the top 10) after every run.

Prefer n8n or Make? Ask in the Issues tab and we will share a ready-made workflow for it.

FAQ

Can I scrape YouTube transcripts without login?

Yes, without login: no YouTube account, cookies or API key. The Actor reads the public data YouTube serves any logged-out visitor, and never solves CAPTCHAs.

Is there a YouTube transcripts API?

You can use this Actor as one. Start it with Apify's REST API or the Python and JavaScript clients and read the results as JSON (see the code above), or call it from an AI agent through MCP.

How much does it cost to scrape YouTube transcripts?

About $0.90 for 1,000 videos on Apify's free plan and $0.60 on paid plans, start fee included. The free $5 monthly credit covers about 5,500 videos.

Can I export YouTube transcripts to Excel or Google Sheets?

Yes. Download the results as Excel, CSV, JSON, XML or HTML from the run's Storage tab, or send them to Google Sheets with Apify's Google Sheets integration or the API.

It reads only public data any logged-out visitor can see: YouTube videos' captions and basic video details. It reads one video per IP at a time, four at once, never logs in and never solves CAPTCHAs. It returns caption text and video details (title, channel, date, duration, views, chapters); no comments, commenter names or other viewer data are read. Data is returned as shown publicly on YouTube, incl. the channel's name and @handle. The content is returned as the creator published it; copyright in it stays with its owner. People can ask for removal of their data by opening an issue on this Actor's Issues tab; if YouTube formally asks us to stop, this Actor will stop. You are responsible for using the data lawfully, incl. anti-spam and privacy laws; this is not legal advice.

Can I get transcripts for a whole YouTube channel?

Yes. Paste the channel URL and it returns a transcript for each of its videos that has captions. Turn on the only-new-videos mode and schedule it for a daily channel feed.

Is there a cheaper YouTube transcript scraper on Apify?

On price, yes: $0.60 per 1,000 videos on paid plans against $2.00 to $2.50 for the most-used ones, with a $0.0001 start fee. This tool doesn't translate transcripts or export SRT/VTT.

Can an AI agent call it?

Yes, through Apify's MCP server or the API: a single video comes back in seconds, and the output has chunks with timestamped links ready for citations.

Which videos work?

Any public video with captions: creator-uploaded or YouTube's automatic captions, in any language, including Shorts and past live streams. Videos without captions, private, removed, age-restricted and members-only videos cannot be read without a login; they are skipped and not charged.

Does it translate transcripts?

No. It returns captions in the languages the video actually has. Your preferred languages are tried in order; if none exists the video's own track is returned and 'language_fallback' is true. 'available_languages' lists every track.

What are the chunks for?

For RAG and embeddings: each transcript is cut into chunks of about 'chunkSize' characters with 'chunkOverlap' characters of overlap, always at caption-line boundaries. Each chunk has its start and end in seconds and a link that opens the video at that moment, so an AI answer can cite the exact spot.

How do chapters work?

They are read from the description timestamps the way YouTube builds chapters: at least three timestamps, the first at 0:00, in ascending order. YouTube's automatically generated chapters are not included.

Why did a run return fewer videos than I asked for?

Videos without captions and unavailable videos get a status row instead of a transcript (the status message also counts them by reason). Channels and playlists can have fewer videos than the limit. If YouTube kept blocking every proxy IP, the run stops early, keeps the transcripts already done and says so.

What am I charged when no transcript comes back?

Only the start fee ($0.0001 per run at the default 256 MB). Videos without captions, private, removed, age-restricted, members-only, live and upcoming videos, empty caption tracks, inputs that are not YouTube links and videos already returned in incremental mode are never charged. The $0.20 residential fee is charged only when you turned on residentialFallback and a residential IP returned at least one transcript.

What does a BLOCKED status mean?

YouTube refused every cloud IP the run tried. Before the run's first video answer, it stops after 60 refused IPs (all four workers together) or 20 seconds, charges only the start fee, and gives each unread video a 'not_read' row. Try again later, or turn on residentialFallback: at that same point the run then moves to residential IPs (up to 20 videos, one $0.20 fee only if they return a transcript).

Is a video charged twice if it is in a channel and a playlist?

No. Videos from all sources are de-duplicated before reading, so each video is read and charged once per run. With Only new videos since last run on, videos returned by an earlier run with the same inputs (or the same stateKey) are skipped too; that memory is kept for a year.

How fast is it?

A single video usually comes back in 3 to 20 seconds in total, most of it the run starting. Videos are read four at a time; in our tests 19 videos took about 30 seconds and 90 videos from channels, a playlist and searches a few minutes.

How many videos can one run read?

Up to 5,000 per channel, playlist or search term, plus any videos you list directly. A run stops early when 5 videos in a row fail after retries, when it has read 20 videos over a residential IP, when your maximum charge is reached, or when the run timeout comes near; it keeps and charges only the transcripts already returned.

Are Shorts included?

Shorts you paste as links are read. A channel is read from its Videos tab, so its Shorts and live tabs are not included, and search results leave Shorts out.

What happens if chunkOverlap is bigger than chunkSize?

The run sets the overlap to a tenth of the chunk size instead of failing. Set chunkSize to 0 to get no chunks at all.

Limits (stated honestly)

  • Only videos that have captions can be returned; there is no speech-to-text for videos without them.
  • Private, removed, age-restricted, members-only, live and upcoming videos are skipped (they need a login or have no final captions).
  • No translation: captions come in the languages the video has.
  • Channels are read from their Videos tab (newest first); Shorts and live tabs are not included unless you give those videos directly.
  • Search returns YouTube's video results for the term in relevance order, without Shorts, channels or playlists.
  • Chapters come from description timestamps only, not YouTube's auto-generated chapters.
  • YouTube refuses many cloud IPs; the run moves to fresh datacenter IPs, and if the first 60 it tries (all workers together), or its first 20 seconds of video requests, are all refused it stops with a BLOCKED status (only the start fee is charged). With 'residentialFallback' on it moves to residential IPs at that point instead, for up to 20 videos.
  • Very long videos: each full hour beyond the first 3 hours adds $0.0001 (a 12-hour stream is $0.0009 + 9 × $0.0001).

Works great with

Public Aurelix Actors, grouped by the data they collect. All are pay-per-result and need no login.

AI, content and SEO

Jobs and hiring data

  • Greenhouse Jobs Scraper: Live jobs from a company's Greenhouse, Lever, Ashby or SmartRecruiters board, with salary and Canadian province tags.
  • LinkedIn Jobs Country Filter Scraper: Public LinkedIn job postings by keyword and country: title, company, location, seniority, job type, salary text, description.
  • Multiple Job Boards Scraper: LinkedIn, about 50 company career sites, Remote OK and We Work Remotely jobs in one deduplicated list.

E-commerce and product data

Leads and company data

  • Newly Funded Companies Hiring: Companies that just raised money (SEC Form D), with their open roles and business contacts, as a new-only monitor.
  • Google Maps Phone Scraper: Local business lists from Google Maps: phones, websites, ratings, hours, coordinates; optional website emails and socials.
  • Recently Funded Companies API: US companies that just filed an SEC Form D: amount raised, industry, state, executives, confirmed website.
  • Tech Stack API: CMS, e-commerce platform, analytics, ad pixels, chat, CDN and email provider for each domain you enter.

Ad intelligence

  • Competitor Watch: One report per competitor with only what is new: Meta and TikTok ads, page changes, Shopify products and prices, jobs.
  • Facebook Ad Library Search & API: Facebook and Instagram business ads from the Meta Ad Library: copy, creatives, landing pages, dates, optional EU reach.

Canada and government data

  • Canada Building Permits: Building permits and development applications from 7 Canadian cities: address, type, status, dates, value, applicant, contractor and Toronto planner contact.

More data tools

  • Tennis Betting Odds Scraper: Tennis results and upcoming matches with opening and closing odds per bookmaker and implied probabilities.

Recent changes

  • 0.1: Very long videos add $0.0001 per hour beyond 3 hours; the status states the exact charge, start fee included; videos not read after an early stop get a 'not_read' row.

The full history is on the Changelog tab.

Tested daily

An automated health check runs this Actor every day on a fixed input and checks that at least 1 videos come back with video_id, title, transcript_text, segments, language filled in; a failed check alerts the maintainer straight away.

Your feedback

Missing a field, found a bug or need another filter? Open an issue on the Issues tab; we aim to answer within a day. If this Actor saved you time, a short review helps other people find it.