{
  "openapi": "3.0.1",
  "info": {
    "title": "Decathlon US Scraper: Products, Prices & Stock",
    "description": "Scrape Decathlon US products: name, price, SKU, every size and color variant with its own price and stock status, vendor sub-brand, category, images, description. Filter by vendor, category, price, stock, gender, or sport. Includes a price and stock change monitoring mode.",
    "version": "0.1",
    "x-build-id": "alDuyDCdWXZmKwXWE"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/getascraper~decathlon-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-getascraper-decathlon-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/getascraper~decathlon-scraper/runs": {
      "post": {
        "operationId": "runs-sync-getascraper-decathlon-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/getascraper~decathlon-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-getascraper-decathlon-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": {
          "startUrls": {
            "title": "Collection URLs (optional)",
            "type": "array",
            "description": "Paste one or more decathlon.com collection page URLs (e.g. https://www.decathlon.com/collections/camping-tents) to scrape only those collections' products. Leave empty to crawl the entire catalog via the full products feed instead.",
            "default": [],
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "maxItems": {
            "title": "Max Products",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum number of products to scrape across all sources. Set to 0 for no limit (full catalog).",
            "default": 100
          },
          "productType": {
            "title": "Category / Product Type Contains",
            "type": "string",
            "description": "Only keep products whose product_type field contains this text (case-insensitive), e.g. 'Down jacket', 'Tent', 'Running shoes'. Leave empty for all categories.",
            "default": ""
          },
          "vendor": {
            "title": "Vendor / Sub-Brand",
            "type": "string",
            "description": "Only keep products from this vendor/sub-brand (case-insensitive exact match), e.g. 'Quechua', 'Kalenji', 'Domyos', 'Simond', 'Decathlon'. Leave empty for all vendors.",
            "default": ""
          },
          "gender": {
            "title": "Gender",
            "enum": [
              "",
              "MEN'S",
              "WOMEN'S",
              "BOYS'",
              "GIRLS'",
              "UNISEX"
            ],
            "type": "string",
            "description": "Only keep products tagged with this gender in Decathlon's own 'GENDER: ...' tag taxonomy (parsed from the tags array). Leave empty for all genders. Note: tag taxonomy is not present on every product, so this filter naturally excludes untagged items.",
            "default": ""
          },
          "sport": {
            "title": "Sport Contains",
            "type": "string",
            "description": "Only keep products whose parsed 'SPORT: ...' tag(s) contain this text (case-insensitive), e.g. 'camping', 'mountain trekking', 'running'. Leave empty for all sports.",
            "default": ""
          },
          "minPrice": {
            "title": "Minimum Price (USD)",
            "minimum": 0,
            "type": "integer",
            "description": "Only keep products with at least one variant priced at or above this amount, in USD.",
            "default": 0
          },
          "maxPrice": {
            "title": "Maximum Price (USD)",
            "minimum": 0,
            "type": "integer",
            "description": "Only keep products with at least one variant priced at or below this amount, in USD. Set to 0 for no upper limit.",
            "default": 0
          },
          "inStockOnly": {
            "title": "In-Stock Only",
            "type": "boolean",
            "description": "When enabled, only keep products with at least one variant currently marked available. When disabled, out-of-stock products are included too (with their variants' stock status still shown per-variant).",
            "default": false
          },
          "proxyConfiguration": {
            "title": "Proxy Configuration",
            "type": "object",
            "description": "decathlon.com's public Shopify products.json feed is a standard unauthenticated, unprotected storefront API (confirmed: plain GET requests succeed with no anti-bot challenge). Datacenter proxy is sufficient and far cheaper than residential; only switch to residential if you observe blocking.",
            "default": {
              "useApifyProxy": true
            }
          },
          "maxRequestRetries": {
            "title": "Max Retries Per Request",
            "minimum": 0,
            "type": "integer",
            "description": "How many times to retry a failed page-fetch request before giving up on it.",
            "default": 3
          },
          "maxConcurrency": {
            "title": "Max Concurrency",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "Maximum number of parallel requests against decathlon.com.",
            "default": 5
          },
          "onlyChangedProducts": {
            "title": "Only New / Changed Products (Monitoring)",
            "type": "boolean",
            "description": "When enabled, the first run builds a baseline of every product's id, price(s), and stock status. Later runs with the same Monitoring State Key only output products that are new, or whose price or stock status changed since the last run, turning this into a price/stock-change monitor for scheduled runs.",
            "default": false
          },
          "monitoringStateKey": {
            "title": "Monitoring State Key",
            "type": "string",
            "description": "Identifies the seen-products baseline in the key-value store. Use a distinct key per saved query/schedule so multiple monitors do not share state.",
            "default": "default"
          },
          "resetMonitoringState": {
            "title": "Reset Monitoring Baseline",
            "type": "boolean",
            "description": "Clear the stored baseline for the given Monitoring State Key before this run, so all matching products are treated as new/changed again.",
            "default": false
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}