Introduction
Welcome to Tastewise API.
You can view code examples in the dark area to the right, and you can switch the programming language of the examples with the tabs in the top right. Currently we provide only Shell language binding, but more programming languages can be added on demand.
Authentication
To authorize, use this code:
# With shell, you can just pass the correct header with each request
curl api_endpoint_here \
-H Authorization: Bearer your-api-key
-H X-Customer-Id: customer-id
Make sure to replace
your-api-keywith the provided API key.
The APIs use Bearer token authentication and require specific route permissions. All API requests must include:
Required Headers
Authorization: Bearer your-api-key
X-Customer-Id: customer-id
Alternative Authentication Format
Some endpoints support combining the API key and customer ID in a single Authorization header:
Authorization: Bearer your-api-key^customer-id
Route Permissions
Each API route requires specific permissions in your account:
| Route | Permission Required | Description |
|---|---|---|
/recipes |
recipes |
Recipe search and discovery |
/restaurants |
restaurants |
Restaurant data and menus |
/restaurants/bestsellers |
restaurants_by_token |
Bestseller analysis (US only) |
/restaurants/pricingAnalysis |
restaurants_by_token |
Price analysis (US only) |
/k12 |
restaurants |
K12 school foodservice data |
/menus |
menus |
Menu item details |
/content_discovery |
content_discovery |
Social media content |
/motivations |
motivations |
Consumer motivations |
/flavor_combination |
flavour_combination |
Flavor pairing analysis |
/trend_performance |
trend_performance |
Trend tracking |
/trend_validation |
trend_validation |
Trend validation |
/widgets |
widgets |
Widget queries |
/insights |
insights |
Combined insights |
/operations |
operations |
Combined restaurant/K12 data |
Limits
Rate Limiting
The API implements rate limiting to ensure fair usage and system stability. Rate limits are applied per API key and vary by endpoint type.
Default Limits
| Endpoint Type | Rate Limit | Window |
|---|---|---|
| Standard endpoints | 100 requests | per minute |
| Bulk operations | 10 requests | per minute |
| Search endpoints | 60 requests | per minute |
Rate Limit Headers
The API returns rate limit information in response headers:
X-RateLimit-Limit: 100
X-RateLimit-Remaining: 95
X-RateLimit-Reset: 1642089600
Handling Rate Limits
When you exceed the rate limit, the API returns a 429 Too Many Requests status code:
{
"error": "Rate limit exceeded",
"message": "Too many requests. Please wait before making another request.",
"retry_after": 30
}
Best Practices
- Implement exponential backoff - When receiving 429 responses, wait before retrying
- Cache responses - Store frequently accessed data locally to reduce API calls
- Use bulk endpoints - When available, use bulk operations instead of multiple individual requests
- Monitor your usage - Track the rate limit headers to avoid hitting limits
Page Size Limits
The APIs have limits on the maximum number of items returned per request:
| Endpoint Type | Default Page Size | Maximum Page Size |
|---|---|---|
| List endpoints | 20-50 items | 2000 items |
| Search results | 20 items | 100 items |
| Bulk operations | N/A | 1000 items per batch |
Response Caching
Most GET endpoints implement caching via Redis to improve performance:
- Cache Duration: 5-15 minutes depending on endpoint
- Cache Key: Generated from request parameters
- Cache Invalidation: Automatic on data updates
Endpoints Excluded from Caching
The following endpoints always return fresh data:
- /flavor_combination
- /restaurants/match
- /campbells
- All POST, PUT, DELETE operations
Values and constants
Note that all query parameters must be UTF-8 encoded
Measuring system
All APIs are using metric measuring system.
Supported languages
Recipe search is supported for the following languages:
- English
- German
- Spanish
- French
- Portuguese
- Italian
- Dutch
- Danish
- Swedish
- Czech
- Hungarian
- Turkish
- Romanian
- Japanese
- Russian
- Polish
- Finnish
Supported countries
Recipe search is supported for the following countries:
- United states
- Germany
- Mexico
- Argentina
- United Kingdom
- Australia
- Austria
- France
- Brazil
- Italy
- India
- Netherlands
- Belgium
- Denmark
- Sweden
- Portugal
- Czech Republic
- Hungary
- Switzerland
- Turkey
- Spain
- Canada
- Romania
- Japan
- Russia
- Poland
- Finland
Supported markets
API supports these market values:
- USA
- UK
- AU
- CA
- IN
- FR
- BR
- MX
Supported delivery platforms
API supports the following delivery platform values:
US:
- doordash
- grubhub
- uber
Canadian:
- doordash
- uber
UK:
- uber
- deliveroo
- justeat
Australian:
- doordash
- deliveroo
- justeat
French:
- deliveroo
- uber
- justeat
Indian:
- swiggy
Supported restaurant operation statuses
API supports the following restaurant statuses:
- open
- temporarily closed
- permanently closed
Supported restaurant cuisines
API supports the following cuisine values:
- restaurant
- american restaurant
- bar
- bakery
- cafe
- italian restaurant
- mexican restaurant
- chinese restaurant
- fast food restaurant
- japanese restaurant
- sandwich shop
- pizza place
- indian restaurant
- chicken joint
- thai restaurant
- burger restaurant
- breakfast & brunch restaurant
- smoothie & juice bar
- deli
- asian restaurant
- seafood restaurant
- family style restaurant
- vietnamese restaurant
- vegetarian/vegan restaurant
- korean restaurant
- health food restaurant
- greek restaurant
- bar & grill
- ice cream shop
- latin american restaurant
- mediterranean restaurant
- sushi restaurant
- steakhouse
- caribbean restaurant
- comfort food restaurant
- hawaiian restaurant
- middle eastern restaurant
- salad bar
- latin american
- asian fusion restaurant
- dessert shop
- halal restaurant
- french restaurant
- asian
- mediterranean
- tea room
- barbecue restaurant
- cajun & creole restaurant
- diner
- pub
- canadian restaurant
- spanish restaurant
- gluten-free restaurant
- african restaurant
- cuban restaurant
- filipino restaurant
- food truck
- peruvian restaurant
- cantonese restaurant
- jamaican restaurant
- bagel shop
- wine bar
- food delivery service
- southern restaurant
- candy store
- brazilian restaurant
- lebanese restaurant
- taiwanese restaurant
- taco restaurant
- kosher restaurant
- donut shop
- soup restaurant
- colombian restaurant
- buffet restaurant
- turkish restaurant
- pho restaurant
- european restaurant
- ethiopian restaurant
- british restaurant
- frozen yogurt shop
- european
- puerto rican restaurant
- venezuelan restaurant
- portuguese restaurant
- pakistani restaurant
- german restaurant
- irish restaurant
- dominican restaurant
- tapas bar & restaurant
- hot dog joint
- ramen restaurant
- argentinian restaurant
- persian/iranian restaurant
- soul food restaurant
- salvadoran restaurant
- malaysian restaurant
- chocolate shop
- mongolian restaurant
- gastropubs
- haitian restaurant
- afghan restaurant
- himalayan restaurant
- shaved ice shop
- polish restaurant
- dim sum restaurant
- poke restaurant
- australian restaurant
- russian restaurant
- burmese restaurant
- nepalese restaurant
- indonesian restaurant
- southwestern restaurant
- belgian restaurant
- gastropub
- paraguayan restaurant
- cafeteria
- rull out
- south indian restaurant
- moroccan restaurant
- cambodian restaurant
- egyptian restaurant
- butcher shop
- fondue restaurant
- arabian restaurant
- bengali/bangladeshi restaurant
- eastern european restaurant
- nicaraguan restaurant
- kebab shop
- south african restaurant
- honduran restaurant
- guatemalan restaurant
- syrian restaurant
- ukrainian restaurant
- abruzzo restaurant
- indian chinese restaurant
- israeli restaurant
- georgian restaurant
- noodle house
- armenian restaurant
- ecuadorian restaurant
- nigerian restaurant
- hungarian restaurant
- modern european restaurant
- singaporean restaurant
- bavarian restaurant
- american restauarnt
- sri lankan restaurant
- new mexican restaurant
- scandinavian restaurant
- szechuan/sichuan restaurant
- costa rican restaurant
- austrian restaurant
- bolivian restaurant
- polynesian restaurant
- punjabi restaurant
- romanian restaurant
- senegalese restaurant
- chilean restaurant
- uzbek restaurant
- cupcake shop
- kurdish restaurant
- neapolitan restaurant
- ta room
- uruguayan restaurant
- coffee shop
- dive bar
- food & drink
- new american restaurant
- sports bar
Supported values by which to sort restaurants
The API supports the following sort values:
- asc (means ascending order)
- desc (means descending oreder)
Supported values to sort restaurants by
API supports the following sort by values:
- number_of_locations
- platforms
- popularity
- average_rating
- name
- city
- state
- restaurant_status
Supported signal types
Signals are changes in categories such as price, menu listings, and operation status between the current data and the previous month's data.
API supports signals of the following types:
- menu
- delivery
- status
Supported radius values
The radius query parameter can be equal to any integer from 1 to 30 meters.
Supported types
API supports the following sort by values:
- ingredient
- dish
- beverage
Supported categories IDs
API supports the following categories IDs:
- 100 (alcoholic beverages)
- 111 (beers and ciders)
- 318 (beers)
- 112 (spirits)
- 326 (liqueurs)
- 330 (vodka)
- 331 (whiskey)
- 114 (cocktails)
- 113 (wines)
- 101 (non alcoholic beverages)
- 186 (juice)
- 117 (water)
- 193 (tea)
- 576 (dairy beverages)
- 190 (smoothies)
- 118 (carbonated drinks)
- 184 (coffee)
- 103 (meat and seafood)
- 124 (meat alternatives)
- 287 (poultry)
- 581 (fish and seafood)
- 494 (fish)
- 582 (seafood)
- 578 (pork)
- 579 (beef)
- 104 (savory dishes)
- 125 (sandwiches and bread dishes)
- 361 (sandwiches)
- 129 (salads)
- 130 (sushi)
- 133 (noodle)
- 135 (egg dishes)
- 128 (soups and stews)
- 397 (soups)
- 136 (burritos and tacos)
- 400 (tacos)
- 126 (meat based dishes)
- 127 (fish and seafood dishes)
- 131 (rice)
- 379 (rice dishes)
- 469 (rice types)
- 132 (pasta)
- 376 (pasta dishes)
- 467 (pasta types)
- 134 (pizza)
- 137 (savory pies and pastries)
- 105 (desserts and sweet foods)
- 138 (cakes and pies)
- 403 (cakes)
- 415 (sweet pies)
- 583 (pastries and donuts)
- 414 (sweet pastries)
- 139 (cookies and bars)
- 405 (cookies)
- 413 (squares and bars)
- 141 (frozen desserts)
- 410 (ice cream)
- 143 (breads and doughs)
- 144 (flours)
- 220 (cereal)
- 584 (waffles and pancakes)
- 106 (grains legumes and nuts)
- 146 (legumes)
- 147 (nuts and seeds)
- 145 (grains)
- 467 (pasta types)
- 469 (rice types)
- 107 (sweet and savory snacks)
- 148 (savory snacks)
- 149 (sweet snacks)
- 405 (cookies)
- 413 (squares and bars)
- 414 (sweet pastries)
- 108 (condiments)
- 150 (sauces and dressings)
- 527 (dressings)
- 541 (sauces)
- 151 (vinegars and oils)
- 543 (vinegars)
- 537 (oils)
- 152 (spreads)
- 109 (food additives and seasonings)
- 155 (seasonings)
- 153 (supplements)
- 154 (sweeteners)
- 110 (fruits and vegetables)
- 156 (fruits)
- 430 (exotic fruits)
- 157 (vegetables)
- 181 (baking ingredients)
- 310 (baking confectionery)
- 580 (flour and doughs)
- 585 (plant based alternatives)
- 119 (dairy alternatives)
- 490 (milk alternatives)
- 282 (egg alternatives)
- 124 (meat alternatives)
- 169 (dairy)
- 270 (cheese)
- 274 (milk)
- 276 (yogurt)
- 180 (confectionery)
- 309 (sugar confectionery)
- 308 (chocolate confectionery)
Supported life cycle
API supports the following sort by values:
- early
- emerging
- trending
- mature
- declining
Supported results categories
API supports the following categories IDs:
- 100 (alcoholic beverages)
- 111 (beers and ciders)
- 318 (beers)
- 112 (spirits)
- 326 (liqueurs)
- 330 (vodka)
- 331 (whiskey)
- 114 (cocktails)
- 113 (wines)
- 101 (non alcoholic beverages)
- 186 (juice)
- 117 (water)
- 193 (tea)
- 576 (dairy beverages)
- 190 (smoothies)
- 118 (carbonated drinks)
- 184 (coffee)
- 103 (meat and seafood)
- 124 (meat alternatives)
- 287 (poultry)
- 581 (fish and seafood)
- 494 (fish)
- 582 (seafood)
- 578 (pork)
- 579 (beef)
- 104 (savory dishes)
- 125 (sandwiches and bread dishes)
- 361 (sandwiches)
- 129 (salads)
- 130 (sushi)
- 133 (noodle)
- 135 (egg dishes)
- 128 (soups and stews)
- 397 (soups)
- 136 (burritos and tacos)
- 400 (tacos)
- 126 (meat based dishes)
- 127 (fish and seafood dishes)
- 131 (rice)
- 379 (rice dishes)
- 469 (rice types)
- 132 (pasta)
- 376 (pasta dishes)
- 467 (pasta types)
- 134 (pizza)
- 137 (savory pies and pastries)
- 105 (desserts and sweet foods)
- 138 (cakes and pies)
- 403 (cakes)
- 415 (sweet pies)
- 583 (pastries and donuts)
- 414 (sweet pastries)
- 139 (cookies and bars)
- 405 (cookies)
- 413 (squares and bars)
- 141 (frozen desserts)
- 410 (ice cream)
- 143 (breads and doughs)
- 144 (flours)
- 220 (cereal)
- 584 (waffles and pancakes)
- 106 (grains legumes and nuts)
- 146 (legumes)
- 147 (nuts and seeds)
- 145 (grains)
- 467 (pasta types)
- 469 (rice types)
- 107 (sweet and savory snacks)
- 148 (savory snacks)
- 149 (sweet snacks)
- 405 (cookies)
- 413 (squares and bars)
- 414 (sweet pastries)
- 108 (condiments)
- 150 (sauces and dressings)
- 527 (dressings)
- 541 (sauces)
- 151 (vinegars and oils)
- 543 (vinegars)
- 537 (oils)
- 152 (spreads)
- 109 (food additives and seasonings)
- 155 (seasonings)
- 153 (supplements)
- 154 (sweeteners)
- 110 (fruits and vegetables)
- 156 (fruits)
- 430 (exotic fruits)
- 157 (vegetables)
- 181 (baking ingredients)
- 310 (baking confectionery)
- 580 (flour and doughs)
- 585 (plant based alternatives)
- 119 (dairy alternatives)
- 490 (milk alternatives)
- 282 (egg alternatives)
- 124 (meat alternatives)
- 169 (dairy)
- 270 (cheese)
- 274 (milk)
- 276 (yogurt)
- 180 (confectionery)
- 309 (sugar confectionery)
- 308 (chocolate confectionery)
Supported motivations
API supports the following sort by values:
- diet
- nutrition
- functional health
- experience
- cuisine
- preparation method
- meal time
- occasion
- social setting
- color
- ethics
- taste
- texture
- meal
- packaging
- service option
- all
Supported audiences
API supports the following audience values:
- female
- millennials
- male
- foodies
- gen_x
- health
- moms
- fathers
- influencers
- gen_z
- beer lovers
- coffee lovers
- top_influencers
- baby boomers
- vegan
- chefs
- vegetarian
- keto
- nutritionists
- top_chefs
Multiple value query parameters
Some query parameters support multiple values. To pass more than one value to the query, parameter use the vertical bar (|) delimiter to separate different values.
Note that this value needs to be UTF-8 encoded
For example: available_delivery_platforms: doordash|grubhub
In the uri: available_delivery_platforms=doordash%7Cgrubhub
Range query parameters
Some query parameters support range values. To create a range value, use the vertical bar (|) delimiter to separate from and to values.
Note that this value needs to be UTF-8 encoded
For example, 1|10 means from 1 to 10.
In the uri: 1%7C10
Search syntax
AND
This is the default between 2 (and more) terms. It will capture results that include all the terms.
Example: banana apple cake
OR
Will capture results that include at least one out of the 2 terms.
Syntax: Term 1 OR Term 2
Example: coffee OR tea
Exact Search
Will capture results that include the words "almond milk" mentioned as one phrase.
Syntax: Phrase
Example: "Almond Milk"
Exact Search AND Term
Will capture results that include the words "almond milk" mentioned as one phrase and the word coffee. The search should be encoded.
Syntax: Phrase|Term
Example: "Almond Milk"|Coffee
NOT
Will exclude results mentioned after 'NOT' term in the query. The exclusion term should always be mentioned at the end of the query.
Syntax: Term 1 OR Term 2 NOT Term 3
Example: coffee OR tea NOT dessert
Recipes
Popular Recipes
curl https://api.tastewise.io/recipes/popular
-H Authorization: Bearer your-api-key
-H X-Customer-Id: customer-id
The above command returns JSON structured like this:
[
{
"description": "1920 Famous Ritz Carlton Lemon Pound Cake Recipe is the one for you! This dense, old-fashioned buttery lemon pound cake was a favorite dessert at the Ritz Carlton in the 1920's and it's still popular today.",
"url": "https://www.throughherlookingglass.com/ritz-carlton-lemon-pound-cake-recipe/",
"site_name": "Through Her Looking Glass",
"domain": "throughherlookingglass.com",
"ingredients": [
"Lemon, Zest of",
"Eggs, large",
"Lemon juice, fresh squeezed",
"All-purpose flour",
"Baking powder",
"Salt",
"Shortening",
"Sugar",
"Butter, unsalted",
"Whole milk"
],
"recipe_name": "1920 Famous Ritz Carlton Lemon Pound Cake",
"country": "mexico",
"recipe_image": "https://i.pinimg.com/originals/41/d2/cb/41d2cb4d7b8982067f70a808c2650c58.jpg",
"count": 1244554,
"growth": 0.85454547779
}
]
Note: growth value is in percents (%).
Top 50 Recipes with the most saves
HTTP Request
GET https://api.tastewise.io/recipes/popular
Query Parameters
| Parameter | Default | Type | Description |
|---|---|---|---|
| country | Geographic availability of recipes (See: supported countries). | ||
| primary_country | If true, Limit recipes to provided country only. | ||
| language | english | Recipes language (See: supported languages). | |
| search | Search string (dish/ingredient/claim). | ||
| limit | Maximum results to return. Capped at a number determined in your plan. | ||
| owner_recipes | Optional: Whether to search inside, outside (or both) customer's recipes. Allowed values: 0 (outside), 1 (inside). | ||
| category | string (closed list) |
Adjusts the results to data relevant only to a specific category. | |
| custom_category | string | Tailored search based on a predefined list of terms |
Trending Recipes
curl https://api.tastewise.io/recipes/trending
-H Authorization: Bearer your-api-key
-H X-Customer-Id: customer-id
The above command returns JSON structured like this:
[
{
"description": "1920 Famous Ritz Carlton Lemon Pound Cake Recipe is the one for you! This dense, old-fashioned buttery lemon pound cake was a favorite dessert at the Ritz Carlton in the 1920's and it's still popular today.",
"url": "https://www.throughherlookingglass.com/ritz-carlton-lemon-pound-cake-recipe/",
"site_name": "Through Her Looking Glass",
"domain": "throughherlookingglass.com",
"ingredients": [
"Lemon, Zest of",
"Eggs, large",
"Lemon juice, fresh squeezed",
"All-purpose flour",
"Baking powder",
"Salt",
"Shortening",
"Sugar",
"Butter, unsalted",
"Whole milk"
],
"recipe_name": "1920 Famous Ritz Carlton Lemon Pound Cake",
"country": "mexico",
"recipe_image": "https://i.pinimg.com/originals/41/d2/cb/41d2cb4d7b8982067f70a808c2650c58.jpg",
"count": 1244554,
"growth": 0.85454547779
}
]
Note: growth value is in percents (%).
Top 50 fastest growing recipes from the last 30 days
HTTP Request
GET https://api.tastewise.io/recipes/trending
URL Parameters
| Parameter | Default | Type | Description |
|---|---|---|---|
| country | all | Geographic availability of recipes (See: supported countries). | |
| primary_country | false | If true, Limit recipes to provided country only. | |
| language | english | Recipes language (See: supported languages). | |
| search | Search string (dish/ingredient/claim). | ||
| limit | Maximum results to return. Capped at a number determined in your plan. | ||
| owner_recipes | Optional: Whether to search inside, outside (or both) customer's recipes. Allowed values: 0 (outside), 1 (inside). | ||
| category | string (closed list) |
Adjusts the results to data relevant only to a specific category. | |
| custom_category | string | Tailored search based on a predefined list of terms |
Ingredients
Trending Ingredients
curl https://api.tastewise.io/recipes/ingredients/trending
-H Authorization: Bearer your-api-key
-H X-Customer-Id: customer-id
The above command returns JSON structured like this:
[
{
"name": "schezwan sauce",
"growth": 8.058896186328084,
"recipes_saves_count": 222329
},
{
"name": "rice coconut milk",
"growth": 51.29183429778224,
"recipes_saves_count": 12731
}
]
Note: share value is in percents (%).
This endpoint retrieves the collection of trending ingredients.
HTTP Request
GET https://api.tastewise.io/recipes/ingredients/trending
URL Parameters
| Parameter | Default | Type | Description |
|---|---|---|---|
| country | Geographic availability of recipes. Available countries are: United States, Germany, Mexico. | ||
| primary_country | false | If true, Limit recipes to provided country only. | |
| language | Recipes language. Available languages are: English, German, Spanish. | ||
| search | Search string (dish/ingredient/claim). | ||
| owner_recipes | Optional: Whether to search inside, outside (or both) customer's recipes. Allowed values: 0 (outside), 1 (inside). |
Popular Ingredients
curl https://api.tastewise.io/recipes/ingredients/popular
-H Authorization: Bearer your-api-key
-H X-Customer-Id: customer-id
The above command returns JSON structured like this:
[
{
"name": "sugar",
"share": 31.310902252471497,
"recipes_saves_count": 3105997671
},
{
"name": "vinegar",
"share": 8.268334505283843,
"recipes_saves_count": 820207208
}
]
Note: share value is in percents (%).
This endpoint retrieves the collection of popular ingredients.
HTTP Request
GET https://api.tastewise.io/recipes/ingredients/popular
URL Parameters
| Parameter | Default | Type | Description |
|---|---|---|---|
| country | Geographic availability of recipes. Available countries are: United States, Germany, Mexico. | ||
| primary_country | false | If true, Limit recipes to provided country only. | |
| language | english | Recipes language. Available languages are: English, German, Spanish. | |
| search | Search string (dish/ingredient/claim). | ||
| owner_recipes | Optional: Whether to search inside, outside (or both) customer's recipes. Allowed values: 0 (outside), 1 (inside). |
Dishes
Trending Dishes
curl https://api.tastewise.io/recipes/dishes/trending
-H Authorization: Bearer your-api-key
-H X-Customer-Id: customer-id
The above command returns JSON structured like this:
[
{
"name": "kombu dashi",
"share": 5.353253009052285
},
{
"name": "buko pandan",
"share": 4.656117997905584
}
]
Note: share value is in percents (%).
This endpoint retrieves the collection of trending dishes.
HTTP Request
GET https://api.tastewise.io/recipes/dishes/trending
URL Parameters
| Parameter | Default | Type | Description |
|---|---|---|---|
| country | Geographic availability of recipes. Available countries are: United States, Germany, Mexico. | ||
| primary_country | false | If true, Limit recipes to provided country only. | |
| language | Recipes language. Available languages are: English, German, Spanish. | ||
| search | Search string (dish/ingredient/claim). | ||
| owner_recipes | Optional: Whether to search inside, outside (or both) customer's recipes. Allowed values: 0 (outside), 1 (inside). |
Popular Dishes
curl https://api.tastewise.io/recipes/dishes/popular
-H Authorization: Bearer your-api-key
-H X-Customer-Id: customer-id
The above command returns JSON structured like this:
[
{
"name": "chicken broth",
"share": 4.977483044759269
},
{
"name": "salad",
"share": 4.829062496709068
}
]
Note: share value is in percents (%).
This endpoint retrieves the collection of popular dishes.
HTTP Request
GET https://api.tastewise.io/recipes/dishes/popular
URL Parameters
| Parameter | Default | Type | Description |
|---|---|---|---|
| country | Geographic availability of recipes. Available countries are: United States, Germany, Mexico. | ||
| primary_country | false | If true, Limit recipes to provided country only. | |
| language | english | Recipes language. Available languages are: English, German, Spanish. | |
| search | Search string (dish/ingredient/claim). | ||
| owner_recipes | Optional: Whether to search inside, outside (or both) customer's recipes. Allowed values: 0 (outside), 1 (inside). |
Side Dishes
curl https://api.tastewise.io/recipes/side_dishes
-H Authorization: Bearer your-api-key
-H X-Customer-Id: customer-id
The above command returns JSON structured like this:
[
{
"key": "hƤhnchen",
"size": 90.301,
"high_level_category": "herzhafte gerichte",
"mid_level_category": "geflügel",
"high_level_category_en": "savory foods",
"mid_level_category_en": "poultry",
"key_en": "chicken"
},
{
"key": "salat",
"size": 17.376,
"high_level_category": "herzhafte gerichte",
"mid_level_category": "salate",
"high_level_category_en": "savory foods",
"mid_level_category_en": "salads",
"key_en": "salad"
}
]
This endpoint retrieves the collection of side dishes.
HTTP Request
GET https://api.tastewise.io/recipes/side_dishes
URL Parameters
| Parameter | Default | Type | Description |
|---|---|---|---|
| country | Geographic availability of recipes. Available countries are: Germany. | ||
| recipe_name | string | Required. NA. This is a Free Text field. | |
| source | Social | string (closed list: Social / Menu) | Data used for side dish suggestions. |
| type | all | string (closed list: Sweet / Savory) | Segmentation of side dishes based on flavor |
Motivations
curl https://api.tastewise.io/motivations
-H Authorization: Bearer your-api-key
-H X-Customer-Id: customer-id
The above command returns JSON structured like this:
[
{
"name": "tasty",
"category": "experience",
"share": 24.028690974297668,
"yoy_change": -6.814114900013019,
"monthly_change": -0.11125755372542187
}
]
Note: Changes and share are in percents (%).
Top 50 consumer needs (based on specified parameters) with highest social penetration
HTTP Request
GET https://api.tastewise.io/motivations
URL Parameters
| Parameter | Default | Type | Description |
|---|---|---|---|
| country | United States | Geographic focus of the motivators. | |
| language | English | Motivations language. | |
| search | Search string. | ||
| category | string (closed list) |
Adjusts the results to data relevant only to a specific category. | |
| motivation | string (closed list) |
filter the results by motivation type. | |
| custom_category | string | Tailored search based on a predefined list of terms | |
| audience | string (closed list) |
Adjusts the results to data relevant only to a specific audience | |
| sort_by | string | Sort the results by using a specific field from the response. |
Content Discovery
curl https://api.tastewise.io/content_discovery
-H Authorization: Bearer your-api-key
-H X-Customer-Id: customer-id
The above command returns JSON structured like this:
[
{
"url": "https://instagram.com/p/CLF7XlLADlV",
"text": "Happy #NationalPizzaDay - although I fold mine and eat it like a taco. šš®"
},
{
"url": "https://instagram.com/p/CLzFziWnPw8",
"text": "How did the unassuming sheet pan become a home-cooking star?" Sheet pans are essential to professional kitchens, but with far more function than form, they donāt scream for attention. And yet this utilitarian piece of equipment has become a star ā not least because the actual cooking requires nothing more than passive waiting. Tap the link in our bio for 20 (often surprising, always delicious) recipes from @nytcooking for the most versatile pan in your kitchen. Hereās whatās in these photos:Baked Feta With Broccolini, Tomatoes and Lemon šø @bryangardnerphotography, with food styling by @bwashbuOven Bacon and Eggs šø @andrewhughpurcell, with food styling by @carrieannpurcellCumin Pork Chops and Brussels Sprouts šø @christophertestani, with food styling by @chrisnlanier, prop styling by @carlagharSheet-Pan Pizza With Asparagus and Arugula. šø @ryanliebe, with food styling by @bwashbuGochujang Chicken and Roasted Vegetables šø @christophertestani, with food styling by @chrisnlanier, prop styling by @carlaghar
}
]
This endpoint retrieves the top 20 most popular social media posts, matching the given search parameters
HTTP Request
GET https://api.tastewise.io/content_discovery
URL Parameters
| Parameter | Default | Type | Description |
|---|---|---|---|
| country | United States | Geographic focus of the posts. | |
| language | English | Posts language. | |
| search | Search string. | ||
| custom_category | string | Tailored search based on a predefined list of terms | |
| audience | string (closed list) |
Adjusts the results to data relevant only to a specific audience |
Trend Validation
curl https://api.tastewise.io/trend_validation
-H Authorization: Bearer your-api-key
-H X-Customer-Id: customer-id
The above command returns JSON structured like this:
{
"trend_stage": "mature",
"menu_share": 40.803828705319305,
"social_share": 5.111506996005478,
"recipe_share": 1.9821370285748197,
"yoy_menu_change": -0.6,
"yoy_social_change": -2.74,
"yoy_recipe_change": 0.05,
"menus": 409242,
"dishes": 4248820,
"posts": 3233380,
"recipes": 5797
}
Note: Changes and shares are in percents (%).
Search-Based Analytics: Menu, Social, and Recipe Shares with YoY Trends
HTTP Request
GET https://api.tastewise.io/trend_validation
URL Parameters
| Parameter | Default | Type | Description |
|---|---|---|---|
| country | United States | Geographic focus of the trend. | |
| language | English | Trend language. | |
| search | Required. Search string. | ||
| custom_category | string | Tailored search based on a predefined list of terms |
Trend Performance
curl https://api.tastewise.io/trend_performance
-H Authorization: Bearer your-api-key
-H X-Customer-Id: customer-id
The above command returns JSON structured like this:
{
"social": [
{
"period_time": "2022-01-01",
"size": 0.118
},
{
"period_time": "2022-02-01",
"size": 0.114
}
]
}
Note: Changes and shares are in percents (%).
24-Month Social Trends and Analysis
HTTP Request
GET https://api.tastewise.io/trend_performance
URL Parameters
| Parameter | Default | Type | Description |
|---|---|---|---|
| country | United States | Geographic focus of the trend. | |
| language | English | Trend language. | |
| search | Required. Search string. | ||
| category | string (closed list) |
Adjusts the results to data relevant only to a specific category. | |
| custom_category | string | Tailored search based on a predefined list of terms | |
| audience | string (closed list) |
Adjusts the results to data relevant only to a specific audience |
Restaurants
Search Restaurants
curl https://api.tastewise.io/restaurants/?page=1&page_size=2&sort_order=asc&sort_by=popularity
-H Authorization: Bearer your-api-key
-H X-Customer-Id: customer-id
The above command returns JSON structured like this:
{
"data": [
{
"id": 1634232829702840,
"name": "Sakura Tokyo",
"street": "604 Nostrand Avenue",
"city": "new york",
"state": "new york",
"country": "united states"
},
{
"id": 163419208070666,
"name": "Opai Thai",
"street": "722 Amsterdam Avenue",
"city": "new york",
"state": "new york",
"country": "united states"
}
],
"total": 2
}
List of restaurants based on search parameters
HTTP Request
GET https://api.tastewise.io/restaurants
URL Parameters
| Parameter | Default | Type | Example | Description |
|---|---|---|---|---|
| page_size | 20 | number (limited) |
20 | Number of the restaurants returned |
| page | 1 | number | 1 | Number of the page |
| sort_order | asc | string (closed list) |
asc | Order either asc or desc |
| sort_by | popularity | string (closed list) |
popularity | The parameter by which results are sorted |
| lat | number | 40.7936156 | Latitude of the restaurant location | |
| lng | number | -73.9709012 | Longitude of the restaurant location | |
| radius | 5 | number (metric) (closed list) |
5 | Radius of the geo-search range based on the lat and lng. |
| state | string | new york | The state in which the restaurant is located | |
| city | string | new york | The city in which the restaurant is located | |
| street | string | 722 Amsterdam Avenue | The street on which the restaurant is located | |
| zip | number | 10025 | Zipcode of the restaurant | |
| available_delivery_platforms | string (multiple) (closed list) |
doordash|grubhub | Food delivery platforms on which the restaurant is available | |
| not_available_delivery_platforms | string (multiple) (closed list) |
doordash|uber | Food delivery platforms on which the restaurant is NOT available | |
| chain_size | number (range) |
1|10 | The size of the restaurant chain | |
| has_email | boolean | true | Restaurant lists contact email or employee email | |
| has_menu | boolean | true | Restaurant has at least one menu source available | |
| cuisine | string (multiple) (closed list) |
japanese restaurant|indian restaurant | Restaurant cuisine type | |
| status | string (multiple) (closed list) |
open|temporarily closed | Restaurant operation status | |
| name | string | Sakura Tokyo | Name of the restaurant | |
| market | USA | string (closed list) |
USA | The market in which the restaurant is located |
| menu_search | string | pizza | Menu name / description | |
| customer_product_list | string | abc | Return restaurants by the customer product list name | |
| cluster_chain | boolean | true | Return only one item per chain once it's true ā the page parameter is not available. | |
| includes_related_dishes | boolean | true | Return also related dishes for the product list |
Restaurant details
curl https://api.tastewise.io/restaurants/1634232829702840
-H Authorization: Bearer your-api-key
-H X-Customer-Id: customer-id
The above command returns JSON structured like this:
{
"id": 1634232829702840,
"photo": "https://img.cdn4dd.com/cdn-cgi/image/fit=contain,width=1200,height=672,format=auto/https://doordash-static.s3.amazonaws.com/media/restaurant/cover/SakuraTokyoNostrandAve604BrooklynNY.png",
"name": "Sakura Tokyo",
"street": "604 Nostrand Avenue",
"city": "new york",
"state": "new york",
"country": "united states",
"latitude": 40.67792699999999,
"longitude": -73.9500063,
"restaurant_url": "https://tastewise.io/pro/USA/solutions/foodservice-sales/restaurants?restaurant_id=1634232829702840",
"menu_url": "https://tastewise.io/pro/USA/solutions/foodservice-sales/restaurants?restaurant_id=1634232829702840&menu_open=true",
"phone_numbers": [
{
"phone": "7187568787",
"count": 3
},
{
"phone": "(718) 756-8787",
"count": 1
},
{
"phone": "7187568789",
"count": 1
},
{
"phone": "17187568787",
"count": 1
}
],
"zip": "11216",
"cuisine": "japanese restaurant",
"email": "sakuratokyo@example_email.com",
"status": "Open",
"is_on_uber": true,
"is_on_grubhub": true,
"is_on_doordash": true,
"is_onsite_menu": false,
"num_of_menus": 3,
"num_of_locations": 133,
"website": "http://www.sakuratokyo.net/?utm_source=gmb&utm_medium=website",
"price_range": "$",
"facebook": "https://www.facebook.com/pages/Sakura-Tokyo/187497094597505",
"instagram": "https://www.instagram.com/example-instagram/",
"google_rating_value": 4.5,
"google_rating_count": 225,
"delivery_rating_value": 4.5,
"delivery_rating_count": 83,
"opening_hours": {
"_comment": "restaurant's local time",
"sunday": [
{
"is_closed": true
}
],
"saturday": [
{
"from": "11:00",
"to": "21:30"
}
],
"tuesday": [
{
"from": "11:00",
"to": "21:30"
}
],
"wednesday": [
{
"from": "11:00",
"to": "21:30"
}
],
"thursday": [
{
"from": "11:00",
"to": "21:30"
}
],
"friday": [
{
"from": "11:00",
"to": "21:30"
}
],
"monday": [
{
"from": "11:00",
"to": "21:30"
}
]
},
"google_id": "ChIJxwCn8lVYwokRMnMkwq9bhcw"
}
Get restaurant details from the restaurant's Tastewise ID.
HTTP Request
GET https://api.tastewise.io/restaurants/:id
URL Parameters
| Parameter | Default | Type | Example | Description |
|---|---|---|---|---|
| market | USA | string (closed list) |
USA | The market in which the restaurant is located |
Restaurant's menus
curl https://api.tastewise.io/restaurants/1634232829702840/menus
-H Authorization: Bearer your-api-key
-H X-Customer-Id: customer-id
The above command returns JSON structured like this:
{
"data": [
{
"delivery": "doordash",
"last_updated": "2022-07-31T03:10:54.000Z",
"menu_items": [
{
"category": "Yaki Udon or Soba",
"description": "Yaki Udon or Soba.",
"name": "Shrimp",
"price": 8.75
},
{
"category": "Soup & Salad",
"description": "",
"name": "Salmon Skin Salad",
"price": 4.25
}
]
},
{
"delivery": "on site menu",
"last_updated": "2022-07-28T13:11:12.000Z",
"menu_items": [
{
"category": "Yaki Udon or Soba",
"description": "Yaki Udon or Soba.",
"name": "Shrimp",
"price": 8.75
},
{
"category": "Soup & Salad",
"description": "",
"name": "Salmon Skin Salad",
"price": 4.25
}
]
}
]
}
Get restaurant menu(s) from the restaurant's Tastewise ID.
HTTP Request
GET https://api.tastewise.io/restaurants/:id/menus
URL Parameters
| Parameter | Default | Type | Example | Description |
|---|---|---|---|---|
| market | USA | string (closed list) |
USA | The market in which the restaurant is located |
Restaurant's ingredients
curl https://api.tastewise.io/restaurants/1634232829702840/ingredients
-H Authorization: Bearer your-api-key
-H X-Customer-Id: customer-id
The above command returns JSON structured like this:
{
"data": [
{
"element": [
"carbonated water",
"miso",
"soda",
"seltzer",
"miso soup",
"grilled salmon",
"california roll",
"teriyaki sauce",
"teriyaki salmon",
"grilled fish",
"soup",
"salmon",
"fish",
"sushi"
]
},
{
"element": ["mayo", "octopus", "dumpling", "katsu"]
}
]
}
Get restaurant ingredients from the restaurant's Tastewise ID.
HTTP Request
GET https://api.tastewise.io/restaurants/:id/ingredients
URL Parameters
| Parameter | Default | Type | Example | Description |
|---|---|---|---|---|
| market | USA | string (closed list) |
USA | The market in which the restaurant is located |
Restaurant signals
curl https://api.tastewise.io/restaurants/1634232829702840/signals?signal_types=menu
-H Authorization: Bearer your-api-key
-H X-Customer-Id: customer-id
The above command returns JSON structured like this:
{
"data": {
"menu": {
"menu_item_added": [
{
"menu_item_id": "2392935_QpCqgLAdEeyJVFVbqn0LBw",
"data_origin_month": "2022_04",
"dish_name": "oz bone ribeye",
"price": 26
},
{
"menu_item_id": "2392935_T5-wcLAVEeyJVFVbqn0LBw",
"data_origin_month": "2022_04",
"dish_name": "fried mushroom full order",
"price": 18
}
],
"menu_item_price_decrease": [
{
"menu_item_id": "2392935_xaDrwBBeEeuLRAO-iaxV4A",
"data_origin_month": "2022_04",
"dish_name": "garden salad",
"old_price": 4,
"new_price": 5,
"percentage_changed": 25
},
{
"menu_item_id": "2392935_gy7hcBBeEeuLRAO-iaxV4A",
"data_origin_month": "2022_04",
"dish_name": "cowboy beans",
"old_price": 4,
"new_price": 5,
"percentage_changed": 25
}
]
}
}
}
Get restaurant signals by type according to last month's data
HTTP Request
GET https://api.tastewise.io/restaurants/:id/signals
URL Parameters
| Parameter | Default | Type | Example | Description |
|---|---|---|---|---|
| signal_types | menu|delivery|status | string (multiple) (closed list) |
menu|status | Restaurant signal types |
| market | USA | string (closed list) |
USA | The market in which the restaurant is located |
Does a restaurant have new signals compared to the previous month?
curl https://api.tastewise.io/restaurants/1634232829702840/signals/hasUpdates
-H Authorization: Bearer your-api-key
-H X-Customer-Id: customer-id
The above command returns JSON structured like this:
{
"id": 1634232829702840,
"menu": true,
"delivery": false,
"status": true
}
Check for any new restaurant signals compared to the previous month.
HTTP Request
GET https://api.tastewise.io/restaurants/:id/signals/hasUpdates
URL Parameters
| Parameter | Default | Type | Example | Description |
|---|---|---|---|---|
| signal_types | menu|delivery|status | string (multiple) (closed list) |
menu|status | Restaurant signal types |
| market | USA | string (closed list) |
USA | The market in which the restaurant is located |
Last Month Restaurant Data
curl https://api.tastewise.io/restaurants/last_month
-H Authorization: Bearer your-api-key
-H X-Customer-Id: customer-id
The above command returns JSON structured like this:
{
"data": [
{
"id": 1634232829702840,
"name": "Sakura Tokyo",
"street": "604 Nostrand Avenue",
"city": "new york",
"state": "new york",
"country": "united states",
"last_month_metrics": {
"menu_changes": 5,
"price_changes": 3,
"rating_change": 0.2,
"delivery_platforms_change": 1
}
}
],
"total": 245,
"period": "2024-12"
}
Get restaurant data from the previous month for comparison and trend analysis
HTTP Request
GET https://api.tastewise.io/restaurants/last_month
URL Parameters
All parameters from the standard /restaurants endpoint are supported, plus:
| Parameter | Default | Type | Description |
|---|---|---|---|
| market | USA | string (closed list) |
The market in which the restaurant is located |
Match restaurant
[Beta]
curl https://api.tastewise.io/restaurants/match?name=Sakura%20Tokyo&city=new%20york&state=new%20york&street=604%20Nostrand%20Avenue
-H Authorization: Bearer your-api-key
-H X-Customer-Id: customer-id
The above command returns JSON structured like this:
{
"id": 1634232829702840,
"name": "Sakura Tokyo",
"street": "604 Nostrand Avenue",
"city": "new york",
"state": "new york",
"country": "united states",
"score": 0.9232
}
Use AI to find the best Tastewise restaurant entity that matches your restaurant criteria. All results will be returned with a match_score that indicates the algorithm match confidence based on your parameters.
HTTP Request
GET https://api.tastewise.io/restaurants/match
URL Parameters
| Parameter | Default | Required | Type | Example | Description |
|---|---|---|---|---|---|
| name | true | string | Sakura Tokyo | The name of the restaurant | |
| city | true | string | new york | The city in which the restaurant is located | |
| street | true | string | 722 Amsterdam Avenue | The street in which the restaurant is located | |
| state | - | string | new york | The state in which the restaurant is located | |
| market | USA | - | string (closed list) | USA | The market in which the restaurant is located |
| phone | - | string | (718)756-8787 | Phone number of the restaurant | |
| website | - | string | sakuratokyo.com | The official website URL of the restaurant | |
| cuisine | - | string (closed list) | coffee shop | Cuisine type of the restaurant | |
| isLongResponse | false | - | boolean | true | Return extended restaurant details including all available metadata |
Bestsellers
curl https://api.tastewise.io/restaurants/bestsellers?menu_search=pizza&city=new%20york
-H Authorization: Bearer your-api-key
-H X-Customer-Id: customer-id
The above command returns JSON structured like this:
[
{
"photo": "https://img.cdn4dd.com/cdn-cgi/image/fit=contain,width=1200,height=672,format=auto/https://doordash-static.s3.amazonaws.com/media/photos/4c8b8528-44e2-49aa-9a78-b25aec17351c-retina-large-jpeg",
"name": "sicilian pie pizza",
"description": "Twice baked crust with olive oil, plum tomato sauce, fresh basil and a blend of Italian cheeses.",
"chain_name": {
"name": "artichoke basille's pizza",
"count": 19
},
"place_name": "Artichoke Basille's Pizza",
"place_website": "artichokepizza.com",
"tastewise_id": 1634235527455397,
"price": 39,
"claims": [
{
"name": "italian",
"category": "cuisine"
}
],
"tastewise_url": "https://tastewise.io/pro/USA/foodservice-sales/restaurants?restaurant_id=1634235527455397",
"chain_size": "medium chain"
}
]
Best selling menu items based on delivery platform best sellers
HTTP Request
GET https://api.tastewise.io/restaurants/bestsellers
URL Parameters
| Parameter | Default | Required | Type | Example | Description |
|---|---|---|---|---|---|
| menu_search | true | string | pizza | Menu search string | |
| city | true | string | new york | The city in which the restaurant is located | |
| chain_size | - | number (range) |
1|10 | The size of the restaurant chain | |
| market | USA | - | string (available values are only USA) | USA | The market in which the restaurant is located |
| page | 1 | - | number | 1 | Number of the page. Maximum value - 5. |
Price Analysis
curl https://api.tastewise.io/restaurants/pricingAnalysis?menu_search=pizza&zip_code=10004
-H Authorization: Bearer your-api-key
-H X-Customer-Id: customer-id
The above command returns JSON structured like this:
{
"restaurant": {
"address": "123 Main Street Anytown, USA 12345",
"geo_location": [-76.99, 39.12],
"website_array": [
{
"website": "https://www.example.com"
}
],
"phone_array": [
{
"phone": "12376542334"
}
],
"name": "Pizza Palazzo",
"tw_id": "1237654233489766"
},
"overview": {
"averagePrice": 15.21,
"totalNumberOfRestaurants": 68,
"numberOfRestaurants": 13,
"numberOfMenuItems": 214
},
"menuItems": [
{
"restaurantName": "Grubhub Goods",
"price": 8.39,
"name": "Large Pizza - Cheese",
"description": "Mozzarella, provolone, and parmesan cheeses on a parbaked sauced crust",
"businessType": "single location"
}
],
"chainSizeBreakDown": {
"singleLocation": {
"$": 13.48,
"$$": 7.83,
"$$$": "",
"$$$$": "",
"numberOfRestaurants": 8,
"averagePrice": 9.39
},
"small": {
"$": "",
"$$": "",
"$$$": "",
"$$$$": "",
"numberOfRestaurants": 0,
"averagePrice": 0
},
"medium": {
"$": "",
"$$": 15.8,
"$$$": "",
"$$$$": "",
"numberOfRestaurants": 1,
"averagePrice": 15.8
},
"big": {
"$": 15.76,
"$$": "",
"$$$": "",
"$$$$": "",
"numberOfRestaurants": 2,
"averagePrice": 15.76
},
"mega": {
"$": 16.5,
"$$": "",
"$$$": "",
"$$$$": "",
"numberOfRestaurants": 2,
"averagePrice": 16.08
}
},
"cuisineBreakDown": {
"fast food restaurant": {
"$": "",
"$$": "",
"$$$": "",
"$$$$": "",
"numberOfRestaurants": 4,
"averagePrice": 7.99
},
"american restaurant": {
"$": 17.14,
"$$": 7.58,
"$$$": "",
"$$$$": "",
"numberOfRestaurants": 3,
"averagePrice": 14.11
},
"italian restaurant": {
"$": 16.32,
"$$": "",
"$$$": "",
"$$$$": "",
"numberOfRestaurants": 2,
"averagePrice": 16.32
},
"bar": {
"$": "",
"$$": 12,
"$$$": "",
"$$$$": "",
"numberOfRestaurants": 1,
"averagePrice": 12
},
"deli": {
"$": 6.74,
"$$": "",
"$$$": "",
"$$$$": "",
"numberOfRestaurants": 1,
"averagePrice": 6.74
},
"food delivery service": {
"$": "",
"$$": 6.82,
"$$$": "",
"$$$$": "",
"numberOfRestaurants": 1,
"averagePrice": 6.82
}
}
}
[Beta]
HTTP Request
GET https://api.tastewise.io/restaurants/pricingAnalysis
URL Parameters
| Parameter | Default | Required | Type | Example | Description |
|---|---|---|---|---|---|
| menu_search | true | string | pizza | Menu search string | |
| tastewise_id | true | string | new york | Restaurant ID | |
| zip_code | true | string | 10004 | Zipcode of the searched are | |
| lat | true | number | 40.7936156 | Latitude of the restaurant location | |
| long | true | number | -73.9709012 | Longitude of the restaurant location | |
| search_radius | 3 | - | number (metric) |
2 | Radius of the geo-search range based on the lat and long or tastewise_id. Maximum value - 10. |
| market | USA | - | string (available values are only USA) | USA | The market in which the restaurant is located |
You should specify lat&long or tastewise_id or zip_code parameter.
Product List
Add Product
curl https://api.tastewise.io/restaurants/productList?customer_id=abc&sku=123&product_name=burger&product_description=with%20tomato%20and%20onion&product_category=lunch
-X POST
-H Authorization: Bearer your-api-key
-H X-Customer-Id: customer-id
OR in bulk mode:
curl https://api.tastewise.io/restaurants/productList/bulk
-X POST
-H Authorization: Bearer your-api-key
-H X-Customer-Id: customer-id
-d '{"webhook": "https://your-webhook-url.com", "products": [{"customer_id": "abc", "sku": "123", "product_name": "burger", "product_description": "with tomato and onion", "product_category": "lunch"}]}'
The above command returns JSON structured like this:
{
"success": true
}
Add new product list to customer
HTTP Request
POST https://api.tastewise.io/restaurants/productList
OR in bulk mode:
POST https://api.tastewise.io/restaurants/productList/bulk
URL Parameters
| Parameter | Default | Type | Example | Description |
|---|---|---|---|---|
| customer_id | string | abc | Required. The name of the customer | |
| sku | string | 123 | Required. The SKU of the product | |
| product_name | string | burger | Required. The name of the product | |
| product_description | string | with tomato and onion | The name of the product | |
| product_category | string | lunch | The name of the product |
Delete Product
curl https://api.tastewise.io/restaurants/productList?customer_id=abc&sku=123
-X DELETE
-H Authorization: Bearer your-api-key
-H X-Customer-Id: customer-id
The above command returns JSON structured like this:
{
"success": true
}
Delete product
HTTP Request
DELETE https://api.tastewise.io/restaurants/productList
URL Parameters
| Parameter | Default | Type | Example | Description |
|---|---|---|---|---|
| customer_id | string | abc | Required. The name of the customer | |
| sku | string | 123 | Required. The SKU of the product |
Get Products
curl https://api.tastewise.io/restaurants/productList?customer_id=abc
-H Authorization: Bearer your-api-key
-H X-Customer-Id: customer-id
The above command returns JSON structured like this:
[
{
"_id": "676035ab03981c0838bb7ca7",
"accountId": "21551",
"customerId": "abc",
"sku": "10048400009500",
"product_name": "CRYSTAL HOT SAUCE SS 200 3GM",
"product_description": "EPM PLG FS BULK SAUCES - INDUSTRIAL_2",
"product_category": "FS BULK SAUCES_CT"
},
{
"_id": "675f2d29b45b8797a75ad3cb",
"accountId": "21551",
"customerId": "abc",
"sku": "130000000300",
"product_name": "HNZ YELLOW MSTRD ORG 20OZ 6CT",
"product_description": "EPM PLG FS BTL SCE-RETAIL",
"product_category": "FS BOTTLED SAUCES_CT"
}
]
Get product list of customer
HTTP Request
GET https://api.tastewise.io/restaurants/productList
URL Parameters
| Parameter | Default | Type | Example | Description |
|---|---|---|---|---|
| customer_id | string | abc | Required. The name of the customer |
Menus
curl https://api.tastewise.io/menus
-H Authorization: Bearer your-api-key
-H X-Customer-Id: customer-id
The above command returns JSON structured like this:
[
{
"id": 1634223310438484,
"platform": "doordash",
"name": "Basic Breakfast with Bison Sausage",
"description": "Two eggs with a house-made bison sausage patty. Served with hash browns and toast.",
"options": [
"English Muffin",
"Gluten Free Toast",
"Homemade Buttermilk Biscuit",
"Rye Toast",
"Sourdough Toast",
"Wheat Toast",
"Basted",
"Over Easy",
"Over Hard",
"Over Medium",
"Poached",
"Scrambled"
],
"price": 19.44
}
]
If the restaurant_id is connected to K12, the response includes
type: "k12":
[
{
"platform": "k12",
"name": "Lasagna Roll Up",
"description": "",
"id": "72b0d0027290d556c48ffdc3",
"type": "k12"
},
{
"platform": "k12",
"name": "Focaccia Bread",
"description": "",
"id": "72b0d0027290d556c48ffdc3",
"type": "k12"
}
]
Menu items from restaurants (includes K12 data when restaurant_id is connected to K12)
HTTP Request
GET https://api.tastewise.io/menus
URL Parameters
| Parameter | Default | Type | Description |
|---|---|---|---|
| restaurant_id | Required. Restaurant ID. Returns K12 data if the ID is connected to K12 school foodservice | ||
| market | USA | string (closed list) |
The market in which the restaurant is located |
| search | string | Search string (name/description/options) |
Menu Insights
curl https://api.tastewise.io/menu_insights?tw_id=1633946999482697&sku=23464&market=USA&customer_id=MFR%3A6868%3A715123
-H Authorization: Bearer your-api-key
-H X-Customer-Id: customer-id
The above command returns JSON structured like this:
{
"executive_summary": "- **Own the red-sauce core:** In Pittsburgh Italian menus, pizza remains the anchor and pizza sauce appears on nearly every competing menu item...\n\n- **Use sauce beyond whole pies:** Competitors' bestsellers show pizza sauce also winning in shareable sides...\n\n- **Bridge classic pizza with Twist signatures:** Pizza Twist already leans into bold ingredients like paneer, green chili, cilantro, and jalapeno...",
"restaurant": {
"tw_id": "1633946999482697",
"name": "Pizza Twist",
"city": "pittsburgh",
"state": "pennsylvania",
"cuisine": "italian restaurant"
},
"sku": {
"sku": "23464",
"product_name": "Pizza Sauce, Extra Heavy",
"ingredients": [
"pizza sauce",
"pizza"
]
},
"filter_tier": "city_cuisine",
"total_market_restaurants": 75,
"bestselling_opportunities": [
{
"name": "the monroe pizza",
"description": "Tomato sauce, skim mozzarella, Beyond SausageĀ®, fresh basil, and garlic. 12\" Round Gluten Free + Vegan Cauliflower Crust.",
"restaurant_name": "Boss Bitch Pizza",
"tw_id": "1746272350104664",
"ingredients": [
"beyond meat",
"pizza sauce",
"cauliflower crust",
"pizza",
"tomato",
"garlic",
"mozzarella",
"basil"
],
"image_url": "https://img.cdn4dd.com/...",
"price": 19.99
},
{
"name": "breadstick bites",
"description": "Prepared like our classic Breadsticks, these bite-sized morsels are fun to eat and share! Served with a side of our traditional red pizza sauce.",
"restaurant_name": "Vocelli Pizza",
"tw_id": "1634046465318994",
"ingredients": [
"breadstick",
"pizza sauce",
"pizza"
],
"image_url": "https://img.cdn4dd.com/...",
"price": 7.99
}
],
"lto_opportunities": [],
"ingredient_comparison": [
{
"name": "pizza sauce",
"market_share": 98.32,
"market_yoy": 0.78,
"market_index": 50.97,
"restaurant_share": 13.61,
"restaurant_yoy": 85.46,
"restaurant_index": 0.14
},
{
"name": "paneer",
"market_share": 3.16,
"market_yoy": 64.25,
"market_index": 15.29,
"restaurant_share": 14.97,
"restaurant_yoy": 31.64,
"restaurant_index": 4.74
}
],
"dish_comparison": [
{
"name": "chicken curry",
"market_share": 0.63,
"market_yoy": 207.57,
"market_index": 38.23,
"restaurant_share": 1.36,
"restaurant_yoy": 78.78,
"restaurant_index": 2.15
},
{
"name": "pizza",
"market_share": 98.32,
"market_yoy": 0.78,
"market_index": 5.27,
"restaurant_share": 74.83,
"restaurant_yoy": 27.05,
"restaurant_index": 0.76
}
]
}
Get menu insights for a specific restaurant and SKU, including an AI-generated executive summary, bestselling opportunities from competing restaurants, and ingredient/dish comparisons between the restaurant and its local market.
HTTP Request
GET https://api.tastewise.io/menu_insights
URL Parameters
| Parameter | Default | Type | Description |
|---|---|---|---|
| tw_id | string | Required. Tastewise restaurant ID | |
| sku | string | Required. SKU identifier for the product | |
| customer_id | string | Required. Customer ID (URL-encoded, e.g. MFR%3A6868%3A715123) | |
| market | USA | string (closed list) |
The market from which the data is taken |
| category | string (closed list) |
Filter by category. Uses the category text name (e.g. pizza, sandwiches, dairy, sauces and dressings) instead of the numeric ID |
Flavor Combination
curl https://api.tastewise.io/flavor_combination
-H Authorization: Bearer your-api-key
-H X-Customer-Id: customer-id
The above command returns JSON structured like this:
[
{
"ingredient": "latte",
"category": "coffee",
"social_share": 12.69,
"menus_share": 28.75,
"recipes_share": 39.65,
"menus_yoy": 0.03,
"social_yoy": 1.6,
"recipes_yoy": 0.01,
"menus_count": 100073,
"posts_count": 410298,
"restaurants_share": 18.51,
"home_share": 11.77,
"restaurant_change": -4.1,
"home_change": -3.8,
"life_cycle": "mature",
"index_social": 4.2
}
]
Top 50 ingredients, flavors and dishes being discussed matching the given search parameters
HTTP Request
GET https://api.tastewise.io/flavor_combination
URL Parameters
| Parameter | Default | Type | Description |
|---|---|---|---|
| search | Search string. | ||
| market | USA | string (closed list) |
The market from which the data is taken. |
| category | string (closed list) |
Adjusts the results to data relevant only to a specific category. (supports one term at a time) | |
| type | string (closed list) |
Filter the results by its type. (supports one term at a time) | |
| life_cycle | string (closed list) |
Filter the results by life cycle. | |
| results_category | string (closed list) |
Filter the results category. (supports one or multiple terms at a time, seperated by comma) | |
| custom_category | string | Tailored search based on a predefined list of terms | |
| audience | string (closed list) |
Adjusts the results to data relevant only to a specific audience | |
| sort_by | string | Sort the results by using a specific field from the response. |
Widgets
curl https://api.tastewise.io/widgets?query=pizza&queryType=recipes&email=user@example.com&firstname=John&lastname=Doe
-X POST
-H Authorization: Bearer your-api-key
-H X-Customer-Id: customer-id
The above command returns JSON structured like this:
{
"status": "success",
"data": {
"widget_id": "wdg_123456",
"query_results": [
{
"trend": "Detroit-style pizza",
"growth": 45.2,
"volume": 128000
}
]
}
}
Process widget queries for embedded analytics and visualizations
HTTP Request
POST https://api.tastewise.io/widgets
Required Headers
Authorization: your-api-keyX-Customer-Id: customer-id
Query Parameters
| Parameter | Required | Type | Description |
|---|---|---|---|
| query | true | string | Search query (e.g., pizza, pasta, burger) |
| queryType | true | string | Query type (see supported query types below) |
| true | string | User's email address | |
| firstname | true | string | User's first name |
| lastname | true | string | User's last name |
Supported Query Types
ingredients_consumer_need- Ingredients by consumer needsingredients_dish- Ingredients by dishingredients_pairings- Ingredient pairingsconsumer_needs- Consumer needs analysisdish_consumer_needs- Dishes by consumer needsconsumer_needs_ingredient- Consumer needs by ingredientingredients_other- Other ingredient queriesconsumer_needs_other- Other consumer needs queriesrecipes- Recipe queriessocial_media- Social media analysismenus_overview- Menu overview analysis
Insights
curl https://api.tastewise.io/insights?search=plant-based
-H Authorization: Bearer your-api-key
-H X-Customer-Id: customer-id
The above command returns JSON structured like this:
{
"volumes": {
"social": 245000,
"menu": 12000,
"recipe": 34000
},
"top_ingredients": [
{
"name": "tofu",
"share": 23.4,
"growth": 12.5
},
{
"name": "tempeh",
"share": 18.2,
"growth": 34.1
}
],
"top_dishes": [
{
"name": "plant-based burger",
"share": 31.2,
"growth": 22.3
}
],
"consumer_needs": [
{
"need": "sustainable",
"share": 42.1,
"category": "ethics"
}
],
"trend_performance": {
"stage": "emerging",
"yoy_change": 28.4,
"forecast": "continued growth"
}
}
Get comprehensive insights combining multiple data sources for a search term
HTTP Request
GET https://api.tastewise.io/insights
Query Parameters
| Parameter | Default | Required | Type | Description |
|---|---|---|---|---|
| search | true | string | Search term for insights | |
| market | USA | false | string (closed list) |
Geographic market focus |
| language | english | false | string (closed list) |
Language for analysis |
| category | false | string (closed list) |
Filter insights to specific category | |
| custom_category | false | string | Tailored search based on predefined list of terms | |
| audience | false | string (closed list) |
Filter insights for specific audience |
Operations
The Operations API combines data from both restaurant and K12 (school) foodservice sectors, providing unified access to institutional food service data.
Search Operations
curl https://api.tastewise.io/operations?customer_id=MFR%3A6868%3A%2D1&page=1&page_size=20
-H Authorization: Bearer your-api-key
-H X-Customer-Id: customer-id
The above command returns JSON structured like this:
{
"data": [
{
"id": "op_123456",
"name": "Central High School Cafeteria",
"type": "k12",
"street": "123 School St",
"city": "chicago",
"state": "illinois",
"operation_status": "open",
"meal_programs": ["breakfast", "lunch"],
"enrollment": 1200
},
{
"id": "1634232829702840",
"name": "University Dining Hall",
"type": "restaurant",
"street": "456 Campus Dr",
"city": "chicago",
"state": "illinois",
"operation_status": "open"
}
],
"total": 42
}
Search across both restaurant and K12 institutional food service operations
HTTP Request
GET https://api.tastewise.io/operations
Query Parameters
| Parameter | Default | Type | Description |
|---|---|---|---|
| customer_id | string | Required. Customer identifier | |
| page_size | 20 | number (limited) |
Number of results per page |
| page | 1 | number | Page number |
| status | string | Filter by operation status | |
| sort_order | asc | string (closed list) |
Sort order (asc/desc) |
| sort_by | name | string | Field to sort by |
| city | string | Filter by city | |
| state | string | Filter by state | |
| operation_type | string (restaurant/k12/all) | Filter by operation type | |
| menu_search | string | Search within menu items | |
| market | USA | string (closed list) |
Geographic market |
Operations Product List
Get Product List
curl https://api.tastewise.io/operations/productList?customer_id=abc
-H Authorization: Bearer your-api-key
-H X-Customer-Id: customer-id
Returns the same structure as restaurant product list
Get product list for operations customer
HTTP Request
GET https://api.tastewise.io/operations/productList
Query Parameters
| Parameter | Required | Type | Description |
|---|---|---|---|
| customer_id | true | string | Customer identifier |
Add Product
curl https://api.tastewise.io/operations/productList
-X POST
-H Authorization: Bearer your-api-key
-H X-Customer-Id: customer-id
-d 'customer_id=abc&sku=123&product_name=burger'
Add product to operations customer list
HTTP Request
POST https://api.tastewise.io/operations/productList
Parameters
| Parameter | Required | Type | Description |
|---|---|---|---|
| customer_id | true | string | Customer identifier |
| sku | true | string | Product SKU |
| product_name | true | string | Product name |
| product_description | false | string | Product description |
| product_category | false | string | Product category |
Bulk Add Products
curl https://api.tastewise.io/operations/productList/bulk
-X POST
-H Authorization: Bearer your-api-key
-H X-Customer-Id: customer-id
-H Content-Type: application/json
-d '{
"webhook": "https://your-webhook-url.com",
"products": [
{
"customer_id": "abc",
"sku": "123",
"product_name": "burger"
}
]
}'
Bulk add products with optional webhook notification
HTTP Request
POST https://api.tastewise.io/operations/productList/bulk
Request Body
| Parameter | Required | Type | Description |
|---|---|---|---|
| products | true | array | Array of product objects |
| webhook | false | string | URL for completion notification |
Delete Product
curl https://api.tastewise.io/operations/productList?customer_id=abc&sku=123
-X DELETE
-H Authorization: Bearer your-api-key
-H X-Customer-Id: customer-id
Remove product from operations customer list
HTTP Request
DELETE https://api.tastewise.io/operations/productList
Query Parameters
| Parameter | Required | Type | Description |
|---|---|---|---|
| customer_id | true | string | Customer identifier |
| sku | true | string | Product SKU to delete |
Webhooks
Overview
Several endpoints support webhook notifications for asynchronous processing. When you provide a webhook URL, the API will send a POST request to your endpoint when the operation completes.
Webhook Request Format
{
"status": "success",
"operation": "bulk_product_import",
"timestamp": "2024-01-15T12:34:56Z",
"data": {
"processed": 100,
"successful": 98,
"failed": 2,
"errors": [
{
"sku": "12345",
"error": "Invalid product category"
}
]
}
}
Supported Endpoints
The following endpoints support webhook notifications:
| Endpoint | Operation | Webhook Trigger |
|---|---|---|
/restaurants/productList/bulk |
Bulk product import | When all products are processed |
/operations/productList/bulk |
Bulk product import | When all products are processed |
Webhook Configuration
When using webhooks:
- Provide a valid HTTPS URL - Webhooks are only sent to secure endpoints
- Respond quickly - Your webhook handler should respond with a 2xx status code within 5 seconds
- Handle retries - Failed webhook deliveries will be retried up to 3 times with exponential backoff
- Verify the source - Consider implementing webhook signature verification for security
Example Webhook Handler
// Express.js webhook handler example
app.post('/webhook/tastewise', (req, res) => {
const { status, operation, data } = req.body;
if (status === 'success') {
console.log(`Operation ${operation} completed successfully`);
console.log(`Processed: ${data.processed} items`);
} else {
console.error(`Operation ${operation} failed`);
}
// Respond quickly
res.status(200).send('OK');
// Process the webhook data asynchronously
processWebhookData(req.body);
});
System Endpoints
Health Check
curl https://api.tastewise.io/ping
The above command returns:
pong
Simple health check endpoint to verify API availability
HTTP Request
GET https://api.tastewise.io/ping
Response codes
The APIs may return the following response codes:
| Response Code | Meaning |
|---|---|
| 200 | The request has succeeded |
| 204 | No Content. The request has succeeded, but no data was found |
Errors
The APIs may return the following error codes:
| Error Code | Meaning |
|---|---|
| 400 | Bad Request -- Your request is invalid. |
| 401 | Unauthorized -- Either the API key, the Customer ID is wrong or you don't have access to the API. |
| 403 | Forbidden -- You are not allowed to perform the request. |
| 405 | Method Not Allowed -- You tried to access the API with an invalid method. |
| 429 | Too Many Requests -- You're performing too many requests. |
| 500 | Internal Server Error -- We had a problem on the back-end. Try again later. |
| 503 | Service Unavailable -- We're temporarily offline for maintenance. Please try again later. |