When looking for a good restaurant, it’s not enough to just know its address or phone number. You also want to know: Is it open? Can I bring my 4-year old? Will it break my wallet? Do others like it? BYOB? Our Restaurants dataset can now help your users answer these questions and more, supporting use cases such as ‘find me a nice place for dinner in NYC with valet parking and a full bar’. As of today, we offer 43 additional attributes including cuisine, ratings, and hours for the 800k+ restaurants and casual eateries found in our US Places table.

Our approach to deep attributes is designed to enhance discovery, exploration and serendipity. If you are developing apps that require Food & Drink data, look no further than this table. (If you are looking for Global Places, we’ve just announced new availability here).

The 43 additional attributes include:

  • price, cuisine, rating, hours
  • alcohol: bar, beer & wine, BYOB
  • good for: kids, groups
  • parking: on-street, valet, garage, validated
  • meal types: breakfast, lunch, dinner, delivery, take-out, catering
  • meal options: vegetarian, vegan, low-fat, gluten-free, healthy, organic
  • cash only
  • wheelchair accessibility
  • dining experience: takes reservations, wifi, smoking, attire, outdoor seating, private room
  • about the venue: year founded, owner

Learning More

Querying Restaurants

As a developer, you can use the V3 API which employs the same filter context you are familiar with (these examples are formatted for readability — remember to URL-encode your request values):

http://api.v3.factual.com/t/restaurants-us/read?
      filters={
          "locality":"New York",
          "parking":true,
          "alcohol":true,
          "meal_dinner":true
      }&
      KEY=[your key]

This query returns the first fifty restaurants in New York with parking that serve alcohol with dinner (use the offset parameter to pull the next set). If that’s too many, let’s select only places with valet parking and a full bar:

  http://api.v3.factual.com/t/restaurants-us/read?
      filters={
         "locality":"New York",
         "parking_valet":true,
         "alcohol_bar":true,
         "meal_dinner":true
     }&
      KEY=[your key]

These attributes are also indexed as tags, which enable full text search against them. Developers may find it easier to just create ad hoc queries, rather than querying against specific attributes:

   http://api.v3.factual.com/t/restaurants-us/read?
      q=dinner+valet+bar+New York&
      KEY=[your key]

This query produces almost the identical results to the one above, with a few extra lines because words can appear in other than the expected field – such as “New York Avenue”. Here we do a combination of filters and free text search:

 http://api.v3.factual.com/t/restaurants-us/read?
      q=dinner+valet+bar&
      filters={
         "locality":"New York"
      }&
      KEY=[your key]

Now we have a precise location, and fairly precise query without having to know that the column names were parking_valet and alcohol_bar. Further refinements? Let’s make sure it’s a nice restaurant, with average rating of 3.5+. To do this, we need to add a filter attribute with an inequality: (the Core API documentation on filters helps here):

  http://api.v3.factual.com/t/restaurants-us/read?
      q=dinner+valet+bar&
      filters={
         "locality":"New York",
         "rating":{
            "$gte":3.5
         }
      }&
      KEY=[your key]

 

In the end, your dinner date may, or may not, be successful, but we are doing all we can on the backend to help.

This release is just a start: it brings our previous restaurants table out of beta, adds structure to the attributes, and sets us up to add further countries and more attributes. We’re most excited about these releases because they provide the infrastructure for other good things to follow. We hope this type of functionality is useful, and look forward to your feedback.

Golda Velez
Factual Data Engineer