RestoAPI

RestoAPI allows you to integrate geocoded restaurant content into your apps or websites from Canada's leading restaurant guides including RestoMontreal.ca, RestoQuebec.ca & OttawaRestos.ca. API data is clean, relevant and updated daily.

Base URI

https://www.restoapi.com/v1
Parameters
key
string required
Applied to all methods

Your API Key

lang
string required

Language (en or fr)

Default:
none
Example:
lang=en
mobile
string optional

Customize some features and urls for mobile. Must pass the value "true" to the mobile variable, any other value passed to the mobile variable = false.

Default:
false
Example:
mobile=true
limit
number optional

Limit results returned

page
number optional

Page number for pagination results

Headers
X-RestoApiSecret
string required
Applied to all methods

Client Secret needs to be passed to http headers for all api method endpoints.

X-UserToken
string required

User Auth Token needed to perform certain actions with some api methods.

Responses
Documentation
Getting Started

To start using the api is really easy, simply contact us and we'll review your request and if accepted we'll send you an api key and secret. We currently only return results in json format. Our api is rate limted per api key and end point. Abuse will lead to termination of api access.

You can use any language of choice to make calls to our api but we strongly suggest you do not display your api key client side (javascript). Below is an example to retrieve results using PHP.

<?php
$request_file = "https://www.restoapi.com/v1/restaurant/categorysearch/?key=YOURKEY&lang=fr&city=MTL&c=74"
$ch = curl_init($request_file);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('X-RestoApiSecret: YOURSECRET'));
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 25);
$json = curl_exec($ch);
curl_close($ch);
$data = json_decode($json,true);
?>
Display Requirements

These are required:

  1. When displaying information from the API please always make sure to display the appropriate logo and link from where the data orginates (RestoMontreal.ca, RestoQuebec.ca, OttawaRestos.ca) in a manner that's obvious to the visitor that the information you are displaying originates from RestoMontreal.ca, RestoQuebec.ca, or OttawaRestos.ca.
  2. Links must always be made directly to the applicable websites - RestoMontreal.ca, RestoQuebec.ca, or OttawaRestos.ca.

IMPORTANT: You must show the logo with link alongside any content from the api.

RestoMontreal Logo:

Link: http://www.restomontreal.ca

http://static.restodata.ca/mobile/images/logo-black-MTL.svg

RestoQuebec Logo:

Link: http://www.restoquebec.ca

http://static.restodata.ca/mobile/images/logo-black-QUE.svg

OttawaRestos Logo:

Link: http://www.ottawarestos.ca

http://static.restodata.ca/mobile/images/logo-black-OTT.svg

API Methods

API Methods

GET /reviews
GET /restaurant/categorysearch
GET /restaurant/keywordsearch
GET /restaurant/nearbysearch
GET /news/{id}/details
GET /deal/{id}/details
GET /event/{id}/details
GET /newssearch
GET /eventsearch
restaurant

Get restaurant information

GET /restaurant/{id}/details
GET /restaurant/{id}/deals
GET /restaurant/{id}/articles
GET /restaurant/{id}/events
GET /restaurant/{id}/media
GET /restaurant/{id}/menus
GET /restaurant/{id}/news
GET /restaurant/{id}/photos
GET /restaurant/{id}/reviews
GET /restaurant/{id}/specials
GET /restaurant/{id}/stats
GET /restaurant/{id}/siteconfig
GET /restaurant/{id}/hours
details
GET /restaurant/{id}/details

Returns details for the restaurant, including SEO data, links, reservations, logo if a member restaurant, etc...

Example OK Response

{ 
    "attributes": [
        {
            "Status": "OK",
            "Endpoint": "/v1/restaurant/2211/details",
            "CityCode": "MTL",
            "SEODescription": "Portovino Ristorante Laval Restaurant, (450) 686-8466, 3035, boul. Le Carrefour, Chomedey, Laval Italian | RestoMontreal.ca",
            "SEOTitle": "Portovino Ristorante Laval Italian Bring Your Own Wine Restaurant | RestoMontreal.ca",
            "SEOKeywords": "Portovino Ristorante, Italian restaurants, Seafood/Fish restaurants, restaurants Italian, restaurants Seafood/Fish, restaurants Laval, Laval restaurants",
            "SEODeeplink": "http://mobile.restomontreal.ca/en/2211/Portovino-Ristorante",
            "TodayHolidayMsg": "Today is a Holiday (Good Friday)! Business hours may vary.",
             "TodayHolidayIcon": ""
        }
    ],
    "restaurant": {
        "ID": "2211",
        "Name": "Portovino Ristorante",
        "NameForURL": "Portovino-Ristorante",
        "OpenedYear": "0",
        "Address": "3035, boul. Le Carrefour",
        "PostalCode": "H7T 1C8",
        "PhoneNumber": "(450) 686-8466",
        "ContactEnabled": 1,
        "ContactEmails": [
            "info@portovino.ca"
        ],
        "ContactMsg": "",
        "Districts": [
            {
                "ID": "59",
                "Name": "Chomedey",
                "URL": "http://www.restomontreal.ca/s/?restaurants=Chomedey&d=59"
            }
        ],
        "Region": "Laval, QC",
        "Lat": "45.568759",
        "Lon": "-73.749287",
        "MetroName": "",
        "MetroURL": "",
        "OpeningSoon": "0",
        "Closed": "0",
        "Visible": "1",
        "Member": "1",
        "ReviewsEnabled": "1",
        "LeafCertified": "0",
        "TotalFavorites": "16",
        "TotalToTry": "13",
        "AffiliatedRestaurants": [
            {
                "ID": "4348",
                "Name": "Portovino Ristorante",
                "Location": "Brossard, South Shore (Montreal)",
                "URL": "http://www.restomontreal.ca/en/4348/Portovino-Ristorante",
                "Logo": "http://www.restomontreal.ca/portal/portovino-brossard/logo/search_logo.gif"
            }
        ],
        "Seats": "280",
        "PaymentMethods": [
            {
                "Name": "Master Card"
            }
        ],
        "Cuisines": [
            {
                "ID": "74",
                "Name": "Italian"
            }
        ],
        "Specialties": "Ossobuco alla Milanese, Steaks, Fish & Homemade desserts.",
        "Description": "Ristorante Portovino is one of Montreal&#146;s most renowned BYOW destinations. Our passion for great food and uncompromising service and attention to detail make every occasion, affordably chic! \n\nAt Portovino, we love good food and it's reflected in everything we do. From our mouth-watering appetizers, chef-inspired seasonal culinary creations, to our weekly table d&#146;h&ocirc;te menu. Portovino is the perfect culinary escape for family and friend gatherings as well as intimate rendez-vous.",
        "OtherInfo": "",
        "FeaturedEventEnabled": "1",
        "FeaturedEventName": "Grilled Cheese Festival",
        "FeaturedEventLogo": "//assets.restodata.ca/images/features/logos/grilled-cheese.png",
        "FeaturedEventLink": "http://www.grilledcheesefestival.com/",
        "Features": [
            {
                "ID": "6",
                "Name": "Bring your own wine-BYOW",
                "Info": ""
            }
        ],
        "Links": [
            {
                "Website": "http://www.restomontreal.ca/restaurants/show_website.php?resto_id=2211&weblink=http://www.portovino.ca"
            }
        ],
        "Rating": "4.15",
        "Votes": "37",
        "Reviews": "36",
        "PriceRange": "$$,$$$",
        "VisitorMessage": "",
        "ProfileURL": "http://www.restomontreal.ca/en/2211/Portovino-Ristorante",
        "ReservationsEnabled": "0",
        "ReservationURL": "http://www.restomontreal.ca/restaurants/reservations/libro-reservations.php?resto_id=2211",
        "LibroURL": "",
        "LibroCode": "",
        "Logo": "http://www.restomontreal.ca/portal/portovino-laval/logo/search_logo.gif",
        "LogoBig": "http://www.restomontreal.ca/portal/portovino-laval/logo/resto_logo.gif"
    }
}

Path variables

id
number required

Restaurant ID

Request parameters

key
string required

Your API Key

lang
string required

Language (en or fr)

Default:
none
Example:
lang=en
mobile
string optional

Customize some features and urls for mobile. Must pass the value "true" to the mobile variable, any other value passed to the mobile variable = false.

Default:
false
Example:
mobile=true

Request headers

X-RestoApiSecret
string required

Client Secret needs to be passed to http headers for all api method endpoints.

Responses

200 OK
401 Unauthorized

Api Key not valid or User not authenticated.

deals
GET /restaurant/{id}/deals

Returns a list of restaurant's active deals. These are meant for viewing purpose only and have NO "DealCode" associated to them. For a user to print or use a deal on their mobile phone, you need to show the deal using the /deal/{id}/details method.

Example OK Response

{
  "attributes": [
    {
      "Status": "OK",
      "Endpoint": "/v1/restaurant/9934/deals",
      "CityCode": "MTL"
    }
  ],
  "restaurant": {
    "Name": "Poutine.Inc",
    "ID": "9934",
    "DealsURL": "http://mobile.restomontreal.ca/fr/9934/PoutineInc?show=coupons#coupons",
    "DealsTotal": "1",
    "DealCode": "sample",
    "Deals": [
      {
        "ID": "2587",
        "DealTitle": "20% de rabais!",
        "DealDetails": "",
        "RestrictOnce": "0",
        "IsHot": "1",
        "IsOver18": "0",
        "IsMobile": "1",
        "AddedDate": "2015-09-10",
        "Conditions": [
          {
            "ID": "3",
            "Details": "Ne peut &ecirc;tre jumel&eacute;e avec aucune autre offre promotionnelle ou coupon de r&eacute;duction. "
          },
          {
            "ID": "22",
            "Details": "Non monnayable"
          },
          {
            "ID": "15",
            "Details": "Non valide durant les jours de f&ecirc;tes & certains &eacute;v&eacute;nements tels que la St-Valentin, F&ecirc;tes des M&egrave;res, Grandprix... Etc. Cette offre pourrait &ecirc;tre non valable pendant le mois de d&eacute;cembre."
          },
          {
            "ID": "42",
            "Details": "Pr&eacute;sentez le coupon lors de la commande."
          }
        ]
      }
    ]
  }
}

Path variables

id
number required

Restaurant ID

Request parameters

key
string required

Your API Key

Request headers

X-RestoApiSecret
string required

Client Secret needs to be passed to http headers for all api method endpoints.

Responses

200 OK
401 Unauthorized

Api Key not valid or User not authenticated.

articles
GET /restaurant/{id}/articles

Returns a list of restaurant's articles.

Example OK Response

{
    "attributes": [
        {
            "Status": "OK",
            "Endpoint": "/v1/restaurant/7263/articles",
            "CityCode": "MTL"
        }
    ],
    "restaurant": {
        "Name": "Mercuri Montreal",
        "ID": "7263",
        "Articles": {
            "ArticlesLink": "",
            "Articles": "<p><a href=\"http://www.journaldemontreal.com/2014/12/17/restos-2014-coups-de-coeur\" target=\"_blank\">Les dix meilleurs restaurants de Montr&eacute;al</a> - JOURNAL DE MONTR&Eacute;AL</p>\n<p><a href=\"http://www.nightlife.ca/2014/12/17/mes-5-meilleurs-restos-ouverts-en-2014\" target=\"_blank\">Mes 5 meilleurs restos ouverts en 2014</a>&nbsp;- Nightlife.ca</p>\n<p><a href=\"http://www.restomontreal.ca/portal/mercuri/articles/Communiqu-Myriam.pdf\" target=\"_blank\">Premiere gastronomique quebecoise : lancement du 'Fire Pit' Joe Mercuri fait feu de tout bois</a></p>\n<p><a href=\"http://www.restomontreal.ca/portal/mercuri/articles/journal-de-mtl-mercuri.pdf\" target=\"_blank\">Mercuri - Journal de Montr&eacute;al</a></p>"
        }
    }
}

