{
  "openapi": "3.0.1",
  "info": {
    "title": "Vinted Scraper - Listings, Prices & New-Item Monitor",
    "description": "Scrape Vinted listings from search URLs or search text on all 26 Vinted country sites: title, brand, size, condition, price with buyer protection, favourites, photos, item URL, business sellers' names. Only-new mode for resellers. Optional item details. $0.60 per 1,000 items on Bronze.",
    "version": "0.1",
    "x-build-id": "IDwObqyOfng9UWlYk"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/amitaviv~vinted-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-amitaviv-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/amitaviv~vinted-scraper/runs": {
      "post": {
        "operationId": "runs-sync-amitaviv-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/amitaviv~vinted-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-amitaviv-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",
        "properties": {
          "startUrls": {
            "title": "Vinted search or catalogue URLs",
            "type": "array",
            "description": "Set your search and filters on any Vinted country site (vinted.fr, .de, .es, .it, .nl, .be, .pl, .co.uk, .com, …), then copy the full URL (starting with https://) from the address bar, e.g. https://www.vinted.fr/catalog?search_text=levis%20501&order=newest_first. Catalogue pages (/catalog/1231-shoes) and brand pages (/brand/53-nike) work too. Each URL is one search and keeps all its filters. Results come newest first unless the URL sets another order. Give URLs here, search text below, or both; at least one entry in either is required. Member pages and single item pages are ignored.",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "searchQueries": {
            "title": "Search text",
            "type": "array",
            "description": "Instead of URLs: one search per line (e.g. levis 501), run on the country site chosen below, newest first. The price, condition, brand, size, category and colour fields below apply to these searches only, not to URLs. Empty by default.",
            "items": {
              "type": "string"
            }
          },
          "country": {
            "title": "Country site (for search text)",
            "enum": [
              "fr",
              "de",
              "es",
              "it",
              "nl",
              "be",
              "pl",
              "uk",
              "us",
              "at",
              "pt",
              "lu",
              "ie",
              "cz",
              "sk",
              "hu",
              "ro",
              "lt",
              "lv",
              "ee",
              "fi",
              "se",
              "dk",
              "gr",
              "hr",
              "si"
            ],
            "type": "string",
            "description": "Vinted site the search text runs on (default fr, vinted.fr). Prices in the output are in that site's currency (EUR, GBP, USD, PLN, CZK, …). Has no effect on pasted URLs, which keep their own site.",
            "default": "fr"
          },
          "priceMin": {
            "title": "Minimum price",
            "minimum": 0,
            "type": "number",
            "description": "For search text: lowest item price, in the country site's currency (decimals allowed, e.g. 9.99)."
          },
          "priceMax": {
            "title": "Maximum price",
            "minimum": 0,
            "type": "number",
            "description": "For search text: highest item price, in the country site's currency (decimals allowed, e.g. 19.99)."
          },
          "conditions": {
            "title": "Condition",
            "type": "array",
            "description": "For search text: only items in any of these conditions, e.g. [\"new_with_tags\", \"very_good\"]. Empty (default) = all conditions.",
            "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"
              ]
            }
          },
          "brandIds": {
            "title": "Brand ids",
            "type": "array",
            "description": "For search text: Vinted brand ids, e.g. 53 for Nike. Find one by choosing the brand on Vinted: it is the number in brand_ids[]=… in the URL (or in /brand/53-nike).",
            "items": {
              "type": "string"
            }
          },
          "sizeIds": {
            "title": "Size ids",
            "type": "array",
            "description": "For search text: Vinted size ids, e.g. 207 (the number in size_ids[]=… after choosing a size on Vinted). Size ids depend on the category.",
            "items": {
              "type": "string"
            }
          },
          "categoryIds": {
            "title": "Category ids",
            "type": "array",
            "description": "For search text: Vinted category ids, e.g. 1231 for men's shoes (the number in catalog[]=… or in /catalog/1231-shoes).",
            "items": {
              "type": "string"
            }
          },
          "colorIds": {
            "title": "Colour ids",
            "type": "array",
            "description": "For search text: Vinted colour ids (the number in color_ids[]=… after choosing a colour on Vinted).",
            "items": {
              "type": "string"
            }
          },
          "maxItemsPerQuery": {
            "title": "Max items per search",
            "minimum": 1,
            "maximum": 960,
            "type": "integer",
            "description": "Maximum number of items to deliver for each URL or search text, 1 to 960 (default 100). Vinted shows at most 960 items for one search. You are charged only for delivered items.",
            "default": 100
          },
          "onlyNew": {
            "title": "Only new items (monitoring)",
            "type": "boolean",
            "description": "Return and charge only items that earlier runs of this actor in your account have not delivered for the same search. The first run delivers what it finds (up to the maximum); schedule the actor to get only fresh listings. Searches are read newest first. The memory is a key-value store named vinted-scraper-monitor in your account; delete it to start over.",
            "default": false
          },
          "monitorKey": {
            "title": "Monitor name (optional)",
            "type": "string",
            "description": "Only with \"Only new items\". A free-text name (e.g. nike-fr-hourly). Runs with the same search and the same monitor name share one memory; give two schedules different names to keep their memories apart. Empty by default."
          },
          "includeDetails": {
            "title": "Item details (extra charge)",
            "type": "boolean",
            "description": "Off by default. On: open each item's page for its description, category, colour, all photos, how long ago it was uploaded and whether it is reserved. One extra page per item, charged as an \"item-details\" event only for items whose page was read. Slower: Vinted rate-limits item pages, so expect about 25 to 50 items a minute instead of hundreds.",
            "default": false
          },
          "includeBusinessNames": {
            "title": "Business sellers' names (free)",
            "type": "boolean",
            "description": "On by default: for items from business (professional) sellers, read one item page per seller to fill the business name, legal name, legal form and country. Free, but item pages are rate-limited by Vinted, so searches with many business sellers run slower; turn off for speed. Each seller is looked up once per run. With \"Item details\" on, the names come with the details anyway.",
            "default": true
          },
          "includePrivateSellerData": {
            "title": "Include private sellers' ids",
            "type": "boolean",
            "description": "Off by default: for private (non-business) sellers the seller id is left out and phone numbers and e-mail addresses in descriptions are removed. On: private sellers' numeric Vinted ids are added and contact details in descriptions are kept. Turn on only if you have a lawful basis under the GDPR (and similar laws) to process this personal data.",
            "default": false
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Off by default: Vinted's pages need no proxy. Apify's datacenter proxy addresses are often refused by Vinted (HTTP 403); refused requests are retried on a new proxy session, which sometimes gets through and sometimes does not, so turning it on does not cure a block. Residential proxy was not tested.",
            "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
                  },
                  "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}