{
  "openapi": "3.0.1",
  "info": {
    "title": "Vinted Arbitrage [💰$1.5/1K] | Cross-Country | Price Compare",
    "description": "Scrape Vinted listings across 26 European markets, convert local prices to EUR and compare margins to find buy/sell arbitrage opportunities. Get per-market averages, medians and pairwise gross-margin reports.",
    "version": "2.0",
    "x-build-id": "qVCmN8pzJI1kEhEyb"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/ahmed_jasarevic~vinted-cross-country-arbitrage-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-ahmed_jasarevic-vinted-cross-country-arbitrage-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/ahmed_jasarevic~vinted-cross-country-arbitrage-scraper/runs": {
      "post": {
        "operationId": "runs-sync-ahmed_jasarevic-vinted-cross-country-arbitrage-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/ahmed_jasarevic~vinted-cross-country-arbitrage-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-ahmed_jasarevic-vinted-cross-country-arbitrage-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",
        "required": [
          "mode"
        ],
        "properties": {
          "mode": {
            "title": "🎯 Scraping Mode",
            "enum": [
              "SEARCH",
              "CROSS_COUNTRY",
              "TRENDING",
              "PRODUCT_DETAIL",
              "SELLER_PROFILE"
            ],
            "type": "string",
            "description": "Select how you want to scrape Vinted.",
            "default": "SEARCH"
          },
          "query": {
            "title": "🔍 Search Query",
            "type": "string",
            "description": "Keywords for finding items (e.g. 'Nike Jordan 4'). Leave empty to browse the whole catalogue."
          },
          "countries": {
            "title": "🌍 Markets",
            "type": "array",
            "description": "Select up to 5 Vinted markets to scrape per run. USA is not available: Vinted's US gateway blocks anonymous catalogue reads.",
            "items": {
              "type": "string",
              "enum": [
                "fr",
                "de",
                "uk",
                "it",
                "es",
                "nl",
                "pl",
                "pt",
                "be",
                "at",
                "lt",
                "cz",
                "sk",
                "hu",
                "ro",
                "hr",
                "fi",
                "dk",
                "se",
                "ee",
                "gr",
                "ie",
                "lu",
                "lv",
                "si"
              ],
              "enumTitles": [
                "France (FR)",
                "Germany (DE)",
                "United Kingdom (UK)",
                "Italy (IT)",
                "Spain (ES)",
                "Netherlands (NL)",
                "Poland (PL)",
                "Portugal (PT)",
                "Belgium (BE)",
                "Austria (AT)",
                "Lithuania (LT)",
                "Czech Republic (CZ)",
                "Slovakia (SK)",
                "Hungary (HU)",
                "Romania (RO)",
                "Croatia (HR)",
                "Finland (FI)",
                "Denmark (DK)",
                "Sweden (SE)",
                "Estonia (EE)",
                "Greece (GR)",
                "Ireland (IE)",
                "Luxembourg (LU)",
                "Latvia (LV)",
                "Slovenia (SI)"
              ]
            },
            "default": [
              "fr",
              "de",
              "pl"
            ]
          },
          "maxItems": {
            "title": "📊 Max Results per Market",
            "minimum": 1,
            "maximum": 5000,
            "type": "integer",
            "description": "Maximum items to fetch per market. Free accounts are capped at 50.",
            "default": 40
          },
          "startUrls": {
            "title": "📦 URLs",
            "type": "array",
            "description": "Item links for Product Detail mode, or seller profile links for Seller Profile mode.",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "status_ids": {
            "title": "✨ Condition",
            "type": "array",
            "description": "Select item conditions. Mapped to Vinted's internal status IDs automatically.",
            "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",
            "type": "integer",
            "description": "Minimum price filter. Set together with Max Price to unlock price-band widening past Vinted's 960-row cap.",
            "default": 0
          },
          "maxPrice": {
            "title": "💶 Max Price",
            "type": "integer",
            "description": "Maximum price filter. Required for price-band widening."
          },
          "order": {
            "title": "📈 Sort By",
            "enum": [
              "newest_first",
              "relevance",
              "price_low_to_high",
              "price_high_to_low",
              "most_popular",
              "highest_viewed"
            ],
            "type": "string",
            "description": "How to sort results.",
            "default": "newest_first"
          },
          "catalog_ids": {
            "title": "📁 Category IDs",
            "type": "string",
            "description": "Vinted category IDs, comma separated (optional)."
          },
          "brand_ids": {
            "title": "🏷️ Brand IDs",
            "type": "string",
            "description": "Vinted brand IDs, comma separated (optional). Nike=53, Adidas=14, H&M=7, Zara=12, Mango=15."
          },
          "size_ids": {
            "title": "📏 Size IDs",
            "type": "string",
            "description": "Vinted size IDs, comma separated (optional)."
          },
          "color_ids": {
            "title": "🎨 Color IDs",
            "type": "string",
            "description": "Vinted colour IDs, comma separated (optional)."
          },
          "fetchPhotos": {
            "title": "📸 Include All Photo URLs",
            "type": "boolean",
            "description": "Add every photo URL of each listing as a comma-separated field. Increases dataset size.",
            "default": false
          },
          "priceBandPartitioning": {
            "title": "🔀 Deep Pagination",
            "type": "boolean",
            "description": "When a search matches more items than Vinted's 960-row page cap, split the price range into bands and sweep each one to go deeper. Requires Max Price.",
            "default": true
          },
          "proxyConfiguration": {
            "title": "🌐 Proxy Configuration",
            "type": "object",
            "description": "Optional. One sticky IP is used per market for the whole session. Leave off for a direct connection, which is enough for the catalogue gateway.",
            "default": {
              "useApifyProxy": false
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}