{ "$schema": "http://json-schema.org/draft-07/schema#", "title": "Hotel Listing", "description": "Hotel or lodging property listing with pricing, amenities, and availability from a booking platform.", "type": "object", "properties": { "property_name": { "type": "string", "description": "Name of the hotel or lodging property. Commonly found in: Booking.com, Expedia, Hotels.com, hotel website." }, "chain_or_brand": { "type": "string", "description": "Hotel chain or brand affiliation. Commonly found in: Booking.com, hotel website." }, "property_type": { "type": "string", "enum": ["hotel", "motel", "resort", "boutique", "hostel", "b_and_b", "apartment_hotel", "other"], "description": "Type of lodging property. Commonly found in: Booking.com property type, listing metadata." }, "star_rating": { "type": "number", "description": "Official star rating of the property. Commonly found in: Booking.com, hotel website, official classification." }, "address": { "type": "string", "description": "Street address of the property. Commonly found in: Booking.com, hotel website, Google Maps." }, "city": { "type": "string", "description": "City where the property is located. Commonly found in: Booking.com, hotel website." }, "country": { "type": "string", "description": "Country where the property is located. Commonly found in: Booking.com, hotel website." }, "latitude": { "type": "number", "description": "Latitude coordinate of the property. Commonly found in: Google Maps, geocoding API." }, "longitude": { "type": "number", "description": "Longitude coordinate of the property. Commonly found in: Google Maps, geocoding API." }, "amenities": { "type": "array", "items": { "type": "string" }, "description": "List of property amenities. Commonly found in: Booking.com amenities, hotel website facilities." }, "room_types": { "type": "array", "items": { "$ref": "#/$defs/RoomType" }, "description": "Available room types with pricing. Commonly found in: Booking.com room options, hotel website rooms page." }, "cancellation_policy": { "type": "string", "description": "Cancellation policy description. Commonly found in: Booking.com policies, hotel website." }, "check_in_time": { "type": "string", "description": "Standard check-in time. Commonly found in: Booking.com hotel info, hotel website." }, "check_out_time": { "type": "string", "description": "Standard check-out time. Commonly found in: Booking.com hotel info, hotel website." }, "pet_policy": { "type": "string", "description": "Pet policy description. Commonly found in: Booking.com policies, hotel website." }, "parking_available": { "type": "boolean", "description": "Whether parking is available on-site. Commonly found in: Booking.com amenities, hotel website." }, "breakfast_included": { "type": "boolean", "description": "Whether breakfast is included in the rate. Commonly found in: Booking.com, hotel website." }, "review_score": { "type": "number", "description": "Overall guest review score. Commonly found in: Booking.com review score, TripAdvisor." }, "review_count": { "type": "number", "description": "Total number of guest reviews. Commonly found in: Booking.com, TripAdvisor." }, "platform": { "type": "string", "description": "Booking platform where this listing was found. Commonly found in: scraper metadata, URL pattern." }, "page_title": { "type": "string", "description": "Title of the source page. Tabstack auto-fills this from page metadata when left empty." }, "favicon": { "type": "string", "format": "uri", "description": "Favicon URL of the source page. Tabstack auto-fills this from page metadata when left empty." } }, "$defs": { "RoomType": { "type": "object", "description": "A specific room type available at the property.", "properties": { "name": { "type": "string", "description": "Name of the room type." }, "sqft": { "type": "number", "description": "Room size in square feet." }, "beds": { "type": "string", "description": "Bed configuration description." }, "max_occupancy": { "type": "number", "description": "Maximum number of occupants." }, "base_price_usd": { "type": "number", "description": "Base nightly rate in USD." }, "availability": { "type": "boolean", "description": "Whether the room type is currently available." } }, "required": ["name"] } }, "required": ["property_name", "city", "country", "platform"] }