↑ ↓ to move ↵ to open
Tesco API · Endpoint

Tesco Category Products API

Pass a category facet to collect one page of Tesco products. Follow page numbers and keep the same category and sort order.

  • 1–8 credits per call
  • Failed calls are free
  • Updated
  • tesco.category.products.list
Response completed
{  "total_count": 181,  "page": {    "count": 5,    "matchType": null,    "offset": 0,    "pageId": null,    "pageNo": 1,    "pageSize": 5,    "totalCount": 181,    "query": {      "actualTerm": null,      "queryPhase": "primary",      "searchTerm": null    }  },  "raw": {    "status": 200,    "data": {      "category": {        "facets": null,        "options": {          "sortBy": [            "relevance",            "price-ascending"          ]        },        "pageInformation": {          "count": 5,          "matchType": null,          "offset": 0,          "pageId": null,          "pageNo": 1,          "pageSize": 5,          "totalCount": 181,          "query": {            "actualTerm": null,            "queryPhase": "primary",            "searchTerm": null          }        },        "facetLists": [          {            "category": "Superdepartment",            "categoryId": "superDepartment",            "facets": [              {                "binCount": 280,                "facetId": "Fresh Food",                "facetName": "Fresh Food",                "isSelected": true              }            ]          },          {            "category": "Department",            "categoryId": "department",            "facets": [              {                "binCount": 280,                "facetId": "Fresh Fruit",                "facetName": "Fresh Fruit",                "isSelected": true              }            ]          }        ],        "results": [          {            "node": {              "title": "Tesco Pink Lady Apples 5 Pack",              "adId": null,              "aisleId": "b;RnJlc2glMjBGb29kJTdDRnJlc2glMjBGcnVpdCU3Q0FwcGxlcyUyMCYlMjBQZWFycw==",              "aisleName": "Apples & Pears",              "averageWeight": 0,              "baseProductId": "77091643",              "brandName": "TESCO",              "bulkBuyLimit": 99,              "bulkBuyLimitGroupId": null,              "bulkBuyLimitMessage": null,              "catchWeightList": null,              "context": null,              "departmentId": "b;RnJlc2glMjBGb29kJTdDRnJlc2glMjBGcnVpdA==",              "departmentName": "Fresh Fruit",              "displayType": "Quantity",              "groupBulkBuyLimit": 0,              "gtin": "00000003249833",              "id": "284477542",              "increment": 0,              "isInFavourites": null,              "isNew": false,              "isRestrictedOrderAmendment": null,              "maxQuantityAllowed": 99,              "maxWeight": 0,              "minWeight": 0,              "modelMetadata": null,              "productType": "SingleProduct",              "quantityInBasket": null,              "restrictedDelivery": null,              "shelfId": "b;RnJlc2glMjBGb29kJTdDRnJlc2glMjBGcnVpdCU3Q0FwcGxlcyUyMCYlMjBQZWFycyU3Q1BpbmslMjAmJTIwUmVkJTIwQXBwbGVz",              "shelfName": "Pink & Red Apples",              "shortDescription": "Apples.",              "superDepartmentId": "b;RnJlc2glMjBGb29k",              "superDepartmentName": "Fresh Food",              "timeRestrictedDelivery": null,              "tpnb": "77091643",              "tpnc": "284477542",              "typename": "ProductType",              "reviews": {                "stats": {                  "noOfReviews": 193,                  "overallRating": 2.9,                  "overallRatingRange": 5                }              },              "details": {                "components": [                  {                    "isLowEverydayPricing": false                  }                ]              },              "images": {                "display": [                  {                    "default": {}                  }                ]              },              "media": {                "defaultImage": {                  "aspectRatio": 1                }              },              "sellers": {                "results": [                  {                    "fulfilment": null,                    "id": "284477542",                    "isForSale": true,                    "seller": null,                    "status": "AvailableForSale",                    "price": {                      "price": 2.9,                      "actual": 2.9,                      "unitOfMeasure": "each",                      "unitPrice": 0.58                    },                    "promotions": []                  }                ]              },              "description": [                "Apples."              ],              "restrictions": []            }          },          {            "node": {              "title": "Jaffa Easy Peelers 600g",              "adId": null,              "aisleId": "b;RnJlc2glMjBGb29kJTdDRnJlc2glMjBGcnVpdCU3Q09yYW5nZXMsJTIwTGVtb25zJTIwJiUyMENpdHJ1cyUyMEZydWl0",              "aisleName": "Oranges, Lemons & Citrus Fruit",              "averageWeight": 0,              "baseProductId": "78922224",              "brandName": "TESCO",              "bulkBuyLimit": 99,              "bulkBuyLimitGroupId": null,              "bulkBuyLimitMessage": null,              "catchWeightList": null,              "context": null,              "departmentId": "b;RnJlc2glMjBGb29kJTdDRnJlc2glMjBGcnVpdA==",              "departmentName": "Fresh Fruit",              "displayType": "Quantity",              "groupBulkBuyLimit": 0,              "gtin": "00000003260630",              "id": "288135169",              "increment": 0,              "isInFavourites": null,              "isNew": false,              "isRestrictedOrderAmendment": null,              "maxQuantityAllowed": 99,              "maxWeight": 0,              "minWeight": 0,              "modelMetadata": null,              "productType": "SingleProduct",              "quantityInBasket": null,              "restrictedDelivery": null,              "shelfId": "b;RnJlc2glMjBGb29kJTdDRnJlc2glMjBGcnVpdCU3Q09yYW5nZXMsJTIwTGVtb25zJTIwJiUyMENpdHJ1cyUyMEZydWl0JTdDQ2xlbWVudGluZXMlMjAmJTIwRWFzeSUyMFBlZWxlc…",              "shelfName": "Clementines & Easy Peelers",              "shortDescription": "Clementines, Mandarin",              "superDepartmentId": "b;RnJlc2glMjBGb29k",              "superDepartmentName": "Fresh Food",              "timeRestrictedDelivery": null,              "tpnb": "78922224",              "tpnc": "288135169",              "typename": "ProductType",              "reviews": {                "stats": {                  "noOfReviews": 401,                  "overallRating": 2.4,                  "overallRatingRange": 5                }              },              "details": {                "components": [                  {                    "isLowEverydayPricing": false                  }                ]              },              "images": {                "display": [                  {                    "default": {}                  }                ]              },              "media": {                "defaultImage": {                  "aspectRatio": 1                }              },              "sellers": {                "results": [                  {                    "fulfilment": null,                    "id": "288135169",                    "isForSale": true,                    "seller": null,                    "status": "AvailableForSale",                    "price": {                      "price": 2.2,                      "actual": 2.2,                      "unitOfMeasure": "kg",                      "unitPrice": 3.67                    },                    "promotions": [                      {                        "description": "£1.49 Clubcard Price",                        "endDate": "2026-11-03T00:00:00Z",                        "id": "102760175",                        "promotionType": null,                        "startDate": "2026-10-05T23:00:00Z",                        "unitSellingInfo": "£2.48/kg",                        "price": {                          "afterDiscount": 2.2,                          "beforeDiscount": null                        },                        "attributes": [                          "CLUBCARD_PRICING"                        ]                      }                    ]                  }                ]              },              "description": [                "Clementines, Mandarin"              ],              "restrictions": []            }          }        ]      }    }  },  "items": [    {      "title": "Tesco Pink Lady Apples 5 Pack",      "adId": null,      "aisleId": "b;RnJlc2glMjBGb29kJTdDRnJlc2glMjBGcnVpdCU3Q0FwcGxlcyUyMCYlMjBQZWFycw==",      "aisleName": "Apples & Pears",      "averageWeight": 0,      "baseProductId": "77091643",      "brandName": "TESCO",      "bulkBuyLimit": 99,      "bulkBuyLimitGroupId": null,      "bulkBuyLimitMessage": null,      "catchWeightList": null,      "context": null,      "departmentId": "b;RnJlc2glMjBGb29kJTdDRnJlc2glMjBGcnVpdA==",      "departmentName": "Fresh Fruit",      "displayType": "Quantity",      "groupBulkBuyLimit": 0,      "gtin": "00000003249833",      "id": "284477542",      "increment": 0,      "isInFavourites": null,      "isNew": false,      "isRestrictedOrderAmendment": null,      "maxQuantityAllowed": 99,      "maxWeight": 0,      "minWeight": 0,      "modelMetadata": null,      "productType": "SingleProduct",      "quantityInBasket": null,      "restrictedDelivery": null,      "shelfId": "b;RnJlc2glMjBGb29kJTdDRnJlc2glMjBGcnVpdCU3Q0FwcGxlcyUyMCYlMjBQZWFycyU3Q1BpbmslMjAmJTIwUmVkJTIwQXBwbGVz",      "shelfName": "Pink & Red Apples",      "shortDescription": "Apples.",      "superDepartmentId": "b;RnJlc2glMjBGb29k",      "superDepartmentName": "Fresh Food",      "timeRestrictedDelivery": null,      "tpnb": "77091643",      "tpnc": "284477542",      "typename": "ProductType",      "reviews": {        "stats": {          "noOfReviews": 193,          "overallRating": 2.9,          "overallRatingRange": 5        }      },      "details": {        "components": [          {            "isLowEverydayPricing": false          }        ]      },      "images": {        "display": [          {            "default": {}          }        ]      },      "media": {        "defaultImage": {          "aspectRatio": 1        }      },      "sellers": {        "results": [          {            "fulfilment": null,            "id": "284477542",            "isForSale": true,            "seller": null,            "status": "AvailableForSale",            "price": {              "price": 2.9,              "actual": 2.9,              "unitOfMeasure": "each",              "unitPrice": 0.58            },            "promotions": []          }        ]      },      "description": [        "Apples."      ],      "restrictions": []    },    {      "title": "Jaffa Easy Peelers 600g",      "adId": null,      "aisleId": "b;RnJlc2glMjBGb29kJTdDRnJlc2glMjBGcnVpdCU3Q09yYW5nZXMsJTIwTGVtb25zJTIwJiUyMENpdHJ1cyUyMEZydWl0",      "aisleName": "Oranges, Lemons & Citrus Fruit",      "averageWeight": 0,      "baseProductId": "78922224",      "brandName": "TESCO",      "bulkBuyLimit": 99,      "bulkBuyLimitGroupId": null,      "bulkBuyLimitMessage": null,      "catchWeightList": null,      "context": null,      "departmentId": "b;RnJlc2glMjBGb29kJTdDRnJlc2glMjBGcnVpdA==",      "departmentName": "Fresh Fruit",      "displayType": "Quantity",      "groupBulkBuyLimit": 0,      "gtin": "00000003260630",      "id": "288135169",      "increment": 0,      "isInFavourites": null,      "isNew": false,      "isRestrictedOrderAmendment": null,      "maxQuantityAllowed": 99,      "maxWeight": 0,      "minWeight": 0,      "modelMetadata": null,      "productType": "SingleProduct",      "quantityInBasket": null,      "restrictedDelivery": null,      "shelfId": "b;RnJlc2glMjBGb29kJTdDRnJlc2glMjBGcnVpdCU3Q09yYW5nZXMsJTIwTGVtb25zJTIwJiUyMENpdHJ1cyUyMEZydWl0JTdDQ2xlbWVudGluZXMlMjAmJTIwRWFzeSUyMFBlZWxlc…",      "shelfName": "Clementines & Easy Peelers",      "shortDescription": "Clementines, Mandarin",      "superDepartmentId": "b;RnJlc2glMjBGb29k",      "superDepartmentName": "Fresh Food",      "timeRestrictedDelivery": null,      "tpnb": "78922224",      "tpnc": "288135169",      "typename": "ProductType",      "reviews": {        "stats": {          "noOfReviews": 401,          "overallRating": 2.4,          "overallRatingRange": 5        }      },      "details": {        "components": [          {            "isLowEverydayPricing": false          }        ]      },      "images": {        "display": [          {            "default": {}          }        ]      },      "media": {        "defaultImage": {          "aspectRatio": 1        }      },      "sellers": {        "results": [          {            "fulfilment": null,            "id": "288135169",            "isForSale": true,            "seller": null,            "status": "AvailableForSale",            "price": {              "price": 2.2,              "actual": 2.2,              "unitOfMeasure": "kg",              "unitPrice": 3.67            },            "promotions": [              {                "description": "£1.49 Clubcard Price",                "endDate": "2026-11-03T00:00:00Z",                "id": "102760175",                "promotionType": null,                "startDate": "2026-10-05T23:00:00Z",                "unitSellingInfo": "£2.48/kg",                "price": {                  "afterDiscount": 2.2,                  "beforeDiscount": null                },                "attributes": [                  "CLUBCARD_PRICING"                ]              }            ]          }        ]      },      "description": [        "Clementines, Mandarin"      ],      "restrictions": []    }  ]}
Try it live, free
Input

