{
  "openapi": "3.0.1",
  "info": {
    "title": "Vinted Spain Scraper — Second-hand Fashion Marketplace",
    "description": "Scrape listings from Vinted.es, Europe's largest second-hand fashion marketplace. Extract item name, price, brand, size, condition, seller info, and photos. Monitor trends, track pricing, and analyze the resale fashion market in Spain.",
    "version": "0.1",
    "x-build-id": "F8a9X2n3YgC827FPd"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/rastriq~vinted-es-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-rastriq-vinted-es-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/rastriq~vinted-es-scraper/runs": {
      "post": {
        "operationId": "runs-sync-rastriq-vinted-es-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/rastriq~vinted-es-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-rastriq-vinted-es-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": "Enter one or more search terms (one per line). Each is searched separately. Tip: you can include the brand here (e.g. <code>nike air max</code>) instead of using the brand filter. Leave empty to browse a whole category or brand without a keyword.",
            "items": {
              "type": "string"
            }
          },
          "category": {
            "title": "Category",
            "type": "string",
            "description": "Pick or type a category by <b>name</b> — no IDs needed. Department names (<code>Women</code>, <code>Men</code>, <code>Kids</code>, <code>Electronics</code>, <code>Entertainment</code>, in English or Spanish) are mapped to Vinted's catalog IDs automatically. Any other name (e.g. <code>Zapatillas</code>, <code>Dresses</code>) is added to your search keywords so it still narrows results. Matching ignores case and accents. Leave empty for all categories."
          },
          "brandNames": {
            "title": "Brand names",
            "type": "array",
            "description": "Optional. Enter brand names to focus the search (e.g. <code>Nike</code>). The simplest approach is to just include the brand in the 🔍 Search query above; this field is appended to the query text when no keyword is given.",
            "items": {
              "type": "string"
            }
          },
          "maxItems": {
            "title": "Max items",
            "minimum": 1,
            "type": "integer",
            "description": "Maximum total number of listings to extract across all queries. Start with a low value (10-50) for your first test run to keep it fast and cheap. Leave empty for no cap."
          },
          "priceFrom": {
            "title": "Min price",
            "minimum": 0,
            "type": "integer",
            "description": "Only include items priced at or above this amount. Leave empty for no minimum."
          },
          "priceTo": {
            "title": "Max price",
            "minimum": 0,
            "type": "integer",
            "description": "Only include items priced at or below this amount. Leave empty for no maximum."
          },
          "currency": {
            "title": "Currency",
            "type": "string",
            "description": "Currency code applied to the price filters above. Match it to the selected marketplace (EUR for vinted.es).",
            "default": "EUR"
          },
          "order": {
            "title": "Sort order",
            "enum": [
              "relevance",
              "newest_first",
              "price_low_to_high",
              "price_high_to_low"
            ],
            "type": "string",
            "description": "Choose how Vinted sorts the results before they are scraped. 'Newest first' is best for monitoring new listings.",
            "default": "newest_first"
          },
          "domain": {
            "title": "Vinted domain",
            "enum": [
              "www.vinted.es",
              "www.vinted.fr",
              "www.vinted.it",
              "www.vinted.de",
              "www.vinted.com",
              "www.vinted.co.uk",
              "www.vinted.pt",
              "www.vinted.nl",
              "www.vinted.pl"
            ],
            "type": "string",
            "description": "Select the national Vinted marketplace. Defaults to Spain (vinted.es).",
            "default": "www.vinted.es"
          },
          "maxPagesPerQuery": {
            "title": "Max pages per query",
            "minimum": 1,
            "maximum": 500,
            "type": "integer",
            "description": "How many catalog pages to fetch per query (each page holds up to 96 items). The 'Max items' cap above still applies. Apify test runs have a 5-minute limit; raise this for large production runs.",
            "default": 5
          },
          "perPage": {
            "title": "Items per page",
            "minimum": 1,
            "maximum": 96,
            "type": "integer",
            "description": "Number of items requested per catalog page. Vinted's maximum is 96; leave as is unless debugging.",
            "default": 96
          },
          "catalogIds": {
            "title": "Category IDs (advanced override)",
            "type": "array",
            "description": "Power users only. If you already know exact Vinted catalog IDs, enter them here to bypass name lookup. These are combined with anything resolved from the 'Category name' field above. Most users should leave this empty and use 'Category name' instead.",
            "items": {
              "type": "string"
            }
          },
          "minDelayMs": {
            "title": "Min delay between requests",
            "minimum": 0,
            "type": "integer",
            "description": "Lower bound of the randomized human-like pause between requests. Lower = faster but more likely to trigger anti-bot defences.",
            "default": 800
          },
          "maxDelayMs": {
            "title": "Max delay between requests",
            "minimum": 0,
            "type": "integer",
            "description": "Upper bound of the randomized pause between requests.",
            "default": 2500
          },
          "maxConsecutiveErrors": {
            "title": "Max consecutive errors",
            "minimum": 1,
            "type": "integer",
            "description": "The run stops after this many failed requests in a row, to avoid burning proxy traffic against a block. Whatever was already collected is still saved.",
            "default": 3
          },
          "slowResponseSecs": {
            "title": "Abnormal response-time threshold",
            "minimum": 1,
            "type": "integer",
            "description": "If any single response is slower than this, the run treats it as an anomaly (likely throttling) and stops cleanly.",
            "default": 30
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Vinted is protected by DataDome. <b>Residential proxies (country ES) are strongly recommended</b> — datacenter IPs are frequently blocked. Only change if you know what you're doing.",
            "default": {
              "useApifyProxy": true,
              "apifyProxyGroups": [
                "RESIDENTIAL"
              ],
              "apifyProxyCountry": "ES"
            }
          }
        }
      },
      "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
                  }
                }
              },
              "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}