Path variables

id
number required

Restaurant ID

Request parameters

key
string required

Your API Key

Request headers

X-RestoApiSecret
string required

Client Secret needs to be passed to http headers for all api method endpoints.

Responses

200 OK
401 Unauthorized

Api Key not valid or User not authenticated.

events
GET /restaurant/{id}/events

Returns a list of restaurant's events.

Example OK Response

{
    "attributes": [
        {
            "Status": "OK",
            "Endpoint": "/v1/restaurant/2438/events",
            "CityCode": "MTL"
        }
    ],
    "restaurant": {
        "Name": "Menthe et Couscous",
        "ID": "2438",
        "EventsURL": "http://www.restomontreal.ca/en/2438/Menthe-et-Couscous?show=events#down",
        "EventsTotal": "2",
        "Events": [
            {
                "Title": "Belly Dancing Supper Show at Menthe et Couscous",
                "Desc": "<p>On Friday May 22nd at 8:30pm.</p>\n<p>In its immersive environment, Menthe &amp; Couscous invites you to visit a realm where charming belly dancers will spice up the mood with their enchanting movements.</p>\n<p>During the show you&rsquo;ll enjoy our special menu, a perfect occasion to discover our different dishes, mainly our Couscous.</p>\n<p>This popular dish easy to share with friends and family brings the sun, heat and the hospitality of the region it comes from.</p>\n<p><strong>Bring your own bottle and invite your friends!</strong></p>\n<p>Please, arrive 15 minutes before the show starts.</p>",
                "Notes": "",
                "ExternalURL": "",
                "StartDate": "2015-05-22",
                "EndDate": "2015-05-22",
                "AddedDate": "2015-19-05",
                "EditDate": "2015-19-05",
                "PageViews": "110",
                "Image": "http://www.restomontreal.ca/portal/menthe-couscous/events/images/1_2414.jpg",
                "URL": "http://www.restomontreal.ca/events/2414-Belly-Dancing-Supper-Show-at-Menthe-et-Couscous-en.html"
            }
        ]
    }
}

Path variables

id
number required

Restaurant ID

Request parameters

key
string required

Your API Key

Request headers

X-RestoApiSecret
string required

Client Secret needs to be passed to http headers for all api method endpoints.

Responses

200 OK
401 Unauthorized

Api Key not valid or User not authenticated.

media
GET /restaurant/{id}/media

Returns restaurant's video, 360.

Example OK Response

{
    "attributes": [
        {
            "Status": "OK",
            "Endpoint": "/v1/restaurant/1078/media",
            "CityCode": "MTL"
        }
    ],
    "restaurant": {
        "Name": "Le Milsa",
        "ID": "1078",
        "Media": {
            "360": "<iframe width=\"780\" height=\"355\" frameborder=\"0\" scrolling=\"no\" marginheight=\"0\" marginwidth=\"0\" src=\"https://maps.google.ca/maps?q=&amp;layer=c&amp;sll=45.497241,-73.577380&amp;cid=3854640291448235884&amp;panoid=KIby42ZvvBYFRBqt1SImzg&amp;cbp=13,35.23,,0,-0.23&amp;gl=CA&amp;hl=fr&amp;ie=UTF8&amp;hq=&amp;hnear=&amp;ll=45.497241,-73.57738&amp;spn=0.006295,0.006295&amp;t=m&amp;cbll=45.497238,-73.577396&amp;source=embed&amp;output=svembed\"></iframe><small><a href=\"https://maps.google.ca/maps?q=&amp;layer=c&amp;sll=45.497241,-73.577380&amp;cid=3854640291448235884&amp;panoid=KIby42ZvvBYFRBqt1SImzg&amp;cbp=13,35.23,,0,-0.23&amp;gl=CA&amp;hl=fr&amp;ie=UTF8&amp;hq=&amp;hnear=&amp;ll=45.497241,-73.57738&amp;spn=0.006295,0.006295&amp;t=m&amp;cbll=45.497238,-73.577396&amp;source=embed\" style=\"color:#0000FF;text-align:left\"></a></small>",
            "VideoLink": "",
            "Video": "<iframe width=\"560\" height=\"315\" src=\"http://www.youtube.com/embed/qVNsg16r9jg\" frameborder=\"0\" allowfullscreen></iframe>"
        }
    }
}

Path variables

id
number required

Restaurant ID

Request parameters

key
string required

Your API Key

Request headers

X-RestoApiSecret
string required

Client Secret needs to be passed to http headers for all api method endpoints.

Responses

200 OK
401 Unauthorized

Api Key not valid or User not authenticated.

menus
GET /restaurant/{id}/menus

Returns a list of restaurant's menus including holiday menus.

Example OK Response

{
  "attributes": [
    {
      "Status": "OK",
      "Endpoint": "/v1/restaurant/7138/menus",
      "CityCode": "MTL",
      "SEODeeplink": "http://mobile.restomontreal.ca/fr/7138/Deuxlux?show=menu#down"
    }
  ],
  "restaurant": {
    "Name": "Deuxlux",
    "ID": "7138",
    "Menus": [
      {
        "ID": "2035",
        "Name": "INSPIRATION DU CHEF CLAUDIO",
        "Type": "LINK",
        "URL": "http://www.restomontreal.ca/restaurants/show_website.php?resto_id=7138&ref=menu&weblink=http://www.restaurantdeuxlux.com/?page_id=110"
      }
    ],
    "TotalMenus": "2",
    "MenuURL": "http://www.restomontreal.ca/fr/7138/Deuxlux?show=menu#down"
  }
}

Path variables

id
number required

Restaurant ID

Request parameters

key
string required

Your API Key

Request headers

X-RestoApiSecret
string required

Client Secret needs to be passed to http headers for all api method endpoints.

Responses

200 OK
401 Unauthorized

Api Key not valid or User not authenticated.

news
GET /restaurant/{id}/news

Returns a list of restaurant's news.

Example OK Response

{
    "attributes": [
        {
            "Status": "OK",
            "Endpoint": "/v1/restaurant/8643/news",
            "CityCode": "MTL"
        }
    ],
    "restaurant": {
        "Name": "Comptoir Lyonnais",
        "ID": "8643",
        "NewsURL": "http://www.restomontreal.ca/en/8643/Comptoir-Lyonnais?show=events#down",
        "NewsTotal": "1",
        "News": [
            {
                "Title": "NEW - Brunch at Comptoir Lyonnais",
                "Desc": "<p>Dear visitors,</p>\n<p>We now offer a delicious Brunch on Sundays starting at 10am.</p>\n<p>Hope to see you soon!</p>\n<p>Thank you</p>\n<p>The Management team</p>",
                "ExternalURL": "",
                "IsPrivate": "0",
                "IsCulinaryReview": "0",
                "IsContest": "0",
                "AddedDate": "1969-31-12",
                "EditDate": "2015-16-04",
                "PageViews": "319",
                "Image": "",
                "URL": "http://www.restomontreal.ca/news/766-NEW---Brunch-at-Comptoir-Lyonnais-en.html"
            }
        ]
    }
}

Path variables

id
number required

Restaurant ID

Request parameters

key
string required

Your API Key

Request headers

X-RestoApiSecret
string required

Client Secret needs to be passed to http headers for all api method endpoints.

Responses

200 OK
photos
GET /restaurant/{id}/photos

Returns restaurants photos, thumbnails, captions, cover photo and mobile random photo (used on mobile site and app search results).

Example OK Response

  {
  "attributes": [
    {
      "Status": "OK",
      "Endpoint": "/v1/restaurant/9864/photos",
      "CityCode": "MTL"
    }
  ],
  "restaurant": {
    "Name": "K2 Bistro",
    "ID": "9864",
    "CoverImage": "http://www.restomontreal.ca/portal/k2-bistro/logo/cover.jpg?v=2595",
    "MobileImageRandom": "http://www.restomontreal.ca/portal/k2-bistro/gallery/images/Mobile/13_k2-bistro--143.jpg",
    "HomepageImageBig": "",
    "TotalPhotos": "15",
    "Photos": [
      {
        "Image": "http://www.restomontreal.ca/portal/k2-bistro/gallery/images/06_k2-bistro--143.jpg",
        "Thumb185": "http://www.restomontreal.ca/portal/k2-bistro/gallery/images/Thumbs/06_k2-bistro--143.jpg",
        "Thumb400": "http://www.restomontreal.ca/portal/k2-bistro/gallery/images/Mobile/06_k2-bistro--143.jpg",
        "Caption": "Moule Grill&eacute; / Grilled Mussels"
      },
      {
        "Image": "http://www.restomontreal.ca/portal/k2-bistro/gallery/images/04_k2-bistro--143.jpg",
        "Thumb185": "http://www.restomontreal.ca/portal/k2-bistro/gallery/images/Thumbs/04_k2-bistro--143.jpg",
        "Thumb400": "http://www.restomontreal.ca/portal/k2-bistro/gallery/images/Mobile/04_k2-bistro--143.jpg",
        "Caption": "Champignons &agrave; l'ail / Garlic Mushrooms"
      },
      {
        "Image": "http://www.restomontreal.ca/portal/k2-bistro/gallery/images/05_k2-bistro--143.jpg",
        "Thumb185": "http://www.restomontreal.ca/portal/k2-bistro/gallery/images/Thumbs/05_k2-bistro--143.jpg",
        "Thumb400": "http://www.restomontreal.ca/portal/k2-bistro/gallery/images/Mobile/05_k2-bistro--143.jpg",
        "Caption": "Rissol&eacute;es de patate / Potato Cakes"
      },
    ]
  }
}

Path variables

id
number required

Restaurant ID

Request parameters

key
string required

Your API Key

Request headers

X-RestoApiSecret
string required

Client Secret needs to be passed to http headers for all api method endpoints.

Responses

200 OK
401 Unauthorized

Api Key not valid or User not authenticated.

reviews
GET /restaurant/{id}/reviews

Returns restaurant rating including reviews and replies to reviews. If libro_id != 0 that means the review came from a confirmed libro reservation. We should try to mention that.

Example OK Response

