Skip to main content
Upscrape 2.0 is here. Live platform data for agents, apps, and workflows. Upscrape 2.0 is here. REST API and MCP, one connection. Explore capabilities

Tesco API

Compare Tesco shelf prices by pack, then check the product behind each Tesco link or TPNC.

Up to 100 free credits

Three ways into the Tesco API

Choose a category, browse its products or inspect a product you already know.

Start with a Tesco product link

This request reads Tesco Pink Lady Apples 5 Pack. Copy it into your script, then replace the product link with one you track.

Pink Lady apples · Tesco UK · cURL

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.product.detail.get",
  "input": {
    "tpnc": "https://www.tesco.com/groceries/en-GB/products/284477542"
  }
}'

Pink Lady apples · Tesco UK · Python

import json
import os
import requests

payload = json.loads(r'''{
  "capability": "tesco.product.detail.get",
  "input": {
    "tpnc": "https://www.tesco.com/groceries/en-GB/products/284477542"
  }
}''')

response = requests.post(
    "https://data.upscrape.com/execute",
    headers={
        "Authorization": f"Bearer {os.environ['UPSCRAPE_API_KEY']}",
        "Content-Type": "application/json",
        "Prefer": "wait=30",
    },
    json=payload,
)
response.raise_for_status()
print(json.dumps(response.json(), indent=2))

Pink Lady apples · Tesco UK · Node.js

const response = await fetch("https://data.upscrape.com/execute", {
  method: "POST",
  headers: {
    "Authorization": `Bearer ${process.env.UPSCRAPE_API_KEY}`,
    "Content-Type": "application/json",
    "Prefer": "wait=30",
  },
  body: JSON.stringify({
  "capability": "tesco.product.detail.get",
  "input": {
    "tpnc": "https://www.tesco.com/groceries/en-GB/products/284477542"
  }
}),
});

if (!response.ok) {
  throw new Error(`Upscrape request failed: ${response.status}`);
}

console.log(JSON.stringify(await response.json(), null, 2));

See the shelf, the pack and the category tree

The examples show real responses from all three endpoints. Read the table, inspect the JSON or download the data for your report.

Category products tesco.category.products.list

Request {"capability":"tesco.category.products.list","input":{"count":5,"facet":"b;RnJlc2glMjBGb29kJTdDRnJlc2glMjBGcnVpdA==","page":1,"sort_by":"relevance"}}

5 products from one Fresh Fruit page. Prices are in GBP; retain offer conditions and dates.

Category products
# Product , Product title as returned by Tesco; keep the pack information when comparing prices. TPNC , Tesco product number, returned as id in these rows and accepted by the tpnc input. Pack price (£) , Ordinary pack price in GBP. Keep any promotion separate, with its conditions and dates. Unit price (£) , GBP per returned unit, such as each or kg. Compare only matching units. Unit , Unit of measure attached to the unit price. Offer text , Promotion description where supplied. Check its start and end dates in the JSON before treating it as current.
1 Tesco Pink Lady Apples 5 Pack 284477542 2.9 0.58 each Not returned
2 Jaffa Easy Peelers 600g 288135169 2.2 3.67 kg £1.49 Clubcard Price
3 Parrs Toffee Apples Each 267479525 1.4 1.4 each £1.00 Clubcard Price
4 Tesco Blueberries 150G 287356888 2 13.33 kg Not returned
5 Tesco Finest Sweet Easy Peelers 600g 288115395 2.5 4.17 kg Not returned

Product details tesco.product.detail.get

Request {"capability":"tesco.product.detail.get","input":{"tpnc":"https://www.tesco.com/groceries/en-GB/products/284477542"}}

Individual reviews and contact/address fields are omitted from this public example.

Product details
# Product , Product title as returned by Tesco; keep the pack information when comparing prices. TPNC , Tesco product number, returned as id in these rows and accepted by the tpnc input. Brand , Brand name supplied by Tesco. GTIN , Product barcode as text; preserve its leading zeros. Pack price (£) , Ordinary pack price in GBP. Keep any promotion separate, with its conditions and dates. Unit price (£) , GBP per returned unit, such as each or kg. Compare only matching units. Unit , Unit of measure attached to the unit price.
1 Tesco Pink Lady Apples 5 Pack 284477542 TESCO 00000003249833 2.9 0.58 each

Category tree tesco.categories.list

Request {"capability":"tesco.categories.list","input":{}}

The table shows root categories; the JSON includes the complete nested tree. Use a category’s catId as the facet input.

