Travel

Restaurant Listing

/extract/json

Restaurant profile and details from a dining review platform or local business directory.

Download the schematravel/restaurant-listing.json

restaurant-listing.schema

// names marked ? are optional

name:string// Name of the restaurant. Commonly found in: Yelp, Google Maps, OpenTable, TripAdvisor.
cuisine_type?:string[]// Types of cuisine served. Commonly found in: Yelp categories, Google Maps cuisine tags.
price_range?:number// Price range indicator (e.g., 1-4 dollar signs). Commonly found in: Yelp price range, Google Maps price level.
address?:string// Street address of the restaurant. Commonly found in: Yelp, Google Maps, restaurant website.
city:string// City of the restaurant. Commonly found in: Yelp, Google Maps.
state?:string// State or region of the restaurant. Commonly found in: Yelp, Google Maps.
country:string// Country of the restaurant. Commonly found in: Yelp, Google Maps.
latitude?:number// Latitude coordinate. Commonly found in: Google Maps, geocoding API.
longitude?:number// Longitude coordinate. Commonly found in: Google Maps, geocoding API.
phone?:string// Restaurant phone number. Commonly found in: Yelp, Google Maps, restaurant website.
website?:string// Restaurant website URL. Commonly found in: Yelp, Google Maps, restaurant website.
accepts_reservations?:boolean// Whether the restaurant accepts reservations. Commonly found in: Yelp, OpenTable, restaurant website.
reservation_url?:string// URL for making reservations. Commonly found in: OpenTable link, Resy link, restaurant website.
outdoor_seating?:boolean// Whether outdoor seating is available. Commonly found in: Yelp attributes, Google Maps.
delivery_available?:boolean// Whether delivery is available. Commonly found in: Yelp, Google Maps, delivery platform.
delivery_platforms?:string[]// Delivery platforms the restaurant is on. Commonly found in: DoorDash, Uber Eats, Grubhub listing.
takeout_available?:boolean// Whether takeout is available. Commonly found in: Yelp attributes, Google Maps.
alcohol_license?:boolean// Whether the restaurant serves alcohol. Commonly found in: Yelp attributes, restaurant website.
michelin_stars?:number// Number of Michelin stars. Commonly found in: Michelin Guide, restaurant website.
review_rating?:number// Average review rating. Commonly found in: Yelp rating, Google Maps rating, TripAdvisor.
review_count?:number// Total number of reviews. Commonly found in: Yelp, Google Maps, TripAdvisor.
top_dishes?:string[]// Most popular or recommended dishes. Commonly found in: Yelp popular dishes, Google Maps popular dishes.
menu_url?:string// URL to the restaurant's menu. Commonly found in: restaurant website, Yelp menu link.
photos?:string[]// URLs of restaurant photos. Commonly found in: Yelp photos, Google Maps photos.
attributes?:string[]// Additional attributes or tags. Commonly found in: Yelp attributes, Google Maps features.
page_title?:string// Title of the source page. Tabstack auto-fills this from page metadata when left empty.
favicon?:string// Favicon URL of the source page. Tabstack auto-fills this from page metadata when left empty.

Try it live

A sample Restaurant Listing document, generated from the schema. Edit it, or paste a real response, and see it checked against the schema instantly. It runs in your browser, nothing is sent anywhere.

your-output.json
validation

Valid, matches Restaurant Listing

Every required field is present and each value matches its type. Extra fields are allowed. A field the page does not carry is not guaranteed to come back as null, so check values rather than only checking for null.

/extract/json

Copy-paste usage

The same call in TypeScript, Python, and curl. Point it at your own URL and go. The schema drives the response, so you get back the fields you asked for instead of a page to parse.

Features

  • Typed TypeScript and Python SDKs
  • One call, no parsing code and no second LLM pass
  • The same field names on every request, even when the page layout changes
restaurant-listing.ts
// curl -sfLO https://raw.githubusercontent.com/Mozilla-Ocho/tabstack-schemas/main/travel/restaurant-listing.json
import Tabstack from '@tabstack/sdk'
import schema from './restaurant-listing.json' with { type: 'json' }

const client = new Tabstack() // reads TABSTACK_API_KEY from the environment

try {
  const data = await client.extract.json({
    url: 'https://example.com/hotels/example-hotel',
    json_schema: schema,
    effort: 'standard', // 'min' | 'standard' | 'max'
  })

  console.log(data)
} catch (err) {
  console.error('Extraction failed:', err)
}

Ship this schema in one call.

Pass a URL, get matching JSON back. Free to start, no extraction layer to maintain.