# Tesco Product Scraper API (x402)

> Tesco Product Scraper API (x402) is a paid API for AI agents from x402.186-241-26-229.sslip.io, paid per call via x402, $0.025/call, status unknown (last checked 2026-10-02).

Scrapes structured product data (name, price, brand, IDs, nutrition) from Tesco UK and Ireland storefronts by keyword search or URL, billed per successful call.

## Facts

- Endpoint: POST https://x402.186-241-26-229.sslip.io/v1/tesco?utm_source=zero.xyz
- Price: $0.025/call
- Payment: x402
- Status: unknown
- Last checked: 2026-10-02
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/tesco-product-scraper-api-x402-6b180e94
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_6Bpb49L9HUYZC4pR52ECj

Status and success rate cover calls made through Zero and Zero's own probes. Third-party monitors may report differently.

## How to call it through Zero

Zero handles the 402 payment challenge and records the run. With the Zero CLI installed (`npm i -g @zeroxyz/cli`):

```sh
zero fetch --capability tesco-product-scraper-api-x402-6b180e94 -d '<json body>'
```

Example prompt: Search Tesco UK for 'oat milk' and 'almond milk' — give me up to 50 products across both searches, up to 3 pages each, with unique products only.

## When to prefer this

Use this endpoint when you need structured, machine-readable product data from Tesco (UK or Ireland) without building or maintaining your own web scraper. It is ideal for price intelligence, catalogue extraction, nutrition research, or competitive analysis on Tesco's grocery range. The pay-per-successful-call model (failed/empty runs are free) makes it low-risk for exploratory queries. Prefer it over generic web scrapers when you specifically need Tesco-formatted product fields like GTIN, SKU, and base product ID.

## Known failure modes

- Tesco website blocks scraping — endpoint returns empty results (not charged)
- Invalid or private URLs return no items
- Region mismatch between URL domain and region parameter may yield empty results
- maxItems cap reached before all pages are read, returning a partial dataset
- Product detail pages blocked — falls back to listing-level fields only

## How this service works

Pay-per-call structured web data. Failed or empty runs are not charged.

## Output

Returns a JSON object with a count and an array of product items, each containing fields such as SKU, GTIN, product name, price, brand name, product ID, base product ID, and description (and optionally ingredients/nutrition if includeProductDetails is true). Empty or failed runs are not charged.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "properties": {
  "urls": {
   "type": "array",
   "items": {
    "type": "string"
   },
   "description": "Public Tesco search, category, or product URLs. Listing pages are more reliable than product detail pages."
  },
  "region": {
   "enum": [
    "IE",
    "UK"
   ],
   "type": "string",
   "default": "IE",
   "description": "Choose the Ireland or United Kingdom storefront for keyword searches. URLs use their own domain."
  },
  "keywords": {
   "type": "array",
   "items": {
    "type": "string"
   },
   "description": "Search each phrase separately in the selected region. Use a few specific phrases for focused results."
  },
  "maxItems": {
   "type": "integer",
   "default": 100,
   "minimum": 0,
   "description": "Stop after this many dataset rows across all searches and URLs. Zero removes the cap."
  },
  "maxPages": {
   "type": "integer",
   "default": 2,
   "maximum": 100,
   "minimum": 1,
   "description": "Maximum listing pages to read for each keyword or listing URL."
  },
  "startPage": {
   "type": "integer",
   "default": 1,
   "minimum": 1,
   "description": "First listing page to read. Page numbering starts at 1."
  },
  "onlyUnique": {
   "type": "boolean",
   "default": true,
   "description": "Remove repeated product IDs within each region across searches and pages."
  },
  "includeProductDetails": {
   "type": "boolean",
   "default": false,
   "description": "Try public product pages for ingredients, nutrition, and other optional details. If blocked, return listing fields."
  }
 }
}
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "count": 1,
  "items": [
   {
    "sku": null,
    "gtin": null,
    "name": null,
    "price": null,
    "brandName": null,
    "productId": null,
    "description": null,
    "baseProductId": null
   }
  ],
  "product": "tesco"
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/tesco-product-scraper-api-x402-6b180e94/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from x402.186-241-26-229.sslip.io](https://www.zero.xyz/host/x402.186-241-26-229.sslip.io/llms.txt)