What you send

The input object of the request, with every field the endpoint accepts.

  • Pass the returned catId unchanged as facet; a category name is only a label. Request up to 48 products per page, and keep the facet, page size and sort order fixed as you move through the pages.
  • The total count in each response tells you how many pages there are.
FieldTypeRequiredWhat it doesExample
facet string yes b;RnJlc2glMjBGb29kJTdDRnJlc2glMjBGcnVpdA== (Fresh Fruit). b;RnJlc2glMjBGb29kJTdDRnJlc2glMjBGcnVpdA==
count integer no Products per page. Defaults to 24. From 1 to 48. Default: 24. 5
include_raw boolean no Include the faithful GraphQL response envelope under raw. Defaults to false (normalized items only). Default: false.
page integer no 1-based shelf page. Defaults to 1. At least 1. Default: 1. 1
sort_by string no Observed values: relevance (default), price-ascending, price-descending. Allowed values: relevance, price-ascending, price-descending. Default: relevance. relevance
Response

Fields it returns

What each record in the response holds, with the values from the sample above.

FieldTypeWhat it isExample
items[].title string Product title as returned by Tesco; keep the pack information when comparing prices. Tesco Pink Lady Apples 5 Pack
items[].tpnc string Tesco product number, returned as id in these rows and accepted by the tpnc input. 284477542
items[].reviews object Review details for the product. 1 fields
items[].superDepartmentName string The top-level department name, such as Fresh Food. Fresh Food
items[].shelfName string The shelf name, such as Pink & Red Apples. Pink & Red Apples
items[].catchWeightList null Weight options for products sold by weight. null
items[].bulkBuyLimitMessage null Tesco's message about the order limit. null
items[].productType string The kind of product, such as a single product. SingleProduct
items[].groupBulkBuyLimit integer The order limit shared across a group of products. 0
items[].bulkBuyLimit integer The most of this product one order can hold. 99
items[].context null Extra details Tesco attaches to the listing. null
items[].aisleName string The aisle name, such as Apples & Pears. Apples & Pears
items[].aisleId string Tesco's ID for the aisle. b;RnJlc2glMjBGb29kJTdDRnJlc2glMjBGcnVpdCU3Q0FwcGxlcyUyMCYlMjBQZ…
items[].maxWeight integer Largest weight for products sold by weight. 0
items[].superDepartmentId string Tesco's ID for the top-level department. b;RnJlc2glMjBGb29k
items[].shelfId string Tesco's ID for the shelf. b;RnJlc2glMjBGb29kJTdDRnJlc2glMjBGcnVpdCU3Q0FwcGxlcyUyMCYlMjBQZ…
items[].media object Pictures and videos of the product. 1 fields
items[].media.defaultImage object The main product image. 1 fields
items[].bulkBuyLimitGroupId null The group of products that share one order limit. null
items[].quantityInBasket null Quantity in a shopper's basket; empty when signed out. null
items[].restrictedDelivery null Delivery limits on this product, when there are any. null
items[].displayType string How the price is shown, such as by quantity or by weight. Quantity
items[].sellers object Who sells the product. 1 fields
items[].sellers.results array The sellers of the product. 1 records
items[].averageWeight integer Average weight for products sold by weight. 0
items[].shortDescription string A short product description. Apples.
items[].images object Product images. 1 fields
items[].images.display array Images in the sizes Tesco shows. 1 records
items[].details object Product details. 1 fields
items[].details.components array The parts of the product description. 1 records
items[].restrictions array Restrictions on buying, such as age checks. empty in this sample
items[].timeRestrictedDelivery null Delivery time limits on this product, when there are any. null
items[].maxQuantityAllowed integer The most of this product one order can hold. 99
items[].increment integer The step between quantities you can order. 0
items[].baseProductId string Tesco's base product number, shared by pack sizes of one product. 77091643
items[].id string Tesco's product ID (TPNC) for this listing. 284477542
items[].description array The product description. Apples.
items[].modelMetadata null Extra details Tesco attaches to the listing. null
items[].minWeight integer Smallest weight for products sold by weight. 0
items[].tpnb string Tesco's base product number. 77091643
items[].brandName string The brand, such as TESCO. TESCO
items[].typename string The kind of record, such as ProductType. ProductType
items[].isInFavourites null Whether the product is in a shopper's favourites; empty when signed out. null
items[].reviews.stats object Rating summary: average and number of reviews. 3 fields
items[].isNew boolean Whether Tesco marks the product as new. false
items[].isRestrictedOrderAmendment null Whether orders with this product can be changed later. null
items[].adId null The ad's ID when the result is sponsored. null
items[].departmentName string The department name, such as Fresh Fruit. Fresh Fruit
items[].departmentId string Tesco's ID for the department. b;RnJlc2glMjBGb29kJTdDRnJlc2glMjBGcnVpdA==
items[].gtin string Product barcode as text; preserve its leading zeros. 00000003249833
items array The products or entries returned. 5 records
page object Page details: number, size and position. 8 fields
page.count integer How many items this response holds. 5
page.matchType null How Tesco matched the search, when it says. null
page.offset integer Where this page starts in the full results. 0
page.pageId null Tesco's ID for the page. null
page.pageNo integer The page number of these results. 1
page.pageSize integer How many items each page holds. 5
page.query object The search as Tesco read it. 3 fields
page.query.actualTerm null The search term Tesco used, when it changed yours. null
REST API · MCP server

