{
  "openapi": "3.0.1",
  "info": {
    "title": "Checkers & Shoprite Scraper: Prices, Specials & Xtra Savings",
    "description": "Scrape Checkers and Shoprite (Shoprite group, Sixty60) products by search term, category or URL: prices, specials, Xtra Savings member prices with dates, multi-buys, barcodes, stock and unit prices, by region. For SA grocery price monitoring. Failed pages are free.",
    "version": "0.1",
    "x-build-id": "Ps7G2oj2xvx0JUl6f"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/zaiq~checkers-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-zaiq-checkers-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/zaiq~checkers-scraper/runs": {
      "post": {
        "operationId": "runs-sync-zaiq-checkers-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/zaiq~checkers-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-zaiq-checkers-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": {
          "banner": {
            "title": "Store brand",
            "enum": [
              "checkers",
              "shoprite"
            ],
            "type": "string",
            "description": "Checkers (checkers.co.za) or Shoprite (shoprite.co.za). Both belong to the Shoprite group and run the same Sixty60 site, with their own prices, specials and Xtra Savings deals. URLs must be from the brand chosen here.",
            "default": "checkers"
          },
          "searchTerms": {
            "title": "Search terms",
            "type": "array",
            "description": "Words to search for, as you would type them on the site (for example milk, coffee, nappies). A barcode (EAN-13) also works.",
            "items": {
              "type": "string"
            }
          },
          "startUrls": {
            "title": "Category, search or product URLs",
            "type": "array",
            "description": "Checkers or Shoprite pages: a category (https://www.checkers.co.za/department/...), a product list (.../search?plid=...), a search (.../search?Search=milk) or a product (.../product/...-10392555EA). A bare article number with its unit (10392555EA) works too. For shoprite.co.za links set Store brand to Shoprite.",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "maxItemsPerSource": {
            "title": "Max products per search term or URL",
            "minimum": 1,
            "maximum": 10000,
            "type": "integer",
            "description": "Stop each search term or category after this many products. A product URL always gives one.",
            "default": 100
          },
          "maxItems": {
            "title": "Max products in total",
            "minimum": 0,
            "maximum": 1000000,
            "type": "integer",
            "description": "Stop the whole run after this many products. 0 means no total limit (each search term or URL still stops at its own maximum, and your spending limit always applies).",
            "default": 0
          },
          "specialsOnly": {
            "title": "Only products on special",
            "type": "boolean",
            "description": "Return only products the site marks as on promotion (a lower price, a member price or a multi-buy deal).",
            "default": false
          },
          "sort": {
            "title": "Sort",
            "enum": [
              "relevance",
              "price_low",
              "price_high",
              "name"
            ],
            "type": "string",
            "description": "The order the site lists products in. With a product limit, this decides which products you get.",
            "default": "relevance"
          },
          "regions": {
            "title": "Regions",
            "type": "array",
            "description": "Prices, stock and ranging follow the stores that deliver to an address, and they differ between regions. Pick one or more cities (the city centre is used as the delivery address); every product is returned once per region. Leave empty for the site's default (no address).",
            "items": {
              "type": "string",
              "enum": [
                "cape-town",
                "johannesburg",
                "pretoria",
                "durban",
                "gqeberha",
                "east-london",
                "bloemfontein",
                "polokwane",
                "mbombela",
                "pietermaritzburg",
                "kimberley",
                "george",
                "rustenburg",
                "stellenbosch"
              ],
              "enumTitles": [
                "Cape Town",
                "Johannesburg (Sandton)",
                "Pretoria",
                "Durban",
                "Gqeberha (Port Elizabeth)",
                "East London",
                "Bloemfontein",
                "Polokwane",
                "Mbombela (Nelspruit)",
                "Pietermaritzburg",
                "Kimberley",
                "George",
                "Rustenburg",
                "Stellenbosch"
              ]
            },
            "default": []
          },
          "customLocations": {
            "title": "Other delivery locations (latitude,longitude)",
            "type": "array",
            "description": "Any other South African delivery location as latitude,longitude, for example -33.5779,18.4967.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "By default every request goes through South African home (residential) internet connections, as a shopper in South Africa would browse.",
            "default": {
              "useApifyProxy": true,
              "apifyProxyGroups": [
                "RESIDENTIAL"
              ],
              "apifyProxyCountry": "ZA"
            }
          },
          "maxConcurrency": {
            "title": "Requests at once",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "How many requests run at the same time. Kept low to stay polite to the site.",
            "default": 6
          }
        }
      },
      "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
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "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
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}