Get related products (bulk)
GET/search/relations/bulk-results
Returns related products for multiple products based on identifiers. The response groups results per requested identifier.
⚠️ At least one of includeRelations or includeTags must be provided. Omitting both returns a 400 Bad Request error. You may send both.
Recommended limits
identifiers: up to 100, hard limit 1 000. Requests with more than 1 000 identifiers are rejected with400 Bad Request.includeRelations: up to 30 per requestincludeTags: up to 30 per request
Larger requests may exceed URL length limits and fail. Split into multiple requests if needed.
includeRelations: define which relations to resolve by sending a list of relation ids paired with a limit.
Example: [{"id":6548, "limit":5}, {"id":9878, "limit":5}]
Relation ids can be copied from the three-dot menu next to each relation in the Data Platform. The limit determines how many related products are returned per requested relation.
includeTags: define which relations to resolve by sending a list of tag objects paired with a limitPerRelation.
Example: [{"tag":"Compatible", "limitPerRelation":4}]
Tags correspond with the relation type found in the Data Platform. limitPerRelation specifies how many products can be returned for each relation with a matching tag.
Please refer to this guide for details and examples.\r\n\r\nmatchType\r\n\r\nEach relation in the response includes a matchType field that indicates which direction the relation matched:\r\n\r\n- FIRST_WAY — the requested product was found on the source side and related products on the target side. This is the normal case and the only value returned for one-way relations.\r\n- SECOND_WAY — the relation matched in the reverse direction. This only occurs for two-way relations: when the forward direction finds no results, the system retries with source and target swapped. A match in that direction is tagged SECOND_WAY.\r\n\r\nThis field is always present; it defaults to FIRST_WAY when unset.\r\n\r\nEmpty searchResult\r\n\r\nWhen a product has no related products for a given tag, the normal response still includes the tag and its relation object — only searchResult is empty ([]). The relations array is not empty; it contains the relation object with matchType and other fields set normally.\r\n\r\nThe tag and relation are omitted entirely only in edge cases: when the relation's target side contains no products at all, or the relation is misconfigured. If all relations under a tag fall into this category, that tag will not appear in tags."
Request
Responses
- 200
- 400
- 404
OK
{
"424357": {
"tags": [
{
"tag": "Compatible",
"relations": [
{
"name": "Matching Accessories",
"id": 4728,
"matchType": "FIRST_WAY",
"localization": {
"names": []
},
"searchResult": [
[
{
"identifier": "PRD-9876-BLU40",
"groupId": "9876",
"sxId": 240538699,
"dataPoints": [
{
"id": 281559600,
"conceptIdName": "CATEGORY",
"key": "Category",
"type": "PASS_ON",
"value": "Cases",
"isCategory": true
}
],
"image": "www.myshop.com/product/9876-blu40/img.jpg",
"name": "Laptop Case 9876 Blue",
"images": [
{
"type": "ALTERNATIVE",
"url": "www.myshop.com/product/9876-blu40/img.jpg"
}
],
"link": "www.myshop.com/product/9876-blu40",
"head": false,
"relevance": 1000000
}
]
]
}
]
}
]
},
"484365": {
"tags": [
{
"tag": "Compatible",
"relations": [
{
"name": "Matching Accessories",
"id": 4728,
"matchType": "FIRST_WAY",
"localization": {
"names": []
},
"searchResult": [
[
{
"identifier": "PRD-5432-SLV20",
"groupId": "5432",
"sxId": 240538701,
"dataPoints": [
{
"id": 281559600,
"conceptIdName": "CATEGORY",
"key": "Category",
"type": "PASS_ON",
"value": "Cases",
"isCategory": true
}
],
"image": "www.myshop.com/product/5432-slv20/img.jpg",
"name": "Laptop Case 5432 Silver",
"images": [
{
"type": "ALTERNATIVE",
"url": "www.myshop.com/product/5432-slv20/img.jpg"
}
],
"link": "www.myshop.com/product/5432-slv20",
"head": false,
"relevance": 999999
}
]
]
}
]
}
]
}
}
Bad Request
Not Found