{
  "openapi": "3.0.1",
  "info": {
    "title": "Vinted Scraper & API - Listings, Prices, Brands, 23 Countries",
    "description": "Vinted scraper and API: search Vinted listings on 23 country sites by keyword, brand, size, condition, colour, category and price, or paste Vinted URLs. One result = one listing: title, brand, size, condition, price, total with fee, photos, favourites, URL. No start fee. $0.70 per 1,000.",
    "version": "1.0",
    "x-build-id": "m7tChbPILwTdFilDp"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/rel8ble~vinted-search-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-rel8ble-vinted-search-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/rel8ble~vinted-search-scraper/runs": {
      "post": {
        "operationId": "runs-sync-rel8ble-vinted-search-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/rel8ble~vinted-search-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-rel8ble-vinted-search-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": {
          "searchQueries": {
            "title": "Search keywords",
            "type": "array",
            "description": "Optional. What you would type into the Vinted search box, one per line: \"nike air max\", \"zara dress\", \"levis 501\", \"vintage carhartt\". Each keyword is one search per country site. Leave empty to list everything that matches the filters below (or use startUrls). Vinted search is loose (it also matches similar words); add brands or categoryIds to narrow it.",
            "items": {
              "type": "string"
            }
          },
          "countries": {
            "title": "Country sites",
            "type": "array",
            "description": "Optional. Which Vinted sites to search, by domain ending: \"com\", \"co.uk\", \"fr\", \"de\", \"it\", \"es\", \"nl\", \"be\", \"at\", \"lu\", \"pt\", \"pl\", \"lt\", \"cz\", \"sk\", \"se\", \"dk\", \"fi\", \"hu\", \"ro\", \"gr\", \"hr\", \"ie\". Default [\"fr\"]. Several = each keyword is searched on each site (2 keywords x 3 sites = 6 searches). Prices come in that site's currency (EUR, GBP, USD, PLN, CZK, SEK, DKK, HUF, RON). EU sites share much of the same stock, so one listing can appear on several of them.",
            "items": {
              "type": "string",
              "enum": [
                "com",
                "co.uk",
                "fr",
                "de",
                "it",
                "es",
                "nl",
                "be",
                "at",
                "lu",
                "pt",
                "pl",
                "lt",
                "cz",
                "sk",
                "se",
                "dk",
                "fi",
                "hu",
                "ro",
                "gr",
                "hr",
                "ie"
              ],
              "enumTitles": [
                "vinted.com (United States)",
                "vinted.co.uk (United Kingdom)",
                "vinted.fr (France)",
                "vinted.de (Germany)",
                "vinted.it (Italy)",
                "vinted.es (Spain)",
                "vinted.nl (Netherlands)",
                "vinted.be (Belgium)",
                "vinted.at (Austria)",
                "vinted.lu (Luxembourg)",
                "vinted.pt (Portugal)",
                "vinted.pl (Poland)",
                "vinted.lt (Lithuania)",
                "vinted.cz (Czech Republic)",
                "vinted.sk (Slovakia)",
                "vinted.se (Sweden)",
                "vinted.dk (Denmark)",
                "vinted.fi (Finland)",
                "vinted.hu (Hungary)",
                "vinted.ro (Romania)",
                "vinted.gr (Greece)",
                "vinted.hr (Croatia)",
                "vinted.ie (Ireland)"
              ]
            },
            "default": [
              "fr"
            ]
          },
          "startUrls": {
            "title": "Vinted URLs",
            "type": "array",
            "description": "Optional. URLs copied from any Vinted site, one per line. A search or catalog URL (\"https://www.vinted.fr/catalog?search_text=nike&brand_ids[]=53&status_ids[]=6&order=newest_first\"), a category URL (\"https://www.vinted.de/catalog/1231-men-shoes\") or a brand URL (\"https://www.vinted.co.uk/brand/88-ralph-lauren\") is scraped with the filters in the URL (the filter fields below are not applied to it). An item URL (\"https://www.vinted.co.uk/items/10402575857-...\") is looked up directly and always includes the details. Member / profile pages are not supported.",
            "items": {
              "type": "string"
            }
          },
          "priceMin": {
            "title": "Minimum price",
            "minimum": 0,
            "type": "number",
            "description": "Optional. Lowest item price, in the currency of each country site (EUR on vinted.fr, GBP on vinted.co.uk, PLN on vinted.pl ...), e.g. 10. Empty = no minimum."
          },
          "priceMax": {
            "title": "Maximum price",
            "minimum": 0,
            "type": "number",
            "description": "Optional. Highest item price, in the currency of each country site, e.g. 50. Empty = no maximum."
          },
          "brands": {
            "title": "Brands",
            "type": "array",
            "description": "Optional. Brand names as Vinted writes them, one per line: \"Nike\", \"Levi's\", \"Zara\", \"Ralph Lauren\". The closest Vinted brand is used and logged (Levis -> Levi's). A Vinted brand id (the number in a /brand/ URL, e.g. 53) works too. Several = any of them.",
            "items": {
              "type": "string"
            }
          },
          "sizes": {
            "title": "Sizes",
            "type": "array",
            "description": "Optional. Sizes as shown on Vinted, one per line: \"M\", \"38\", \"W32\", \"9.5\", \"S / UK 8-10\". Matched against the size list of each search, so \"M\" also matches \"M / 38 / 10\" and \"38\" matches EU 38 in clothing and shoes. Add categoryIds to keep it to one size system. Unknown sizes are listed in the run summary.",
            "items": {
              "type": "string"
            }
          },
          "conditions": {
            "title": "Condition",
            "type": "array",
            "description": "Optional. Keep only these conditions: any of \"new_with_tags\", \"new_without_tags\", \"very_good\", \"good\", \"satisfactory\". Several = any of them. Empty = all.",
            "items": {
              "type": "string",
              "enum": [
                "new_with_tags",
                "new_without_tags",
                "very_good",
                "good",
                "satisfactory"
              ],
              "enumTitles": [
                "New with tags",
                "New without tags",
                "Very good",
                "Good",
                "Satisfactory"
              ]
            }
          },
          "colors": {
            "title": "Colour",
            "type": "array",
            "description": "Optional. Keep only these colours: any of \"black\", \"grey\", \"white\", \"cream\", \"beige\", \"apricot\", \"orange\", \"coral\", \"red\", \"burgundy\", \"pink\", \"rose\", \"purple\", \"lilac\", \"light_blue\", \"blue\", \"navy\", \"turquoise\", \"mint\", \"green\", \"dark_green\", \"khaki\", \"brown\", \"mustard\", \"yellow\", \"silver\", \"gold\", \"multi\", \"clear\". Several = any of them. Empty = all.",
            "items": {
              "type": "string",
              "enum": [
                "black",
                "grey",
                "white",
                "cream",
                "beige",
                "apricot",
                "orange",
                "coral",
                "red",
                "burgundy",
                "pink",
                "rose",
                "purple",
                "lilac",
                "light_blue",
                "blue",
                "navy",
                "turquoise",
                "mint",
                "green",
                "dark_green",
                "khaki",
                "brown",
                "mustard",
                "yellow",
                "silver",
                "gold",
                "multi",
                "clear"
              ],
              "enumTitles": [
                "Black",
                "Grey",
                "White",
                "Cream",
                "Beige",
                "Apricot",
                "Orange",
                "Coral",
                "Red",
                "Burgundy",
                "Pink",
                "Rose",
                "Purple",
                "Lilac",
                "Light blue",
                "Blue",
                "Navy",
                "Turquoise",
                "Mint",
                "Green",
                "Dark green",
                "Khaki",
                "Brown",
                "Mustard",
                "Yellow",
                "Silver",
                "Gold",
                "Multi",
                "Clear"
              ]
            }
          },
          "categoryIds": {
            "title": "Category ids",
            "type": "array",
            "description": "Optional. Vinted category ids: the number at the start of a catalog URL, e.g. 1231 from https://www.vinted.de/catalog/1231-men-shoes, 1904 = Women, 5 = Men, 1193 = Kids, 1918 = Home. Category ids are the same on every Vinted site. Several = any of them. A category URL also works here.",
            "items": {
              "type": "string"
            }
          },
          "sort": {
            "title": "Sort by",
            "enum": [
              "relevance",
              "newest_first",
              "price_low_to_high",
              "price_high_to_low"
            ],
            "type": "string",
            "description": "Optional. \"relevance\" (default, Vinted's own order), \"newest_first\" (use it on a schedule to catch new listings), \"price_low_to_high\" or \"price_high_to_low\".",
            "default": "relevance"
          },
          "maxItems": {
            "title": "Max listings per search",
            "minimum": 0,
            "type": "integer",
            "description": "Optional. Maximum listings saved per search (one keyword on one country site), integer >= 0. Default 100; 0 = every listing the search has. You pay per listing saved ($0.0007 each), so 100 listings = $0.07. Use 10-20 for a quick answer.",
            "default": 100
          },
          "deepSearch": {
            "title": "Deep search (go past the 960-listing limit)",
            "type": "boolean",
            "description": "Optional boolean, default true. Vinted returns at most 960 listings for any one search (10 pages of 96). With deep search on, a bigger search is split automatically by condition, category, price band and colour, and the results are merged without duplicates. Only kicks in when maxItems is above 960 (or 0). It costs extra requests, not extra money per listing.",
            "default": true
          },
          "includeDetails": {
            "title": "Include item details (slower)",
            "type": "boolean",
            "description": "Optional boolean. false (default) = search data only: title, brand, size, condition, price, buyer-protection fee and total, main photo, favourites, seller id, URL; 96 listings per request. true = also open each listing to add the description (contact details masked), category and category path, colour, material, all photo URLs, when it was uploaded, whether it is reserved, and the seller's rating and review count. Same price per listing, but about 1 request per listing, so runs are much slower.",
            "default": false
          },
          "maxConcurrency": {
            "title": "Max concurrency",
            "minimum": 1,
            "maximum": 40,
            "type": "integer",
            "description": "Optional, advanced. Number of parallel requests, integer 1-40. Default 10. Leave unset.",
            "default": 10
          },
          "maxRequestRetries": {
            "title": "Max retries per request",
            "minimum": 0,
            "maximum": 20,
            "type": "integer",
            "description": "Optional, advanced. Retries per failed, blocked or rate-limited request, integer 0-20; each retry uses a new session and a new proxy IP. Default 10. Leave unset.",
            "default": 10
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Optional, advanced. Apify Proxy settings object. Default {\"useApifyProxy\": true} (datacenter proxy): blocked IPs are rotated automatically. Leave unset.",
            "default": {
              "useApifyProxy": true
            }
          },
          "residentialFallback": {
            "title": "Retry stubborn searches on residential IPs",
            "type": "boolean",
            "description": "Optional, advanced boolean, default true. When a search request fails 6 times in a row on the datacenter proxy, it is retried through Apify residential IPs in the site's country (search answers are small, so this costs little). Item pages are never sent through residential IPs. Leave unset.",
            "default": true
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}