Video candidates pass through a selection table and caption ledger. Failed and pending sources remain in separate trays.

Choose Pinto Studio when one video per run fits your current workflow and an ordered array of timestamped segments meets your needs. Pinto Studio documentation

The main choice is the unit of work: how many videos your workflow sends to each job. Batch input reduces the number of jobs you must start. It does not establish a speed, cost, or transcript accuracy advantage.

This comparison uses public documentation checked on October 20, 2026. It compares documented inputs and outputs, rather than results from a head-to-head test. The method below starts after you have your video list. You can use it to prepare that list, check a small sample, and account for every input before you use the text.

Choose the job size that fits your workflow

An Apify Actor is a program that runs a data collection job. A run is one execution of that program. A dataset is the saved collection of result rows.

For a large list, the number of runs affects the work around collection. Your workflow must start jobs, save their identifiers, check their status, and collect their results. A batch input lets you manage several videos through one run.

The documented units are:

Choose the job size that fits your workflow
Decision pointChronometricaPinto Studio
Input per runUp to 1,000 entriesOne video
Dataset resultOne row per successful unique videoOne item containing ordered transcript segments
Scheduling a listSplit the list into batchesStart one run per video

Sources: Chronometrica documentation and Pinto Studio documentation.

Pinto Studio uses `videoUrl` and `targetLanguage`. Its segments contain `start`, `dur`, and `text`. It supports public videos with captions, including automatic captions. Private, restricted, and caption-less videos fall outside its documented support. Pinto Studio documentation

If your workflow already tracks a separate job for every video, changing that unit may add work with little benefit. If you are building a workflow around a known list, Chronometrica's batch input gives you a direct way to group the work.

Make that choice before you build the scheduler. The scheduler is the part of your workflow that starts and tracks runs. Design it around the input unit you will use, then check how you will save results and failures.

Set the caption rule before you collect text

A public video does not always have usable public captions. Chronometrica reads available captions. It does not create a speech-to-text transcript when public captions are missing. That limit changes the choice if your project requires text for every video: caption extraction alone cannot meet that requirement. Chronometrica documentation

Language is a separate decision. When you set `preferredLanguages`, Chronometrica requires a requested caption language. If none is available, it records a non-billable `LANGUAGE_UNAVAILABLE` failure in `OUTPUT`. It does not return another language without telling you. `OUTPUT` is the run summary that reports counts and failures. Chronometrica input schema

Use that strict rule when the dataset must contain a defined language. A missing result is easier to account for than text in an unwanted language that enters the dataset unnoticed.

Before collection, write down the allowed languages and whether you will accept both manual and automatic captions. Keep these as separate decisions. A caption track can meet your language rule and still contain word errors.

Chronometrica's documented results include the selected language, available caption languages, and a flag that identifies manual or automatic captions. These details help you apply your rules after collection. They do not establish that the words are correct. Chronometrica documentation

If missing captions would prevent your study from working, decide in advance whether a separate speech-to-text process is allowed. Keep any generated transcripts clearly marked so later users can distinguish them from extracted captions.

Use a small check before you schedule the full list

You can prepare most of the workflow before you spend money on collection. The aim is to prove that you can account for the inputs and use the returned text.

  1. Define the allowed videos and languages. State which public videos belong in the collection. Record your language rule and caption rule. Keep excluded videos in a separate record with the reason for exclusion. This prevents a later count difference from looking like a collection failure.
  2. Identify duplicate videos before you split the list. Use the video ID as the identity of a video. Two URL forms can point to the same video. Chronometrica accepts several forms, including standard video links, Shorts links, short links, and raw video IDs, and processes duplicate videos once. Cleaning first makes your planned counts easier to check. Chronometrica documentation
  3. Choose a few public videos for the first check. Include examples that matter to your project, such as different channels or caption types. Apply the language rule you intend to use for the full list. A check with loose settings will not show whether a stricter final rule meets your needs.
  4. Build batches with no more than 1,000 input entries. Count entries after you remove duplicate video IDs. Keep the batch list unchanged once a run starts. If you later change it, save the change as a new batch record. The public Batch YouTube Transcript Extraction example documents the batch input limit.
  5. Save a record of the inputs and runs. Use a ledger: a table that tracks each input. Save the video ID, batch ID, run ID, outcome, retry flag, selected language, and scrape time. These are tracking columns for your workflow, not additional Actor input fields. Keep unknown values empty or mark them as unknown.
  6. Read both result locations. Collect successful transcript rows from the dataset. Read `OUTPUT` for run counts and failed input details. Enable `includeFailedInputDetails` when you need to trace missing results back to individual inputs. A dataset export alone does not account for every submitted video. Chronometrica documentation
  7. Account for every unique input before you load the text. Match successful rows to video IDs. Match failures to the remaining inputs. Investigate any input with no known outcome. Keep duplicate entries separate from unique videos so you do not count a skipped duplicate as a missing transcript.
  8. Check a small set of passages against the videos. Listen to the source audio and compare the words and timestamps. Include names, numbers, specialist terms, and passages you plan to quote. Save the issues you find. This checks whether the captions are suitable for your work; it does not produce a general accuracy score.
  9. Keep unresolved gaps visible. Retry only failures marked retryable, within your budget and source rules. Missing captions need a different decision, rather than repeated attempts. Use a separate, clearly marked speech-to-text process only when your project permits generated transcripts.

