{
  "openapi": "3.0.1",
  "info": {
    "title": "Marketplace Scraper for Vinted - Listings, Sellers & Reviews",
    "description": "Scrape Vinted secondhand fashion across 23 markets: listings, item details, prices, brands, sizes, conditions, photos, seller leads and reviews. Search by keyword, filters or item/member/catalog URLs. Monitor new listings & price drops. No login. Independent tool, not affiliated with Vinted.",
    "version": "0.1",
    "x-build-id": "tcP9MY2kKjDMapK4N"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/scrapesage~vinted-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-scrapesage-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/scrapesage~vinted-scraper/runs": {
      "post": {
        "operationId": "runs-sync-scrapesage-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/scrapesage~vinted-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-scrapesage-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 (keywords)",
            "type": "array",
            "description": "Keywords to search on Vinted (e.g. \"nike air max\", \"zara dress\", \"levis 501\"). Each query runs on the chosen market; Max items is shared fairly between queries. Combine with the filters below to narrow results. A keyword Vinted has no listings for returns nothing (and costs nothing) instead of unrelated filler.",
            "items": {
              "type": "string"
            }
          },
          "startUrls": {
            "title": "Start URLs (items, members, catalog/search pages)",
            "type": "array",
            "description": "Vinted URLs to scrape, auto-detected by type. Item pages (/items/…) become item-detail records, member pages (/member/…) become seller profiles (+ their listings and reviews when enabled), and catalog, brand and search pages (/catalog?…, /catalog/1904-women, /brand/53-nike) are scraped as searches with their filters preserved. The market is taken from each URL's domain (e.g. vinted.fr, vinted.co.uk), not from the Market setting. Example: https://www.vinted.co.uk/catalog?search_text=north%20face&order=newest_first. You can also link or upload a text file of URLs.",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "itemIds": {
            "title": "Item IDs",
            "type": "array",
            "description": "Vinted numeric item IDs (e.g. 10223978726). Each is fetched as a full item-detail record on the selected market. Pasted item URLs keep their own market.",
            "items": {
              "type": "string"
            }
          },
          "sellerIds": {
            "title": "Seller / member IDs",
            "type": "array",
            "description": "Vinted numeric member IDs (e.g. 48689400). Each is fetched as a seller profile; their listings (Max items per seller) and reviews are also pulled when those options are enabled. A UK or US seller's listings are read on their own market automatically.",
            "items": {
              "type": "string"
            }
          },
          "country": {
            "title": "Market (Vinted domain)",
            "enum": [
              "com",
              "co.uk",
              "fr",
              "de",
              "es",
              "it",
              "nl",
              "be",
              "at",
              "pl",
              "cz",
              "sk",
              "lt",
              "lu",
              "pt",
              "se",
              "fi",
              "dk",
              "ro",
              "hu",
              "hr",
              "gr",
              "ie"
            ],
            "type": "string",
            "description": "Which Vinted market to search. Prices and condition labels come back in that market's currency and language (USD on vinted.com, GBP on .co.uk, PLN on .pl …). EU markets share one cross-border catalogue; the UK and US markets are separate. Start URLs use their own domain regardless of this setting.",
            "default": "com"
          },
          "order": {
            "title": "Sort order",
            "enum": [
              "newest_first",
              "relevance",
              "price_low_to_high",
              "price_high_to_low"
            ],
            "type": "string",
            "description": "How to sort search results.",
            "default": "newest_first"
          },
          "priceFrom": {
            "title": "Min price",
            "minimum": 0,
            "type": "integer",
            "description": "Only return items priced at or above this amount (in the market's currency). Leave empty for no minimum."
          },
          "priceTo": {
            "title": "Max price",
            "minimum": 0,
            "type": "integer",
            "description": "Only return items priced at or below this amount (in the market's currency). Leave empty for no maximum."
          },
          "catalogIds": {
            "title": "Catalog (category) IDs",
            "type": "array",
            "description": "Restrict searches to one or more Vinted category IDs (e.g. 1904 = Women, 5 = Men, 1193 = Kids, 2994 = Electronics). Find IDs in a catalog URL on Vinted (/catalog/1904-women). Leave empty to search all categories. Filters alone (no keyword) browse that category.",
            "items": {
              "type": "string"
            }
          },
          "brandIds": {
            "title": "Brand IDs",
            "type": "array",
            "description": "Restrict searches to one or more Vinted brand IDs (e.g. 53 = Nike, 14 = adidas, 12 = Zara). Find IDs in a brand page or filtered catalog URL on Vinted (/brand/53-nike or brand_ids[]=53).",
            "items": {
              "type": "string"
            }
          },
          "sizeIds": {
            "title": "Size IDs",
            "type": "array",
            "description": "Restrict searches to one or more Vinted size IDs (sizes depend on the category). Find IDs in a filtered catalog URL on Vinted (size_ids[]=…).",
            "items": {
              "type": "string"
            }
          },
          "statusIds": {
            "title": "Condition",
            "type": "array",
            "description": "Only return listings in these conditions.",
            "items": {
              "type": "string",
              "enum": [
                "6",
                "1",
                "2",
                "3",
                "4"
              ],
              "enumTitles": [
                "New with tags (6)",
                "New without tags (1)",
                "Very good (2)",
                "Good (3)",
                "Satisfactory (4)"
              ]
            }
          },
          "colorIds": {
            "title": "Colour",
            "type": "array",
            "description": "Only return listings in these colours.",
            "items": {
              "type": "string",
              "enum": [
                "1",
                "3",
                "12",
                "20",
                "4",
                "21",
                "11",
                "22",
                "7",
                "23",
                "5",
                "24",
                "6",
                "25",
                "26",
                "9",
                "27",
                "17",
                "30",
                "10",
                "28",
                "16",
                "2",
                "29",
                "8",
                "13",
                "14",
                "15",
                "32"
              ],
              "enumTitles": [
                "Black (1)",
                "Grey (3)",
                "White (12)",
                "Cream (20)",
                "Beige (4)",
                "Apricot (21)",
                "Orange (11)",
                "Coral (22)",
                "Red (7)",
                "Burgundy (23)",
                "Pink (5)",
                "Rose (24)",
                "Purple (6)",
                "Lilac (25)",
                "Light blue (26)",
                "Blue (9)",
                "Navy (27)",
                "Turquoise (17)",
                "Mint (30)",
                "Green (10)",
                "Dark green (28)",
                "Khaki (16)",
                "Brown (2)",
                "Mustard (29)",
                "Yellow (8)",
                "Silver (13)",
                "Gold (14)",
                "Multi (15)",
                "Clear (32)"
              ]
            }
          },
          "materialIds": {
            "title": "Material IDs",
            "type": "array",
            "description": "Restrict searches to one or more Vinted material IDs (e.g. 44 = Cotton, 43 = Leather, 46 = Wool, 303 = Denim, 123 = Cashmere). Find IDs in a filtered catalog URL on Vinted (material_ids[]=…).",
            "items": {
              "type": "string"
            }
          },
          "maxItems": {
            "title": "Max items",
            "minimum": 1,
            "maximum": 100000,
            "type": "integer",
            "description": "Maximum number of item records across all queries and URLs, shared fairly between searches. Vinted shows at most 960 results per sort order; when a search has more, the actor continues with the other sort orders (deduplicated) to go deeper. Seller leads and reviews are additional and not counted against this limit.",
            "default": 100
          },
          "includeItemDetails": {
            "title": "Include item details (description, category, colour)",
            "type": "boolean",
            "description": "Enrich every listing from its item page (one extra request per item): full description, category path, colour(s), material and other attributes, every photo, upload age, brand ID, standard condition, the buyer-protection total, reserved flag and the seller's badges and rating. Item records are then billed at the 'item detail' rate instead of the 'item' rate.",
            "default": false
          },
          "includeSellerLeads": {
            "title": "Include seller leads",
            "type": "boolean",
            "description": "Output one deduplicated seller record per unique seller found in the results: username, location, star rating and feedback counts, sales volume, followers, last seen, holiday mode, bundle discounts, verifications and a 0-100 lead score. Vinted Pro (business) sellers also carry their published trader details (shop name, legal name, registration and VAT number, business email when they publish one). Ideal for sourcing and wholesale outreach.",
            "default": false
          },
          "includeSellerReviews": {
            "title": "Include seller reviews",
            "type": "boolean",
            "description": "Output the feedback/reviews left on each seller (rating, text, reviewer, the seller's reply, date). Pulls reviews for the sellers found in the results or for member URLs/IDs.",
            "default": false
          },
          "maxReviewsPerSeller": {
            "title": "Max reviews per seller",
            "minimum": 1,
            "maximum": 500,
            "type": "integer",
            "description": "How many of the most recent reviews to output per seller when Include seller reviews is on.",
            "default": 20
          },
          "maxSellerItems": {
            "title": "Max items per seller",
            "minimum": 0,
            "maximum": 5000,
            "type": "integer",
            "description": "When scraping a member/seller (via member URL or seller ID), how many of their listings to also output. 0 returns only their profile (and reviews if enabled).",
            "default": 0
          },
          "monitorMode": {
            "title": "Monitor mode: only new listings",
            "type": "boolean",
            "description": "Remember what previous runs delivered (in a named key-value store) and emit only listings created since the last run, plus delivered listings whose price dropped (with the previous price), and only new sellers and reviews. The first run sets the baseline. Use the Newest first sort order and an Apify Schedule for hands-off monitoring of a search or seller.",
            "default": false
          },
          "monitorKey": {
            "title": "Monitor key",
            "type": "string",
            "description": "Names the monitor store so different searches keep separate memory (e.g. \"nike-uk-under-50\"). Reuse the same key across scheduled runs to keep deduplicating against the same history.",
            "default": "default"
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Proxy settings. The default Apify proxy works: the actor rotates addresses automatically and, if Vinted keeps refusing them, continues on a residential connection in the market's own country. Change this only if you want to use your own proxies.",
            "default": {
              "useApifyProxy": true
            }
          },
          "urlsFromFile": {
            "title": "Import URLs from a file",
            "type": "string",
            "description": "Paste a list of URLs (one per line), OR one link to a .txt/.csv file, Google Sheet or Google Drive file containing them. Lets you import many Start URLs at once instead of typing each. Google Sheet/Drive share links are handled automatically."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}