{
  "attributes": [
    {
      "Status": "OK",
      "Endpoint": "/v1/restaurant/2483/reviews",
      "CityCode": "MTL",
      "Page": "1",
      "TotalPages": "52",
      "Limit": "1",
      "Start": "0",
      "End": "0",
      "TotalResults": "52"
    }
  ],
  "restaurant": {
    "Name": "Uchi",
    "ID": "2483",
    "ReviewsEnabled": "1",
    "ReviewsTotal": "41",
    "VotesTotal": "41",
    "5StarsPercentage": "76",
    "4StarsPercentage": "22",
    "3StarsPercentage": "2",
    "2StarsPercentage": "0",
    "1StarsPercentage": "0",
    "ReviewsOverallRating": "4.8",
    "FoodOverallRating": "4.9",
    "ServiceOverallRating": "4.8",
    "ReviewsURL": "http://www.restomontreal.ca/en/2483/Uchi?show=ratings",
    "ReviewsRecommendedFor": [
      {
        "Name": "Romantic Ambience",
        "TotalVotes": "25"
      },
      {
        "Name": "Group Parties",
        "TotalVotes": "22"
      },
      {
        "Name": "Private Parties",
        "TotalVotes": "11"
      },
      {
        "Name": "Trendy Hot Spot",
        "TotalVotes": "10"
      }
    ],
    "HasLastestPositiveReview": "1",
    "LastestPositiveReview": {
      "FoodRating": "5",
      "ServiceRating": "5",
      "Comment": "Les meilleurs sushis en ville.\r\nLe pad thai est excellent.\r\nLa soupe aigre piquante est tr&egrave;s go&ucirc;teuse.\r\nLe service est tr&egrave;s bien.\r\nBon rapport qualit&eacute; prix !",
      "UserID": "40361",
      "LibroID": "1267",
      "UserName": "RReview",
      "UserPhoto": "https://assets.restodata.ca/images/default-profile.png",
      "UserProfileURL": "http://www.restomontreal.ca/members/public/?id=40361"
    },
    "Reviews": [
      {
        "ID": "52356",
        "OverallRating": "2.5",
        "FoodRating": "2",
        "FoodRatingStars": " <span class='fa fa-star fa-2x' style='color:#ff8a00;'></span><span class='fa fa-star fa-2x' style='color:#ff8a00;'></span><span class='fa fa-star-o fa-2x' style='color:#ff8a00;'></span><span class='fa fa-star-o fa-2x' style='color:#ff8a00;'></span><span class='fa fa-star-o fa-2x' style='color:#ff8a00;'></span>",
        "ServiceRating": "3",
        "ServiceRatingStars": "<span class='fa fa-star fa-2x' style='color:#ff8a00;'></span><span class='fa fa-star fa-2x' style='color:#ff8a00;'></span><span class='fa fa-star fa-2x' style='color:#ff8a00;'></span><span class='fa fa-star-o fa-2x' style='color:#ff8a00;'></span><span class='fa fa-star-o fa-2x' style='color:#ff8a00;'></span>",
        "Comment": "D&eacute;sol&eacute;e mais je vais tous vous calmer dans votre grandiloquence sur ce restaurant. &Agrave; &eacute;viter absolument pour une soir&eacute;e romantique. La salle est excessivement bruyante. Impossible de tenir une discussion, on doit hurler &agrave; notre partenaire de table afin d'&ecirc;tre entendu. On a h&acirc;te de partir, aucun plaisir. Ne pensez pas y passer un bon moment. Mal de t&ecirc;te garantis. La nourriture pour sa part est juste correct. Les nouilles aux crevettes &eacute;taient sans saveur mais leur sp&eacute;cialit&eacute; de sushi \"Tiger eyes\" &eacute;tait bon. Le tout &eacute;tait trop cher. 75 dollars &agrave; deux sans le vin, sans dessert ni caf&eacute;, ni breuvage... Vous voil&agrave; inform&eacute;s. &Agrave; vous de voir...ou pas. Nous ce sera PAS.",
        "AddedDate": "1439694271",
        "EditDate": "1439694271",
        "PartySize": "2",
        "DineDate": "2015-08-15",
        "LibroID": "1267",
        "RecommendedFor": [
          "Group Parties"
        ],
        "Replies": [
          {
            "ID": "4957",
            "Comment": "test",
            "UserID": "51125",
            "UserName": "Mike&eacute;gol",
            "UserPhoto": "https://assets.restodata.ca/images/default-profile.png",
            "UserProfileURL": "http://www.restomontreal.ca/members/public/?id=51125",
            "Date": "1465584672"
          }
        ],
        "UserID": "53657",
        "UserName": "InParadisum",
        "UserPhoto": "http://profilephotos.restomontreal.ca/1/13516_profile_logo.jpg",
        "UserTotalReviews": "38",
        "UserTotalFavs": "5",
        "UserProfileURL": "http://www.restomontreal.ca/members/public/?id=13516",
        "UserLevelIcon": "//assets.restodata.ca/images/pro_level.png"
      }
    ]
  }
}

Path variables

id
number required

Restaurant ID

Request parameters

key
string required

Your API Key

Request headers

X-RestoApiSecret
string required

Client Secret needs to be passed to http headers for all api method endpoints.

Responses

200 OK
401 Unauthorized

Api Key not valid or User not authenticated.

specials
GET /restaurant/{id}/specials

Returns the restaurant's daily/weekly specials/promotions.

Example OK Response

{
    "attributes": [
        {
            "Status": "OK",
            "Endpoint": "/v1/restaurant/5959/specials",
            "CityCode": "MTL"
        }
    ],
    "restaurant": {
        "Name": "Cartel Street Food Bar",
        "ID": "5959",
        "Specials": {
            "HappyHour": "From Monday to Thursday from 5pm to 11pm.",
            "Special": "<p style=\"text-align: center;\"><strong><span style=\"font-size: large;\">Soir&eacute;e Sp&eacute;ciales (17h &agrave; 23h)</span></strong><br /><span style=\"font-size: large;\"><span style=\"text-decoration: underline;\">Lundi</span> </span><br /><span style=\"font-size: large;\">Soir&eacute;e du Staff!</span><br /><span style=\"text-decoration: underline;\"><span style=\"font-size: large;\">Mardi</span></span><br /><span style=\"font-size: large;\">Taco &agrave; 2$</span><br /><span style=\"text-decoration: underline;\"><span style=\"font-size: large;\">Mercredi</span></span><br /><span style=\"font-size: large;\">Hu&icirc;tres &agrave; 1$ chaque (avec achat de consommation)</span><br /><span style=\"text-decoration: underline;\"><span style=\"font-size: large;\">Jeudi &agrave; Samedi</span></span><br /><span style=\"font-size: large;\">Amenez votre party!</span></p>\n<p style=\"text-align: center;\"><em><strong><span style=\"font-size: large;\">Special Evenings (5pm to 11pm)</span></strong></em><br /><span style=\"text-decoration: underline;\"><em><span style=\"font-size: large;\">Monday</span></em></span><br /><em><span style=\"font-size: large;\">Staff Night</span></em><br /><span style=\"text-decoration: underline;\"><em><span style=\"font-size: large;\">Tuesday</span></em></span><br /><em><span style=\"font-size: large;\">$2 Taco</span></em><br /><span style=\"text-decoration: underline;\"><em><span style=\"font-size: large;\">Wednesday</span></em></span><br /><em><span style=\"font-size: large;\">$1 Oyster (with drink purchase)</span></em><br /><span style=\"text-decoration: underline;\"><em><span style=\"font-size: large;\">Thursday to Saturday</span></em></span><br /><em><span style=\"font-size: large;\">Bring your Party!</span></em></p>"
        }
    }
}

Path variables

id
number required

Restaurant ID

Request parameters

key
string required

Your API Key

Request headers

X-RestoApiSecret
string required

Client Secret needs to be passed to http headers for all api method endpoints.

Responses

200 OK
401 Unauthorized

Api Key not valid or User not authenticated.

stats (in progress)
GET /restaurant/{id}/stats

Returns restaurant stats

Path variables

id
number required

Restaurant ID

Request parameters

key
string required

Your API Key

Request headers

X-RestoApiSecret
string required

Client Secret needs to be passed to http headers for all api method endpoints.

Responses

401 Unauthorized

Api Key not valid or User not authenticated.

siteconfig
GET /restaurant/{id}/siteconfig

Configuration settings for template based website for restaurants.

Example OK Response

{
  "attributes": [
    {
      "Status": "OK",
      "Endpoint": "/v1/restaurant/11442/siteconfig",
      "CityCode": "MTL",
      "ID": "11442"
    }
  ],
  "config": {
    "Domain": "http://www.restomauvaisgarcons.ca",
    "OnCloudflare": "1",
    "Locations": "0",
    "LocationsImage": "http://assets.restomontreal.ca/sites/r11442/locations/",
    "LocationsLogo": "http://assets.restomontreal.ca/sites/r11442/locations/",
    "LocationsTitle": "",
    "LocationsData": "0",
    "Slogan": "",
    "SloganTextColor": "#ff9b5b",
    "SloganTextSize": "35",
    "AltLogo": "http://assets.restomontreal.ca/sites/r11442/alt-logo.png",
    "ShowAltLogoAboutUs": "1",
    "ShowAltLogoHeader": "1",
    "NavbarColor": "12, 12, 12, 0.8",
    "NavbarOverlayColor": "1, 1, 1, 0.8",
    "NavbarTextColor": "#ff9b5b",
    "NavbarTextSize": "21",
    "NameFontSize": "55",
    "NameItalic": "0",
    "NameAllCaps": "0",
    "AboutUsUseGoogleFont": "1",
    "AboutUsTextSize": "26",
    "ButtonRadius": "16px;",
    "CSSPattern1": "concrete-wall.png",
    "CSSPattern2": "mirrored-squares.png",
    "NameBGColor": "#ffffff",
    "BGColor1": "#a94c23",
    "BGColor1Lightness": "1.0",
    "TextColor1": "#ffffff",
    "BGColor2": "#111111",
    "TextColor2": "#ffffff",
    "BGColor3": "#3f1106",
    "TextColor3": "#ffffff",
    "BGGrad1ContactUs": "#232526",
    "BGGrad2ContactUs": "#414345",
    "TextColorContactUs": "#ffffff",
    "GoogleFont": "font-family: 'Gloria Hallelujah', cursive;",
    "GoogleFontLoad": "Gloria+Hallelujah",
    "GoogleFontEffect": "font-effect-outline",
    "GoogleFontEffectLoad": "outline",
    "Image1OverlayColor": "#111111",
    "Video": "https://youtu.be/ZDwiRd0ZoEc",
    "Image1": "http://assets.restomontreal.ca/sites/r11442/bg_image1.jpg?v=2",
    "Image2": "http://assets.restomontreal.ca/sites/r11442/bg_image2.jpg?v=1",
    "Image3": "http://assets.restomontreal.ca/sites/r11442/bg_image3.jpg?v=2",
    "Image4": "http://assets.restomontreal.ca/sites/r11442/bg_image4.jpg",
    "CustomTabs": "",
    "RestoNGoLink": "",
    "ShowCoupons": "1",
    "ShowGroupFunctionsLink": "0",
    "ShowFacebookWidget": "0",
    "FacebookTab": "timeline",
    "AnalyticsID": "UA-84025279-45",
    "FacebookPixelID": "",
    "VerificationCode": "lAMUQQqd5qC4khuAzMbNijVxjkBJ71Fn3ghuT1Ad_Gs",
    "ForSite": "MTL"
  }
}

Path variables

id
string required

Request parameters

key
string required

Your API Key

Request headers

X-RestoApiSecret
string required

Client Secret needs to be passed to http headers for all api method endpoints.

Responses

200 OK
hours
GET /restaurant/{id}/hours

Get the restaurant's business hours and business hour note.

Example OK Response:

{
  "attributes": [
    {
      "Status": "OK",
      "Endpoint": "/v1/restaurant/5696/hours",
      "CityCode": "MTL"
    }
  ],
  "restaurant": {
    "Name": "Trattoria Lanni",
    "ID": "5696",
    "Hours": [
      {
        "Day": "lun",
        "Time1": "FERM&Eacute;",
        "Time2": "",
        "Status": ""
      },
      {
        "Day": "mar",
        "Time1": "11:00-23:00",
        "Time2": "",
        "Status": ""
      },
      {
        "Day": "mer",
        "Time1": "11:00-23:00",
        "Time2": "",
        "Status": ""
      },
      {
        "Day": "jeu",
        "Time1": "11:00-23:00",
        "Time2": "",
        "Status": "OUVERT"
      },
      {
        "Day": "ven",
        "Time1": "11:00-23:00",
        "Time2": "",
        "Status": ""
      },
      {
        "Day": "sam",
        "Time1": "17:00-23:00",
        "Time2": "",
        "Status": ""
      },
      {
        "Day": "dim",
        "Time1": "17:00-23:00",
        "Time2": "",
        "Status": ""
      }
    ],
    "HoursNote": ""
  }
}

Path variables

id
string required

Request parameters

key
string required

Your API Key

Request headers

X-RestoApiSecret
string required

Client Secret needs to be passed to http headers for all api method endpoints.

category

Search categories used to build search box.

GET /category/type/cuisines
GET /category/type/districts
GET /category/type/features
GET /category/type/options
cuisines
GET /category/type/cuisines

Returns a list of Cuisines and its IDs to be used with /search/categorysearch method

Example OK Response

{
    "attributes": [
        {
            "Status": "OK",
            "Endpoint": "/v1/category/type/cuisines"
        }
    ],
    "category": {
        "Cuisines": [
            {
                "ID": "19",
                "Name": "Brazilian",
                "URL": "http://www.restomontreal.ca/restaurants/cuisines/Brazilian/19?lang=en",
                "BGImage": "",
                "BGLink": ""
            }
        ]
    }
}