The first check should answer two questions: can you use the returned text, and can you explain every missing result? If either answer is unclear, fix that part of the workflow before you increase the batch size.

Start with the verified input structure

The following example matches the checked public input schema. It was checked as input, rather than executed as a paid Actor job. Replace the example URLs with your own video URLs. Caption availability can change.

json
{
  "startUrls": [
    "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
    "https://www.youtube.com/watch?v=M7lc1UVf-VE",
    "https://www.youtube.com/watch?v=jNQXAC9IVRw"
  ],
  "preferredLanguages": ["en"],
  "outputFormats": ["json", "text"],
  "includeFailedInputDetails": true
}
Start with the verified input structure

`startUrls` contains three strings, which is below the 1,000-entry limit. `preferredLanguages` requests English. `outputFormats` requests the supported JSON and text formats. `includeFailedInputDetails` enables details for inputs that do not return transcripts. Chronometrica input schema

With this language setting, a video without the requested caption language becomes a failure recorded in `OUTPUT`. It does not become an empty transcript row. Keep that distinction when you load results: missing text is missing data, not a transcript with zero words. Chronometrica documentation

After the small run, inspect the actual export before you build an import process around it. Check that your process can read video identity, language, timestamped segments, joined text, and scrape time. These are documented output details, but your own loading process must preserve the ones your project needs. Chronometrica documentation

For a broader explanation of caption collection, see YouTube caption extraction. Keep this comparison focused on the choice of job size and result handling.

Fictional example: schedule and check 1,100 unique videos

This entire example is fictional. The input counts and caption outcomes are invented to show the decision method. They are not a test result or customer result.

A research team starts with 1,200 input entries. It identifies 100 repeated video IDs and removes those repeated entries. The clean list contains 1,100 unique videos.

For Chronometrica, the team creates two batches: one with 1,000 inputs and one with 100. The scheduled run count is:

`ceil(1,100 / 1,000) = 2 runs`

Here, `ceil` means round up to the next whole number. The calculation follows the documented batch limit. Chronometrica batch example

For Pinto Studio's documented one-video unit, the same list requires 1,100 scheduled runs. Pinto Studio documentation

This difference concerns the number of Actor jobs the workflow starts. It does not compare network requests, compute time, total cost, or success rate. Both workflows still need to resolve each video.

Now assume that 900 videos expose the requested caption language and 200 do not. In this fictional case, the expected Chronometrica count check across the two runs is:

`1,100 unique inputs = 900 successful transcript rows + 200 failed inputs`

The team reads the successful rows from the datasets and the failed input details from the two `OUTPUT` summaries. It then updates its ledger so every unique video has a known outcome. This uses Chronometrica's documented result and failure records. Chronometrica documentation

The fictional caption-available share is:

`900 / 1,100 × 100 = 81.82%`

That percentage describes the invented collection. It is not an observed product success rate or an accuracy score.

The team keeps all 200 gaps in its collection record. It does not replace them with empty text or treat them as videos with no spoken words. It also keeps the 100 removed duplicate entries, so it can explain the path from 1,200 original entries to 1,100 unique videos and 900 transcript rows.

Check the dataset before you increase the workload

A large dataset can hide missing results. Start each review with counts, then check content.

Chronometrica's `OUTPUT` summary reports received inputs, unique videos processed, successful rows, skipped duplicates, unavailable or unsupported inputs, and error-code counts. Optional details help trace inputs that produced no transcript. Use those records to explain the result count. Chronometrica documentation

Do not assume every summary count represents a separate group. Use the input ledger to give each unique video one current outcome. Keep error codes as reasons for those outcomes, rather than adding them as more videos.

Then review text quality. A long transcript can contain wrong words. A timestamp can be present but poorly aligned. Check source passages before you quote text, compare terms, or make claims about what a speaker said. Where a value is unknown, preserve that uncertainty.

A public DataHoarder request for large amounts of YouTube transcripts describes a need for about 500,000 transcripts and concerns about batch limits, cost, and source blocks. That shows why scheduling matters. It does not establish that either Actor can reliably complete a collection of that size.

Expand only after you can account for a smaller collection and understand its gaps. Set a spending limit for that next stage. This comparison does not establish a price advantage or completion time.

If you still need to find videos, use the separate guide to build a YouTube transcript corpus from search results. Once the URL list exists, return to the batch and result checks here.

Sources & further reading

By Chronometrica · Updated

Back to top ↑