The short answer: Zapier can pull YouTube transcripts two ways — through Apify's official Zapier integration or a plain Webhooks by Zapier POST — and both should filter on the successfield so a captionless video doesn't halt the Zap. The honest caveat up front: Zapier's one-item-at-a-time model makes it the right tool for single-video flows (new video → transcript → summary → somewhere), and the wrong tool for batch corpus work — for batches, use the n8n template or Make, which fan out arrays natively.
Option A: the official Apify integration
Add the Apify app as an action step and connect your account (the free tier works):
- Action: Run Actor — pick YouTube Transcript Scraper (
apihq/youtube-transcript-scraper). - Input JSON:
{
"videoIds": ["{{video_id_from_your_trigger}}"],
"language": "en",
"metadata": true
}- Enable wait for finish, then add the Get Dataset Items action to pull the resulting rows into the Zap.
Option B: Webhooks by Zapier
No app connection — one Custom Request:
- Method: POST · URL:
https://api.apify.com/v2/acts/apihq~youtube-transcript-scraper/run-sync-get-dataset-items- Headers:
Authorization: Bearer YOUR_APIFY_TOKEN·Content-Type: application/json - Data: the same JSON body as above.
The endpoint waits for the run and answers with the dataset rows directly. Keep it to one or a few IDs per Zap run — the sync endpoint's ~5-minute wait limit is generous for single videos (each has a 30-second deadline) but not a batch tool inside Zapier's model.
The step everyone skips: filter on success
Add Filter by Zapier right after the fetch: Only continue if success (Boolean) is true. A video with no captions comes back as success: false with a stable code like NO_CAPTIONS (full registry) — unbilled — and the filter ends that Zap run cleanly instead of erroring your downstream steps. On real-world videos this is not an edge case; plan for it.
What a good Zapier transcript flow looks like
The shape that plays to Zapier's strengths: a trigger about one video (new upload via RSS, a form submission, a Slack message with a link) → transcript fetch → filter on success → one action (append to Notion, draft a summary with an AI step, post to Slack). Cost per triggered video: $0.003 for the transcript — a Zap that processes 100 videos a month spends $0.30 on data.
Honest limits
- Batches don't fit Zapier. Zapier processes one item per Zap run; a 50-ID batch returns 50 rows that Zapier flattens into line items, which most destination apps handle poorly. n8n and Make iterate arrays natively.
- Same content limits as every method:captionless videos return typed failure rows, and private, members-only, and age-gated videos are out of reach for every tool that doesn't own the video.