Request parameters

key
string required

Your API Key

lang
string required

Language (en or fr)

Default:
none
Example:
lang=en
mobile
string optional

Customize some features and urls for mobile. Must pass the value "true" to the mobile variable, any other value passed to the mobile variable = false.

Default:
false
Example:
mobile=true
city
string required

City short code

Enumeration:
MTL
QUE
OTT
Default:
none

Request headers

X-RestoApiSecret
string required

Client Secret needs to be passed to http headers for all api method endpoints.

Responses

200 OK
distircts
GET /category/type/districts

Returns a list of Districts and its IDs to be used with /search/categorysearch method.

Example OK Response

{
    "attributes": [
        {
            "Status": "OK",
            "CityCode": "MTL"
        }
    ],
    "category": {
        "Districts": [
            {
                "ID": "1",
                "Name": "Ahuntsic-Cartierville",
                "URL": "http://www.restomontreal.ca/districts/Ahuntsic-Cartierville/1"
            }
        ]
    }
}

Request parameters

key
string required

Your API Key

lang
string required

Language (en or fr)

Default:
none
Example:
lang=en
mobile
string optional

Customize some features and urls for mobile. Must pass the value "true" to the mobile variable, any other value passed to the mobile variable = false.

Default:
false
Example:
mobile=true
city
string required

City short code

Enumeration:
MTL
QUE
OTT
Default:
none

Request headers

X-RestoApiSecret
string required

Client Secret needs to be passed to http headers for all api method endpoints.

Responses

200 OK
features
GET /category/type/features

Returns a list of Features and its IDs to be used with /search/categorysearch method.

Example OK Response

{
    "attributes": [
        {
            "Status": "OK",
            "Endpoint": "/v1/category/type/feature"
        }
    ],
    "category": {
        "Features": {
            "ID": "74",
            "Name": "360&#2013266096; Virtual Tour",
            "Type": "Popular",
            "URL": "http://www.restomontreal.ca/restaurants/features/360-Virtual-Tour/74?lang=en"
        }
    },
    "BGImage": "",
    "BGLink": ""
}

Request parameters

key
string required

Your API Key

lang
string required

Language (en or fr)

Default:
none
Example:
lang=en
mobile
string optional

Customize some features and urls for mobile. Must pass the value "true" to the mobile variable, any other value passed to the mobile variable = false.

Default:
false
Example:
mobile=true
city
string required

City short code

Enumeration:
MTL
QUE
OTT
Default:
none

Request headers

X-RestoApiSecret
string required

Client Secret needs to be passed to http headers for all api method endpoints.

Responses

200 OK
401 Unauthorized

Api Key not valid or User not authenticated.

Examples

GET https://www.restoapi.com/v1/category/type/features?lang=en&city=MTL HTTP/1.1 

HTTP/1.1 200 OK 

Content-Type: application/json

{
  "attributes": [
    {
      "Status": "OK",
      "Endpoint": "\/v1\/category\/type\/feature"
    }
  ],
  "category": {
    "Features": {
      "Popular": [
        {
          "ID": "74",
          "Name": "360&#2013266096; Virtual Tour",
          "Type": "Popular",
          "URL": "http:\/\/www.restomontreal.ca\/restaurants\/features\/360-Virtual-Tour\/74?lang=en"
        },
        {
          "ID": "6",
          "Name": "Bring your own wine (BYOW)",
          "Type": "Popular",
          "URL": "http:\/\/www.restomontreal.ca\/restaurants\/features\/Bring-your-own-wine-BYOW-BYOB\/6?lang=en"
        },
        {
          "ID": "10",
          "Name": "Delivery",
          "Type": "Popular",
          "URL": "http:\/\/www.restomontreal.ca\/restaurants\/features\/Delivery\/10?lang=en"
        },
        {
          "ID": "89",
          "Name": "Eco-Friendly (Water Purification)",
          "Type": "Popular",
          "URL": "http:\/\/www.restomontreal.ca\/restaurants\/features\/Eco-Friendly-Water-Purification\/89?lang=en"
        },
        {
          "ID": "57",
          "Name": "Fine Dining",
          "Type": "Popular",
          "URL": "http:\/\/www.restomontreal.ca\/restaurants\/features\/Fine-Dining\/57?lang=en"
        },
        {
          "ID": "73",
          "Name": "Online Ordering",
          "Type": "Popular",
          "URL": "http:\/\/www.restomontreal.ca\/restaurants\/features\/Online-Ordering\/73?lang=en"
        },
        {
          "ID": "66",
          "Name": "Online Reservations",
          "Type": "Popular",
          "URL": "http:\/\/www.restomontreal.ca\/restaurants\/features\/Online-Reservations\/66?lang=en"
        },
        {
          "ID": "62",
          "Name": "SAQ Wine Prices+",
          "Type": "Popular",
          "URL": "http:\/\/www.restomontreal.ca\/restaurants\/features\/SAQ-Wine-Prices\/62?lang=en"
        },
        {
          "ID": "25",
          "Name": "Terrace\/Outdoor Dining",
          "Type": "Popular",
          "URL": "http:\/\/www.restomontreal.ca\/restaurants\/features\/TerraceOutdoor-Dining\/25?lang=en"
        },
        {
          "ID": "48",
          "Name": "Wireless Internet (WiFi)",
          "Type": "Popular",
          "URL": "http:\/\/www.restomontreal.ca\/restaurants\/features\/Wireless-Internet-WiFi\/48?lang=en"
        }
      ],
      "Menu": [
        {
          "ID": "79",
          "Name": "All You Can Eat Menu",
          "Type": "Menu",
          "URL": "http:\/\/www.restomontreal.ca\/restaurants\/features\/All-You-Can-Eat-Menu\/79?lang=en"
        },
        {
          "ID": "4",
          "Name": "Brunch",
          "Type": "Menu",
          "URL": "http:\/\/www.restomontreal.ca\/restaurants\/features\/Brunch\/4?lang=en"
        },
        {
          "ID": "5",
          "Name": "Buffet",
          "Type": "Menu",
          "URL": "http:\/\/www.restomontreal.ca\/restaurants\/features\/Buffet\/5?lang=en"
        },
        {
          "ID": "86",
          "Name": "Easter Menus",
          "Type": "Menu",
          "URL": "http:\/\/www.restomontreal.ca\/restaurants\/features\/Easter-Menus\/86?lang=en"
        },
        {
          "ID": "12",
          "Name": "Extensive Wine List",
          "Type": "Menu",
          "URL": "http:\/\/www.restomontreal.ca\/restaurants\/features\/Extensive-Wine-List\/12?lang=en"
        },
        {
          "ID": "61",
          "Name": "Gluten Free",
          "Type": "Menu",
          "URL": "http:\/\/www.restomontreal.ca\/restaurants\/features\/Gluten-Free\/61?lang=en"
        },
        {
          "ID": "82",
          "Name": "Holiday\/Christmas Menus",
          "Type": "Menu",
          "URL": "http:\/\/www.restomontreal.ca\/restaurants\/features\/HolidayChristmas-Menus\/82?lang=en"
        },
        {
          "ID": "85",
          "Name": "Mother's Day Menus",
          "Type": "Menu",
          "URL": "http:\/\/www.restomontreal.ca\/restaurants\/features\/Mothers-Day-Menus\/85?lang=en"
        },
        {
          "ID": "83",
          "Name": "New Year's Menus",
          "Type": "Menu",
          "URL": "http:\/\/www.restomontreal.ca\/restaurants\/features\/New-Years-Menus\/83?lang=en"
        },
        {
          "ID": "67",
          "Name": "Online Menu",
          "Type": "Menu",
          "URL": "http:\/\/www.restomontreal.ca\/restaurants\/features\/Online-Menu\/67?lang=en"
        },
        {
          "ID": "65",
          "Name": "Tasting Menu",
          "Type": "Menu",
          "URL": "http:\/\/www.restomontreal.ca\/restaurants\/features\/Tasting-Menu\/65?lang=en"
        },
        {
          "ID": "84",
          "Name": "Valentine's Day Menus",
          "Type": "Menu",
          "URL": "http:\/\/www.restomontreal.ca\/restaurants\/features\/Valentines-Day-Menus\/84?lang=en"
        },
        {
          "ID": "45",
          "Name": "Wide Beer Selection",
          "Type": "Menu",
          "URL": "http:\/\/www.restomontreal.ca\/restaurants\/features\/Wide-Beer-Selection\/45?lang=en"
        }
      ],
      "Ambiance": [
        {
          "ID": "55",
          "Name": "5-7 Happy Hour",
          "Type": "Ambiance",
          "URL": "http:\/\/www.restomontreal.ca\/restaurants\/features\/5-7-Happy-Hour\/55?lang=en"
        },
        {
          "ID": "54",
          "Name": "Dinner Dance",
          "Type": "Ambiance",
          "URL": "http:\/\/www.restomontreal.ca\/restaurants\/features\/Dinner-Dance\/54?lang=en"
        },
        {
          "ID": "13",
          "Name": "Fireplace",
          "Type": "Ambiance",
          "URL": "http:\/\/www.restomontreal.ca\/restaurants\/features\/Fireplace\/13?lang=en"
        },
        {
          "ID": "19",
          "Name": "Good for Kids",
          "Type": "Ambiance",
          "URL": "http:\/\/www.restomontreal.ca\/restaurants\/features\/Good-for-Kids\/19?lang=en"
        },
        {
          "ID": "11",
          "Name": "Live Entertainment",
          "Type": "Ambiance",
          "URL": "http:\/\/www.restomontreal.ca\/restaurants\/features\/Live-Entertainment\/11?lang=en"
        },
        {
          "ID": "49",
          "Name": "Lounge",
          "Type": "Ambiance",
          "URL": "http:\/\/www.restomontreal.ca\/restaurants\/features\/Lounge\/49?lang=en"
        },
        {
          "ID": "21",
          "Name": "Open Late",
          "Type": "Ambiance",
          "URL": "http:\/\/www.restomontreal.ca\/restaurants\/features\/Open-Late\/21?lang=en"
        },
        {
          "ID": "51",
          "Name": "Supper Club",
          "Type": "Ambiance",
          "URL": "http:\/\/www.restomontreal.ca\/restaurants\/features\/Supper-Club\/51?lang=en"
        },
        {
          "ID": "70",
          "Name": "Televised Sports",
          "Type": "Ambiance",
          "URL": "http:\/\/www.restomontreal.ca\/restaurants\/features\/Televised-Sports\/70?lang=en"
        },
        {
          "ID": "75",
          "Name": "Theme \/ Unique Experience",
          "Type": "Ambiance",
          "URL": "http:\/\/www.restomontreal.ca\/restaurants\/features\/Theme-Unique-Experience\/75?lang=en"
        },
        {
          "ID": "63",
          "Name": "Water View (Waterfront)",
          "Type": "Ambiance",
          "URL": "http:\/\/www.restomontreal.ca\/restaurants\/features\/Water-View-Waterfront\/63?lang=en"
        }
      ],
      "Promotions\/Offers": [
        {
          "ID": "80",
          "Name": "Coupons\/Deals on Mobile",
          "Type": "Promotions\/Offers",
          "URL": "http:\/\/www.restomontreal.ca\/restaurants\/features\/Coupons-Deals-Mobile\/80?lang=en"
        },
        {
          "ID": "71",
          "Name": "Coupons\/Deals Printable",
          "Type": "Promotions\/Offers",
          "URL": "http:\/\/www.restomontreal.ca\/restaurants\/features\/Coupons-Deals-Print\/71?lang=en"
        },
        {
          "ID": "78",
          "Name": "Specials",
          "Type": "Promotions\/Offers",
          "URL": "http:\/\/www.restomontreal.ca\/restaurants\/features\/Specials\/78?lang=en"
        }
      ],
      "For Groups": [
        {
          "ID": "16",
          "Name": "Good for Groups",
          "Type": "For Groups",
          "URL": "http:\/\/www.restomontreal.ca\/restaurants\/features\/Good-for-Groups\/16?lang=en"
        },
        {
          "ID": "27",
          "Name": "Private Functions",
          "Type": "For Groups",
          "URL": "http:\/\/www.restomontreal.ca\/restaurants\/features\/Private-Functions\/27?lang=en"
        },
        {
          "ID": "56",
          "Name": "Reception Services",
          "Type": "For Groups",
          "URL": "http:\/\/www.restomontreal.ca\/restaurants\/features\/Reception-Services\/56?lang=en"
        }
      ],
      "Bars": [
        {
          "ID": "58",
          "Name": "Brew-Pub",
          "Type": "Bars",
          "URL": "http:\/\/www.restomontreal.ca\/restaurants\/features\/Brew-Pub\/58?lang=en"
        },
        {
          "ID": "81",
          "Name": "Cocktail Bar",
          "Type": "Bars",
          "URL": "http:\/\/www.restomontreal.ca\/restaurants\/features\/Cocktail-Bar\/81?lang=en"
        },
        {
          "ID": "69",
          "Name": "Irish Pub",
          "Type": "Bars",
          "URL": "http:\/\/www.restomontreal.ca\/restaurants\/features\/Irish-Pub\/69?lang=en"
        },
        {
          "ID": "87",
          "Name": "Izakaya (Japanese Pub)",
          "Type": "Bars",
          "URL": "http:\/\/www.restomontreal.ca\/restaurants\/features\/Izakaya-Japanese-Pub\/87?lang=en"
        },
        {
          "ID": "64",
          "Name": "Oyster Bar",
          "Type": "Bars",
          "URL": "http:\/\/www.restomontreal.ca\/restaurants\/features\/Oyster-Bar\/64?lang=en"
        },
        {
          "ID": "59",
          "Name": "Pub",
          "Type": "Bars",
          "URL": "http:\/\/www.restomontreal.ca\/restaurants\/features\/Pub\/59?lang=en"
        },
        {
          "ID": "50",
          "Name": "Resto-Bar",
          "Type": "Bars",
          "URL": "http:\/\/www.restomontreal.ca\/restaurants\/features\/Resto-Bar\/50?lang=en"
        },
        {
          "ID": "53",
          "Name": "Wine Bar",
          "Type": "Bars",
          "URL": "http:\/\/www.restomontreal.ca\/restaurants\/features\/Wine-Bar\/53?lang=en"
        }
      ],
      "Other": [
        {
          "ID": "77",
          "Name": "Butcher Shop",
          "Type": "Other",
          "URL": "http:\/\/www.restomontreal.ca\/restaurants\/features\/Butcher-Shop\/77?lang=en"
        },
        {
          "ID": "7",
          "Name": "Catering",
          "Type": "Other",
          "URL": "http:\/\/www.restomontreal.ca\/restaurants\/features\/Catering\/7?lang=en"
        },
        {
          "ID": "76",
          "Name": "Cooking Classes",
          "Type": "Other",
          "URL": "http:\/\/www.restomontreal.ca\/restaurants\/features\/Cooking-Classes\/76?lang=en"
        },
        {
          "ID": "23",
          "Name": "Parking Available",
          "Type": "Other",
          "URL": "http:\/\/www.restomontreal.ca\/restaurants\/features\/Parking-Available\/23?lang=en"
        },
        {
          "ID": "68",
          "Name": "Photos Available",
          "Type": "Other",
          "URL": "http:\/\/www.restomontreal.ca\/restaurants\/features\/Photos-Available\/68?lang=en"
        },
        {
          "ID": "28",
          "Name": "Reservations Recommended",
          "Type": "Other",
          "URL": "http:\/\/www.restomontreal.ca\/restaurants\/features\/Reservations-Recommended\/28?lang=en"
        },
        {
          "ID": "33",
          "Name": "Take-Out Food",
          "Type": "Other",
          "URL": "http:\/\/www.restomontreal.ca\/restaurants\/features\/Take-Out-Food\/33?lang=en"
        },
        {
          "ID": "35",
          "Name": "Valet",
          "Type": "Other",
          "URL": "http:\/\/www.restomontreal.ca\/restaurants\/features\/Valet\/35?lang=en"
        },
        {
          "ID": "36",
          "Name": "Veranda",
          "Type": "Other",
          "URL": "http:\/\/www.restomontreal.ca\/restaurants\/features\/Veranda\/36?lang=en"
        },
        {
          "ID": "38",
          "Name": "Wheelchair Accessible",
          "Type": "Other",
          "URL": "http:\/\/www.restomontreal.ca\/restaurants\/features\/Wheelchair-Accessible\/38?lang=en"
        }
      ]
    }
  }
}
options
GET /category/type/options