Category tree
# Category , Category name in Tesco’s hierarchy. Facet , Returned catId to pass unchanged as facet to the category-products endpoint. Child categories , Number of immediate child categories. The complete nested tree is in the JSON.
1 Clothing & Accessories b;Q2xvdGhpbmclMjAmJTIwQWNjZXNzb3JpZXM= 11
2 Halloween b;SGFsbG93ZWVu 8
3 Christmas b;Q2hyaXN0bWFz 12
4 Tesco Finest b;VGVzY28lMjBGaW5lc3Q= 7
5 Marketplace b;TWFya2V0cGxhY2U= 19
6 Fresh Food b;RnJlc2glMjBGb29k 23
7 Bakery b;QmFrZXJ5 17
8 Frozen Food b;RnJvemVuJTIwRm9vZA== 19
9 Treats & Snacks b;VHJlYXRzJTIwJiUyMFNuYWNrcw== 13
10 Food Cupboard b;Rm9vZCUyMEN1cGJvYXJk 19
11 Drinks b;RHJpbmtz 22
12 Baby & Toddler b;QmFieSUyMCYlMjBUb2RkbGVy 17
13 Health & Beauty b;SGVhbHRoJTIwJiUyMEJlYXV0eQ== 19
14 Pets b;UGV0cw== 5
15 Household b;SG91c2Vob2xk 14
16 Home & Furniture b;SG9tZSUyMCYlMjBGdXJuaXR1cmU= 14
17 Garden, DIY & Car Care b;R2FyZGVuLCUyMERJWSUyMCYlMjBDYXIlMjBDYXJl 13
18 Electronics & Gaming b;RWxlY3Ryb25pY3MlMjAmJTIwR2FtaW5n 16
19 Toys & Games b;VG95cyUyMCYlMjBHYW1lcw== 15
20 Parties & Seasonal b;UGFydGllcyUyMCYlMjBTZWFzb25hbA== 6
21 Sports & Leisure b;U3BvcnRzJTIwJiUyMExlaXN1cmU= 15
22 Hobbies & Stationery b;SG9iYmllcyUyMCYlMjBTdGF0aW9uZXJ5 6
23 Kiosk b;S2lvc2s= 5
24 Inspiration & Events b;SW5zcGlyYXRpb24lMjAmJTIwRXZlbnRz 20

Image data


        

Keep Tesco price comparisons like for like

A product’s pack, unit and offer conditions change what its price means.

  • Keep TPNC with every observation

    TPNC identifies the product in a Tesco link. Save it alongside the pack title; a similar title alone is not enough to match packs.

  • Pack price and unit price answer different questions

    Compare the price of the whole pack first. For value comparisons, keep Tesco’s unit price together with its unit, such as each or kilogram.

  • Read an offer with its conditions

    Keep the promotion text, dates and membership or quantity conditions. Check the dates before reporting an offer as current; retain the ordinary pack price separately.

  • Catalog availability does not locate stock

    These requests take no postcode or store. A sale-status field cannot establish whether a shopper can receive that product at a particular address.

  • Use the category facet unchanged

    A category name is a label. Pass the returned catId unchanged as facet when collecting its products; avoid rebuilding it from the name.

  • One response covers one category page

    Request up to 48 products per page. Keep the facet, page size and sort order fixed as you advance through page numbers.

  • Category order is not keyword search rank

    The page follows a category’s returned order. It does not measure where a pack ranks for a shopper’s search term.

  • Save observations to build price history

    The API reads the current catalog. Store your collection time, request and product IDs so later runs can be compared with the same packs.

Ask your agent to compare Tesco packs

Connect Upscrape through MCP and ask for a Tesco shelf comparison or a product check. These prompts keep the comparison tied to real product IDs.

Prompt

Use Upscrape to read Tesco product 284477542. Show the pack price and unit price with its unit. Keep the product ID in the answer.

Prompt

Use Upscrape to find Tesco’s Fresh Fruit category and collect its first five products. Show the product ID, title, pack price and unit price. Only compare unit prices with matching units.

Prompt

Use Upscrape to collect the first two Tesco Fresh Fruit pages, with five products per page and relevance order. Combine them by product ID and state that this is a partial category scan.

Prompt

Use Upscrape to request ten Tesco Fresh Fruit products with price-ascending order. Show each ordinary pack price and unit in the returned order. Check whether those prices increase throughout the page; flag any differences instead of assuming they do.

Prompt

Use Upscrape to collect the first five Tesco Fresh Fruit products. Report any returned promotion text and dates next to the ordinary pack price. Keep membership conditions, and flag offers that have not started.

Step-by-step setup for

Teaches agents Tesco product IDs, category paging and pack-price comparisons. Save it as tesco-data/SKILL.md in your agent’s skills folder.

Answer the questions behind your Tesco report

Start with a shelf or a known product, then keep the evidence behind the comparison.

