Vibecode TranscriptAPI

track this build4 phases, 12 steps, beginner friendly
KINDA · weekend project
price $5/moyou'd save $60/yrbuild time one sittingcategory 🛠️ dev toolsreplaced by 0 people

The happy path is genuinely a one-sitting build: the open-source youtube-transcript-api library fetches a caption track in a few lines, and wrapping it in FastAPI gives you a working personal endpoint. The honest gap is reliability. YouTube rate-limits and IP-blocks caption scraping at any real volume, so the DIY version works until it suddenly does not, and there is no fix without a rotating proxy pool you must rent and operate. The paid product is not selling the parsing; it is selling the unblocked pipe, plus search and playlist endpoints on top.

the project pack5 files · written for this build, step by step
README.md
# TranscriptAPI · indie build

A personal caption store whose hard problems are that the only supported fetch needs edit permission on the video, that automatic caption segments are phrase fragments rather than sentences, and that the API bills quota units per call so a playlist loop can exhaust the day before lunch.

Estimated effort: **weekend**. Work `BUILD_PLAN.md` top to bottom · every phase ends in a check that has to pass before the next one starts.

## Stack

| Part | Choice | Why |
| --- | --- | --- |
| Runtime | Python 3.12 with FastAPI and uvicorn, one process, no worker fleet | the work is network waiting and parsing, and a personal load fits in one process |
| Storage | SQLite beside the app with a full text index over the sentence layer | a caption store is small, append heavy and read mostly |
| Sources | A source interface with the official captions API and a caption file importer behind it | these are the two things you are actually entitled to read, and the seam takes a licensed third |
| Authorisation | OAuth for the official API, local keys if you serve anyone but yourself | captions.download needs edit permission on the video and there is no route around it |
| Units | Segment times as integer milliseconds, never floating point seconds | floats drift, compare badly, and ruin alignment when you join tracks |

## Before you start

Have every one of these ready. The plan assumes them from step one.

- [ ] **Python 3.12 or newer** · free
  - Why: Runs the service and the importer.
  - Get it: python.org or your version manager.
  - Verify: python3 --version prints 3.12 or higher
- [ ] **A Google Cloud project with the YouTube Data API enabled and an OAuth client** · free within the default quota
  - Why: The only supported caption fetch runs through it, and the project is also where the daily quota lives.
  - Get it: Create a project, enable the API, configure the consent screen and create an OAuth client for a desktop application.
  - Verify: A consent flow completes and captions.list returns tracks for a video you own
- [ ] **At least one video you can edit, with a caption track** · free
  - Why: Without it you cannot exercise the official source at all, and the whole authorisation path stays untested.
  - Get it: Upload an unlisted test video to a channel you control and add captions to it.
  - Verify: The official source returns its track and segments
- [ ] **A set of caption files in SRT, WebVTT and TTML** · free
  - Why: These are the importer's real inputs and the sentence heuristic needs an automatic-caption fixture with no punctuation to be tested honestly.
  - Get it: Export captions from a video you control in each format, and keep one deliberately unpunctuated.
  - Verify: All three import to identical row shapes
- [ ] **Your written source policy** · free
  - Why: Deciding what the service may fetch after you have built the fetcher means deciding it from whatever already works.
  - Get it: Write down which sources are enabled, what each one requires, and that no evasion layer will be added.
  - Verify: The policy endpoint and the README carry the same text

## Quick start

Follow Phase 1 in `BUILD_PLAN.md`; it creates the project.

Then copy `.env.example` to `.env` and fill in the values it documents.

## Honest limits

This build deliberately does not replace:

- A proxy pool or any other blocking evasion.
- Channel, playlist and search over videos you do not control.
- Speech recognition over downloaded audio.
- Any availability promise.
- staying unblocked when YouTube rate-limits caption fetches
- search, channel and playlist endpoints
- reliability at bulk volume
- an SLA and support when YouTube changes something

If one of those is essential to you, that is the reason to keep paying for TranscriptAPI, and the README should say so rather than pretend.

$ choose a build depth, inspect the files, then open the complete pack in your agent

why people still pay

The parse was never the hard part. Holding a durable, unblocked pipe into YouTube captions at volume is an operations problem that costs real money to run, and buying it for 5 USD a month is cheaper than renting proxies and babysitting them.

what you lose

xstaying unblocked when YouTube rate-limits caption fetches

xsearch, channel and playlist endpoints

xreliability at bulk volume

xan SLA and support when YouTube changes something

prior art · use these instead of building, if you'd ratheryoutube-transcript-apiopen-source Python library for the core caption fetch↗
share on X ↗"I just replaced TranscriptAPI ($5/mo) with one prompt"
the numbers

TranscriptAPI pricing

planmonthlyannual (per mo)what you get
free signup$0$0100 credits; no card; credits expire after 90 days.
starter$5$4.501,000 credits/month; 200 requests/minute on monthly billing or 300 requests/minute on annual billing.
customcustom—Custom credits, rate limits and support.

free tier100 signup credits; no card; expire after 90 days

billingmonthly or annual; annual Starter is $54/year

hidden costsBase subscription credits do not roll over. Top-ups cost $2.50/1,000 credits on monthly Starter or $1.50/1,000 on annual Starter, require an active subscription, and pause if the subscription lapses.

verified 2026-08-14 · source ↗

questions
Vibecode TranscriptAPI

Kinda. The core of TranscriptAPI is buildable in a weekend with the prompt on this page, but there are real gaps: staying unblocked when YouTube rate-limits caption fetches, search, channel and playlist endpoints. Read the honest list above before committing.

How much does TranscriptAPI cost?

TranscriptAPI costs about $5/month (Starter, checked 2026-07-31), which is $60 per year.

What do I lose by replacing TranscriptAPI?

Honestly: staying unblocked when YouTube rate-limits caption fetches; search, channel and playlist endpoints; reliability at bulk volume; an SLA and support when YouTube changes something. If any of those are load-bearing for you, keep paying.

Is there an open-source alternative to TranscriptAPI?

Yes: youtube-transcript-api (open-source Python library for the core caption fetch). Using prior art is also vibecoding; the prompt is for when you want it exactly your way.