Return options Sort, PriceRange, Time, Distance MembersFirst to use with search methods.

Example OK Response

{
    "attributes": [
        {
            "Status": "OK",
            "Endpoint": "/v1/category/type/options"
        }
    ],
    "category": {
        "Sort": [
            {
                "ID": "random",
                "Name": "Random Order"
            }
        ],
        "PriceRange": [
            {
                "ID": "1",
                "Name": "less than $20"
            }
        ],
        "Time": [
            {
                "ID": "open-lunch",
                "Name": "Open Today for Lunch"
            }
        ],
        "MembersFirst": [
            {
                "ID": "1",
                "Name": "Member restaurants first"
            }
        ],
        "Distance": [
            {
                "ID": "10",
                "Name": "10 km"
            }
        ]
    }
}

Request parameters

key
string required

Your API Key

Request headers

X-RestoApiSecret
string required

Client Secret needs to be passed to http headers for all api method endpoints.

Responses

200 OK

Examples

GET https://www.restoapi.com/v1/category/type/options HTTP/1.1 

Content-Type: application/json

{"attributes":[{"Status":"OK","Endpoint":"\/v1\/category\/type\/options"}],"category":{"Sort":[{"ID":"random","Name":"Ordre al&eacute;atoire"},{"ID":"resto_name","Name":"Ordre alphab&eacute;tique"},{"ID":"resto_overall_rating","Name":"Notes les plus haute"},{"ID":"user_pageviews_day","Name":"Plus populaires aujourd'hui"},{"ID":"user_pageviews_week","Name":"Plus populaires cette semaine"},{"ID":"user_pageviews_month","Name":"Plus populaires ce mois-ci"}],"PriceRange":[{"ID":"1","Name":"moins de 20$"},{"ID":"2","Name":"20$ &agrave; 30$"},{"ID":"3","Name":"30$ &agrave; 45$"},{"ID":"4","Name":"plus de 45$"}],"Time":[{"ID":"open-lunch","Name":"Ouvert aujourd'hui pour d&icirc;ner"},{"ID":"open-supper","Name":"Ouvert aujourd'hui pour souper"},{"ID":"open-now","Name":"Ouvert maintenant (09:13)"},{"ID":"open-monday","Name":"Ouvert lundi"},{"ID":"open-sunday","Name":"Ouvert dimanche"},{"ID":"open-late","Name":"Ouvert tard (jusqu'&agrave; 24h+)"}],"Distance":{"1":{"ID":"1","Name":"1 km"},"2":{"ID":"2","Name":"2 km"},"3":{"ID":"3","Name":"3 km"},"4":{"ID":"4","Name":"4 km"},"5":{"ID":"5","Name":"5 km"},"6":{"ID":"6","Name":"6 km"},"7":{"ID":"7","Name":"7 km"},"8":{"ID":"8","Name":"8 km"},"9":{"ID":"9","Name":"9 km"},"10":{"ID":"10","Name":"10 km"},"11":{"ID":"11","Name":"11 km"},"12":{"ID":"12","Name":"12 km"},"13":{"ID":"13","Name":"13 km"},"14":{"ID":"14","Name":"14 km"},"15":{"ID":"15","Name":"15 km"},"16":{"ID":"16","Name":"16 km"},"17":{"ID":"17","Name":"17 km"},"18":{"ID":"18","Name":"18 km"},"19":{"ID":"19","Name":"19 km"},"20":{"ID":"20","Name":"20 km"}},"MembersFirst":[{"ID":"1","Name":"Restos membres en premier"}]}}
autocomplete

List of autocomplete keywords to be used for What and Where input fields and works in conjunction with the keywordsearch method. Note the user expects to see an exact match when clicking on an autocomplete list keyword, therefore you must pass the parameter exact to the keywordsearch method with the value 1 so that an exact match is returned to the user.

GET /autocomplete/type/what
GET /autocomplete/type/where
autocomplete what
GET /autocomplete/type/what

Show a json encoded list of all restaurants, cuisines & features for the site CITY

ex: https://www.restoapi.com/v1/autocomplete/type/what?key=523e326f48532c721c577d7922&city=MTL

Request parameters

key
string required

Your API Key

city
string required

City short code

Enumeration:
MTL
QUE
OTT
Default:
none

Request headers

X-RestoApiSecret
string required

Client Secret needs to be passed to http headers for all api method endpoints.

autocomplete where
GET /autocomplete/type/where

Show a json encoded list of districts and cities for the site CITY

ex: https://www.restoapi.com/v1/autocomplete/type/where?key=523e326f48532c721c577d7922&city=MTL

Request parameters

key
string required

Your API Key

city
string required

City short code

Enumeration:
MTL
QUE
OTT
Default:
none

Request headers

X-RestoApiSecret
string required

Client Secret needs to be passed to http headers for all api method endpoints.

user

Authenticate and get user info

POST /user/login
POST /user/loginfacebook
POST /user/logingoogle
GET /user/auth
POST /user/resetpass
GET /user/{id}/details
POST /users/{id}/details
GET /user/{id}/reviews
POST /user/{id}/reviews
GET /user/{id}/favs
DELETE /user/{id}/favs
POST /user/{id}/favs
login
POST /user/login

Authenticate a user with a valid username/email and password in the body of a POST request. This returns the user's authorization token and user id. Pass the user's auth token and user_id to the /user/auth method to get the user's details. This auth token will be needed in many instances where the user needs to be logged in for an action to be performed. This method is rate limited.

Example OK Response

{
    "attributes": [
        {
            "Status": "OK",
            "Endpoint": "/v1/user/auth/"
        }
    ],
    "User": {
        "AuthToken": "81i9565813b89z44561",
        "ID": "54556"
    }
}

Request parameters

key
string required

Your API Key

username
string required

Username OR email address of the user.

password
string required

Password (plain text)

Request headers

X-RestoApiSecret
string required

Client Secret needs to be passed to http headers for all api method endpoints.

Responses

200 OK

Returns User ID, AuthToken and Username. AuthToken needed to access user's info and to post on their behalf. AuthToken expires 30 days after the member was first created and every 30 days after that.

401 Unauthorized

Api Key not valid or User not authenticated.

405 Method Not Allowed

Only POST accepted.

loginfacebook
POST /user/loginfacebook

Login user using Facebook. This checks if the Facebook token is valid, and belongs to the said Facebook id. This method is rate limited.

Example OK Response

{
  "attributes": [
    {
      "Status": "OK",
      "Endpoint": "/v1/user/loginfacebook/",
      "RedirectURL": "http://www.restomontreal.ca"
    }
  ],
  "User": {
    "AuthToken": "28uNS37eI-q265mkoe96VikU31N_UI_518WlBjZy277VWigZD8251125TO",
    "Username": "MichaelMu-566",
    "ID": "51125"
  }
}

Example Error Response

{
  "attributes": [
    {
      "Status": "fail",
      "ErrorMsg": "Could not authenticate user with FB token supplied. Error retrieving profile from FB token supplied.",
      "ErrorType": "User not authenticated"
    }
  ]
}

Request parameters

key
string required

Your API Key

redirect
string optional

URL encoded redirect URL after successful login.

lang
string required

Language (en or fr)

Default:
none
Example:
lang=en
city
string required

City short code

