{
  "openapi": "3.0.1",
  "info": {
    "title": "Tesco UK & Ireland Scraper - Prices, GTIN & Nutrition",
    "description": "Scrape Tesco UK and Ireland groceries by category, keyword or URL. Get GTIN/EAN barcode, brand, price, unit price, Clubcard promotions, availability, category taxonomy, images, ratings, ingredients, allergens and nutrition. Export to JSON, CSV or Excel.",
    "version": "1.0",
    "x-build-id": "Dg3A4Vwd1EfnG48bD"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/vulnv~tesco-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-vulnv-tesco-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/acts/vulnv~tesco-scraper/runs": {
      "post": {
        "operationId": "runs-sync-vulnv-tesco-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor and returns information about the initiated run in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runsResponseSchema"
                }
              }
            }
          }
        }
      }
    },
    "/acts/vulnv~tesco-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-vulnv-tesco-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "inputSchema": {
        "type": "object",
        "properties": {
          "region": {
            "title": "Region",
            "enum": [
              "UK",
              "IE"
            ],
            "type": "string",
            "description": "Which Tesco store to scrape. Ignored for entries in 'Tesco URLs', where the region is taken from the URL itself.",
            "default": "UK"
          },
          "categories": {
            "title": "Categories",
            "uniqueItems": true,
            "type": "array",
            "description": "Grocery categories to scrape. Leave empty if you are using a keyword or URLs instead. Some categories exist in only one of the two stores, as marked.",
            "items": {
              "type": "string",
              "enum": [
                "all",
                "fresh-food",
                "bakery",
                "frozen-food",
                "treats-and-snacks",
                "food-cupboard",
                "drinks",
                "baby-and-toddler",
                "health-and-beauty",
                "pets",
                "household",
                "home-and-furniture",
                "home-and-living",
                "tesco-finest",
                "clothing-and-accessories",
                "marketplace",
                "electronics-and-gaming",
                "garden-diy-and-car-care",
                "toys-and-games",
                "parties-and-seasonal",
                "sports-and-leisure",
                "hobbies-and-stationery",
                "kiosk",
                "inspiration-and-events"
              ],
              "enumTitles": [
                "All categories in the selected region",
                "Fresh Food",
                "Bakery",
                "Frozen Food",
                "Treats & Snacks",
                "Food Cupboard",
                "Drinks",
                "Baby & Toddler",
                "Health & Beauty",
                "Pets",
                "Household",
                "Home & Furniture (UK only)",
                "Home & Living (IE only)",
                "Tesco Finest (IE only)",
                "Clothing & Accessories (UK only)",
                "Marketplace (UK only)",
                "Electronics & Gaming (UK only)",
                "Garden, DIY & Car Care (UK only)",
                "Toys & Games (UK only)",
                "Parties & Seasonal (UK only)",
                "Sports & Leisure (UK only)",
                "Hobbies & Stationery (UK only)",
                "Kiosk (UK only)",
                "Inspiration & Events"
              ]
            },
            "default": [
              "fresh-food"
            ]
          },
          "keyword": {
            "title": "Search keyword",
            "type": "string",
            "description": "Search the store for a product term, e.g. 'oat milk'. Runs in addition to any categories or URLs you set."
          },
          "urls": {
            "title": "Tesco URLs",
            "type": "array",
            "description": "Product, category or search URLs to scrape. Product URLs are fetched directly; category and search URLs are paginated like any other listing.",
            "items": {
              "type": "string"
            }
          },
          "maxItems": {
            "title": "Max products",
            "minimum": 1,
            "maximum": 100000,
            "type": "integer",
            "description": "Stop after this many products across the whole run. Free-plan users are capped at 50 per run.",
            "default": 200
          },
          "maxPages": {
            "title": "Max pages per listing",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "How many listing pages to walk per category, search or listing URL. Each page holds up to 1,000 products.",
            "default": 1
          },
          "pageOffset": {
            "title": "Start at page",
            "minimum": 1,
            "maximum": 10000,
            "type": "integer",
            "description": "First listing page to fetch. Use it to resume a large crawl where a previous run stopped.",
            "default": 1
          },
          "includeProductDetails": {
            "title": "Include product page details",
            "type": "boolean",
            "description": "Adds description, pack size, ingredients, allergens, nutrition and storage. Fetched in batches of 15, so it is cheap; turn it off only for the largest price-and-stock sweeps.",
            "default": true
          },
          "includeReviews": {
            "title": "Include customer reviews",
            "type": "boolean",
            "description": "Add the 10 most recent customer reviews to each product, as published on the product page. The overall rating and total review count are always included, with or without this option.",
            "default": false
          },
          "onlyUnique": {
            "title": "Only unique products",
            "type": "boolean",
            "description": "Drop repeats when the same product appears in more than one category, search or page.",
            "default": true
          }
        }
      },
      "runsResponseSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "actId": {
                "type": "string"
              },
              "userId": {
                "type": "string"
              },
              "startedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "finishedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "status": {
                "type": "string",
                "example": "READY"
              },
              "meta": {
                "type": "object",
                "properties": {
                  "origin": {
                    "type": "string",
                    "example": "API"
                  },
                  "userAgent": {
                    "type": "string"
                  }
                }
              },
              "stats": {
                "type": "object",
                "properties": {
                  "inputBodyLen": {
                    "type": "integer",
                    "example": 2000
                  },
                  "rebootCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "restartCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "resurrectCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "computeUnits": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "options": {
                "type": "object",
                "properties": {
                  "build": {
                    "type": "string",
                    "example": "latest"
                  },
                  "timeoutSecs": {
                    "type": "integer",
                    "example": 300
                  },
                  "memoryMbytes": {
                    "type": "integer",
                    "example": 1024
                  },
                  "diskMbytes": {
                    "type": "integer",
                    "example": 2048
                  }
                }
              },
              "buildId": {
                "type": "string"
              },
              "defaultKeyValueStoreId": {
                "type": "string"
              },
              "defaultDatasetId": {
                "type": "string"
              },
              "defaultRequestQueueId": {
                "type": "string"
              },
              "buildNumber": {
                "type": "string",
                "example": "1.0.0"
              },
              "containerUrl": {
                "type": "string"
              },
              "usage": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "integer",
                    "example": 1
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "usageTotalUsd": {
                "type": "number",
                "example": 0.00005
              },
              "usageUsd": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "number",
                    "example": 0.00005
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}