{
  "openapi": "3.0.1",
  "info": {
    "title": "Vinted Scraper",
    "description": "Scrape Vinted listings across multiple countries. Search by keywords, browse categories, or fetch specific items and URLs. Apply price, brand, size and condition filters, enrich results with extra details, and export clean data to JSON, CSV or Excel.",
    "version": "0.0",
    "x-build-id": "IOsbedIGCb0q9MNVX"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/barking_kelp~vinted-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-barking_kelp-vinted-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/barking_kelp~vinted-scraper/runs": {
      "post": {
        "operationId": "runs-sync-barking_kelp-vinted-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/barking_kelp~vinted-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-barking_kelp-vinted-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",
          "countries"
        ],
        "properties": {
          "mode": {
            "title": "Mode",
            "enum": [
              "search",
              "category",
              "category_tree",
              "items",
              "urls"
            ],
            "type": "string",
            "description": "`search`: keyword search (section *Search*), optionally restricted to categories and filters.\n`category`: export whole categories by ID (section *Categories*); result sets above Vinted's 960-item cap are split automatically.\n`category_tree`: output every category (id, title, parent, path, URL) as records with `type = \"category\"`.\n`items`: visit the given item pages (section *Items*) and output full product details.\n`urls`: start from any Vinted catalog URLs with filters already applied (section *URLs*).",
            "default": "search"
          },
          "countries": {
            "title": "Countries (Vinted domains)",
            "type": "array",
            "description": "One or more Vinted marketplaces to scrape.",
            "items": {
              "type": "string",
              "enum": [
                "de",
                "fr",
                "uk",
                "us",
                "es",
                "it",
                "nl",
                "be",
                "pl",
                "cz",
                "lt",
                "at",
                "lu",
                "pt",
                "sk",
                "se",
                "ro",
                "hu",
                "hr",
                "dk",
                "fi",
                "gr",
                "ie",
                "ee",
                "lv"
              ],
              "enumTitles": [
                "Germany – vinted.de",
                "France – vinted.fr",
                "United Kingdom – vinted.co.uk",
                "United States – vinted.com",
                "Spain – vinted.es",
                "Italy – vinted.it",
                "Netherlands – vinted.nl",
                "Belgium – vinted.be",
                "Poland – vinted.pl",
                "Czechia – vinted.cz",
                "Lithuania – vinted.lt",
                "Austria – vinted.at",
                "Luxembourg – vinted.lu",
                "Portugal – vinted.pt",
                "Slovakia – vinted.sk",
                "Sweden – vinted.se",
                "Romania – vinted.ro",
                "Hungary – vinted.hu",
                "Croatia – vinted.hr",
                "Denmark – vinted.dk",
                "Finland – vinted.fi",
                "Greece – vinted.gr",
                "Ireland – vinted.ie",
                "Estonia – vinted.ee",
                "Latvia – vinted.lv"
              ]
            },
            "default": [
              "de"
            ]
          },
          "searchQueries": {
            "title": "Search keywords",
            "type": "array",
            "description": "One search per line. If *Category IDs* are also given, every keyword is searched inside every category.",
            "items": {
              "type": "string"
            }
          },
          "categoryIds": {
            "title": "Category IDs",
            "type": "array",
            "description": "Category IDs to scrape, one per line (e.g. 2525 = duffle coats). Categories above the 960-item cap are split by sub-category, price, condition and colour automatically (see *Result cap*).",
            "items": {
              "type": "string"
            }
          },
          "itemUrls": {
            "title": "Item URLs or IDs",
            "type": "array",
            "description": "One item URL (https://www.vinted.fr/items/123456-slug) or numeric item ID per line.",
            "items": {
              "type": "string"
            }
          },
          "startUrls": {
            "title": "Start URLs",
            "type": "array",
            "description": "Vinted catalog or item URLs. The prefilled examples are small result sets (a few pages each) that finish in well under a minute.",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "priceFrom": {
            "title": "Price from",
            "minimum": 0,
            "type": "integer",
            "description": "Minimum price in the country's currency."
          },
          "priceTo": {
            "title": "Price to",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum price in the country's currency."
          },
          "order": {
            "title": "Sort order",
            "enum": [
              "newest_first",
              "relevance",
              "price_low_to_high",
              "price_high_to_low"
            ],
            "type": "string",
            "description": "Sort order of the catalog listing. 'Newest first' gives the most stable pagination.",
            "default": "newest_first"
          },
          "brands": {
            "title": "Brands (names)",
            "type": "array",
            "description": "Brand names (Nike, Adidas, Zara, ...). They are resolved to Vinted brand IDs through the brand API before the crawl starts.",
            "items": {
              "type": "string"
            }
          },
          "brandIds": {
            "title": "Brand IDs",
            "type": "array",
            "description": "Numeric Vinted brand IDs (e.g. 53 = Nike, 362 = Carhartt).",
            "items": {
              "type": "string"
            }
          },
          "statusIds": {
            "title": "Condition",
            "type": "array",
            "description": "Item condition filter (any number of values).",
            "items": {
              "type": "string",
              "enum": [
                "6",
                "1",
                "2",
                "3",
                "4"
              ],
              "enumTitles": [
                "New with tags",
                "New without tags",
                "Very good",
                "Good",
                "Satisfactory"
              ]
            }
          },
          "colorIds": {
            "title": "Colour IDs",
            "type": "array",
            "description": "Numeric Vinted colour IDs, as in color_ids[]=... of a filtered catalog URL.",
            "items": {
              "type": "string"
            }
          },
          "sizeIds": {
            "title": "Size IDs",
            "type": "array",
            "description": "Numeric Vinted size IDs, as in size_ids[]=... of a filtered catalog URL.",
            "items": {
              "type": "string"
            }
          },
          "materialIds": {
            "title": "Material IDs",
            "type": "array",
            "description": "Numeric Vinted material IDs, as in material_ids[]=... of a filtered catalog URL.",
            "items": {
              "type": "string"
            }
          },
          "fetchItemDetails": {
            "title": "Fetch full item details",
            "type": "boolean",
            "description": "Visit every product page: description, attributes (colour, material, size, condition), all photos, breadcrumbs, shipping price and buyer-protection fee, seller rating, status flags. Always on in the `items` mode.",
            "default": false
          },
          "fetchSellerDetails": {
            "title": "Fetch seller profile",
            "type": "boolean",
            "description": "Call the seller profile API for each product: login, city, country, ratings, item counts, followers, last seen. A small JSON request per product.",
            "default": false
          },
          "maxItems": {
            "title": "Max products",
            "minimum": 0,
            "type": "integer",
            "description": "Stop after this many unique products in total (0 = unlimited). Does not apply to category-tree records.",
            "default": 500
          },
          "splitCappedResults": {
            "title": "Split result sets capped at 960 items",
            "type": "boolean",
            "description": "Disable to take only the first 960 items of every query.",
            "default": true
          },
          "maxSplitDepth": {
            "title": "Max split depth",
            "minimum": 0,
            "maximum": 40,
            "type": "integer",
            "description": "Safety limit for how many times one query may be split recursively. Queries that are still capped at this depth are reported as truncated in the log.",
            "default": 14
          },
          "maxConcurrency": {
            "title": "Max concurrent requests",
            "minimum": 1,
            "maximum": 64,
            "type": "integer",
            "description": "How many requests run in parallel. Keep it low (2-4) without proxies.",
            "default": 8
          },
          "downloadDelay": {
            "title": "Delay between requests (seconds)",
            "minimum": 0,
            "maximum": 60,
            "type": "integer",
            "description": "Fixed pause between requests, in seconds. 0 disables it.",
            "default": 0
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Proxies for the crawl. Apify residential proxies work well; every retry of a blocked request leaves through a new IP.",
            "default": {
              "useApifyProxy": true,
              "apifyProxyGroups": [
                "RESIDENTIAL"
              ]
            }
          },
          "browserImpersonation": {
            "title": "Browser impersonation (TLS fingerprint)",
            "enum": [
              "chrome",
              "edge",
              "safari",
              "firefox",
              "none"
            ],
            "type": "string",
            "description": "Requests are sent through curl_cffi with the TLS/HTTP2 fingerprint and headers of this browser. Vinted's DataDome answers 403 to item pages fetched with a non-browser fingerprint, so keep this on unless debugging.",
            "default": "chrome"
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}