{
  "openapi": "3.0.1",
  "info": {
    "title": "Vinted Scraper & Tracker: New Listings, Price Drops, Sold",
    "description": "Scrape Vinted listings from 26 country sites in one run (keywords, brands, sizes, price, condition or search URLs) and track them: new listings, price drops, reserved and sold alerts, plus deals below the search median.",
    "version": "0.1",
    "x-build-id": "XcA1xcQalmBTqQZln"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/apizilla~vinted-tracker/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-apizilla-vinted-tracker",
        "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/apizilla~vinted-tracker/runs": {
      "post": {
        "operationId": "runs-sync-apizilla-vinted-tracker",
        "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/apizilla~vinted-tracker/run-sync": {
      "post": {
        "operationId": "run-sync-apizilla-vinted-tracker",
        "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": {
          "keywords": {
            "title": "Keywords",
            "type": "array",
            "description": "What to search for, as you would type it on Vinted, for example \"levis 501\", \"nike dunk\", \"barbour jacket\". Each keyword is one search in each country. Empty: use brands, category or search URLs only.",
            "items": {
              "type": "string"
            }
          },
          "countries": {
            "title": "Countries",
            "type": "array",
            "description": "Vinted country sites to search. Several countries run in one go. Prices are in the currency of each site.",
            "items": {
              "type": "string",
              "enum": [
                "fr",
                "de",
                "uk",
                "es",
                "it",
                "nl",
                "be",
                "pl",
                "pt",
                "at",
                "lt",
                "cz",
                "sk",
                "lu",
                "ie",
                "se",
                "dk",
                "fi",
                "gr",
                "hu",
                "ro",
                "hr",
                "si",
                "ee",
                "lv",
                "us"
              ],
              "enumTitles": [
                "France (vinted.fr, EUR)",
                "Germany (vinted.de, EUR)",
                "United Kingdom (vinted.co.uk, GBP)",
                "Spain (vinted.es, EUR)",
                "Italy (vinted.it, EUR)",
                "Netherlands (vinted.nl, EUR)",
                "Belgium (vinted.be, EUR)",
                "Poland (vinted.pl, PLN)",
                "Portugal (vinted.pt, EUR)",
                "Austria (vinted.at, EUR)",
                "Lithuania (vinted.lt, EUR)",
                "Czechia (vinted.cz, CZK)",
                "Slovakia (vinted.sk, EUR)",
                "Luxembourg (vinted.lu, EUR)",
                "Ireland (vinted.ie, EUR)",
                "Sweden (vinted.se, SEK)",
                "Denmark (vinted.dk, DKK)",
                "Finland (vinted.fi, EUR)",
                "Greece (vinted.gr, EUR)",
                "Hungary (vinted.hu, HUF)",
                "Romania (vinted.ro, RON)",
                "Croatia (vinted.hr, EUR)",
                "Slovenia (vinted.si, EUR)",
                "Estonia (vinted.ee, EUR)",
                "Latvia (vinted.lv, EUR)",
                "United States (vinted.com, USD)"
              ]
            },
            "default": [
              "fr"
            ]
          },
          "searchUrls": {
            "title": "Vinted search URLs",
            "type": "array",
            "description": "Or paste searches from the Vinted website: open a search, set the filters, copy the URL (https://www.vinted.fr/catalog?search_text=...). Any country site. The filters in the URL are used as they are.",
            "items": {
              "type": "string"
            }
          },
          "brands": {
            "title": "Brands",
            "type": "array",
            "description": "Only these brands, for example \"Levi's\", \"Nike\", \"Zara\", \"Ralph Lauren\". Looked up on Vinted and used as a brand filter.",
            "items": {
              "type": "string"
            }
          },
          "categoryIds": {
            "title": "Category IDs",
            "type": "array",
            "description": "Vinted category IDs, for example 1231 (men's shoes) or 2050 (men's clothing). Open the category on Vinted: the ID is the number in /catalog/<ID>-... . You can also paste the category URL.",
            "items": {
              "type": "string"
            }
          },
          "sizes": {
            "title": "Sizes",
            "type": "array",
            "description": "Only these sizes, as Vinted shows them: \"M\", \"L\", \"42\", \"W32\", \"UK 9\". Exact match (case-insensitive).",
            "items": {
              "type": "string"
            }
          },
          "conditions": {
            "title": "Condition",
            "type": "array",
            "description": "Only these conditions. 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"
              ]
            }
          },
          "minPrice": {
            "title": "Min price",
            "minimum": 0,
            "type": "integer",
            "description": "Lowest price, in the currency of each country site (EUR, GBP, PLN...)."
          },
          "maxPrice": {
            "title": "Max price",
            "minimum": 0,
            "type": "integer",
            "description": "Highest price, in the currency of each country site."
          },
          "excludeKeywords": {
            "title": "Exclude words",
            "type": "array",
            "description": "Drop listings whose title or brand has one of these words, for example \"kids\", \"replica\".",
            "items": {
              "type": "string"
            }
          },
          "strictKeywords": {
            "title": "Keywords must be in the title",
            "type": "boolean",
            "description": "Vinted search also finds similar items. Turn on to keep only listings whose title or brand has every word of the keyword.",
            "default": false
          },
          "sort": {
            "title": "Sort",
            "enum": [
              "newest_first",
              "relevance",
              "price_low_to_high",
              "price_high_to_low"
            ],
            "type": "string",
            "description": "Order of the Vinted results. \"Newest first\" is best for tracking new listings.",
            "default": "newest_first"
          },
          "maxItems": {
            "title": "Max listings",
            "minimum": 1,
            "maximum": 100000,
            "type": "integer",
            "description": "Most listings to save in one run (all searches together). Changes are saved first.",
            "default": 100
          },
          "maxItemsPerSearch": {
            "title": "Max listings per search",
            "minimum": 1,
            "maximum": 100000,
            "type": "integer",
            "description": "Most listings per search (keyword x country, or URL). Empty: Max listings divided by the number of searches."
          },
          "maxPagesPerSearch": {
            "title": "Max pages per search",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "Each page has up to 96 listings. Vinted shows at most 10 pages (960 listings) per search.",
            "default": 3
          },
          "includeDetails": {
            "title": "Item details",
            "type": "boolean",
            "description": "Open each saved listing for the description, colour, material, category, upload time, reserved status, all photos and the seller name, rating and review count. Charged per item (see pricing).",
            "default": false
          },
          "includeSellerDetails": {
            "title": "Seller profiles",
            "type": "boolean",
            "description": "Add the seller profile: username, rating (0-5), number of reviews, country, city, business account, items for sale, followers, last login. Charged once per seller.",
            "default": false
          },
          "computeDeals": {
            "title": "Find deals",
            "type": "boolean",
            "description": "Compare every listing with the median price of its search (same currency, at least 8 listings) and flag the ones well below it. Free.",
            "default": true
          },
          "dealThresholdPercent": {
            "title": "Deal threshold (%)",
            "minimum": 1,
            "maximum": 95,
            "type": "integer",
            "description": "A deal is a listing at least this many percent below the search median (price with buyer protection).",
            "default": 25
          },
          "onlyDeals": {
            "title": "Only deals",
            "type": "boolean",
            "description": "Save only listings flagged as deals.",
            "default": false
          },
          "trackChanges": {
            "title": "Track changes",
            "type": "boolean",
            "description": "Remember the listings between runs and report new listings, price drops and increases, reserved, sold and removed items. The first run saves the baseline. Schedule the Actor (for example every 30 minutes) to get alerts.",
            "default": true
          },
          "trackerName": {
            "title": "Tracker name",
            "type": "string",
            "description": "Name of this tracker, for example \"levis-501-fr\". Runs with the same name compare with each other. Empty: a name made from your searches. Letters, numbers and dashes."
          },
          "onlyChanges": {
            "title": "Only changes",
            "type": "boolean",
            "description": "Save only listings that changed since the last run (new listing, price drop, reserved, sold...). Good for scheduled alerts: quiet runs cost only the start fee.",
            "default": false
          },
          "checkGoneItems": {
            "title": "Check gone items",
            "type": "boolean",
            "description": "When a tracked listing is no longer in the search results, open its page to tell if it was sold, reserved, deleted or only re-priced. Without it, gone items are reported as \"removed\" only when the whole search was read.",
            "default": true
          },
          "maxGoneChecks": {
            "title": "Max gone checks per run",
            "minimum": 0,
            "maximum": 5000,
            "type": "integer",
            "description": "Most item pages opened per run to check gone listings. The rest are checked in the next runs.",
            "default": 30
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Leave the default (Apify Proxy, no group). Each country site connects directly first (no proxy cost) and switches to RESIDENTIAL proxy (same country) only if Vinted blocks it. Pages loaded through RESIDENTIAL cost an extra \"residential page\" fee. You can also pick a group or use your own proxies.",
            "default": {
              "useApifyProxy": 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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}