Call it from your code, or ask your agent

Set UPSCRAPE_API_KEY to your key and copy a working request.

curl --request POST \  --url https://data.upscrape.com/execute \  --header "Authorization: Bearer $UPSCRAPE_API_KEY" \  --header "Content-Type: application/json" \  --header "Prefer: wait=30" \  --data '{  "capability": "tesco.category.products.list",  "input": {    "count": 5,    "facet": "b;RnJlc2glMjBGb29kJTdDRnJlc2glMjBGcnVpdA==",    "page": 1,    "sort_by": "relevance"  }}'
In your AI agent Claude · Cursor · any MCP client
1Add the Upscrape MCP server
https://data.upscrape.com/mcp
2Ask for the data in plain words

With Upscrape, get the Tesco category products for facet "b;RnJlc2glMjBGb29kJTdDRnJlc2glMjBGcnVpdA==" and sort by "relevance". Tell me what it costs before you run it, then show the results as a table.

The agent finds the endpoint, shows you the price, and runs it with your credits.
Tesco

More from the Tesco API

Same data, other platforms

The same data from other platforms

Questions

Tesco Category Products API FAQ

The short answers. The docs have the long ones.

Still have a question? Talk to the people who build the endpoints.
How much does the Tesco Category Products API cost?

1–8 credits per successful call, shown before it runs. You buy credits once, and paid credits never expire.

What do I send?

Send facet. The input fields below list every option with its type and limits.

Do I need a Tesco login?

No. It reads public Tesco data; nothing runs on your account.

Can my AI agent call it?

Yes, over MCP: the agent finds tesco.category.products.list, checks its price and runs it with the same credits as the REST API.

Get started

Your first Tesco call is free.

Up to 100 free credits to start, no card needed.