Enumeration:
MTL
QUE
OTT
Default:
none

Request headers

X-RestoApiSecret
string required

Client Secret needs to be passed to http headers for all api method endpoints.

Request body

POST Requests

Object
token
string

Facebook Auth Token

id
string

Facebook User ID

Responses

200 OK
401 Unauthorized

Api Key not valid or User not authenticated.

405 Method Not Allowed

Only POST accepted.

logingoogle
POST /user/logingoogle

Login user using Google. This checks if the Google token is valid. This method is rate limited.

Example OK Response

{
  "attributes": [
    {
      "Status": "OK",
      "Endpoint": "/v1/user/logingoogle/"
    }
  ],
  "User": {
    "AuthToken": "11ta-56AQZu765MdnM98-Tpx40QIdIX325SK_UHI850Qj_lQr765616mP",
    "Username": "Mozarty",
    "ID": "5616"
  }
}

Example Error Response

{
  "attributes": [
    {
      "Status": "fail",
      "ErrorMsg": "Could not authenticate user with Google token supplied. Error retrieving profile from Google token supplied.",
      "ErrorType": "User not authenticated"
    }
  ]
}

Request parameters

key
string required

Your API Key

redirect
string optional

URL encoded redirect URL after successful login.

lang
string required

Language (en or fr)

Default:
none
Example:
lang=en
city
string required

City short code

Enumeration:
MTL
QUE
OTT
Default:
none

Request headers

X-RestoApiSecret
string required

Client Secret needs to be passed to http headers for all api method endpoints.

Request body

POST Requests

Object
token
string

Google Auth Token

Responses

200 OK
401 Unauthorized

Api Key not valid or User not authenticated.

405 Method Not Allowed

Only POST accepted.

auth
GET /user/auth

Method for validating a user's auth token. This method should be checked on each app/site load to make sure the user is still logged in with a valid X_UserToken. This method is rate limited. Tokens are reset after 30 days and can be reset at anytime, when a token is reset, the user must re-login.

Example OK Response

{
    "attributes": [
        {
            "Status": "OK",
            "Endpoint": "/v1/user/auth/"
        }
    ],
    "User": {
        "ID": "53578",
        "AuthToken": "18c254v665054q5353578afgL1234as",
        "Username": "MireilleB&eacute;-256",
        "UserFullName": "Mireille B&eacute;liveau",
        "Photo": "http://graph.facebook.com/10206517911940306/picture?type=large" 
    }
}

Request parameters

key
string required

Your API Key

Request headers

X-RestoApiSecret
string required

Client Secret needs to be passed to http headers for all api method endpoints.

X-UserToken
string required

User Auth Token needed to perform certain actions with some api methods.

Responses

401 Unauthorized

Api Key not valid or User not authenticated.

resetpass
POST /user/resetpass

Verify an email address and send user a new password by email. This method is rate limited.

Example OK Response

{
    "attributes": [
        {
            "Status": "OK",
            "Endpoint": "/v1/user/resetpass/",
            "ReturnURL": "http://www.restomontreal.ca/auth/login/"
        }
    ]
}

Request parameters

key
string required

Your API Key

mobile
string optional

Customize some features and urls for mobile. Must pass the value "true" to the mobile variable, any other value passed to the mobile variable = false.

Default:
false
Example:
mobile=true
lang
string required

Language (en or fr)

Default:
none
Example:
lang=en

Request headers

X-RestoApiSecret
string required

Client Secret needs to be passed to http headers for all api method endpoints.

Request body

application/x-www-form-urlencoded
Object
email
string

Vistor's email address

Responses

200 OK
user details (list)
GET /user/{id}/details

List user's details, including name, age, last login date, total reviews, total favs, etc... No authentification required, all data is public.

Example OK Response

{
  "attributes": [
    {
      "Status": "OK",
      "Endpoint": "/v1/user/51125/details",
      "CityCode": "MTL"
    }
  ],
  "user": {
    "ID": "51125",
    "Username": "MichaelMu-566",
    "Email": "michael@restomontreal.ca",
    "Photo": "http://profilephotos.restodata.ca/2/51125_profile_logo-125.jpg",
    "FirstName": "Michael",
    "LastName": "Mustillo",
    "Gender": "Male",
    "AgeRange": "",
    "MemberSince": "1428427057",
    "LastLogin": "1444060352",
    "IsActivated": "1",
    "ReplyNotification": "0",
    "NewsletterSubscribed": "1",
    "NewsletterLanguage": "EN",
    "ShowSocialMediaPhoto": "0",
    "TotalReviews": "9",
    "TotalFavorites": "7"
  }
}

Example Error Response

{
  "attributes": [
    {
      "Status": "fail",
      "ErrorMsg": "No user found with the ID specified",
      "ErrorType": "Invalid User ID"
    }
  ]
}

Path variables

id
string required

Request parameters

key
string required

Your API Key

city
string required

City short code

Enumeration:
MTL
QUE
OTT
Default:
none

Request headers

X-RestoApiSecret
string required

Client Secret needs to be passed to http headers for all api method endpoints.

Responses

200 OK
user details (update)
POST /users/{id}/details

Update a user's profile information. User must be authenticated with a valid AuthToken. This method is rate limited.

Path variables

id
string required

Request parameters

key
string required

Your API Key

Request headers

X-RestoApiSecret
string required

Client Secret needs to be passed to http headers for all api method endpoints.

X-UserToken
string required

User Auth Token needed to perform certain actions with some api methods.

Request body

POST Requests

application/x-www-form-urlencoded
Object
fname
string

User's First Name

Min length:2 Max length:32
notification
number

Get notifications when someone replies to user's reviews

Enumeration:
0
1
show_socialphoto
number

Show user's social media photo (if available)

Enumeration:
0
1
newsletter
number

Receive newsletter

Enumeration:
0
1
lname
string

User's Last Name

Min length:2 Max length:32
gender
string

Gender

Enumeration:
Male
Female
newsletter_lang
string

Newsletter preferred language

Enumeration:
FR
EN
email
string

User's Email address

username
string

Username (must be at least 6 characters long)

Min length:5 Max length:32
user reviews (list)
GET /user/{id}/reviews

List a user's reviews, ratings and recommendations including replies to the reviews.

Example OK Response

{
  "attributes": [
    {
      "Status": "OK",
      "Endpoint": "/v1/user/52821/reviews",
      "CityCode": "MTL"
    }
  ],
  "user": {
    "ID": "52821",
    "TotalReviews": "1",
    "Reviews": [
      {
        "ReviewID": "51827",
        "RestoID": "1010",
        "AddedDate": "2015-07-08",
        "EditDate": "2015-07-08",
        "DineDate": "2015-07-07",
        "PartySize": "2",
        "Comment": "Beaucoup tro cher pour ce qu'ils servent ! Un Pad Thai &agrave; 20 $, un plat de General Tao aussi &agrave; 20 $ et il faut ajouter 1 $ si on veut un riz blanc ??? Faut le faire surtout que ce n'&eacute;taient pas les meilleurs au Monde ! Nous &eacute;tions des clients r&eacute;guliers mais c'est FINI ! A &eacute;viter. Il y a beaucoup de bon restos asiatiques dans le coin....",
        "FoodRating": "1",
        "ServiceRating": "3",
        "OverallRating": "2",
        "Replies": [
          {
            "ID": "4726",
            "Comment": "Je suis tout &agrave; fait d'accord avec votre commentaire. Je viens de vivre la m&ecirc;me exp&eacute;rience que vous.",
            "UserID": "19615",
            "UserName": "Miriam26",
            "AddedDate": "2015-10-08"
          }
        ]
      }
    ]
  }
}

Path variables

id
string required

Request parameters

key
string required

Your API Key

city
string required

City short code

Enumeration:
MTL
QUE
OTT
Default:
none

Request headers

X-RestoApiSecret
string required

Client Secret needs to be passed to http headers for all api method endpoints.

Responses

200 OK
user reviews (add or update)
POST /user/{id}/reviews

Add or update a user review for the restaurant specified. User must be authenticated with a valid AuthToken. This method is rate limited.

Path variables

id
number required

User's ID

Request parameters

key
string required

Your API Key

resto_id
number required

Restaurant's ID

city
string required

City short code

Enumeration:
MTL
QUE
OTT
Default:
none

Request headers

X-RestoApiSecret
string required

Client Secret needs to be passed to http headers for all api method endpoints.

X-UserToken
string required

User Auth Token needed to perform certain actions with some api methods.

Request body

application/x-www-form-urlencoded
Object
servicerating
number

User's Service Rating on a scale of 1 to 5

Enumeration:
1
2
3
4
5
datedined
string date

The Date the reviewer dined at the restaurant, must be in DateTime format (y-m-d). Not obligatory.

Default:
0000-00-00
Example:
2015-06-11
comment
string

User's Comment

foodrating
number

User's Food Rating on a scale of 1 to 5

Enumeration:
1
2
3
4
5
partysize
number

The number of guests total who dined at the restaurant. Not obligatory. 10 equals 10 people or more...

Min:1 Max:10
via
string

Via which platform was the review submitted.

Enumeration:
MOBILE
APP
DESKTOP
recommendedfor
string

List of features the restaurant was recommended for by the reviewer. Not obligatory. Comma separated.

Example:
1,3,6

Responses

200 OK
user favs (list)
GET /user/{id}/favs

List of restaurant id's the user has in their favorites list. Pass the restaurant id to the /restaurant/{id}/details endpoint to get full details for each restaurant.

Example OK Response

{
  "attributes": [
    {
      "Status": "OK",
      "Endpoint": "/v1/user/51125/favs",
      "CityCode": "MTL"
    }
  ],
  "user": {
    "ID": "51125",
    "TotalFavorites": "7",
    "Favs": [
      {
        "ID": "2021"
      },
      {
        "ID": "4854"
      },
      {
        "ID": "6808"
      },
      {
        "ID": "2601"
      },
      {
        "ID": "78"
      },
      {
        "ID": "600"
      },
      {
        "ID": "8417"
      }
    ]
  }
}

Path variables

id
string required

Request parameters

key
string required

Your API Key

city
string required

City short code

Enumeration:
MTL
QUE
OTT
Default:
none

Request headers

X-RestoApiSecret
string required

Client Secret needs to be passed to http headers for all api method endpoints.

Responses

200 OK
user favs (delete)
DELETE /user/{id}/favs

Delete restaurant from user's favorites list. User must be authenticated with a valid AuthToken. This method is rate limited.

Example OK Response

{
  "attributes": [
    {
      "Status": "OK",
      "Endpoint": "/v1/user/5616/favs",
      "CityCode": "MTL"
    }
  ],
  "user": {
    "ID": "5616",
    "DeletedRestaurantID": "5944"
  }
}

Example Error Response

{
  "attributes": [
    {
      "Status": "fail",
      "ErrorMsg": "No restaurant found with the ID specified",
      "ErrorType": "Invalid Restaurant ID"
    }
  ]
}

Path variables

id
number required

User's ID

Request parameters

key
string required

Your API Key

resto_id
number required

Restaurant ID to delete from user's list.

Request headers

X-RestoApiSecret
string required

Client Secret needs to be passed to http headers for all api method endpoints.

X-UserToken
string required

User Auth Token needed to perform certain actions with some api methods.

Responses

200 OK
user favs (add)
POST /user/{id}/favs

Add restaurant to user's favorites list. User must be authenticated with a valid AuthToken. This method is rate limited.

Path variables

id
number required

User's ID

Request parameters

key
string required

Your API Key

resto_id
number required

Restaurant's ID

Request headers

X-RestoApiSecret
string required

Client Secret needs to be passed to http headers for all api method endpoints.

X-UserToken
string required

User Auth Token needed to perform certain actions with some api methods.

app

App specific methods.

GET /app/sponsor
GET /app/pagecounter
GET /app/sponsor

Get the current sponsored logo for the app loading page.

Example OK Response

