
OpenTable | Meta | Menu | Reviews | Availability | Offers...
Pricing
$15.00/month + usage

OpenTable | Meta | Menu | Reviews | Availability | Offers...
Extract complete OpenTable restaurant intelligence: detailed info, full menus with prices, comprehensive reviews & ratings, real-time availability, VIP offers, loyalty programs, photos, and operational data. Get everything in one scrape for market research and business analysis.
5.0 (1)
Pricing
$15.00/month + usage
1
14
6
Issues response
3.5 hours
Last modified
18 days ago
OpenTable | Restaurant | Menu | Reviews | Availability | Offers | Loyalty | Complete Intelligence | Scraper (Richest output)
How it works
This actor is designed to extract comprehensive restaurant data from OpenTable restaurant listings. The scraper captures detailed information including restaurant details, reviews, availability, menu information, experiences, and much more, providing a complete picture of each restaurant for in-depth analysis.
Features
This actor offers the following comprehensive data extraction features:
- Complete Restaurant Information: Captures detailed restaurant data including name, address, description, hours, dress code, dining style, and cuisines
- Comprehensive Review Extraction: Collects detailed review information including ratings, text, dates, and reviewer details with full statistics
- Real-time Availability Data: Extracts current availability, timeslots, and reservation information
- Menu & Experiences: Gathers information about special experiences, VIP lounges, and dining programs
- Loyalty & Offers: Captures loyalty program details, points rewards, and current offers
- Restaurant Features: Extracts supported features like reservations, direct messaging, and AI capabilities
- Pagination Support: Automatically handles pagination to collect all available data
- Structured Data Output: Provides clean, structured data in JSON format for easy analysis
- Proxy Support: Built-in support for proxies to avoid blocking and improve reliability
- Customizable Configuration: Adjust settings like concurrency, retries, and item limits
How to Use
- Set Up: Ensure you have an Apify account and access to the Apify platform.
- Input Restaurant URLs: Specify one or more OpenTable restaurant URLs to scrape comprehensive data from, e.g.:
https://www.opentable.com/r/jays-fort-lauderdale
https://www.opentable.com/r/restaurant-name-new-york
- Configure Settings (Optional):
- Set
maxItems
to limit the number of restaurants to scrape - Adjust concurrency settings if needed
- Configure proxy settings if required
- Set
- Run the Actor: Start the actor and monitor its progress.
- Download Results: Export the scraped data in your preferred format (JSON, CSV, etc.).
Supported URL Formats
The scraper supports the following URL formats:
- Restaurant Profile Pages
- Example:
https://www.opentable.com/r/restaurant-name-new-york
- Example:
https://www.opentable.com/restaurant/profile/1234567
- Scrapes all available restaurant data including reviews, availability, and details
- Example:
Input Data
Here's an example input for scraping comprehensive restaurant data from OpenTable:
{"startUrls": [{"url": "https://www.opentable.com/r/restaurant-name-new-york"},{"url": "https://www.opentable.com/restaurant/profile/1234567"}],"maxItems": 100,"maxConcurrency": 10,"minConcurrency": 1,"maxRequestRetries": 30}
Input Parameters
Parameter | Type | Default | Description |
---|---|---|---|
startUrls | Array | Required | List of URLs to start scraping from |
maxItems | Integer | 100 | Maximum number of items to scrape |
maxConcurrency | Integer | 100 | Maximum concurrent requests |
minConcurrency | Integer | 1 | Minimum concurrent requests |
maxRequestRetries | Integer | 30 | Number of retries for failed requests |
Output Structure
The scraper returns comprehensive restaurant data objects containing detailed information about each restaurant. Here's the complete data structure:
Complete Restaurant Data Example
{"image": "https://resizer.otstatic.com/v3/photos/77921967-7","id": "1426036","name": "Jay's","line1": "441 NE 3rd Ave","state": "FL","postalCode": "33301-3233","city": "Fort Lauderdale","country": "United States","description": "Jay’s is a modern take on the classic steakhouse. It is the embodiment of a bold yet intimate experience—where modern architecture, a nostalgia-evoking soundtrack, and white-glove service form an unforgettable emotional journey. Every detail, from the music selection to the waitstaff’s every movement, is meticulously orchestrated to immerse guests in a living theater. It’s a place of entertainment and camaraderie where every chair feels like the best seat in the house, and every conversation feels like a private exchange in a grand, candlelit salon.\n\nGuests are encouraged to dress for the occasion. The dress code is business casual. Jackets are not required, no flip flops please. | $35 Corkage Fee","diningStyle": "Casual Elegant","dressCode": "Business Casual","hours": "Tue–Thu, Sun 5:00 pm–12:00 am\nFri, Sat 5:00 pm–1:00 am","cuisines": [{"id": "029cd931-4a83-4572-b87a-2b0ce7abcb1e","name": "Steakhouse","primary": true},{"id": "0735c10c-6ab6-46f6-87aa-8fe54397744d","name": "Seafood","primary": false},{"id": "ee2e9855-7067-4056-b51c-c09b2e89548a","name": "Prime Rib","primary": false}],"networkListingStatus": true,"type": "GuestCenter","features": ["RESERVATION","DIRECT_MESSAGING","DINER_AI"],"privilegedAccessDiningPrograms": [],"partnershipPrograms": [],"recommended": false,"customMessagesRefresh": {"NoTimesExist": {"isDefault": false,"message": "At the moment, there’s no online availability within 2.5 hours of [ResoTime]."},"BelowMinPartySize": {"isDefault": true,"message": "Unfortunately, your party is too small to make an online reservation at [RestaurantName]. We recommend contacting the restaurant directly."},"AboveMaxPartySize": {"isDefault": true,"message": "Unfortunately, your party is too large to make an online reservation at [RestaurantName]. We recommend contacting the restaurant directly."},"TooFarInAdvance": {"isDefault": true,"message": "Unfortunately, [RestaurantName] doesn’t take online reservations that far in advance. Have another time in mind?"},"SameDayCutoff": {"isDefault": true,"message": "Unfortunately, [RestaurantName] doesn’t take same-day online reservations after [CutoffTime]. Have another time in mind?"},"BlockedDay": {"isDefault": true,"message": "Please accept our apologies, there is no availability with OpenTable on this date."},"EarlyCutoff": {"isDefault": true,"message": "[RestaurantName] does not allow reservations to be made within [EarlyCutoffDays] days of the reservation date."},"NotFarEnoughInAdvance": {"isDefault": true,"message": "[RestaurantName] requires more advanced notice for online reservations. Have another time in mind?"},"CreditCardPrefixMessage": {"isDefault": true,"message": ""},"CreditCardSuffixMessage": {"isDefault": true,"message": ""},"WaitListAfterCutOff": {"isDefault": true,"message": "Search within the next 90 minutes to join the waitlist."},"WaitListNoTimesMessage": {"isDefault": true,"message": "The waitlist is currently unavailable."},"WaitListPartySizeTooBig": {"isDefault": true,"message": "Only parties of [WaitListMaxPartySize] or less can join the waitlist."},"WaitListPartySizeTooSmall": {"isDefault": true,"message": "Only parties of [WaitListMinPartySize] or more can join the waitlist."},"DirectMessageResponseExpectation": {"isDefault": true,"message": "Restaurant staff will respond when available."}},"availability": {"dateTime": "2025-08-03T22:15","experienceList": {"results": []},"availability": {"dateTime": "2025-08-03T22:15","noTimesReasons": [],"minPartySize": 1,"maxPartySize": 8,"maxDaysInAdvance": 304,"id": "1426036","timeslots": [{"dateTime": "2025-08-03T18:45","available": true,"requiresCreditCard": true,"redemptionTier": "DineAnywhere","diningAreas": [{"id": "1","isDefaultArea": true,"environment": "INDOOR","availableAttributes": ["default"],"privilegedAccessRulesByAttributes": {}}],"token": "eyJ2IjoyLCJtIjowLCJwIjowLCJjIjo2LCJzIjowLCJuIjowfQ","slotHash": "2652798736","points": 100,"type": "Standard","attributes": ["default"],"priceAmount": 0,"creditCardPolicyType": "HOLD"},{"dateTime": "2025-08-03T19:00","available": true,"requiresCreditCard": true,"redemptionTier": "DineAnywhere","diningAreas": [{"id": "1","isDefaultArea": true,"environment": "INDOOR","availableAttributes": ["default"],"privilegedAccessRulesByAttributes": {}}],"token": "eyJ2IjoyLCJtIjowLCJwIjowLCJjIjo2LCJzIjowLCJuIjowfQ","slotHash": "101890375","points": 100,"type": "Standard","attributes": ["default"],"priceAmount": 0,"creditCardPolicyType": "HOLD"},{"dateTime": "2025-08-03T19:15","available": true,"requiresCreditCard": true,"redemptionTier": "DineAnywhere","diningAreas": [{"id": "1","isDefaultArea": true,"environment": "INDOOR","availableAttributes": ["default"],"privilegedAccessRulesByAttributes": {}}],"token": "eyJ2IjoyLCJtIjowLCJwIjowLCJjIjo2LCJzIjowLCJuIjowfQ","slotHash": "52959074","points": 100,"type": "Standard","attributes": ["default"],"priceAmount": 0,"creditCardPolicyType": "HOLD"},...],"dateMessages": [{"message": "We have a 15 minute grace period. Please call us if you are running later than 15 minutes after your reservation time.\n\nWe may contact you about this reservation, so please ensure your email and phone number are up to date.","type": "policies"},{"message": "For dress code, guests are encouraged to dress for the occasion. The dress code is business casual. Jackets are not required. We do not allow shorts, baseball caps, tank-tops, flip flops, sweatpants, or swimwear.\n\nPlease call ahead at 954-999-0855. Arrangements for decorations can be made in advance for private parties and events.","type": "custom_policies"}],"token": "eyJ2IjoyLCJtIjowLCJwIjowLCJzIjowLCJuIjowfQ","availabilityToken": "eyJ2IjoyLCJtIjowLCJwIjowLCJzIjowLCJuIjowfQ"}},"isUserFavorite": false,"offers": [{"id": "494358","name": "VIP LOUNGE","description": "The Ultimate VIP Experience at Jay’s Member’s Lounge.\n\nStep into a world of exclusivity at Jay’s Member’s Lounge, our private upstairs retreat designed for those who want to elevate their night out in Fort Lauderdale. Tucked above the main dining room, this intimate space offers lounge-style seating — sleek, cozy tables perfect for cocktails and conversation, rather than formal steakhouse dining — where you and your guests can relax, sip, and savor while overlooking the vibrant energy of Jay’s below.\n\nFor a $500 experience fee, guests receive:\n✨ Two bottles of Veuve Clicquot Champagne — a perfect start to an unforgettable evening.\n✨ Access to our members-only upstairs seating — reserved exclusively for VIP guests, ensuring privacy and luxury in every detail.\n✨ Prime “See and Be Seen” placement — from your elevated perch, take in the full view of the stunning restaurant while being part of the night’s most glamorous scene.\n✨ Dedicated service — enjoy the attention of a private server and bartender, catering solely to you and your party’s needs all night long.\n✨ Personal welcome from Jay, the owner — when available, Jay himself will greet you upstairs to make your evening even more memorable.\n\nPlease note: all additional food and beverage beyond the two bottles of Veuve Clicquot are sold separately.\n\nThis is more than a reservation — it’s a statement. Whether you’re celebrating a special occasion, impressing out-of-town guests, or simply indulging in the best Jay’s has to offer, the Member’s Lounge delivers a one-of-a-kind experience you won’t find anywhere else in Fort Lauderdale.\n\nReserve your VIP table now and make it a night to remember.","isMandatory": false,"isBookable": true,"type": "PRIX_FIXE","priceDetails": {"experiencePriceType": "PER_PARTY","prePaymentRequired": true,"priceTypes": [{"id": "761308","title": "VIP LOUNGE","basePrice": 100000,"divisor": 100,"currencyCode": "USD","includesTaxesAndFees": true}]},"experienceVersionId": "2","addOnsSummary": {"count": 0,"available": "NONE"},"schedules": [{"dayOfWeek": "FRIDAY","schedule": [{"first": "17:00","last": "01:00"}]},{"dayOfWeek": "SATURDAY","schedule": [{"first": "17:00","last": "01:00"}]}],"summaryPhoto": {"id": "78241214","assetId": "78241214-1","rid": "1426036","lovesCount": 0,"reviewsCount": 0,"greatShotsCount": 0,"spotted": "2025-06-02T19:44:10Z","origin": "none"},"minPartySize": 1,"maxPartySize": 8,"isVisaEvent": false}],"pointsReward": {"countries": [{"countryName": "US","loyaltyTiers": {"DineAnywhere": {"Levels": {"2000": {"Name": "$16","Value": 16,"Currency": "USD","RequiredPoints": 2000},"5000": {"Name": "$40","Value": 40,"Currency": "USD","RequiredPoints": 5000},"10000": {"Name": "$80","Value": 80,"Currency": "USD","RequiredPoints": 10000},"20000": {"Name": "$160","Value": 160,"Currency": "USD","RequiredPoints": 20000}}},"GreatDeal": {"Levels": {"2000": {"Name": "$16","Value": 16,"Currency": "USD","RequiredPoints": 2000},"5000": {"Name": "$40","Value": 40,"Currency": "USD","RequiredPoints": 5000},"10000": {"Name": "$80","Value": 80,"Currency": "USD","RequiredPoints": 10000},"20000": {"Name": "$160","Value": 160,"Currency": "USD","RequiredPoints": 20000}}},"BestDeal": {"Levels": {"2000": {"Name": "$16","Value": 16,"Currency": "USD","RequiredPoints": 2000},"5000": {"Name": "$40","Value": 40,"Currency": "USD","RequiredPoints": 5000},"10000": {"Name": "$80","Value": 80,"Currency": "USD","RequiredPoints": 10000},"20000": {"Name": "$160","Value": 160,"Currency": "USD","RequiredPoints": 20000}}}}}]},"priceBand": {"band": "4","label": "$50 and over"},"reviews": {"count": 240,"overallRating": 4.3,"food": 4.3,"service": 4.4,"ambience": 4.6,"value": 4.1,"noise": 2,"reviewCount": 118,"distribution": [{"value": 1,"count": 12},{"value": 2,"count": 10},{"value": 3,"count": 25},{"value": 4,"count": 30},{"value": 5,"count": 163}],"dinerRecommendation": {"total": 50,"recommend": 50,"dontRecommend": 0},"ratingBasedOn": "RecentReviews","items": [{"id": "OT-1426036-3042-160082355226","reservationDate": "2025-08-02T22:00","postedDate": "2025-08-03T15:27","author": "emma","authorMetro": "West Palm Beach","review": "Such a great experience for a birthday!! thank you guys","recommended": true,"statistics": {"overallRating": 5,"food": 5,"service": 5,"ambience": 5,"value": 5,"noise": 2},"positiveFeedback": 0,"negativeFeedback": 0,"photos": [],"authorDetails": {"initials": "e","publicProfileColor": "PUMPKIN","approvedTextReviews": 0,"approvedRatingOnlyReviews": 0,"dinerIsVIP": false}},...]},"top3Reviews": [{"id": "OT-1426036-3042-160082355226","reservationDate": "2025-08-02T22:00","postedDate": "2025-08-03T15:27","author": "emma","authorMetro": "West Palm Beach","review": "Such a great experience for a birthday!! thank you guys","recommended": true,"statistics": {"overallRating": 5,"food": 5,"service": 5,"ambience": 5,"value": 5,"noise": 2},"positiveFeedback": 0,"negativeFeedback": 0,"photos": [],"authorDetails": {"initials": "e","publicProfileColor": "PUMPKIN","approvedTextReviews": 0,"approvedRatingOnlyReviews": 0,"dinerIsVIP": false}},{"id": "OT-1426036-3782-190021330539","reservationDate": "2025-08-02T00:15","postedDate": "2025-08-02T18:58","author": "Keith","authorMetro": "Fort Lauderdale","review": "Everything was fantastic from beginning to end! The cocktails, the food, the service and the live entertainment! Please don’t stop providing the live entertainment. The DJ was fine, but it’s nice to be able to have a place in FTL that finally has live music (especially jazz & blues) that doesn’t require going out to a late night club. A great change in the style and atmosphere of when it was Holly Blue","statistics": {"overallRating": 5,"food": 5,"service": 5,"ambience": 5,"value": 3,"noise": 3},"positiveFeedback": 0,"negativeFeedback": 0,"authorDetails": {"initials": "K","publicProfileColor": "PLUM","approvedTextReviews": 5,"approvedRatingOnlyReviews": 0,"dinerIsVIP": false}},{"id": "OT-1426036-3206-110137414991","reservationDate": "2025-07-31T23:00","postedDate": "2025-08-01T18:55","author": "Ronny","authorMetro": "Fort Lauderdale","review": "Everything about our experience was amazing however, when I called to make the reservation, because we were such a large party, I asked not to be seated by the stage, and we were seated one table away from the stage. Again, we were too big of a party to move so we had to shout to each other just to communicate. I understand that music is part of the vibe. But it also can be a little too much when you have a large party","statistics": {"overallRating": 4,"food": 5,"service": 5,"ambience": 5,"value": 4,"noise": 3},"positiveFeedback": 0,"negativeFeedback": 0,"photos": [],"authorDetails": {"initials": "R","publicProfileColor": "PLUM","approvedTextReviews": 5,"approvedRatingOnlyReviews": 0,"dinerIsVIP": false}}],"reviewSummary": "Jay's offers a stunning dining experience in a beautifully repurposed church, featuring an inviting atmosphere with live music. Highlights include \"amazing food and impeccable service,\" particularly the steaks and creative cocktails. While some service aspects need refining, the \"ambiance and decor\" make it a standout choice for a special occasion.","photosCount": 55,"photoCategories": [{"position": 0,"id": "all","count": 55,"name": "All"},{"position": 1,"id": "food","count": 47,"name": "Food"},{"position": 2,"id": "drink","count": 7,"name": "Drinks"},{"position": 5,"id": "exterior","count": 1,"name": "Exterior"}],"profilePhoto": {"id": "77921967","assetId": "77921967-7","rid": "1426036","lovesCount": 0,"reviewsCount": 0,"greatShotsCount": 0,"origin": "none"},"profilePhotoWide": {"id": "77921967","assetId": "77921967-7","rid": "1426036","lovesCount": 0,"reviewsCount": 0,"greatShotsCount": 0,"origin": "none"},"website": "https://www.jaysfortlauderdale.com/","nonNaturalUrl": "https://www.opentable.com/restaurant/profile/1426036","latitude": 26.127714,"longitude": -80.1410511,"metroId": "3481","neighborhoodId": "21077","neighborhoodName": "Lauderdale Manors","region": "NA","diningAreas": [],"defaultDiningAreaId": "1","defaultDiningAreaHasOutdoor": false,"popularDishes": [],"paymentOptions": ["AMEX","Mastercard","Visa"],"publicTransit": "","parkingInfo": "None","countryCode": "US","maxPartySize": 8,"maxAdvanceDays": 304,"currencyCode": "USD","currencySymbol": "$","phoneNumber": "9549990855","formattedPhoneNumber": "(954) 999-0855","bookingStatistics": {"resosInLastDay": 17},"domain": "COM","accessibilityDetails": ["Gender Neutral Restroom","Wheelchair Access"],"hasGenderNeutralRestroom": true,"isTakeoutEnabled": false,"deliveryPartners": [],"availabilityAlerts": [],"isGroceryStore": false,"tableAttributes": ["default","bar","outdoor"],"directDelivery": {"callForDelivery": false},"openTableWallet": {"disabled": false},"isInPremiumMarketplace": false,"availabilityToken": "eyJ2IjoyLCJtIjowLCJwIjowLCJzIjowLCJuIjowfQ","sightings": [{"id": "77921967","assetId": "77921967-7","rid": "1426036","name": "JAY'S EXTERIOR","lovesCount": 0,"reviewsCount": 0,"greatShotsCount": 0,"spotted": "2025-05-22T22:26:12Z","origin": "restaurant"},{"id": "77199245","assetId": "77199245-1","rid": "1426036","name": "Burrata","lovesCount": 1,"reviewsCount": 0,"greatShotsCount": 0,"spotted": "2025-05-01T17:06:06Z","origin": "restaurant"},{"id": "77199212","assetId": "77199212-1","rid": "1426036","name": "Rock Shrimp Tempura","lovesCount": 0,"reviewsCount": 0,"greatShotsCount": 0,"spotted": "2025-05-01T17:05:46Z","origin": "restaurant"},{"id": "77199213","assetId": "77199213-2","rid": "1426036","name": "Ora King Salmon","lovesCount": 0,"reviewsCount": 0,"greatShotsCount": 0,"spotted": "2025-05-01T17:05:46Z","origin": "restaurant"},{"id": "77199222","assetId": "77199222-1","rid": "1426036","name": "30 Month Aged Prosciutto","lovesCount": 0,"reviewsCount": 0,"greatShotsCount": 0,"spotted": "2025-05-01T17:05:55Z","origin": "restaurant"},{"id": "77229971","assetId": "77229971-3","rid": "1426036","name": "Smoked Scallops","lovesCount": 0,"reviewsCount": 0,"greatShotsCount": 0,"spotted": "2025-05-01T23:15:00Z","origin": "restaurant"},{"id": "77199227","assetId": "77199227-2","rid": "1426036","name": "Paccheri","lovesCount": 0,"reviewsCount": 0,"greatShotsCount": 0,"spotted": "2025-05-01T17:05:57Z","origin": "restaurant"},{"id": "77199210","assetId": "77199210-1","rid": "1426036","name": "Beverly Hills","lovesCount": 0,"reviewsCount": 0,"greatShotsCount": 0,"spotted": "2025-05-01T17:05:41Z","origin": "restaurant"},{"id": "77199232","assetId": "77199232-1","rid": "1426036","name": "Prime Rib King Cut","lovesCount": 0,"reviewsCount": 0,"greatShotsCount": 0,"spotted": "2025-05-01T17:05:59Z","origin": "restaurant"},{"id": "77199206","assetId": "77199206-1","rid": "1426036","name": "Salmon Crudo","lovesCount": 0,"reviewsCount": 0,"greatShotsCount": 0,"spotted": "2025-05-01T17:05:39Z","origin": "restaurant"},{"id": "77199216","assetId": "77199216-2","rid": "1426036","name": "Crisp Romaine","lovesCount": 0,"reviewsCount": 0,"greatShotsCount": 0,"spotted": "2025-05-01T17:05:51Z","origin": "restaurant"},{"id": "77199244","assetId": "77199244-1","rid": "1426036","name": "Gratitude Mushrooms","lovesCount": 0,"reviewsCount": 0,"greatShotsCount": 0,"spotted": "2025-05-01T17:06:05Z","origin": "restaurant"},{"id": "77199231","assetId": "77199231-1","rid": "1426036","name": "Prime Rib ","lovesCount": 0,"reviewsCount": 0,"greatShotsCount": 0,"spotted": "2025-05-01T17:05:59Z","origin": "restaurant"},{"id": "77199226","assetId": "77199226-1","rid": "1426036","name": "Lobster Tail ","lovesCount": 0,"reviewsCount": 0,"greatShotsCount": 0,"spotted": "2025-05-01T17:05:57Z","origin": "restaurant"},{"id": "77199207","assetId": "77199207-1","rid": "1426036","name": "Gratitude Mushrooms","lovesCount": 0,"reviewsCount": 0,"greatShotsCount": 0,"spotted": "2025-05-01T17:05:39Z","origin": "restaurant"}],"hasMenu": true,"hasAffiliatedRestaurants": true,"menus": [{"title": "Main Menu","level": "menu","currency": "US$","sections": [{"title": "Starters","level": "section","items": [{"title": "Rock Shrimp Tempura","price": "18.00","level": "item","desc": "saffron/sriracha aioli/meyer lemon","additionGroups": [],"variationGroups": []},{"title": "Bone Marrow","price": "23.00","level": "item","desc": "crispy bread/chimichurri/sherry gastrique","additionGroups": [],"variationGroups": []},{"title": "Duck Fat Fries","price": "18.00","level": "item","desc": "rosemary aioli/parmesan reggiano/black truffle","additionGroups": [],"variationGroups": []},{"title": "Wagyu Steak Tartare","price": "26.00","level": "item","desc": "japanese dijonnaise/caper/scallion/cornichon/togarashi cured egg yolk/wasabi","additionGroups": [],"variationGroups": []},{"title": "Lamb Chop Lollipops","price": "26.00","level": "item","desc": "almonds/harissa/torn mint","additionGroups": [],"variationGroups": []},{"title": "Foie Gras Grilled Cheese","price": "21.00","level": "item","desc": "hudson valley foie gras/gruyère/fig/truffle kewpie","additionGroups": [],"variationGroups": []},{"title": "Lobster Oreganata","price": "24.00","level": "item","desc": "maine lobster/roasted garlic butter/oreganata","additionGroups": [],"variationGroups": []}]},...],"provider": {"name": "OpenTable","linkUrl": "https://www.opentable.com/","requiredAttribution": {"image": false}}},{"title": "Drinks Menu","level": "menu","currency": "US$","sections": [{"title": "Specialty Cocktails","level": "section","items": [{"title": "Flying Private","price": "29.00","level": "item","desc": "diplomatico exclusiva rum/select apertivo/nonino/mango/citrus rhubarb bitters/champagne","additionGroups": [],"variationGroups": []},{"title": "Easy Street","price": "17.00","level": "item","desc": "tito’s handmade vodka/elderflower/lemon/cucumber/mint","additionGroups": [],"variationGroups": []},{"title": "Brunch in South Beach","price": "19.00","level": "item","desc": "sagamore bourbon/cointreau/citrus/clover honey/blackberries","additionGroups": [],"variationGroups": []},{"title": "2 Hours to Cancun","price": "18.00","level": "item","desc": "herradura silver/lime/spicy agave nectar/volcanic black salt/dragon fruit","additionGroups": [],"variationGroups": []},{"title": "F*** Around & Find Out","price": "17.00","level": "item","desc": "ford's gin/italicus/lemon/liquid alchemist orgeat/pey'schaud's bitters/mint","additionGroups": [],"variationGroups": []},{"title": "Cars, Sex, & a Rolex","price": "20.00","level": "item","desc": "monkey shoulder/montenegro amaro/lo-fi sweet vermouth cointreau infused wood smoke","additionGroups": [],"variationGroups": []},{"title": "Comme Ci, Comme Ça","price": "22.00","level": "item","desc": "su casa mezcal/belle de brillet pear brandy/pink guava/lime/agave/ginger beer","additionGroups": [],"variationGroups": []},{"title": "All Grown Up Orange Julius","price": "15.00","level": "item","desc": "stoli orange vodka/jameson orange/fresh orange juice/cream/french vanilla","additionGroups": [],"variationGroups": []},{"title": "Latin Medicine","price": "19.00","level": "item","desc": "don fulano tequila/lemon/ginger/clover honey/su casa mezcal","additionGroups": [],"variationGroups": []},{"title": "Monkey Slide","price": "17.00","level": "item","desc": "howler head banana bourbon/caffè borghetti/banana cream/cocoa float","additionGroups": [],"variationGroups": []},{"title": "Jay’s Tequila Espresso Martini","price": "18.00","level": "item","desc": "herradura reposado/caffè borghetti/fresh espresso/french vanilla","additionGroups": [],"variationGroups": []}]},...],"provider": {"name": "OpenTable","linkUrl": "https://www.opentable.com/","requiredAttribution": {"image": false}}},{"title": "Signature Champagne Program","level": "menu","currency": "US$","sections": [{"title": "750ml","level": "section","items": [{"title": "Veuve Clicquot Brut","price": "135.00","level": "item","desc": "Signature yellow label, bright, dry, golden apple, toasted brioche, creamy finish, a house favorite for any celebration","additionGroups": [],"variationGroups": []},{"title": "Piper-Heidsieck Brut Rosé","price": "120.00","level": "item","desc": "Crisp, dry, with wild strawberry, citrus, & elegant bubbles","additionGroups": [],"variationGroups": []},{"title": "Ruinart Blanc de Blancs","price": "165.00","level": "item","desc": "100% chardonnay, refined floral, white peach, citrus blossom, chalky minerality, exceptionally balanced","additionGroups": [],"variationGroups": []},{"title": "Billecart-Salmon Brut Rosé","price": "160.00","level": "item","desc": "Delicately pink, red currant, raspberry, rose petals, elegant, dry, precise rosé","additionGroups": [],"variationGroups": []},{"title": "Dom Pérignon","price": "375.00","level": "item","desc": "Legendary cuvée, complex, silky, toasted almond, stone fruit, lemon cream, long, layered finish","additionGroups": [],"variationGroups": []},{"title": "Krug “Grande Cuvée”","price": "425.00","level": "item","desc": "Crafted from 120+ wines, rich, powerful, toasted hazelnut, citrus marmalade, baking spice, for connoisseurs","additionGroups": [],"variationGroups": []}]},{"title": "Fine Sips","level": "section","description": "EXCLUSIVE RARE SPIRITS, CURATED FOR THE REFINED PALATE | 1.5 oz POUR","items": [{"title": "Pappy Van Winkle’s Family Reserve 15 Year","price": "150.00","level": "item","desc": "Renowned for its incredibly smooth, caramel-laden palate & long, sweet finish","additionGroups": [],"variationGroups": []},{"title": "The Macallan 25 Year","price": "250.00","level": "item","desc": "Luxurious sherry-cask depth with notes of dried fruit, spice, & a long, velvety finish","additionGroups": [],"variationGroups": []},{"title": "Glenfiddich 14 Year","price": "22.00","level": "item","desc": "American oak-matured with hints of toasted oak, orchard fruit, & creamy toffee","additionGroups": [],"variationGroups": []},{"title": "Glenfiddich 18 Year","price": "40.00","level": "item","desc": "Rich & elegant with baked apple, cinnamon, & oak spice","additionGroups": [],"variationGroups": []},{"title": "Glenfiddich 21 Year","price": "65.00","level": "item","desc": "Rum cask-finished – layered with fig, banana, & warm spice complexity","additionGroups": [],"variationGroups": []},{"title": "The Dalmore 12 Year","price": "24.00","level": "item","desc": "Bold & balanced – orange zest, chocolate, & elegant spice","additionGroups": [],"variationGroups": []},{"title": "Eagle Rare 10 Year","price": "20.00","level": "item","desc": "Classic Kentucky bourbon – smooth with honey, toasted oak, & ripe cherry","additionGroups": [],"variationGroups": []},{"title": "Blanton’s Single Barrel","price": "38.00","level": "item","desc": "Highly sought-after, offering warm vanilla, caramel, & citrus spice","additionGroups": [],"variationGroups": []},{"title": "The Balvenie 15 Year Single Barrel Scotch","price": "50.00","level": "item","desc": "Exquisitely hand-selected – full-bodied with honey, oak, & gentle spice","additionGroups": [],"variationGroups": []},{"title": "Louis XIII by Rémy Martin Cognac","level": "item","desc": "A showstopper served from a baccarat crystal decanter – layered with rare florals, fruit, & aged spice","additionGroups": [],"variationGroups": [{"title": "For the Curious","items": [{"title": "½ oz","price": "120.00","level": "variation"}]},{"title": "For the Passionate","items": [{"title": "2 oz","price": "480.00","level": "variation"}]}]}]},{"title": "JAY’S RESERVE BOTTLE ROTATING SELECTION OF ULTRA-PREMIUM SPIRITS","level": "section","description": "ask your server for today's feature","items": []}],"provider": {"name": "OpenTable","linkUrl": "https://www.opentable.com/","requiredAttribution": {"image": false}}}]}
Data Fields Reference
Basic Restaurant Information
Field | Type | Description |
---|---|---|
id | String | Unique restaurant identifier |
name | String | Restaurant name |
image | String | Main restaurant image URL |
line1 | String | Street address |
city | String | City name |
state | String | State/province |
postalCode | String | Postal/ZIP code |
country | String | Country name |
description | String | Restaurant description and policies |
diningStyle | String | Type of dining experience (e.g., "Casual Elegant") |
dressCode | String | Dress code requirements |
hours | String | Operating hours |
website | String | Restaurant's official website URL |
phoneNumber | String | Restaurant phone number (digits only) |
formattedPhoneNumber | String | Formatted phone number with parentheses and dashes |
Location & Geographic Data
Field | Type | Description |
---|---|---|
latitude | Number | Geographic latitude coordinate |
longitude | Number | Geographic longitude coordinate |
metroId | String | Metro area identifier |
neighborhoodId | String | Neighborhood identifier |
neighborhoodName | String | Neighborhood name |
region | String | Geographic region code |
countryCode | String | ISO country code |
nonNaturalUrl | String | OpenTable profile URL |
Cuisines & Features
Field | Type | Description |
---|---|---|
cuisines | Array | List of cuisine types with IDs and primary designation |
cuisines[].id | String | Unique cuisine identifier |
cuisines[].name | String | Cuisine name (e.g., "Steakhouse", "Seafood") |
cuisines[].primary | Boolean | Whether this is the primary cuisine type |
features | Array | Available platform features (RESERVATION, DIRECT_MESSAGING, etc.) |
networkListingStatus | Boolean | Whether restaurant is active on OpenTable network |
type | String | Restaurant classification (e.g., "GuestCenter") |
privilegedAccessDiningPrograms | Array | Special dining programs available |
partnershipPrograms | Array | Partnership program memberships |
recommended | Boolean | Whether restaurant is recommended by OpenTable |
Availability & Reservations
Field | Type | Description |
---|---|---|
availability.dateTime | String | Query date/time for availability check |
availability.experienceList | Object | Available experiences for booking |
availability.availability.minPartySize | Number | Minimum party size accepted |
availability.availability.maxPartySize | Number | Maximum party size accepted |
availability.availability.maxDaysInAdvance | Number | Maximum days in advance for reservations |
availability.availability.timeslots | Array | Available reservation time slots |
availability.availability.timeslots[].dateTime | String | Available reservation time |
availability.availability.timeslots[].available | Boolean | Whether slot is available |
availability.availability.timeslots[].requiresCreditCard | Boolean | Whether credit card is required |
availability.availability.timeslots[].redemptionTier | String | Loyalty tier for redemption |
availability.availability.timeslots[].points | Number | Points earned for this reservation |
availability.availability.timeslots[].type | String | Reservation type (e.g., "Standard") |
availability.availability.timeslots[].priceAmount | Number | Additional cost for reservation |
availability.availability.timeslots[].creditCardPolicyType | String | Credit card policy (e.g., "HOLD") |
availability.availability.dateMessages | Array | Policy messages for the date |
availability.availability.dateMessages[].message | String | Policy message text |
availability.availability.dateMessages[].type | String | Message type (policies, custom_policies) |
Dining Areas & Table Attributes
Field | Type | Description |
---|---|---|
diningAreas | Array | Available dining areas |
defaultDiningAreaId | String | Default dining area identifier |
defaultDiningAreaHasOutdoor | Boolean | Whether default area has outdoor seating |
tableAttributes | Array | Available table attributes (default, bar, outdoor) |
timeslots[].diningAreas | Array | Dining areas available for specific timeslot |
timeslots[].diningAreas[].id | String | Dining area identifier |
timeslots[].diningAreas[].isDefaultArea | Boolean | Whether this is the default area |
timeslots[].diningAreas[].environment | String | Environment type (INDOOR, OUTDOOR) |
timeslots[].diningAreas[].availableAttributes | Array | Available attributes for this area |
Custom Messages & Policies
Field | Type | Description |
---|---|---|
customMessagesRefresh | Object | Custom messages for various reservation scenarios |
customMessagesRefresh.NoTimesExist | Object | Message when no times are available |
customMessagesRefresh.BelowMinPartySize | Object | Message for parties too small |
customMessagesRefresh.AboveMaxPartySize | Object | Message for parties too large |
customMessagesRefresh.TooFarInAdvance | Object | Message for reservations too far ahead |
customMessagesRefresh.SameDayCutoff | Object | Message for same-day reservation cutoff |
customMessagesRefresh.BlockedDay | Object | Message for blocked dates |
customMessagesRefresh.EarlyCutoff | Object | Message for early reservation cutoff |
customMessagesRefresh.NotFarEnoughInAdvance | Object | Message for reservations not far enough in advance |
customMessagesRefresh.CreditCardPrefixMessage | Object | Message for credit card prefix |
customMessagesRefresh.CreditCardSuffixMessage | Object | Message for credit card suffix |
customMessagesRefresh.WaitListAfterCutOff | Object | Waitlist availability message |
customMessagesRefresh.WaitListNoTimesMessage | Object | Waitlist no times message |
customMessagesRefresh.WaitListPartySizeTooBig | Object | Waitlist party size too big message |
customMessagesRefresh.WaitListPartySizeTooSmall | Object | Waitlist party size too small message |
customMessagesRefresh.DirectMessageResponseExpectation | Object | Direct messaging response time |
Offers & Experiences
Field | Type | Description |
---|---|---|
offers | Array | Available promotional offers and experiences |
offers[].id | String | Unique offer identifier |
offers[].name | String | Offer name (e.g., "VIP LOUNGE") |
offers[].description | String | Detailed offer description |
offers[].isMandatory | Boolean | Whether offer is mandatory |
offers[].isBookable | Boolean | Whether offer can be booked |
offers[].type | String | Offer type (e.g., "PRIX_FIXE") |
offers[].minPartySize | Number | Minimum party size for offer |
offers[].maxPartySize | Number | Maximum party size for offer |
offers[].isVisaEvent | Boolean | Whether it's a Visa-sponsored event |
offers[].priceDetails | Object | Pricing information for the offer |
offers[].priceDetails.experiencePriceType | String | Pricing type (PER_PARTY, PER_PERSON) |
offers[].priceDetails.prePaymentRequired | Boolean | Whether prepayment is required |
offers[].priceDetails.priceTypes[].basePrice | Number | Base price in cents |
offers[].priceDetails.priceTypes[].divisor | Number | Divisor to convert to currency units |
offers[].priceDetails.priceTypes[].currencyCode | String | Currency code |
offers[].schedules | Array | Available days and times for the offer |
offers[].schedules[].dayOfWeek | String | Day of week (FRIDAY, SATURDAY, etc.) |
offers[].schedules[].schedule[].first | String | Start time |
offers[].schedules[].schedule[].last | String | End time |
Loyalty & Points System
Field | Type | Description |
---|---|---|
pointsReward | Object | Loyalty program information |
pointsReward.countries | Array | Countries where loyalty program is available |
pointsReward.countries[].countryName | String | Country name |
pointsReward.countries[].loyaltyTiers | Object | Available loyalty tiers |
pointsReward.countries[].loyaltyTiers.DineAnywhere | Object | DineAnywhere tier rewards |
pointsReward.countries[].loyaltyTiers.GreatDeal | Object | GreatDeal tier rewards |
pointsReward.countries[].loyaltyTiers.BestDeal | Object | BestDeal tier rewards |
loyaltyTiers.*.Levels.* | Object | Reward levels within each tier |
loyaltyTiers.*.Levels.*.Name | String | Reward name (e.g., "$16") |
loyaltyTiers.*.Levels.*.Value | Number | Reward value in currency |
loyaltyTiers.*.Levels.*.Currency | String | Currency code |
loyaltyTiers.*.Levels.*.RequiredPoints | Number | Points required for this reward |
Price Information
Field | Type | Description |
---|---|---|
priceBand | Object | Restaurant price range information |
priceBand.band | String | Price band level (1-4) |
priceBand.label | String | Price range description (e.g., "$50 and over") |
currencyCode | String | Currency code used by restaurant |
currencySymbol | String | Currency symbol |
Reviews & Ratings Summary
Field | Type | Description |
---|---|---|
reviews.count | Number | Total number of reviews |
reviews.overallRating | Number | Overall rating (1-5) |
reviews.food | Number | Food rating (1-5) |
reviews.service | Number | Service rating (1-5) |
reviews.ambience | Number | Ambience rating (1-5) |
reviews.value | Number | Value rating (1-5) |
reviews.noise | Number | Noise level (1-5, where 1=Quiet, 5=Very Noisy) |
reviews.reviewCount | Number | Count of text reviews |
reviews.distribution | Array | Rating distribution breakdown |
reviews.distribution[].value | Number | Rating value (1-5) |
reviews.distribution[].count | Number | Number of reviews with this rating |
reviews.dinerRecommendation | Object | Recommendation statistics |
reviews.dinerRecommendation.total | Number | Total recommendation responses |
reviews.dinerRecommendation.recommend | Number | Number who recommend |
reviews.dinerRecommendation.dontRecommend | Number | Number who don't recommend |
reviews.ratingBasedOn | String | What ratings are based on (e.g., "RecentReviews") |
Individual Review Data
Field | Type | Description |
---|---|---|
reviews.items | Array | Individual review objects |
reviews.items[].id | String | Unique review identifier |
reviews.items[].reservationDate | String | Date of restaurant visit |
reviews.items[].postedDate | String | Date review was posted |
reviews.items[].author | String | Reviewer name |
reviews.items[].authorMetro | String | Reviewer's metro area |
reviews.items[].review | String | Review text content |
reviews.items[].recommended | Boolean | Whether reviewer recommends restaurant |
reviews.items[].statistics.overallRating | Number | Overall rating (1-5) |
reviews.items[].statistics.food | Number | Food rating (1-5) |
reviews.items[].statistics.service | Number | Service rating (1-5) |
reviews.items[].statistics.ambience | Number | Ambience rating (1-5) |
reviews.items[].statistics.value | Number | Value rating (1-5) |
reviews.items[].statistics.noise | Number | Noise level rating (1-5) |
reviews.items[].positiveFeedback | Number | Positive feedback count |
reviews.items[].negativeFeedback | Number | Negative feedback count |
reviews.items[].photos | Array | Photos attached to review |
Top Reviews & Summary
Field | Type | Description |
---|---|---|
top3Reviews | Array | Top 3 featured reviews |
reviewSummary | String | AI-generated summary of reviews |
Author Details
Field | Type | Description |
---|---|---|
authorDetails.initials | String | Author's initials |
authorDetails.publicProfileColor | String | Profile color theme |
authorDetails.approvedTextReviews | Number | Number of approved text reviews |
authorDetails.approvedRatingOnlyReviews | Number | Number of approved rating-only reviews |
authorDetails.dinerIsVIP | Boolean | Whether reviewer has VIP status |
Photos & Media
Field | Type | Description |
---|---|---|
photosCount | Number | Total number of photos |
photoCategories | Array | Photo categories with counts |
photoCategories[].position | Number | Category display position |
photoCategories[].id | String | Category identifier |
photoCategories[].count | Number | Number of photos in category |
photoCategories[].name | String | Category name (All, Food, Drinks, Exterior) |
profilePhoto | Object | Main profile photo information |
profilePhotoWide | Object | Wide profile photo information |
sightings | Array | Food and venue photos with metadata |
sightings[].id | String | Photo identifier |
sightings[].name | String | Photo subject name |
sightings[].lovesCount | Number | Number of loves received |
sightings[].spotted | String | Date photo was taken |
sightings[].origin | String | Photo source (restaurant, user) |
Menu Structure
Field | Type | Description |
---|---|---|
hasMenu | Boolean | Whether restaurant has menu data |
menus | Array | Complete menu information |
menus[].title | String | Menu name (Main Menu, Drinks Menu, etc.) |
menus[].level | String | Menu level identifier |
menus[].currency | String | Currency used in menu |
menus[].sections | Array | Menu sections |
menus[].sections[].title | String | Section name (Starters, Specialty Cocktails, etc.) |
menus[].sections[].level | String | Section level identifier |
menus[].sections[].description | String | Section description (optional) |
menus[].sections[].items | Array | Menu items in this section |
menus[].sections[].items[].title | String | Item name |
menus[].sections[].items[].price | String | Item price |
menus[].sections[].items[].desc | String | Item description |
menus[].sections[].items[].level | String | Item level identifier |
menus[].sections[].items[].additionGroups | Array | Available additions/modifications |
menus[].sections[].items[].variationGroups | Array | Size/portion variations |
menus[].provider | Object | Menu data provider information |
Operational Details
Field | Type | Description |
---|---|---|
maxPartySize | Number | Maximum party size accepted |
maxAdvanceDays | Number | Maximum days in advance for reservations |
paymentOptions | Array | Accepted payment methods (AMEX, Mastercard, Visa) |
publicTransit | String | Public transportation information |
parkingInfo | String | Parking availability information |
popularDishes | Array | Popular dishes at the restaurant |
bookingStatistics | Object | Recent booking activity |
bookingStatistics.resosInLastDay | Number | Reservations made in last 24 hours |
Accessibility & Services
Field | Type | Description |
---|---|---|
accessibilityDetails | Array | Accessibility features available |
hasGenderNeutralRestroom | Boolean | Whether gender neutral restroom is available |
isTakeoutEnabled | Boolean | Whether takeout is available |
deliveryPartners | Array | Delivery service partners |
isGroceryStore | Boolean | Whether location is a grocery store |
tableAttributes | Array | Available table attributes (default, bar, outdoor) |
directDelivery | Object | Direct delivery options |
openTableWallet | Object | OpenTable wallet integration status |
isInPremiumMarketplace | Boolean | Whether restaurant is in premium marketplace |
Technical & System Fields
Field | Type | Description |
---|---|---|
isUserFavorite | Boolean | Whether restaurant is in user's favorites |
availabilityToken | String | Token for availability queries |
domain | String | OpenTable domain (COM, etc.) |
isInPremiumMarketplace | Boolean | Whether restaurant is in premium marketplace |
openTableWallet | Object | OpenTable wallet integration status |
directDelivery | Object | Direct delivery options |
availabilityAlerts | Array | Availability alert settings |
isGroceryStore | Boolean | Whether location is a grocery store |
tableAttributes | Array | Available table attributes (default, bar, outdoor) |
On this page
Share Actor: