{
  "openapi": "3.0.1",
  "info": {
    "title": "KLEKT Sneaker & Apparel Resale Scraper",
    "description": "Scrape sneaker and streetwear listings from KLEKT (klekt.com). Browse the catalog with filters and extract product details, prices, and availability for resale market research and price monitoring.",
    "version": "0.1",
    "x-build-id": "KByCi8Nf2IZsmqYAk"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/abotapi~klekt-com-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-abotapi-klekt-com-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/abotapi~klekt-com-scraper/runs": {
      "post": {
        "operationId": "runs-sync-abotapi-klekt-com-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/abotapi~klekt-com-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-abotapi-klekt-com-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": {
          "mode": {
            "title": "Scrape mode",
            "enum": [
              "browse",
              "product-urls",
              "sitemap"
            ],
            "type": "string",
            "description": "Browse walks the KLEKT catalogue page by page using the strategy and filters below — this is the default and needs no other input. Product URLs scrapes the exact listing pages you paste. Full catalogue streams every product from the official sitemaps (about 15,000 products) and ignores the browse filters.",
            "default": "browse"
          },
          "productUrls": {
            "title": "Product URLs",
            "type": "array",
            "description": "KLEKT product page URLs to scrape (one per line). Only applies in Product URLs mode. New products are https://klekt.com/product/new/<slug>; pre-owned listings are https://klekt.com/product/used/<listing-id>.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "strategy": {
            "title": "Catalogue section",
            "enum": [
              "trending",
              "used",
              "sale",
              "drops",
              "upcoming",
              "gift_cards"
            ],
            "type": "string",
            "description": "Which KLEKT catalogue section to walk. After KLEKT rebuilt its storefront (October 2026) only 'On sale' still narrows the catalogue as its own section; the other names are kept for saved tasks but walk the full catalogue (the run log says so when one is picked). 'Trending' (the default) walks the full catalogue.",
            "default": "trending"
          },
          "brand": {
            "title": "Brand",
            "type": "string",
            "description": "Filter to one brand, written the way KLEKT displays it (capitals and spaces, not a slug). Observed brands: Nike, Adidas, Air Jordan, New Balance, Yeezy, Asics, Nike SB, Crocs, On, Vans, Saucony, Supreme, Reebok, Converse, Puma, Travis Scott, Luxury, The North Face, Under Armour, Off White, Palace, Rick Owens, Stussy, Timberland, Mizuno, Karhu, Clarks, Fear Of God, Axel Arigato, Kaws, Ugg, Brooks, Brands Other. KLEKT's brand list differs per section, so this is free text; a brand that section does not carry simply returns no products.",
            "default": ""
          },
          "brandLine": {
            "title": "Brand line / model family",
            "type": "string",
            "description": "Optional narrower model family inside a brand. KLEKT's rebuilt catalogue no longer offers a server-side brand-line filter, so this is dropped with a note in the run log when set.",
            "default": ""
          },
          "productCategory": {
            "title": "Product category",
            "enum": [
              "",
              "Sneakers",
              "Streetwear",
              "Accessories"
            ],
            "type": "string",
            "description": "Limit to one KLEKT product category. These three are the complete set — their counts add up to the unfiltered total. Leave on Any for everything.",
            "default": ""
          },
          "sizeCategory": {
            "title": "Size category",
            "enum": [
              "",
              "Men",
              "Women",
              "Youth",
              "Default"
            ],
            "type": "string",
            "description": "Limit to one KLEKT size category. KLEKT's rebuilt catalogue no longer offers a server-side size-category filter, so this is dropped with a note in the run log when set.",
            "default": ""
          },
          "sizeMetric": {
            "title": "Size system (needed for Size)",
            "enum": [
              "",
              "US",
              "UK",
              "EU",
              "CM",
              "US-Men",
              "US-Women",
              "US-Kids",
              "Men-US",
              "WMNS_WOMEN_US",
              "FR",
              "IT",
              "DE",
              "Inch",
              "Length",
              "Presto",
              "model"
            ],
            "type": "string",
            "description": "The size system the Size field is written in. KLEKT's rebuilt catalogue no longer offers a server-side size filter, so this is dropped with a note in the run log when set.",
            "default": ""
          },
          "size": {
            "title": "Size (needs Size system)",
            "type": "string",
            "description": "One size, written the way KLEKT writes it (e.g. 10, 10.5, 44, M4/W6). KLEKT's rebuilt catalogue no longer offers a server-side size filter, so this is dropped with a note in the run log when set.",
            "default": ""
          },
          "boxCondition": {
            "title": "Box condition",
            "enum": [
              "",
              "good",
              "missing_lid",
              "damaged",
              "no_box",
              "replacement_box"
            ],
            "type": "string",
            "description": "Condition of the shoe box. KLEKT's rebuilt catalogue no longer offers a server-side box-condition filter, so this is dropped with a note in the run log when set. The listing cards still carry each listing's own box condition in the dataset output.",
            "default": ""
          },
          "listingType": {
            "title": "Listing type (Used section only)",
            "enum": [
              "",
              "used",
              "new_with_defect"
            ],
            "type": "string",
            "description": "Split into genuinely used pairs and new-with-defect pairs. KLEKT's rebuilt catalogue no longer offers a server-side listing-type filter, so this is dropped with a note in the run log when set.",
            "default": ""
          },
          "availability": {
            "title": "Availability",
            "enum": [
              "",
              "0",
              "1",
              "2"
            ],
            "type": "string",
            "description": "Limit to products KLEKT flags as available. KLEKT's rebuilt catalogue no longer offers a server-side availability filter, so this is dropped with a note in the run log when set.",
            "default": ""
          },
          "priceFrom": {
            "title": "Minimum price (EUR)",
            "minimum": 0,
            "type": "integer",
            "description": "Only return products priced at or above this many euros. Whole euros, not cents. Leave empty for no lower bound."
          },
          "priceTo": {
            "title": "Maximum price (EUR)",
            "minimum": 0,
            "type": "integer",
            "description": "Only return products priced at or below this many euros. Whole euros, not cents. Leave empty for no upper bound."
          },
          "fetchDetails": {
            "title": "Fetch product details",
            "type": "boolean",
            "description": "Fetch each product's own page for the full record (description, images, seller, last sold price, lowest listing price). Applies to Browse mode ONLY: switching it off there keeps the lighter catalogue row instead, with no per-product enrichment charge. Product URLs mode and Full catalogue mode have no catalogue row behind them — the product page is their only source of data — so detail fetching always runs in those two modes and the run log says so.",
            "default": true
          },
          "maxItems": {
            "title": "Max items",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum number of products to scrape. 0 = unlimited (stop only at the end of the catalogue). Counts records actually returned, not pages read.",
            "default": 50
          },
          "maxPages": {
            "title": "Max catalogue pages (Browse mode)",
            "minimum": 1,
            "maximum": 5000,
            "type": "integer",
            "description": "Safety bound on how many catalogue pages Browse mode walks (20 products per page). The walk also stops on its own at the end of the section, so normally Max items is what ends the run.",
            "default": 200
          },
          "proxy": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Whichever proxy groups you select here are the ones used — leave the groups empty to use your account's default pool. Turning Apify Proxy off connects directly, with no proxy traffic billed.",
            "default": {
              "useApifyProxy": true
            }
          },
          "mcpConnectors": {
            "title": "Pipe results into your apps (optional)",
            "type": "array",
            "description": "Optionally send scraped KLEKT products into the apps you already use, via Model Context Protocol (MCP) connectors. Authorize one under Apify → Settings → API & Integrations, then select it here. Notion gets a rich page-per-product export; other connectors get a best-effort write/digest. Leave empty to skip; never changes the dataset output. Supported: Notion (https://mcp.notion.com/mcp), Linear (https://mcp.linear.app/sse), Airtable (https://mcp.airtable.com/mcp), Apify (https://mcp.apify.com).",
            "default": []
          },
          "notionParentPageUrl": {
            "title": "Notion parent page (Notion connector only)",
            "type": "string",
            "description": "URL (or id) of the Notion page under which one page per product is created. Required to enable the Notion export; ignored by other connectors.",
            "default": ""
          },
          "maxNotifyListings": {
            "title": "Max products to export per connector",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "Cap on products written to each connector per run. Does not affect the dataset.",
            "default": 50
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}