{
  "openapi": "3.0.1",
  "info": {
    "title": "Vinted Scraper: Listings, Prices & New-Item Monitor",
    "description": "Scrape Vinted listings from all 27 Vinted country sites: price incl. buyer protection fee, brand, size, condition, photos, seller rating. Paste browser search URLs or use filters. Monitor mode outputs only new listings. No login, no browser.",
    "version": "0.1",
    "x-build-id": "QMAY9zJ5Yc6R1D7eK"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/rjmacarthy~vinted-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-rjmacarthy-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/rjmacarthy~vinted-scraper/runs": {
      "post": {
        "operationId": "runs-sync-rjmacarthy-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/rjmacarthy~vinted-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-rjmacarthy-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": {
          "searchQueries": {
            "title": "Search queries",
            "type": "array",
            "description": "What you would type in Vinted's search box, one per line, e.g. \"nike air max\", \"levis 501\" or \"zara dress\". Each query is a separate search on the country site below, with the filters below. Leave empty if you only use search URLs.",
            "items": {
              "type": "string"
            }
          },
          "domain": {
            "title": "Vinted country site",
            "enum": [
              "vinted.co.uk",
              "vinted.com",
              "vinted.fr",
              "vinted.de",
              "vinted.it",
              "vinted.es",
              "vinted.nl",
              "vinted.be",
              "vinted.pl",
              "vinted.lt",
              "vinted.cz",
              "vinted.at",
              "vinted.pt",
              "vinted.se",
              "vinted.dk",
              "vinted.fi",
              "vinted.ie",
              "vinted.lu",
              "vinted.sk",
              "vinted.hu",
              "vinted.ro",
              "vinted.hr",
              "vinted.gr",
              "vinted.ee",
              "vinted.lv",
              "vinted.si",
              "vinted.com.au"
            ],
            "type": "string",
            "description": "Which Vinted site to search. This sets the market: the currency and the listings you see, as on that site. (For search URLs the site comes from the URL.)",
            "default": "vinted.co.uk"
          },
          "startUrls": {
            "title": "Vinted search URLs",
            "type": "array",
            "description": "Optional. Open a search on any Vinted site, set filters (category, brand, size, condition, colour, price, sort), and paste the address here, e.g. https://www.vinted.fr/catalog?search_text=robe&brand_ids[]=12&order=newest_first. Every filter in the URL is kept; the filter fields below do not apply to URLs.",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "sortBy": {
            "title": "Sort by",
            "enum": [
              "newest_first",
              "relevance",
              "price_low_to_high",
              "price_high_to_low"
            ],
            "type": "string",
            "description": "Result order. \"Newest first\" is best for monitoring new listings. Used for search queries, and for URLs that don't set their own order.",
            "default": "newest_first"
          },
          "priceFrom": {
            "title": "Minimum price",
            "minimum": 0,
            "type": "integer",
            "description": "Only listings priced at least this much, in the site's currency (e.g. GBP on vinted.co.uk, EUR on vinted.fr). Price before the buyer protection fee."
          },
          "priceTo": {
            "title": "Maximum price",
            "minimum": 0,
            "type": "integer",
            "description": "Only listings priced at most this much, in the site's currency. Price before the buyer protection fee."
          },
          "conditions": {
            "title": "Condition",
            "type": "array",
            "description": "Only listings in these conditions. Leave empty for 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": "Only listings in these colours. Leave empty for 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"
              ]
            }
          },
          "brandIds": {
            "title": "Brand IDs",
            "type": "array",
            "description": "Vinted brand IDs, e.g. 53 for Nike. Find them in the address bar after picking a brand on Vinted (brand_ids[]=53). Tip: it's often easier to paste the whole search URL above.",
            "items": {
              "type": "string"
            }
          },
          "sizeIds": {
            "title": "Size IDs",
            "type": "array",
            "description": "Vinted size IDs (size_ids[]=... in a Vinted search URL). Size IDs depend on the category.",
            "items": {
              "type": "string"
            }
          },
          "catalogIds": {
            "title": "Category IDs",
            "type": "array",
            "description": "Vinted category IDs, e.g. 1231 for Men > Shoes > Trainers. The number in a category URL: https://www.vinted.co.uk/catalog/1231-trainers.",
            "items": {
              "type": "string"
            }
          },
          "maxItemsPerSearch": {
            "title": "Max listings per search",
            "minimum": 0,
            "type": "integer",
            "description": "Stop each search after this many listings. 0 = no limit, but Vinted itself shows at most 960 listings per search; split broad searches with filters to get more.",
            "default": 100
          },
          "includeDetails": {
            "title": "Include item details",
            "type": "boolean",
            "description": "Also open each listing's page for the description, colour, material, category, all photos, upload time (as shown, e.g. \"2 hours ago\") and the seller's rating and review count. One extra request per listing, charged as a separate \"item-details\" event.",
            "default": false
          },
          "onlyNewItems": {
            "title": "Only new listings (monitor)",
            "type": "boolean",
            "description": "Output only listings that earlier runs of the same search have not output yet. The first run of each search outputs everything and becomes the baseline. Schedule the Actor (e.g. every 10 minutes) with \"Newest first\" to catch fresh, underpriced listings.",
            "default": false
          },
          "stateKey": {
            "title": "Monitor name",
            "type": "string",
            "description": "Name of the saved state for \"Only new listings\". Use a different name for each independent monitor; runs with the same name share what they have already seen.",
            "default": "default"
          },
          "stateStoreName": {
            "title": "State store",
            "type": "string",
            "description": "Named key-value store that keeps the incremental state between runs.",
            "default": "vinted-scraper-state"
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Usually not needed. If Vinted blocks the run (Cloudflare or DataDome challenge, HTTP 403), enable Apify Proxy with automatic (datacenter) proxies. Residential proxies are not supported: if you select the RESIDENTIAL group, the Actor uses Apify datacenter proxy instead.",
            "default": {
              "useApifyProxy": false
            }
          },
          "maxConcurrency": {
            "title": "Max parallel requests",
            "minimum": 1,
            "maximum": 5,
            "type": "integer",
            "description": "How many requests to Vinted run at the same time (only matters with item details).",
            "default": 3
          },
          "maxRequestsPerSecond": {
            "title": "Max requests per second",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "Upper limit on the request rate to Vinted. Keep it low to avoid being rate-limited.",
            "default": 2
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}