Extract products, prices and verdicts from YouTube reviews

Review channels say the product name, the price and whether to buy it out loud. Describe those fields once and get a row per product from every video, typed so a price comes back as a number.

Price and market research across many review channels.
Affiliate and comparison sites that track what reviewers recommend.
Brand teams watching how their products are reviewed.
The schema

Describe the fields once

The first column is verbatim-string so product names come back exactly as spoken, and price is a number, so a value the host never says is left empty rather than guessed.

schema
POST /v1
{
"multiple": true,
"max_rows": 20,
"columns": [
{
"name": "product",
"type": "verbatim-string",
"description": "Name of each product the host reviews, as they say it"
},
{
"name": "price",
"type": "number",
"description": "The price the host says the product costs, as a number; leave empty if no price is said"
},
{
"name": "verdict",
"type": "enum",
"options": [
"buy",
"wait",
"skip"
],
"description": "Whether the host tells viewers to buy it, wait, or skip it"
},
{
"name": "pros",
"type": "string",
"multiple": true,
"description": "Each advantage the host names for this product"
}
]
}
rows
illustrative output
{
"results": [
{
"product": "Aurora X2",
"price": 249,
"verdict": "buy",
"pros": [
"noise cancelling",
"battery life"
]
},
{
"product": "Aurora X2 Lite",
"price": 129,
"verdict": "wait",
"pros": [
"weight"
]
}
]
}

The output above shows the shape a video returns, not a recorded result. Types are enforced: numbers come back as numbers, list columns as arrays.

Good to know

What to expect

What it costs

A 18-minute video is 180 credits: 10 per started minute, however many rows come back. Videos that fail, such as those without captions, are never charged. See pricing.

  • TubeExtract reads the video’s existing captions, manual or auto-generated. It does not listen to audio or read the screen, and a video with no captions fails as no_captions.
  • Only what is said is read. A price shown on screen but never spoken will not be found.
  • A verdict is only as clear as the host is. An enum is not checked against the transcript the way names and numbers are, so spot-check verdicts on videos where the host hedges.
  • Each video is billed for its length, however many products it covers.
Run it

One call, up to 200 videos

Send the schema with your list of videos, then read the job once every video has finished.

curl https://api.tubeextract.dev/v1 \
-H "X-API-Key: $TUBEEXTRACT_KEY" \
-H "Content-Type: application/json" \
-d '{
"videos": [
"https://youtube.com/watch?v=…"
],
"schema": {
"multiple": true,
"max_rows": 20,
"columns": [
{
"name": "product",
"type": "verbatim-string",
"description": "Name of each product the host reviews, as they say it"
},
{
"name": "price",
"type": "number",
"description": "The price the host says the product costs, as a number; leave empty if no price is said"
},
{
"name": "verdict",
"type": "enum",
"options": [
"buy",
"wait",
"skip"
],
"description": "Whether the host tells viewers to buy it, wait, or skip it"
},
{
"name": "pros",
"type": "string",
"multiple": true,
"description": "Each advantage the host names for this product"
}
]
}
}'
More use cases

Try it on your own videos

New accounts start with 1,000 credits, about 100 minutes of video. Paste the schema above, point it at a video, and check the rows.