Are we comparing the same pack?

Pricing analysts match Tesco product IDs, pack titles and units before deciding whether a rival’s product is cheaper.

What does Tesco charge across this shelf?

Category teams collect successive pages from a chosen facet to build a pack-price comparison with the returned products.

Which of our products appear in the category?

Brand teams filter the collected category rows by brand and product ID. Record the pages collected so a partial scan stays visible.

Does a lower pack price mean better value?

Analysts compare returned unit prices on the same unit basis before treating differently sized packs as substitutes.

Which listed packs carry an offer?

Trade marketing teams inspect the promotions supplied with their tracked products and retain the offer conditions in the report.

Has our tracked Tesco pack changed?

E-commerce teams fetch known product IDs and compare saved descriptions and pack information with their previous observations.

Where should this product sit in our report?

Data teams use Tesco’s category tree and product category information to group a collected assortment consistently.

What moved since the last collection?

Reporting teams save repeated requests and compare matching product IDs over time. They build the history from their own observations.

Check the Tesco coverage before you connect

Practical answers about product links, category pages, offers and account access.

Is this an official Tesco API?

This is Upscrape’s Tesco grocery data API. It reads public catalog information through Upscrape’s service and uses your Upscrape API key. It does not connect to your Tesco shopping account. The request and response examples here describe this service, rather than an older Tesco developer API. Tesco API reference

What Tesco product data can I collect?

You can browse the category tree, collect products from a category and read a product by its Tesco link or ID. Product fields depend on what Tesco supplies. Inspect the sample JSON for the returned structure before choosing the columns your report needs. Tesco API reference

Can I search Tesco products by keyword?

Keyword search is currently unavailable. Start from the category tree to find a shelf, then collect its product pages. If you already have the product, send its Tesco link or TPNC directly. Category order should not be reported as a product’s keyword search rank. Tesco API reference

Can I get stock or prices for my postcode?

These endpoints do not accept a postcode or store. They return public UK catalog observations. Keep any returned availability field in that context: it does not confirm stock, delivery eligibility or the checkout price for a particular address. The API does not provide store-level inventory. Tesco API reference

Can I use a Tesco product URL instead of an ID?

Yes. Pass the Tesco product URL in the tpnc input, as shown in the code example. You can also pass the numeric TPNC from the URL. Retain that identifier with your saved response so later checks refer to the same Tesco product. Tesco API reference

How do I collect more than one category page?

Advance the page number while keeping the facet, count and sort_by inputs fixed. Count can be from 1 to 48; the default is 24. Read total_count alongside the returned items to plan collection. Catalog changes between requests mean a multi-page run is an observation, not a frozen snapshot. Tesco API reference

Can I sort Tesco category products by price?

Yes. Category requests accept relevance, price-ascending and price-descending and pass the choice to Tesco. Check returned prices before ranking the rows: Tesco’s order can differ from a simple sort of the ordinary pack prices. Compare unit prices on the same unit basis when judging value. Tesco API reference

Does this provide Tesco Clubcard account data?

No. These endpoints do not read Clubcard accounts, points or personal purchase histories. Product responses may contain publicly listed promotions, including membership conditions where supplied. Keep those conditions with the offer; a public product promotion does not establish what a particular shopper will pay. Tesco API reference

Does the API include historical Tesco prices?

It returns current catalog observations, not a supplied price-history dataset. Build your own history by scheduling requests and saving their collection times, product IDs and results. Compare the same packs across runs, and retain missing values as unknown rather than treating them as zero. Tesco API reference

Can I use the Tesco API with Python?

Yes. Send the JSON request to Upscrape’s execution API with your API key. The example on this page includes Python, cURL and Node.js versions of the same call. An HTTP workflow in n8n or Make can send that request too. Tesco API reference

Can an AI agent read Tesco grocery data?

Yes. Connect Upscrape through MCP in a supported client. Your agent can request the category tree, collect category pages and inspect known products. The downloadable Tesco skill explains the inputs and comparison rules. Agree a request limit with your agent before collecting a large category. Tesco API reference

Is the Tesco API free to try?

New accounts get up to 100 free credits. The endpoint cards show the current catalog prices, and failed requests are not charged. Try a known product or a small category page first to check whether the returned data fits your report before planning a larger collection. Tesco API reference

Can I place Tesco orders with this API?

No. The API reads catalog data for research and reporting. It does not create a Tesco basket, book a delivery slot, place an order or process a payment. Use the product and category responses to build your analysis rather than a Tesco checkout workflow. Tesco API reference

Try the Tesco pack you already track

Open the Tesco API in the playground and check a product link. New accounts get up to 100 free credits.