{
    "app": {
        "sponsor": "https://assets.restodata.ca/mobile/app/sponsor/we-are.png"
    }
}

Request parameters

key
string required

Your API Key

Request headers

X-RestoApiSecret
string required

Client Secret needs to be passed to http headers for all api method endpoints.

Responses

200 OK
pagecounter
GET /app/pagecounter

Must be called on every restaurant profile page view. Unique visitor page counter.

Example OK Response:

{
  "attributes": [
    {
      "Status": "OK",
      "Endpoint": "/v1/app/pagecounter/",
      "RestoID": "5871",
      "TodayPageCount": "14"
    }
  ]
}

Request parameters

key
string required

Your API Key

id
number required

Restaurant ID

Request headers

X-RestoApiSecret
string required

Client Secret needs to be passed to http headers for all api method endpoints.

reviews
GET /reviews

Returns all reviews for given city.

Example OK Response

{
  "attributes": [
    {
      "Status": "OK",
      "Endpoint": "/v1/reviews/",
      "CityCode": "MTL",
      "Page": "1",
      "TotalPages": "1",
      "Limit": "2",
      "Start": "0",
      "End": "1",
      "TotalResults": "2"
    }
  ],
  "restaurant": {
    "Reviews": [
      {
        "ID": "77392",
        "RestoID": "8255",
        "RestoName": "Le Bon Vivant",
        "RestoDistrict": "Little Burgundy",
        "OverallRating": "5",
        "FoodRating": "5",
        "ServiceRating": "5",
        "Comment": "My boyfriend and I went by this place yesterday and we were both very pleased with the service and the food. We had the kimchi poutine as appetizer and I think everyone should try it ! It was so delicious ! As a main course we had Schnitzels and salmon tartare. Both very good ! I recommend this place for date night out or a dinner with friends. We will definitively come back !",
        "AddedDate": "1483715220",
        "EditDate": "1483715220",
        "PartySize": "2",
        "DineDate": "2017-01-05",
        "LibroID": "0",
        "Via": "",
        "URL": "http://www.restomontreal.ca/en/8255/Le-Bon-Vivant",
        "RecommendedFor": [
          "5 to 7/Happy Hour",
          "Dinner & Dance",
          "Notable Wine List"
        ],
        "TotalReplies": "0",
        "UserID": "69379",
        "UserName": "ClaudiaFo-1118",
        "UserPhoto": "https://lh5.googleusercontent.com/-oghylhWQiBQ/AAAAAAAAAAI/AAAAAAAAAG4/pbslt5UpZYo/photo.jpg?sz=300",
        "UserTotalReviews": "1",
        "UserTotalFavs": "0",
        "UserProfileURL": "http://www.restomontreal.ca/members/public/?id=69379",
        "UserLevelIcon": ""
      },
      {
        "ID": "77391",
        "RestoID": "10613",
        "RestoName": "La R&eacute;serve",
        "RestoDistrict": "Fabreville",
        "OverallRating": "3",
        "FoodRating": "3",
        "ServiceRating": "3",
        "Comment": "- I had a bad experience, my hamburger bun was burned (one side), so I removed it and continuing eating the hamburger. I told the waitress and she did not say anything (just give me a weird look).<br />\r\n<br />\r\n- Also, I've never seen before coffee served in a beer glass. <br />\r\n<br />\r\n- Not enough parking lots.<br />\r\n<br />\r\nConsidering the prices here, this is unacceptable.<br />\r\n<br />\r\nHowever, in general the food is tasty, clean place, nice ambiance. <br />\r\n<br />\r\nI hope they do something to fix those little issues, cause this could be a 5 rate resto/bar.",
        "AddedDate": "1483708493",
        "EditDate": "1483708493",
        "PartySize": "3",
        "DineDate": "2017-01-05",
        "LibroID": "0",
        "Via": "Mobile",
        "URL": "http://www.restomontreal.ca/en/10613/La-Reserve",
        "RecommendedFor": [
          "5 to 7/Happy Hour",
          "Group Parties",
          "Late Night Snack",
          "Trendy Hot Spot"
        ],
        "TotalReplies": "0",
        "UserID": "69365",
        "UserName": "ricleyle",
        "UserPhoto": "https://assets.restodata.ca/images/default-profile.png",
        "UserTotalReviews": "1",
        "UserTotalFavs": "0",
        "UserProfileURL": "http://www.restomontreal.ca/members/public/?id=69365",
        "UserLevelIcon": ""
      }
    ]
  }
}

Request parameters

key
string required

Your API Key

lang
string required

Language (en or fr)

Default:
none
Example:
lang=en
mobile
string optional

Customize some features and urls for mobile. Must pass the value "true" to the mobile variable, any other value passed to the mobile variable = false.

Default:
false
Example:
mobile=true
city
string required

City short code

Enumeration:
MTL
QUE
OTT
Default:
none
limit
number optional

Limit results returned

page
number optional

Page number for pagination results

max
string optional

Maximum number of latest reviews to return

Request headers

X-RestoApiSecret
string required

Client Secret needs to be passed to http headers for all api method endpoints.

Responses

200 OK
401 Unauthorized

Api Key not valid or User not authenticated.

categorysearch
GET /restaurant/categorysearch

Returns results based on search by restaurant name, telephone #, feature, cuisine, district, price, time and sort. Restaurants with the same name (mainly chains) are grouped by default unless a t, d, k, resto_id, or sort parameter is passed. You can also force to never group same name restaurants by passing the group=false parameter. The response will return Grouped = 1 if the result is grouped with the total locations and addresses in the "Locations" array.

Example OK Response

{
    "attributes": [
        {
            "Status": "OK",
            "Endpoint": "/v1/restaurant/categorysearch/",
            "Query": "c=87%2C88&f=11&d=22",
            "OriginLat": "45.532699",
            "OriginLon": "-73.584332",
            "Seed": "6004",
            "SEOUrlDesc": "Mexican+Middle+Eastern+Live+Entertainment+Le+Plateau-Mont-Royal+Montreal",
            "SEOTitle": "Mexican Middle Eastern Live Entertainment Le Plateau-Mont-Royal Montreal Restaurants",
            "SEOKeywords": "Mexican,Middle Eastern,Live Entertainment,Le Plateau-Mont-Royal, restaurant, restaurants",
            "SEODeeplink": "http://mobile.restomontreal.ca/s/?restaurants=Mexican+Middle+Eastern+Live+Entertainment+Le+Plateau-Mont-Royal+Montreal&c=87%2C88&f=11&d=22&lang=en",
            "TodayHolidayMsg": "Today is a Holiday (Good Friday)! Business hours may vary.",
            "TodayHolidayIcon": "",
            "DistrictsLabel": "Le Plateau-Mont-Royal",
            "CuisinesLabel": "Mexican, Middle Eastern",
            "SortLabel": "Random Order",
            "TimeLabel": "",
            "KeywordLabel": "",
            "Page": "1",
            "TotalPages": "1",
            "Limit": "2",
            "Start": "0",
            "End": "1",
            "TotalResults": "2"
        }
    ],
    "restaurant": [
        {
            "LastEditDate": "1437007161",
            "Name": "El Zaziummm",
            "ID": "707",
            "Grouped": "0",
            "Address": "1276, ave. Laurier E",
            "PostalCode": "H2J 1H1",
            "PhoneNumber": "(514) 598-0344",
            "Districts": [
                {
                    "ID": "22",
                    "Name": "Le Plateau-Mont-Royal",
                    "URL": "http://www.restomontreal.ca/s/?restaurants=Le-Plateau-Mont-Royal&d=22"
                }
            ],
            "Region": "Montreal, QC",
            "Lat": "45.532699",
            "Lon": "-73.584332",
            "OpeningSoon": "0",
            "Member": "1",
            "Cuisines": [
                {
                    "ID": "27",
                    "Name": "Californian"
                }
            ],
            "Rating": "4.48",
            "Votes": "24",
            "Reviews": "23",
            "PriceRange": "$,$$",
            "HoursStatusMsg": "Opens today at 5pm",
            "MenuURL": "http://www.restomontreal.ca/en/707/El-Zaziummm?show=menu#down",
            "ProfileURL": "http://www.restomontreal.ca/en/707/El-Zaziummm",
            "ReservationsEnabled": "1",
            "ReservationURL": "http://www.restomontreal.ca/restaurants/index.php?section=viewresto&resto_id=707&show=reserve",
            "LibroURL": "",
            "LibroCode": "",
            "SearchLogoURL": "http://www.restomontreal.ca/portal/el-zaziummm/logo/search_logo.gif?v=4562",
            "SearchImageSmallURL": "http://www.restomontreal.ca/portal/el-zaziummm/logo/el-zaziummm.jpg?v=583",
            "SearchImageBigURL": "http://www.restomontreal.ca/portal/el-zaziummm/gallery/images/22_el-zaziummm--440.jpg",
            "hasDeals": "1",
            "DealsURL": "",
            "LatestEventNewsID": "714",
            "LatestEventNewsURL": "/news/714-Sundays-Esoteric-at-El-Zaziummm-enhtml",
            "LatestEventNewsText": "Sunday's Esoteric at El Zaziummm"
        }
    ]
}

Request parameters

key
string required

Your API Key

city
string required

City short code

Enumeration:
MTL
QUE
OTT
Default:
none
limit
number optional

Limit results returned

page
number optional

Page number for pagination results

group
boolean optional

Group search results for same name restaurants (chains, etc..) Results are not grouped if k, d, sort, resto_id or t parameter is set regardless of the value passed to this parameter.

Default:
true
c
string optional multiple

Numeric Cuisine ID's (comma separated)

f
string optional multiple

Numeric Feature ID's (comma separated)

d
string required multiple

Numeric District ID's (comma separated) or textual represantation of the main Region (see accepted values enumerated below).

Enumeration:
MONTREAL
WEST ISLAND
LAVAL
SOUTH SHORE
LAURENTIDES
EASTERN TOWNSHIPS
LANAUDIERE
QUEBEC
QUEBEC RIVE SUD
OTTAWA
GATINEAU
t
string optional

Time - Return results based on time of day or day of week (works with Member restaurants only)

Enumeration:
open-now
open-lunch
open-supper
open-sunday
open-monday
open-late
k
string optional

Keyword used to match a restaurant name, telephone number or year in which the restaurant opened (1 = Opening Soon).

Example:
Casa Galicia OR 450-867-1314 OR 2015
price
string optional multiple

Return results in this price range (1 = < 20$, 2 = $20 - $30, 3 = $30 - $45, 4 = > $45)

Enumeration:
1
2
3
4
sort
string optional

Sort search results. Random sort needs a seed value to properly show consistent results when using pagination. All other sort types do not need/ignore the seed value.

Enumeration:
random
resto_name
user_pageviews_day
user_pageviews_week
user_pageviews_month
resto_overall_rating
resto_district
Default:
random
seed
number optional

Seed number needed for random search results only. Must be a whole number. If no seed value is passed it will be created for you and stored in attributes[0]["Seed"]. This should then be passed to your pagination query to return consistent results each page.

We recommend passing your own seed value which you can then store in a session and this will avoid having to pass the seed in the query string which could result in Google seeing duplicate pages for the same results.

Example in PHP: // get a unique id (seed) for random search if ( !empty($_SESSION['rand_search_seed']) || $_SESSION['rand_search_seed'] == 0) { $unique_id = session_id(); $unique_id = preg_replace('/[^\d\s]/', '', $unique_id); $tmpseed = substr($unique_id, 0, 4); $tmpseed = (int) $tmpseed; $_SESSION['rand_search_seed'] = $tmpseed; }

resto_id
number optional

Pass a restaurant ID to show only a list of affliated restaurants (including the restaurant with the ID passed). Note: All other parameters are ignored.

exact
number optional

Find an exact restaurant name match when exact = 1 otherwise a loose restaurant name match is made.

lastweek_views
number optional

