{
  "openapi": "3.0.1",
  "info": {
    "title": "Zara Product Scraper — Prices, Sizes & Stock",
    "description": "Scrape Zara into a clean 58-column dataset: price, discount, currency, colours, images, description and per-SKU sizes with stock, across 200+ country stores. Sweep the catalogue, one category, the sitemap, or paste product URLs. No account, API key or proxy needed.",
    "version": "1.0",
    "x-build-id": "TDSi7loXYrgNdWX00"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/sian.agency~zara-product-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-sian.agency-zara-product-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/sian.agency~zara-product-scraper/runs": {
      "post": {
        "operationId": "runs-sync-sian.agency-zara-product-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/sian.agency~zara-product-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-sian.agency-zara-product-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": {
          "mode": {
            "title": "🎛️ Run Mode",
            "enum": [
              "overview",
              "detail"
            ],
            "type": "string",
            "description": "**Overview** walks the category tree (and optionally the sitemap) and returns every product it finds.\n\n**Detail** takes the product URLs you paste below and returns one full record each. Detail mode needs at least one URL or it stops immediately.",
            "default": "overview"
          },
          "country": {
            "title": "🌍 Market",
            "enum": [
              "ad",
              "ae",
              "al",
              "am",
              "ao",
              "ar",
              "at",
              "au",
              "az",
              "ba",
              "be",
              "bg",
              "bh",
              "br",
              "by",
              "ca",
              "ch",
              "cl",
              "co",
              "cr",
              "cy",
              "cz",
              "de",
              "dk",
              "do",
              "dz",
              "ec",
              "ee",
              "eg",
              "es",
              "fi",
              "fr",
              "ge",
              "gr",
              "gt",
              "hk",
              "hn",
              "hr",
              "hu",
              "id",
              "ie",
              "il",
              "in",
              "is",
              "it",
              "jo",
              "jp",
              "kr",
              "kw",
              "kz",
              "lb",
              "lt",
              "lu",
              "lv",
              "ma",
              "mc",
              "me",
              "mk",
              "mo",
              "mt",
              "mx",
              "my",
              "ni",
              "nl",
              "no",
              "nz",
              "om",
              "pa",
              "pe",
              "ph",
              "pl",
              "pr",
              "pt",
              "py",
              "qa",
              "ro",
              "rs",
              "sa",
              "se",
              "sg",
              "si",
              "sk",
              "sv",
              "th",
              "tn",
              "tr",
              "tw",
              "ua",
              "uk",
              "us",
              "uy",
              "ve",
              "vn",
              "xe",
              "xk",
              "za"
            ],
            "type": "string",
            "description": "Two-letter zara.com market, lowercase — the first segment of a Zara URL. `de` for zara.com/de, `us` for zara.com/us.\n\nPrices, names and stock are per market, so the `country` column travels with every row.",
            "default": "de"
          },
          "language": {
            "title": "🗣️ Language",
            "enum": [
              "",
              "ar",
              "bg",
              "ca",
              "cs",
              "da",
              "de",
              "el",
              "en",
              "es",
              "et",
              "eu",
              "fi",
              "fr",
              "gl",
              "he",
              "hr",
              "id",
              "it",
              "ja",
              "ko",
              "lt",
              "lv",
              "mk",
              "nl",
              "no",
              "pl",
              "pt",
              "ro",
              "ru",
              "sk",
              "sl",
              "sq",
              "sr",
              "sv",
              "th",
              "tr",
              "uk",
              "vi",
              "zt"
            ],
            "type": "string",
            "description": "Two-letter language for names and descriptions. Leave empty to take the market default: `de` on zara.com/de, `en` on most other stores.\n\nAn unsupported code stops the run with the list the market does support.",
            "default": ""
          },
          "allCategories": {
            "title": "🗂️ Sweep All Categories",
            "type": "boolean",
            "description": "Walk every category in the tree. On by default so a bare run returns data.\n\n**This wins over the single category below.** Turn it off to scrape one category.\n\nCategories that are containers rather than product grids return nothing and are skipped, which is normal — the run summary counts them under `categoriesSkipped`.",
            "default": true
          },
          "category": {
            "title": "📂 Single Category",
            "type": "string",
            "description": "One Zara category, by numeric id or slug. Only grid categories hold products; landing pages return nothing.\n\nTurn off **Sweep All Categories** above or this field is ignored."
          },
          "fromSitemap": {
            "title": "🗺️ Also Crawl the Sitemap",
            "type": "boolean",
            "description": "After the categories, read the product sitemap and fetch everything the categories missed.\n\nThis is the expensive half of a full-catalogue run: each sitemap product costs two extra requests instead of riding a bulk call, so those rows are charged as the \"Scraped product detail\" event at $0.0075 instead of $0.0025 — 3× the category-sweep price.\n\nUse it when you want the complete catalogue rather than what merchandising currently surfaces.",
            "default": false
          },
          "maxItems": {
            "title": "🔢 Max Products",
            "minimum": 0,
            "type": "integer",
            "description": "Stop after this many products. `0` means no cap — the run goes until the catalogue is exhausted.\n\nDuplicates are removed before the cap is counted, so the number you set is the number of distinct products you get.",
            "default": 100
          },
          "withSizes": {
            "title": "📐 Fetch Sizes & SKUs (Zara)",
            "type": "boolean",
            "description": "Zara's grid ships no sizes and no description. Switch this on and the actor fetches the detail record for every product, ten ids per request, and merges it into the grid row.\n\nThat adds per-SKU sizes, stock, the description, Zara's demand signal, twinned SKUs and the first-seen date. It costs one request per ten products.\n\nBilling: these rows genuinely cost both calls and are charged both events — $0.0025 + $0.0075 = $0.01 per product.",
            "default": false
          },
          "productUrls": {
            "title": "🔗 Product URLs or IDs",
            "uniqueItems": true,
            "type": "array",
            "description": "One product per line. A full Zara product URL works, and so does the bare `?v2=` number.\n\nA Zara URL without `?v2=` carries only the SEO id, which no endpoint accepts, so the actor opens the page once to resolve it. That is one extra request per URL.",
            "items": {
              "type": "string"
            }
          },
          "sort": {
            "title": "↕️ Sort",
            "enum": [
              "default",
              "price-asc",
              "price-desc",
              "novelty"
            ],
            "type": "string",
            "description": "Zara publishes a pre-sorted id list per sort option; there is no server-side sort parameter. Sort options are per category, and many categories publish none at all.\n\nIf you named a single category and it does not offer the sort you picked, the run stops and prints what it does offer. During a **Sweep All Categories** run the category is skipped instead and counted under `categoriesSkipped`, so a sort can quietly shrink a sweep — check that count in the run summary.",
            "default": "default"
          },
          "filters": {
            "title": "🎚️ Facet Filters",
            "uniqueItems": true,
            "type": "array",
            "description": "Facet filters as `GROUP=VALUE`, one per line. Values in the same group are OR-ed, different groups are AND-ed.\n\nZara ships each facet value with its own product ids, so filtering is a set intersection, not a query parameter. Use the group ids Zara publishes — `color`, `size` and the dynamic grid groups.\n\nGroups and values are per category, and many publish none. A group the category does not offer stops the run and prints the ones it does. For price, use Min and Max below.",
            "items": {
              "type": "string"
            }
          },
          "minPrice": {
            "title": "💶 Min Price",
            "minimum": 0,
            "type": "integer",
            "description": "Drop products cheaper than this, in major units of the market currency. Leave empty for no floor."
          },
          "maxPrice": {
            "title": "💶 Max Price",
            "minimum": 0,
            "type": "integer",
            "description": "Drop products dearer than this, in major units of the market currency. Leave empty for no ceiling."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}