{
  "openapi": "3.0.1",
  "info": {
    "title": "Turkish Discount Market Scraper - A101, BİM, ŞOK Deals",
    "description": "Scrape weekly promotional catalogs (aktuel) from Turkey's three largest discount grocery chains in one run. Unified schema, historical BIM archive, no personal data.",
    "version": "0.1",
    "x-build-id": "IlPMxbbkzT5fXgR6m"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/caulleonard~tr-aktuel-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-caulleonard-tr-aktuel-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/caulleonard~tr-aktuel-scraper/runs": {
      "post": {
        "operationId": "runs-sync-caulleonard-tr-aktuel-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/caulleonard~tr-aktuel-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-caulleonard-tr-aktuel-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",
        "required": [
          "chains"
        ],
        "properties": {
          "chains": {
            "title": "Chains to scrape",
            "type": "array",
            "description": "Which discount chains to include in this run. Each chain is scraped independently, so a failure on one does not abort the others.",
            "items": {
              "type": "string",
              "enum": [
                "A101",
                "BIM",
                "SOK"
              ],
              "enumTitles": [
                "A101 (Aldin Aldin)",
                "BIM (Aktuel Urunler)",
                "SOK (Haftanin Firsatlari)"
              ]
            },
            "default": [
              "A101",
              "BIM",
              "SOK"
            ]
          },
          "a101Campaigns": {
            "title": "A101 campaign pages",
            "type": "array",
            "description": "A101 campaign page slugs to scrape, e.g. 'aldin-aldin' for the weekly deals, 'ekstra' for the marketplace catalog, 'kapida' for grocery delivery.",
            "default": [
              "aldin-aldin"
            ],
            "items": {
              "type": "string"
            }
          },
          "bimMaxDates": {
            "title": "BIM archive depth (number of dated catalogs)",
            "minimum": 0,
            "maximum": 40,
            "type": "integer",
            "description": "BIM publishes a separate catalog for each promotion date. 0 = only the current landing catalog. Higher values also pull past and upcoming dated catalogs, which is how you build a historical price archive.",
            "default": 2
          },
          "sokAutoDiscover": {
            "title": "Auto-discover SOK campaign collections",
            "type": "boolean",
            "description": "SOK rotates its campaign collection IDs every week. When enabled, the Actor reads the SOK homepage and follows the current collection links instead of relying on hardcoded URLs. Keep this on unless you supply your own URLs below.",
            "default": true
          },
          "sokUrls": {
            "title": "SOK collection URLs (optional)",
            "type": "array",
            "description": "Specific SOK collection or category URLs to scrape. Leave empty to rely on auto-discovery.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "sokMaxCollections": {
            "title": "SOK collections to follow",
            "minimum": 1,
            "maximum": 30,
            "type": "integer",
            "description": "How many discovered SOK collections to scrape, highest relevance first. Weekly deals and campaign pages rank above brand showcases, so a low number still gets you the pages that matter.",
            "default": 4
          },
          "sokMaxPages": {
            "title": "SOK pages per collection",
            "minimum": 1,
            "maximum": 50,
            "type": "integer",
            "description": "How many paginated pages to follow per SOK collection. Each page returns roughly 20 products.",
            "default": 3
          },
          "maxItems": {
            "title": "Maximum products",
            "minimum": 0,
            "type": "integer",
            "description": "Stop the run after this many products across all chains. Set 0 for no limit.",
            "default": 0
          },
          "onlyDiscounted": {
            "title": "Only products with a discount",
            "type": "boolean",
            "description": "When enabled, only products that show a struck-through original price are saved. Useful for tracking genuine markdowns rather than the full catalog.",
            "default": false
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Proxy settings. Turkish residential proxies give the most reliable results, but these sites are usually reachable without a proxy.",
            "default": {
              "useApifyProxy": true,
              "apifyProxyGroups": [
                "RESIDENTIAL"
              ],
              "apifyProxyCountry": "TR"
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}