{
  "openapi": "3.0.1",
  "info": {
    "title": "Foot Locker Product Scraper",
    "description": "Scrape live sneaker, apparel, and accessory listings from Footlocker.com - search by keyword, browse by department/category or brand, or look up full product detail (price, rating, colors, images) by URL. No login required.",
    "version": "1.0",
    "x-build-id": "ghk5wFOxMqkeEdLwU"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/crawlerbros~footlocker-product-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-crawlerbros-footlocker-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/crawlerbros~footlocker-product-scraper/runs": {
      "post": {
        "operationId": "runs-sync-crawlerbros-footlocker-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/crawlerbros~footlocker-product-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-crawlerbros-footlocker-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",
        "required": [
          "mode"
        ],
        "properties": {
          "market": {
            "title": "Market",
            "enum": [
              "US",
              "CA",
              "AU"
            ],
            "type": "string",
            "description": "Which Foot Locker storefront to scrape. All 3 markets use the identical search/category/product URL structure. Applies to every mode.",
            "default": "US"
          },
          "mode": {
            "title": "Mode",
            "enum": [
              "search",
              "browseByCategory",
              "browseByBrand",
              "productDetail"
            ],
            "type": "string",
            "description": "What to fetch from Foot Locker.",
            "default": "search"
          },
          "searchQuery": {
            "title": "Search query (mode=search)",
            "type": "string",
            "description": "Free-text keyword search, e.g. `running shoes`, `Jordan 1`, `hoodie`.",
            "default": "running shoes"
          },
          "category": {
            "title": "Category (mode=browseByCategory)",
            "enum": [
              "mens-shoes",
              "mens-clothing",
              "mens-accessories",
              "womens-shoes",
              "womens-clothing",
              "womens-accessories",
              "kids-shoes",
              "kids-clothing",
              "kids-accessories"
            ],
            "type": "string",
            "description": "Department + product type to browse.",
            "default": "mens-shoes"
          },
          "brand": {
            "title": "Brand (mode=browseByBrand)",
            "enum": [
              "Nike",
              "Jordan",
              "adidas",
              "New Balance",
              "ASICS",
              "PUMA",
              "Reebok",
              "Converse",
              "Vans",
              "Under Armour",
              "Champion",
              "FILA",
              "Timberland",
              "Skechers",
              "Crocs",
              "On",
              "HOKA",
              "Birkenstock",
              "Saucony",
              "Brooks",
              "The North Face",
              "Columbia",
              "Levi's",
              "Dr. Martens",
              "UGG",
              "Kappa",
              "New Era",
              "Mitchell & Ness"
            ],
            "type": "string",
            "description": "Brand name to browse, e.g. `Nike`, `Jordan`, `adidas`, `New Balance`.",
            "default": "Nike"
          },
          "productUrls": {
            "title": "Product URLs (mode=productDetail)",
            "type": "array",
            "description": "Foot Locker product page URLs from any of the 3 supported markets, e.g. `https://www.footlocker.com/product/asics-gel-1130-mens/1A906001.html` (US) or `https://www.footlocker.ca/en/product/jordan-retro-5-mens/41587008.html` (CA). A URL's own market always overrides the `market` field above; only bare SKUs / relative paths resolve against `market`.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "minPrice": {
            "title": "Min price (USD)",
            "minimum": 0,
            "maximum": 100000,
            "type": "integer",
            "description": "Drop products cheaper than this."
          },
          "maxPrice": {
            "title": "Max price (USD)",
            "minimum": 0,
            "maximum": 100000,
            "type": "integer",
            "description": "Drop products pricier than this."
          },
          "minRating": {
            "title": "Min product rating (1-5)",
            "minimum": 1,
            "maximum": 5,
            "type": "integer",
            "description": "Drop products rated below this."
          },
          "onSaleOnly": {
            "title": "On sale only",
            "type": "boolean",
            "description": "Only emit products currently discounted below the original price. For `search`/`browseByBrand`, this is applied as a genuine catalog-wide server-side filter (not just a page-1 filter); a client-side check is also kept as a safety net for all modes.",
            "default": false
          },
          "newArrivalsOnly": {
            "title": "New arrivals only (mode=search, browseByBrand)",
            "type": "boolean",
            "description": "Only emit products Foot Locker currently flags as new arrivals. Applied as a genuine catalog-wide server-side filter for `search` and `browseByBrand` only — Foot Locker's category pages don't support this filter, so it has no effect on `browseByCategory`.",
            "default": false
          },
          "sortBy": {
            "title": "Sort results by",
            "enum": [
              "relevance",
              "priceLowToHigh",
              "priceHighToLow",
              "ratingHighToLow",
              "mostReviewed",
              "newArrivals",
              "nameAtoZ",
              "brandAtoZ"
            ],
            "type": "string",
            "description": "Result sort order. For `search`/`browseByBrand`, `priceLowToHigh`/`priceHighToLow`/`newArrivals`/`nameAtoZ`/`brandAtoZ` are ranked by Foot Locker's own server across the FULL catalog (not just the fetched page); `ratingHighToLow`/`mostReviewed` have no working server equivalent and are applied client-side to the fetched page only. For `browseByCategory`, every option is applied client-side only (Foot Locker's category pages ignore both the sort-suffix and `?sort=` query param).",
            "default": "relevance"
          },
          "maxItems": {
            "title": "Max items",
            "minimum": 1,
            "maximum": 300,
            "type": "integer",
            "description": "Hard cap on emitted records. NOTE: footlocker.com's search/browse pages serve a single fixed-size page of ~48 products per query with no working server-side pagination for non-browser clients (confirmed: the `currentPage` URL parameter its own \"next page\" links use, and common pageSize/limit variants, are all silently ignored — every value returns the identical first 48 results). A single search/browseByBrand/browseByCategory call is capped at that page's real product count regardless of this setting; request a more specific query/category or a different sort to see a different set of ~48 products.",
            "default": 20
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Optional Apify proxy. The actor does not require a proxy for normal operation; you can enable the free Datacenter (AUTO) group if you see blocked runs.",
            "default": {
              "useApifyProxy": 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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}