Show only "Member" restaurants with this value or less of page views the week before. Results are always in a new random order. A low "limit" value is recommended when this parameter is used. This is useful to highlight paying restaurants with low visiblity on the sites and also useful to show suggested restaurants on free listing pages. When used on free listing pages, pass a high value (ex: 2000) to this parameter to make sure no member restaurant is left out of the random suggestions.

Example:
200
updated_after
string date optional

Show restaurants which were updated on/after datetime specified.

Example:
2015-09-15
list_ids
string optional

A comma separated list of restaurant id's. Will only return those restaurants in the list.

Example:
8255,6104,1889
members_only
boolean required

List only member restaurants with criteria specified

Default:
false

Request headers

X-RestoApiSecret
string required

Client Secret needs to be passed to http headers for all api method endpoints.

Responses

200 OK
401 Unauthorized

Api Key not valid or User not authenticated.

keywordsearch
GET /restaurant/keywordsearch

Returns a query string that needs to be passed to the categorysearch method to get the results. If d == a postal code, the query string returned must be passed to the nearbysearch method to get the proper results. To use the current location of the visitor you can get their geo location and pass those lat/lon values to the nearbysearch method and include the query string returned from this keywordsearch method.

Example OK Response

{
    "attributes": [
        {
            "Status": "OK",
            "Endpoint": "/v1/restaurant/keywordsearch/",
            "QueryForSearch": "c=65,74&d=39&lang=fr",
            "QueryCity": "&city=MTL"
        }
    ]
}

Request parameters

key
string required

Your API Key

city
string required

City short code

Enumeration:
MTL
QUE
OTT
Default:
none
k
string optional

Keyword (Restaurant name, cuisine, feature, etc...)

Examples:
Best Italian RestaurantsRestaurants Open NowRestaurants Open LunchRestaurants Open SundayBest Tapas and Greek foodItalian and French BYOW restaurants with Terrace
d
string optional

District (Place or Postal Code). To use the current location of the visitor you can get their geo location and pass those lat/lon values to the nearbysearch method and include the query string returned from this method.

Example:
Old Montreal or H1R 2N3
lang
string required

Language (en or fr)

Default:
none
Example:
lang=en
exact
number optional

If exact == 1 an exact restaurant match from k (Keyword) and d (District) will only be returned. This is useful for the autocomplete restaurants list (method: autocomplete). When a user clicks a restaurant name from the autocomplete list it should list only the exact restaurant therefore exact = 1 should be passed in this case.

Request headers

X-RestoApiSecret
string required

Client Secret needs to be passed to http headers for all api method endpoints.

Responses

200 OK
401 Unauthorized

Api Key not valid or User not authenticated.

Examples

Returns a query string with the proper parameters matching Italian and Burger restaurants in Brossard

GET https://www.restoapi.com/v1/restaurant/keywordsearch?k=Italian and Burger Restaurants&d=Brossard&city=MTL&lang=en HTTP/1.1 

HTTP/1.1 200 OK 

Content-Type: application/json

{"attributes":[{"Status":"OK","Endpoint":"\/v1\/restaurant\/keywordsearch\/","QueryForSearch":"c=74,65&d=39&city=MTL&lang=en"}]}
GET https://www.restoapi.com/v1/restaurant/keywordsearch?d=H1R 2N3&lang=en&city=MTL HTTP/1.1 

HTTP/1.1 200 OK 

Content-Type: application/json

{"attributes":[{"Status":"OK","Endpoint":"\/v1\/restaurant\/keywordsearch\/","QueryForSearch":"postal=H1R 2N3&city=MTL&lang=en"}]}
nearbysearch
GET /restaurant/nearbysearch

Returns results based on a search near postal code or lat/lon values.

Example OK Response

{
    "attributes": [
        {
            "Status": "OK",
            "Endpoint": "/v1/restaurant/nearbysearch/",
            "Query": "postal=j4w2h3&c=74%2C87&r=3",
            "OriginLat": "45.4626932",
            "OriginLon": "-73.495028",
            "SEOUrlDesc": "Italian+Mexican",
            "SEOTitle": "Italian Mexican Restaurants Near: J4W 2H3",
            "SEOKeywords": "Italian,Mexican,event,evenment,restaurants",
            "SEODeeplink": "http://mobile.restomontreal.ca/p/?restaurants=Italian+Mexican&postal=j4w2h3&c=74%2C87&r=3&lang=en",
            "TodayHolidayMsg": "Today is a Holiday (Good Friday)! Business hours may vary.",
            "TodayHolidayIcon": "",
            "LocationLabel": "",
            "CuisinesLabel": "Italian, Mexican",
            "SortLabel": "Nearest (Member restaurants first)",
            "TimeLabel": "",
            "KeywordLabel": "",
            "Page": "1",
            "TotalPages": "1",
            "Limit": "6",
            "Start": "0",
            "End": "5",
            "TotalResults": "6"
        }
    ],
    "restaurant": [
        {
            "Name": "L'Acad&eacute;mie",
            "ID": "1687",
            "Address": "2151, boul. Lapini&egrave;re",
            "PostalCode": "J4W 2T5",
            "PhoneNumber": "(450) 766-0404",
            "Districts": [
                {
                    "ID": "39",
                    "Name": "Brossard",
                    "URL": "http://www.restomontreal.ca/s/?restaurants=Brossard&d=39"
                }
            ],
            "Region": "Brossard, QC",
            "OpeningSoon": "0",
            "Member": "1",
            "Closed": "0",
            "Distance": "2.26",
            "Lat": "45.471445",
            "Lon": "-73.46885",
            "Cuisines": [
                {
                    "ID": "74",
                    "Name": "Italian"
                }
            ],
            "Rating": "3.10",
            "Votes": "42",
            "Reviews": "42",
            "PriceRange": "$,$$",
            "HoursStatusMsg": "Opens today at 5pm",
            "MenuURL": "http://www.restomontreal.ca/en/1687/LAcademie?show=menu#down",
            "ProfileURL": "http://www.restomontreal.ca/en/1687/LAcademie",
            "ReservationsEnabled": "0",
            "ReservationURL": "http://www.restomontreal.ca/restaurants/reservations/libro-reservations.php?resto_id=1687",
            "LibroURL": "",
            "LibroCode": "",
            "SearchLogoURL": "http://www.restomontreal.ca/portal/lacademie6/logo/search_logo.gif?v=2652",
            "SearchImageSmallURL": "http://www.restomontreal.ca/portal/lacademie6/logo/lacademie6.jpg?v=637",
            "SearchImageBigURL": "http://www.restomontreal.ca/portal/lacademie6/gallery/images/05_lacademie--288.jpg",
            "hasDeals":"1",
            "DealsURL": "",
            "LatestEventNewsID": "",
            "LatestEventNewsURL": "",
            "LatestEventNewsText": ""
        }
    ]
}

Request parameters

key
string required

Your API Key

city
string required

City short code

Enumeration:
MTL
QUE
OTT
Default:
none
limit
number optional

Limit results returned

page
number optional

Page number for pagination results

postal
string optional

Postal Code (Must contain 3 or 6 alphanumeric characters). One of postal or lat/lon must be passed.

Example:
H1R 2N3 OR J4W
lat
number optional

Latitude coordinate. One of postal or lat/lon must be passed.

Example:
45.511808
lon
number optional

Longitude coordinate. One of postal or lat/lon must be passed.

Example:
-73.564454
price
string optional multiple

Return results in this price range (1 = < 20$, 2 = $20 - $30, 3 = $30 - $45, 4 = > $45)

Enumeration:
1
2
3
4
c
string optional multiple

Numeric Cuisine ID's (comma separated)

f
string optional multiple

Numeric Feature ID's (comma separated)

sortmembers
boolean optional

Show Member restaurants first even if they are further.

Default:
true
r
integer optional

Radius (km)

Max:20
Default:
10
exclude
number optional

Restaurant ID to exlude from search results (useful for showing restaurants nearby and not show the current restaurant)

k
string optional

Keyword used to match a restaurant name within the given radius.

t
string required

Time - Return results based on time of day or day of week (works with Member restaurants only)

Enumeration:
open-now
open-lunch
open-supper
open-sunday
open-monday
open-late

Request headers

X-RestoApiSecret
string required

Client Secret needs to be passed to http headers for all api method endpoints.

Responses

200 OK
401 Unauthorized

Api Key not valid or User not authenticated.

news
GET /news/{id}/details

News article details

Path variables

id
string required

Request parameters

key
string required

Your API Key

Request headers

X-RestoApiSecret
string required

Client Secret needs to be passed to http headers for all api method endpoints.

deal
GET /deal/{id}/details

Get details of a single deal. If mobile = true, the deal must be authenticated by the user's AuthToken. You must always set mobile = true when showing a redeemed deal on mobile or app and you must include the user's details provided in the response.

Example OK Response

{
    "attributes": [
        {
            "Status": "OK",
            "Endpoint": "/v1/deal/2066/details",
            "CityCode": "MTL"
        }
    ],
    "deal": [
        {
            "ID": "2066",
            "DealCode": 1,
            "DealTitle": "Obtenez sushi pizza ou Dragon eye gratuit!",
            "DealDetails": "-&Agrave; l'achat de 30$ et plus (avant taxes).\n-Valide salle &agrave; manger & pour emporter seulement.",
            "RestrictOnce": "0",
            "ExpiryDate": "2015-09-30",
            "IsHot": "0",
            "IsForGroups": "",
            "IsOver18": "0",
            "IsMobile": "1",
            "AddedDate": "2015-01-01T13:00:00",
            "RestaurantName": "Ocean Sushi",
            "RestaurantAddress": "3751, rue St-Urbain",
            "RestaurantLogo": "http://www.restomontreal.ca/portal/ocean-sushi/logo/search_logo.gif?v=4675",
            "Username": "MyriamDu-490",
            "UserFullName": "Myriam Dub&eacute;",
            "UserID": "53570",
            "Conditions": [
                "Salle &agrave; manger et &agrave; emporter seulement."
            ]
        }
    ]
}

Path variables

id
number required

Deal ID

Request parameters

key
string required

Your API Key

mobile
string optional

Customize some features and urls for mobile. Must pass the value "true" to the mobile variable, any other value passed to the mobile variable = false.

Default:
false
Example:
mobile=true
lang
string required

Language (en or fr)

Default:
none
Example:
lang=en

Request headers

X-RestoApiSecret
string required

Client Secret needs to be passed to http headers for all api method endpoints.

X-UserToken
string required

User Auth Token needed to perform certain actions with some api methods.

Responses

200 OK
401 Unauthorized

Api Key not valid or User not authenticated.

event
GET /event/{id}/details

Get event details based on event id

Path variables

id
string required

Request parameters

key
string required

Your API Key

Request headers

X-RestoApiSecret
string required

Client Secret needs to be passed to http headers for all api method endpoints.

newssearch
GET /newssearch

Return blog entries

Request parameters

key
string required

Your API Key

range
string required

End date range (numeric values = months)

Enumeration:
3
6
12
today
this-weekend
this-week
this-month
next-month
Default:
12
keyword
string optional

Show only events with keyword

exactdate
string date optional

Show events with exact date only (1 day events on that exact date). Useful to show events for holidays, etc... Y-m-d format.

Example:
2015-11-30

Request headers

X-RestoApiSecret
string required

Client Secret needs to be passed to http headers for all api method endpoints.

Responses

200 OK
eventsearch
GET /eventsearch

Get event entries

Request parameters

key
string required

Your API Key

range
string required

End date range (numeric values = months)

Enumeration:
3
6
12
today
this-weekend
this-week
this-month
next-month
Default:
12
keyword
string optional

Show only events with keyword

postal
string optional

Show only events near postal code.

Example:
J4W
exactdate
string date optional

Show events with exact date only (1 day events on that exact date). Useful to show events for holidays, etc... Y-m-d format.

Example:
2015-11-30

Request headers

X-RestoApiSecret
string required

Client Secret needs to be passed to http headers for all api method endpoints.

Responses

200 OK