Tesco APItesco.com ↗
Access Tesco's grocery catalog via API. Search products, browse categories, retrieve nutrition and allergen data, customer reviews, and active promotions.
What is the Tesco API?
The Tesco API provides 5 endpoints covering Tesco's UK grocery catalog, from full-text product search to detailed nutrition panels and live promotional offers. The search_products endpoint returns paginated listings with pricing, brand, GTIN, department hierarchy, and per-unit pricing. Use get_product_details to retrieve ingredients, allergen information, storage instructions, and paginated customer reviews for any product identified by its TPNC.
curl -X GET 'https://api.parse.bot/scraper/f638033e-e80b-4d9a-9bd7-09fbd184bef1/search_products?page=1&count=5&query=milk' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace tesco-com-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""
Tesco Groceries API – search products, browse categories, inspect nutrition and reviews.
"""
from parse_apis.tesco_groceries_api import Tesco, Product, ProductDetail, Category
tesco = Tesco()
# Search for products
for product in tesco.products.search(query="oat milk", count=5):
print(product.title, product.price, product.unit_of_measure)
# Get full product details by tpnc
detail = tesco.productdetails.get(tpnc="262586694")
print(detail.title, detail.brand_name)
print(detail.details.features)
for item in detail.details.nutrition_info or []:
print(item.name, item.per_comp)
# Browse reviews
for review in detail.reviews.entries:
print(review.rating.value, review.summary, review.verified_buyer)
# Browse a category
cat = tesco.category(facet="b;RnJlc2glMjBGb29k")
for product in cat.list_products(count=5):
print(product.title, product.brand, product.rating)
# Autocomplete suggestions
for term in tesco.suggestions.search(query="choc"):
print(term)
Full-text search over Tesco's grocery catalog. Returns paginated product listings with pricing, promotions, and ratings. Each result carries enough identity (tpnc) to drill into full details via get_product_details. Pagination via integer page counter; server default is 24 items per page.
| Param | Type | Description |
|---|---|---|
| page | integer | Page number to retrieve |
| count | integer | Number of items to return per page |
| queryrequired | string | Search keyword (e.g. 'milk', 'bread', 'lactose free milk') |
{
"type": "object",
"fields": {
"products": "array of product objects with id, tpnc, tpnb, gtin, title, brand, description, image_url, department info, price, unit_price, unit_of_measure, promotions, rating, review_count, url",
"pagination": "object with total, page, count, pageSize"
},
"sample": {
"data": {
"products": [
{
"id": "262586694",
"url": "https://www.tesco.com/groceries/en-GB/products/262586694",
"gtin": "05036589201601",
"tpnb": "61332466",
"tpnc": "262586694",
"aisle": "Milk",
"brand": "Yeo Valley",
"price": 3.15,
"shelf": "Whole Milk",
"title": "Yeo Valley Organic Fresh Whole Milk 2L",
"rating": 4.7,
"image_url": "https://digitalcontent.api.tesco.com/v2/media/ghs/9fe281fc-c5c0-41ef-8d14-e5d4b0f72f7c/ff990aaa-bd88-438a-8169-36d10d436d1e_1491621793.jpeg?h=225&w=225",
"department": "Milk, Butter & Eggs",
"promotions": [],
"unit_price": 1.58,
"description": null,
"review_count": 131,
"unit_of_measure": "litre",
"super_department": "Fresh Food"
}
],
"pagination": {
"page": 1,
"count": 6,
"total": 381,
"pageSize": 5,
"__typename": "ListInfoType"
}
},
"status": "success"
}
}About the Tesco API
Product Search and Category Browsing
The search_products endpoint accepts a query string and returns paginated product arrays, each containing tpnc, tpnb, gtin, title, brand, description, image_url, department hierarchy fields, price, unit_price, and unit. Pagination is controlled with page and count parameters; the server default page size is 24. The list_category endpoint mirrors this response shape but filters by a facet ID — a base64-encoded category identifier found in Tesco's site navigation (for example, b;RnJlc2glMjBGb29k for Fresh Food).
Product Details, Nutrition, and Reviews
get_product_details takes a tpnc identifier from any search or category result and returns the full product record. The details object includes ingredients, allergenInfo, storage, nutritionInfo, netContents, recyclingInfo, and features. The reviews object includes per-entry review data alongside aggregate stats such as overallRating, noOfReviews, and ratingsDistribution. Review pagination uses reviews_offset and reviews_limit parameters. Active promotions on the product are returned as an array with description, startDate, endDate, attributes, and promotional price.
Promotions and Autocomplete
get_promotions returns currently active public grocery promotions — Clubcard Prices, standard reductions, and multibuy offers — paginated with a maximum count of 50 per page. Each promoted product includes super_department, department, aisle, and promotional pricing fields. Marketplace products, clothing, and electronics are excluded from this endpoint. get_suggestions accepts a partial query string and returns an array of ranked suggestion strings, useful for building type-ahead search or discovering popular query variations.
The Tesco API is a managed, monitored endpoint for tesco.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when tesco.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official tesco.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Build a grocery price tracker by polling
search_productsand recordingpriceandunit_priceover time - Power a dietary filter tool using
allergenInfoandnutritionInfofromget_product_details - Aggregate active promotions from
get_promotionsto surface Clubcard Prices and multibuy deals in a deal-finding app - Populate a product comparison table with
ingredients,netContents, andnutritionInfoacross multiple TPNCs - Implement type-ahead search in a grocery shopping app using
get_suggestionswith partial query strings - Browse an entire category by
facetID withlist_categoryto catalog department-level product ranges and pricing - Analyze customer sentiment by collecting
ratingsDistributionand individual review entries fromget_product_details
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 200 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
| Team | $300/mo | 20,000 | 300 req/min |
| Company | $1,000/mo | 100,000 | 500 req/min |
Each endpoint has a fixed posted price per successful call — most fall between 1 and 10 credits — shown on this API's page before you run it. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does Tesco have an official developer API?+
What does `get_product_details` return beyond basic product info?+
details object containing ingredients, allergenInfo, storage, nutritionInfo, netContents, recyclingInfo, and features. It also includes a reviews object with individual review entries, aggregate overallRating, noOfReviews, and a ratingsDistribution breakdown, plus an array of active promotions with dates and promotional pricing.How do category facet IDs work in `list_category`?+
facet parameter accepts a base64-encoded category identifier — for example, b;RnJlc2glMjBGb29k maps to Fresh Food. These identifiers correspond to category nodes in Tesco's site navigation. The endpoint returns the same product object shape as search_products, so pagination via page and count works identically.Does the API cover Tesco's Marketplace third-party sellers or non-grocery departments like clothing and electronics?+
get_promotions and are not part of the standard grocery catalog endpoints. You can fork this API on Parse and revise it to add an endpoint targeting those product segments.