Restaurant Review
vidextract.predefined.restaurant.v1
A restaurant or food-place review extracted from a video. Captures the venue, the dishes tasted with per-dish verdicts, ratings, and the reviewer's overall take. Optional fields are omitted when the creator does not state them â do not infer.
Fields
Name of the restaurant or food place reviewed. Omit if not named. If several places are reviewed, use the primary one or omit.
City, neighborhood, or address of the venue if stated. Omit otherwise.
Cuisine or food type lowercased, e.g. 'italian', 'sushi', 'burgers', 'street food'. Omit if unclear.
Price tier of the venue if conveyed. Omit if unclear.
Concrete price info if stated, e.g. '$15 per plate', 'tasting menu £120'. Omit otherwise.
Overall rating exactly as the reviewer states it, e.g. '8/10', '4 stars', 'A-'. Omit if no explicit rating is given.
Two or three sentences capturing the reviewer's overall conclusion and recommendation.
True if the reviewer would recommend the place, false if they advise against it. Omit if genuinely mixed/unclear.
Each dish, drink, or item the reviewer tries, with their verdict on it. In the order tasted.
Standout positives the reviewer calls out â best dishes, great service, atmosphere.
Negatives or complaints the reviewer raises â bad service, overpricing, poor quality.
Description of the ambiance, decor, or vibe if discussed. Omit otherwise.
Comments on the service or staff if discussed. Omit otherwise.
The single dish the reviewer names as the best, if they pick one. Omit otherwise.
The single dish the reviewer names as the worst, if they pick one. Omit otherwise.
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "vidextract.predefined.restaurant.v1",
"title": "Restaurant Review",
"description": "A restaurant or food-place review extracted from a video. Captures the venue, the dishes tasted with per-dish verdicts, ratings, and the reviewer's overall take. Optional fields are omitted when the creator does not state them â do not infer.",
"type": "object",
"required": [
"overallVerdict",
"dishes"
],
"additionalProperties": false,
"properties": {
"restaurantName": {
"type": "string",
"description": "Name of the restaurant or food place reviewed. Omit if not named. If several places are reviewed, use the primary one or omit."
},
"location": {
"type": "string",
"description": "City, neighborhood, or address of the venue if stated. Omit otherwise."
},
"cuisine": {
"type": "string",
"description": "Cuisine or food type lowercased, e.g. 'italian', 'sushi', 'burgers', 'street food'. Omit if unclear."
},
"priceRange": {
"type": "string",
"enum": [
"budget",
"mid-range",
"expensive",
"luxury"
],
"description": "Price tier of the venue if conveyed. Omit if unclear."
},
"priceDetail": {
"type": "string",
"description": "Concrete price info if stated, e.g. '$15 per plate', 'tasting menu £120'. Omit otherwise."
},
"overallRating": {
"type": "string",
"description": "Overall rating exactly as the reviewer states it, e.g. '8/10', '4 stars', 'A-'. Omit if no explicit rating is given."
},
"overallVerdict": {
"type": "string",
"description": "Two or three sentences capturing the reviewer's overall conclusion and recommendation."
},
"recommended": {
"type": "boolean",
"description": "True if the reviewer would recommend the place, false if they advise against it. Omit if genuinely mixed/unclear."
},
"dishes": {
"type": "array",
"description": "Each dish, drink, or item the reviewer tries, with their verdict on it. In the order tasted.",
"minItems": 1,
"items": {
"type": "object",
"required": [
"name",
"verdict"
],
"additionalProperties": false,
"properties": {
"name": {
"type": "string",
"description": "Name of the dish or item, e.g. 'wagyu burger', 'tom yum soup'."
},
"verdict": {
"type": "string",
"description": "The reviewer's opinion of this specific dish in their own framing."
},
"sentiment": {
"type": "string",
"enum": [
"loved",
"liked",
"mixed",
"disliked",
"hated"
],
"description": "Overall sentiment toward this dish. Omit if genuinely unclear."
},
"rating": {
"type": "string",
"description": "Per-dish rating if given, e.g. '9/10'. Omit otherwise."
},
"price": {
"type": "string",
"description": "Price of this individual dish if stated. Omit otherwise."
},
"videoTimestamp": {
"type": "string",
"description": "Start timestamp in source video, 'mm:ss' or 'h:mm:ss'. Omit if unknown.",
"pattern": "^(\\d{1,2}:)?\\d{1,2}:\\d{2}$"
}
}
}
},
"highlights": {
"type": "array",
"description": "Standout positives the reviewer calls out â best dishes, great service, atmosphere.",
"items": {
"type": "string"
}
},
"criticisms": {
"type": "array",
"description": "Negatives or complaints the reviewer raises â bad service, overpricing, poor quality.",
"items": {
"type": "string"
}
},
"atmosphere": {
"type": "string",
"description": "Description of the ambiance, decor, or vibe if discussed. Omit otherwise."
},
"service": {
"type": "string",
"description": "Comments on the service or staff if discussed. Omit otherwise."
},
"bestDish": {
"type": "string",
"description": "The single dish the reviewer names as the best, if they pick one. Omit otherwise."
},
"worstDish": {
"type": "string",
"description": "The single dish the reviewer names as the worst, if they pick one. Omit otherwise."
}
}
}Use it via the API
Pass schemaId: "vidextract.predefined.restaurant.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.restaurant.v1"}'Full request/response shape in the API reference; copy-paste poll loops in the API quickstart.
Pass schemaId: "vidextract.predefined.restaurant.v1" in your request to extract with this schema.