postreef
All schemas

Product Review

vidextract.predefined.product_review.v1

A product review, unboxing, or comparison extracted from a video. Captures what the product is, its specs, the creator's verdict, and the pros/cons they actually voiced. Do not invent specs or ratings the creator never gave — omit optional fields instead.

Fields

productNamerequired
string

Full product name as stated, including model, e.g. 'Sony WH-1000XM5'.

brand
string

Manufacturer or brand. Omit if not mentioned.

category
string

Product category, lowercased — e.g. 'headphones', 'espresso machine', 'running shoes'.

priceUsd
number

Price in US dollars if stated. Convert clearly-stated other currencies only if the rate is given; otherwise use priceText.

priceText
string

Price exactly as spoken when not a clean USD number, e.g. '£249', 'around 300 bucks', 'free with plan'. Omit if priceUsd captures it.

overallRating
number

Numeric rating the creator explicitly gives, on its original scale. Omit if they never rate it numerically.

ratingScale
integer

Max of the rating scale (e.g. 5 or 10) so overallRating is interpretable. Required only if overallRating is present.

verdictrequired
enum

The creator's bottom-line stance, mapped to the closest bucket.

verdictSummary
string

One or two sentences capturing the closing recommendation in the creator's own framing.

pros
string[]

Positive points the creator actually voiced. Short phrases.

cons
string[]

Negative points, complaints, or dealbreakers the creator voiced. Short phrases.

keySpecs
object[]

Notable specifications mentioned, as label/value pairs.

bestFor
string

Who or what use-case the creator says this is best for. Omit if not stated.

alternatives
string[]

Competing or alternative products the creator names as comparisons. Product names only.

sponsored
boolean

True only if the creator discloses the video is sponsored or gifted. Omit if no disclosure is made.

JSON Schema

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "vidextract.predefined.product_review.v1",
  "title": "Product Review",
  "description": "A product review, unboxing, or comparison extracted from a video. Captures what the product is, its specs, the creator's verdict, and the pros/cons they actually voiced. Do not invent specs or ratings the creator never gave — omit optional fields instead.",
  "type": "object",
  "required": [
    "productName",
    "verdict"
  ],
  "additionalProperties": false,
  "properties": {
    "productName": {
      "type": "string",
      "description": "Full product name as stated, including model, e.g. 'Sony WH-1000XM5'."
    },
    "brand": {
      "type": "string",
      "description": "Manufacturer or brand. Omit if not mentioned."
    },
    "category": {
      "type": "string",
      "description": "Product category, lowercased — e.g. 'headphones', 'espresso machine', 'running shoes'."
    },
    "priceUsd": {
      "type": "number",
      "description": "Price in US dollars if stated. Convert clearly-stated other currencies only if the rate is given; otherwise use priceText."
    },
    "priceText": {
      "type": "string",
      "description": "Price exactly as spoken when not a clean USD number, e.g. '£249', 'around 300 bucks', 'free with plan'. Omit if priceUsd captures it."
    },
    "overallRating": {
      "type": "number",
      "description": "Numeric rating the creator explicitly gives, on its original scale. Omit if they never rate it numerically."
    },
    "ratingScale": {
      "type": "integer",
      "description": "Max of the rating scale (e.g. 5 or 10) so overallRating is interpretable. Required only if overallRating is present."
    },
    "verdict": {
      "type": "string",
      "enum": [
        "must-buy",
        "recommended",
        "good-with-caveats",
        "mixed",
        "not-worth-it",
        "avoid"
      ],
      "description": "The creator's bottom-line stance, mapped to the closest bucket."
    },
    "verdictSummary": {
      "type": "string",
      "description": "One or two sentences capturing the closing recommendation in the creator's own framing."
    },
    "pros": {
      "type": "array",
      "description": "Positive points the creator actually voiced. Short phrases.",
      "items": {
        "type": "string"
      }
    },
    "cons": {
      "type": "array",
      "description": "Negative points, complaints, or dealbreakers the creator voiced. Short phrases.",
      "items": {
        "type": "string"
      }
    },
    "keySpecs": {
      "type": "array",
      "description": "Notable specifications mentioned, as label/value pairs.",
      "items": {
        "type": "object",
        "required": [
          "label",
          "value"
        ],
        "additionalProperties": false,
        "properties": {
          "label": {
            "type": "string",
            "description": "Spec name, e.g. 'battery life', 'weight', 'screen'."
          },
          "value": {
            "type": "string",
            "description": "Spec value as stated, e.g. '30 hours', '1.2 kg', '6.1 inch OLED'."
          }
        }
      }
    },
    "bestFor": {
      "type": "string",
      "description": "Who or what use-case the creator says this is best for. Omit if not stated."
    },
    "alternatives": {
      "type": "array",
      "description": "Competing or alternative products the creator names as comparisons. Product names only.",
      "items": {
        "type": "string"
      }
    },
    "sponsored": {
      "type": "boolean",
      "description": "True only if the creator discloses the video is sponsored or gifted. Omit if no disclosure is made."
    }
  }
}

Use it via the API

Pass schemaId: "vidextract.predefined.product_review.v1" when you submit an extraction. The call returns an id immediately. Poll GET /v1/extractions/{id}/result (or register a webhook) for the structured result.

curl -s -X POST https://postreef.com/v1/extractions \
  -H "x-api-key: $VIDEXTRACT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
       "inputs": ["transcript", "comments"],
       "schemaId": "vidextract.predefined.product_review.v1"}'

Full request/response shape in the API reference; copy-paste poll loops in the API quickstart.

Pass schemaId: "vidextract.predefined.product_review.v1" in your request to extract with this schema.