{
  "openapi": "3.0.1",
  "info": {
    "title": "Vinted Scraper & New Listing Alerts - Prices, Brands, Sizes",
    "description": "Scrape Vinted search results: listing title, brand, size, condition, price (incl. buyer protection), favourites and image. Turn on new-listing alerts and run on a schedule to get only newly posted items matching your search. No login, no seller/member data collected.",
    "version": "0.1",
    "x-build-id": "dL20rtYJ5kO4tiflO"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/lukehunter~vinted-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-lukehunter-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/lukehunter~vinted-scraper/runs": {
      "post": {
        "operationId": "runs-sync-lukehunter-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/lukehunter~vinted-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-lukehunter-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": {
          "searchTerms": {
            "title": "Search terms",
            "type": "array",
            "description": "Words to search for on Vinted, e.g. \"jacket\". Each term is searched on the domain set by \"country\" below. Maximum 50 terms per run.",
            "items": {
              "type": "string"
            }
          },
          "startUrls": {
            "title": "Vinted catalog URLs (optional)",
            "type": "array",
            "description": "Full Vinted catalog search URLs to scrape instead of (or alongside) search terms, e.g. \"https://www.vinted.co.uk/catalog?search_text=jacket&price_to=20\". Any filters already in the URL (brand, size, price, etc.) are kept; only pagination is added. Must be a vinted.* URL. Maximum 50 per run.",
            "items": {
              "type": "string"
            }
          },
          "country": {
            "title": "Vinted country",
            "enum": [
              "uk",
              "fr",
              "de",
              "es",
              "it",
              "nl",
              "be",
              "pl",
              "us",
              "au",
              "at",
              "cz",
              "dk",
              "ee",
              "fi",
              "gr",
              "hr",
              "hu",
              "ie",
              "lt",
              "lu",
              "lv",
              "pt",
              "ro",
              "se",
              "si",
              "sk"
            ],
            "type": "string",
            "description": "Which Vinted domain to search on for the \"searchTerms\" above (ignored for \"startUrls\", which use their own domain).",
            "default": "uk"
          },
          "priceFrom": {
            "title": "Minimum price (optional)",
            "minimum": 0,
            "type": "integer",
            "description": "Only include listings priced at or above this amount, in the country's own currency. Leave empty for no minimum."
          },
          "priceTo": {
            "title": "Maximum price (optional)",
            "minimum": 0,
            "type": "integer",
            "description": "Only include listings priced at or below this amount, in the country's own currency. Leave empty for no maximum."
          },
          "sortBy": {
            "title": "Sort by",
            "enum": [
              "relevance",
              "newest",
              "price_low",
              "price_high"
            ],
            "type": "string",
            "description": "Choose how Vinted orders each search result page before the Actor paginates it.",
            "default": "relevance"
          },
          "maxPagesPerSearch": {
            "title": "Maximum pages per search",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "How many catalog pages to fetch for each search term or start URL, 1-20, default 1. Vinted shows about 96 items per page.",
            "default": 1
          },
          "maxItems": {
            "title": "Maximum rows",
            "minimum": 1,
            "maximum": 5000,
            "type": "integer",
            "description": "Hard cap on the number of rows delivered across all searches, 1-5000, default 60. You are charged $0.001 per delivered row, so this is your cost cap.",
            "default": 60
          },
          "onlyNewSinceLastRun": {
            "title": "New-listing alerts: only new items since last run",
            "type": "boolean",
            "description": "Turn this on and run the Actor on a schedule to get only listings you haven't seen before: items already delivered on a previous run for the same search (search term/URL, country, price range, sort) are skipped and never charged again. The first run for a given search delivers everything (it's all new) and remembers it; later runs only deliver what's new since then. Each search term or start URL is tracked as its own watch. Off by default so a one-off run always gets the full current results.",
            "default": false
          },
          "stateStoreName": {
            "title": "New-listing alerts: state store name",
            "type": "string",
            "description": "Only used when \"New-listing alerts\" is on. Name of the key-value store that remembers which items each search has already delivered, so it persists across scheduled runs. Leave as the default unless you're running several Actor tasks whose alert history must not share this store. Letters, numbers and hyphens only.",
            "default": "vinted-scraper-seen-items"
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}