The Product Recommendations API can be used to recommend related products for a given product. To learn more about how recommendations are made and the associated limitations, refer to [Product recommendations](/docs/storefronts/themes/product-merchandising/recommendations).
To learn how to show product recommendations in your theme, refer to [Product recommendations](/docs/storefronts/themes/product-merchandising/recommendations).
All Ajax API requests should use [locale-aware URLs](/docs/api/ajax#locale-aware-urls) to give visitors a consistent experience.
> Note:
> The [Shopify Search & Discovery app](https://apps.shopify.com/search-and-discovery) enables users to customize product recommendation and search results, which can impact results from [storefront search](/docs/storefronts/themes/navigation-search/search) and the Ajax Product Recommendations API. To learn about how these results can be impacted, visit the [Shopify Help Center](https://help.shopify.com/manual/online-store/search-and-discovery/product-recommendations).
## GET /{locale}/recommendations/products.json
The following example request retrieves the recommended products for a specific product:
```js
GET /{locale}/recommendations/products.json?product_id={product-id}&intent={intent}
```
### Query parameters
Query parameter |
Required |
Description |
product_id |
Yes |
The unique product ID of the product that you want to show recommended products for. |
limit |
No |
Limits the number of results.
The value can range from 1 to 10 , and the default is 10 .
|
intent |
No |
The recommendation intent that is used to generate product recommendations. You can use intent to generate product recommendations on various pages across the online store, according to different strategies. Learn more about recommendation intents.
The accepted values are related and complementary . The default value is related .
|
### Products response
The following example is a response to a successful request to the `/{locale}/recommendations/products.json` endpoint:
### Error responses
When a request to the `/{locale}/recommendations/products.json` endpoint is unsuccessful, one of the following error responses is returned:
- [Invalid parameter](#invalid-parameter)
- [Product not found](#product-not-found)
#### Invalid parameter
In the absence of a `product_id` parameter, the endpoint returns the following error:
```json
{
"status": 422,
"message": "Invalid parameter error",
"description": "A product_id value is missing"
}
```
If `intent` isn't one of `related` or `complementary`, then the endpoint returns the following error:
```json
{
"status": 422,
"message": "Invalid parameter error",
"description": "The intent parameter must be one of related, complementary"
}
```
#### Product not found
If the `product_id` is for a product that doesn't exist, or that isn't published in the **Online store** channel, then the endpoint returns the following error:
```json
{
"status": 404,
"message": "Product not found",
"description": "No product with id is published in the online store"
}
```
## GET /{locale}/recommendations/products
The following example request retrieves the HTML from a section rendered with product recommendations for a specific product.
```js
GET /{locale}/recommendations/products?product_id={product-id}§ion_id=product-recommendations
```
### Query parameters
Query parameter |
Required |
Description |
product_id |
Yes |
The unique product ID of the product that you want to show recommended products for. |
limit |
No |
Limits the number of results.
The value can range from 1 to 10 , and the default is 10 .
|
section_id |
Yes |
The unique section ID of the section file that you want to render with product recommendations. |
intent |
No |
The recommendation intent that is used to generate product recommendations. You can use intent to generate product recommendations on various pages across the online store, according to different strategies. Learn more about recommendation intents.
The following values are accepted: related , complementary . The default value is related .
|
### Section response
The response to a successful request to the `/{locale}/recommendations/products` endpoint.
The section response contains the HTML of the provided section rendered with the [`recommendations` object](/docs/api/liquid/objects/recommendations) containing the recommended products for the specified product.
For example, the following section would generate the following section response:
### Error responses
When a request to the `/{locale}/recommendations/products` endpoint is unsuccessful, one of the following error status codes is returned:
Status code |
Description |
404 |
-
Product not found - The provided product ID doesn't exist, or doesn't belong to a product published on the Online store channel.
-
Section not found - The provided section ID wasn't found in the theme.
|
422 |
-
Invalid parameter error - The
product_id query parameter was missing.
-
Invalid parameter error - The
intent parameter must be one of related , complementary .
|
## Tracking conversions for product recommendations
The `url` property for each `product` in the [products response](#products-response) contains URL parameters that lets you build a conversion funnel that can be tracked by using reports in Shopify. Similarly, the Liquid `url` property returned for [`recommendations.products`](/docs/api/liquid/objects/recommendations#recommendations-products) contains this tracking information as well. The URL uses the following format:
```text
/products/gorgeous-wooden-computer?pr_choice=default&pr_prod_strat=description&pr_rec_pid=13&pr_ref_pid=17&pr_seq=alternating
```
To learn more about product recommendation reports, see [Product recommendation conversion over time](https://help.shopify.com/manual/reports-and-analytics/shopify-reports/report-types/behaviour-reports#product-recommendation-conversions-over-time).