# Vinted Scraper (`crawlerbros/vinted-scraper`) Actor

Scrape Vinted second-hand fashion marketplace listings across 19 countries. Search items by keyword, brand, catalog, price, color, condition, or scrape user closets, item URLs, brand pages, and seller feedbacks.

- **URL**: https://apify.com/crawlerbros/vinted-scraper.md
- **Developed by:** [Crawler Bros](https://apify.com/crawlerbros) (community)
- **Categories:** E-commerce, Automation, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 11 bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

from $3.00 / 1,000 results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## Vinted Scraper

Scrape **Vinted**, the second-hand fashion marketplace, across 19 country
domains (US, UK, FR, DE, IT, ES, PL, CZ, NL, LT, LU, AT, BE, PT, RO, SK, FI,
SE, GR). Search items by keyword, filter by brand / catalog / size /
color / material / condition / price; scrape user closets; brand registries;
and seller feedbacks — all without login.

### What you can scrape

- **Items** — search by keyword + filters across any country domain
- **Per-user closets** — every public item a seller has listed
- **Per-brand items** — all items in a Vinted brand registry
- **Per-catalog items** — all items in a Vinted category (catalog) ID
- **Brand registry** — search Vinted's brand directory by keyword
- **Seller feedbacks** — public reviews left for a user

### Modes

| Mode               | Required input                  | Output                       |
|--------------------|---------------------------------|------------------------------|
| `search`           | `searchText` (or any filter)    | Items                        |
| `byUrl`            | `urls[]`                        | Items / users / brand items  |
| `byUser`           | `userId`                        | User profile + closet items  |
| `byBrand`          | `brandId`                       | Brand items                  |
| `byCatalog`        | `catalogId`                     | Catalog items                |
| `byBrandSearch`    | `brandKeyword`                  | Brand registry results       |
| `byUserFeedbacks`  | `userId`                        | Seller feedbacks             |

### Inputs

- `mode` — one of the modes above
- `country` — Vinted country domain (`com`, `co.uk`, `fr`, `de`, …)
- `searchText` — keyword (search mode)
- `order` — `relevance`, `newest_first`, `price_high_to_low`, `price_low_to_high`
- `urls[]` — direct Vinted URLs (item / member / brand / catalog)
- `userId`, `brandId`, `catalogId`, `brandKeyword` — per-mode IDs / keyword
- `brandIds[]`, `catalogIds[]`, `sizeIds[]`, `colorIds[]`, `materialIds[]`,
  `statusIds[]` — search filters
- `priceFrom`, `priceTo` — price range (in the country's local currency)
- `minRating` — drop sellers with feedback rating below this (0.0 – 5.0)
- `containsKeyword` — substring filter on item title/description
- `maxItems` — hard cap on emitted records (1 – 1000)
- `perPage` — Vinted page size (1 – 96)
- `useProxy`, `autoEscalateOnBlock`, `proxyConfiguration` — proxy controls
- `cookieHeader` — optional logged-in cookie header (only needed if you see
  persistent 401/403; public endpoints work without it)

### Output fields

Per-item record fields include:

- `itemId`, `title`, `description`, `brandTitle`, `brandId`, `catalogId`
- `sizeTitle`, `sizeId`, `statusId`, `status`
- `priceAmount`, `priceCurrency`, `totalPriceAmount`, `serviceFeeAmount`
- `isVisible`, `isClosed`, `isReserved`, `isPromoted`
- `favouriteCount`, `viewCount`, `createdAt`, `updatedAt`
- `itemUrl`, `canonicalUrl`, `imageUrl`, `photos[]`
- `sellerId`, `sellerLogin`, `sellerCountryCode`, `sellerProfileUrl`,
  `sellerAvatarUrl`, `sellerFeedbackCount`, `sellerFeedbackReputation`,
  `sellerIsBusiness`
- `recordType`, `siteName`, `sourceCountry`, `sourceCountryCode`, `scrapedAt`

User records include feedback counts, reputation, country, profile URL,
avatar, item count.

Empty / null fields are stripped before pushing — every emitted field carries
a real value.

### FAQ

**Do I need a Vinted account?** No. All endpoints used here are public.
A `cookieHeader` input is exposed for advanced cases where you've hit
persistent 401/403, but daily defaults work without it.

**Which country should I pick?** `com` is the US domain. Use `fr`, `de`, `it`,
`es`, `co.uk`, etc. for European inventory. Each country has its own
inventory, currency, and slugs. (Vinted does not currently operate a
`com.au` storefront; the actor lists the 19 supported domains in the
`country` input.)

**Does it use Apify proxy?** Off by default — Vinted is generally accessible
from datacenter IPs. If a Cloudflare challenge appears, the actor
auto-escalates to Apify proxy (datacenter then residential) without
intervention.

**How are price filters applied?** `priceFrom`/`priceTo` are passed directly to
Vinted's `/api/v2/catalog/items` endpoint, so the filter is enforced
server-side. Currency is whatever the chosen country uses.

**Can I scrape a single Vinted item URL?** Yes — `byUrl` mode accepts item,
member, brand, or catalog URLs and dispatches accordingly. Item URLs use the
public JSON-LD `Product` block from the HTML page.

**Why do some items show fewer fields?** Vinted's API only returns the rich
field set on items still active. Closed, reserved, or hidden items return a
trimmed payload — and we omit empty fields rather than emit nulls.

### Limitations

- **Member URLs require the numeric ID.** Vinted's canonical member URL is
  `vinted.com/member/<numeric-id>` or `vinted.com/member/<numeric-id>-<slug>`.
  Slug-only URLs like `vinted.com/member/<login>` resolve to a generic page on
  Vinted and cannot be scraped — when given such a URL the actor logs a clear
  warning and skips it. Use the canonical numeric URL (visible on any seller's
  item card via `sellerProfileUrl`) or call `byUser` mode with the numeric
  `userId` directly.
- **No login-walled fields.** Buyer-side data (chat history, your own
  favourites, hidden draft items) requires a logged-in cookie and is not in
  scope of the public API surface.
- **`/api/v2/items/{id}` (logged-in detail endpoint) is gated.** When you scrape
  a single item URL, we use the public HTML page's JSON-LD instead — this
  yields title, description, brand, price, currency, image, category, color,
  condition. Some richer fields (favourite count, view count) are only
  available on items found through `search` / `byBrand` / `byCatalog` modes.
- **Cloudflare challenges** can occasionally appear from a single IP. The
  actor auto-rotates Apify proxy sessions to recover; if challenges persist
  enable `useProxy` with `RESIDENTIAL` group.

# Actor input Schema

## `mode` (type: `string`):

search: keyword/filters → items. byUrl: explicit Vinted URLs (item, member, brand, catalog). byUser: user closet by user_id. byBrand: brand catalog by brand id or slug. byCatalog: items in a Vinted catalog (category) id. byBrandSearch: search the brand registry. byUserFeedbacks: seller reviews/feedbacks.
## `country` (type: `string`):

Vinted country domain to query.
## `searchText` (type: `string`):

Free-text keyword query.
## `order` (type: `string`):

Result ordering.
## `urls` (type: `array`):

Direct Vinted URLs (item, member/user, brand, catalog).
## `userId` (type: `string`):

Vinted numeric user_id (e.g. "3148714106").
## `brandId` (type: `string`):

Vinted numeric brand_id. Use "Search brand registry" mode to discover IDs (e.g. Nike=53, adidas=14).
## `catalogId` (type: `string`):

Vinted catalog (category) ID. Common: 1904 (Women clothes), 5 (Men clothes), 1193 (Kids), 1242 (Bags), 1231 (Beauty).
## `brandKeyword` (type: `string`):

Keyword to search the Vinted brand registry.
## `brandIds` (type: `array`):

Constrain item search to one or more brand IDs (e.g. [53] for Nike).
## `catalogIds` (type: `array`):

Constrain item search to one or more catalog IDs.
## `sizeIds` (type: `array`):

Constrain item search to one or more size IDs.
## `colorIds` (type: `array`):

Constrain item search to one or more color IDs (1=Black, 3=Grey, 5=White, 7=Beige, 9=Pink, 11=Purple, 12=Red, 13=Yellow, 14=Blue, 16=Green, 17=Orange, 19=Brown, 30=Multicolour).
## `materialIds` (type: `array`):

Constrain item search to one or more material IDs.
## `statusIds` (type: `array`):

Filter by condition: 6=New with tags, 1=New without tags, 2=Very good, 3=Good, 4=Satisfactory.
## `priceFrom` (type: `integer`):

Minimum price (in the country's local currency).
## `priceTo` (type: `integer`):

Maximum price (in the country's local currency).
## `minRating` (type: `number`):

Drop items whose seller's feedback rating is below this value (scale 1.0-5.0). Applied client-side after fetch; items with no rating attached pass through unchanged.
## `containsKeyword` (type: `string`):

Drop items whose title or description does not contain this keyword (case-insensitive substring).
## `maxItems` (type: `integer`):

Hard cap on emitted records.
## `perPage` (type: `integer`):

Vinted API page size (1-96).
## `useProxy` (type: `boolean`):

Route HTTP requests through Apify proxy. Vinted is generally accessible without proxy from datacenter IPs; enable if 403/Cloudflare challenges appear.
## `autoEscalateOnBlock` (type: `boolean`):

If a 403/Cloudflare challenge appears on a direct request, automatically retry through Apify proxy (datacenter then residential).
## `proxyConfiguration` (type: `object`):

Apify proxy configuration. Used only when useProxy is enabled.
## `cookieHeader` (type: `string`):

Optional logged-in cookie header (e.g. _vinted_xx_session=...; access_token_web=...). Not required for public endpoints; pass only if you see persistent 401/403.

## Actor input object example

```json
{
  "mode": "search",
  "country": "com",
  "searchText": "adidas",
  "order": "relevance",
  "urls": [],
  "brandIds": [],
  "catalogIds": [],
  "sizeIds": [],
  "colorIds": [],
  "materialIds": [],
  "statusIds": [],
  "maxItems": 25,
  "perPage": 96,
  "useProxy": false,
  "autoEscalateOnBlock": true,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": []
  }
}
````

# Actor output Schema

## `items` (type: `string`):

Dataset containing all scraped Vinted records.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "mode": "search",
    "country": "com",
    "searchText": "adidas",
    "order": "relevance",
    "urls": [],
    "brandIds": [],
    "catalogIds": [],
    "sizeIds": [],
    "colorIds": [],
    "materialIds": [],
    "statusIds": [],
    "maxItems": 25,
    "perPage": 96,
    "useProxy": false,
    "autoEscalateOnBlock": true,
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": []
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("crawlerbros/vinted-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "mode": "search",
    "country": "com",
    "searchText": "adidas",
    "order": "relevance",
    "urls": [],
    "brandIds": [],
    "catalogIds": [],
    "sizeIds": [],
    "colorIds": [],
    "materialIds": [],
    "statusIds": [],
    "maxItems": 25,
    "perPage": 96,
    "useProxy": False,
    "autoEscalateOnBlock": True,
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": [],
    },
}

# Run the Actor and wait for it to finish
run = client.actor("crawlerbros/vinted-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "mode": "search",
  "country": "com",
  "searchText": "adidas",
  "order": "relevance",
  "urls": [],
  "brandIds": [],
  "catalogIds": [],
  "sizeIds": [],
  "colorIds": [],
  "materialIds": [],
  "statusIds": [],
  "maxItems": 25,
  "perPage": 96,
  "useProxy": false,
  "autoEscalateOnBlock": true,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": []
  }
}' |
apify call crawlerbros/vinted-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=crawlerbros/vinted-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Vinted Scraper",
        "description": "Scrape Vinted second-hand fashion marketplace listings across 19 countries. Search items by keyword, brand, catalog, price, color, condition, or scrape user closets, item URLs, brand pages, and seller feedbacks.",
        "version": "1.0",
        "x-build-id": "YEAiXNVbZQHSroCJs"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/crawlerbros~vinted-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-crawlerbros-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/crawlerbros~vinted-scraper/runs": {
            "post": {
                "operationId": "runs-sync-crawlerbros-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/crawlerbros~vinted-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-crawlerbros-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",
                "required": [
                    "mode",
                    "country"
                ],
                "properties": {
                    "mode": {
                        "title": "Scrape mode",
                        "enum": [
                            "search",
                            "byUrl",
                            "byUser",
                            "byBrand",
                            "byCatalog",
                            "byBrandSearch",
                            "byUserFeedbacks"
                        ],
                        "type": "string",
                        "description": "search: keyword/filters → items. byUrl: explicit Vinted URLs (item, member, brand, catalog). byUser: user closet by user_id. byBrand: brand catalog by brand id or slug. byCatalog: items in a Vinted catalog (category) id. byBrandSearch: search the brand registry. byUserFeedbacks: seller reviews/feedbacks.",
                        "default": "search"
                    },
                    "country": {
                        "title": "Country / domain",
                        "enum": [
                            "com",
                            "co.uk",
                            "fr",
                            "de",
                            "it",
                            "es",
                            "pl",
                            "cz",
                            "nl",
                            "lt",
                            "lu",
                            "at",
                            "be",
                            "pt",
                            "ro",
                            "sk",
                            "fi",
                            "se",
                            "gr"
                        ],
                        "type": "string",
                        "description": "Vinted country domain to query.",
                        "default": "com"
                    },
                    "searchText": {
                        "title": "Search query (mode=search)",
                        "type": "string",
                        "description": "Free-text keyword query.",
                        "default": "adidas"
                    },
                    "order": {
                        "title": "Sort order (mode=search / byBrand / byCatalog)",
                        "enum": [
                            "relevance",
                            "newest_first",
                            "price_high_to_low",
                            "price_low_to_high"
                        ],
                        "type": "string",
                        "description": "Result ordering.",
                        "default": "relevance"
                    },
                    "urls": {
                        "title": "URLs (mode=byUrl)",
                        "type": "array",
                        "description": "Direct Vinted URLs (item, member/user, brand, catalog).",
                        "default": [],
                        "items": {
                            "type": "string"
                        }
                    },
                    "userId": {
                        "title": "User ID (mode=byUser / byUserFeedbacks)",
                        "type": "string",
                        "description": "Vinted numeric user_id (e.g. \"3148714106\")."
                    },
                    "brandId": {
                        "title": "Brand ID (mode=byBrand)",
                        "type": "string",
                        "description": "Vinted numeric brand_id. Use \"Search brand registry\" mode to discover IDs (e.g. Nike=53, adidas=14)."
                    },
                    "catalogId": {
                        "title": "Catalog / category ID (mode=byCatalog)",
                        "type": "string",
                        "description": "Vinted catalog (category) ID. Common: 1904 (Women clothes), 5 (Men clothes), 1193 (Kids), 1242 (Bags), 1231 (Beauty)."
                    },
                    "brandKeyword": {
                        "title": "Brand keyword (mode=byBrandSearch)",
                        "type": "string",
                        "description": "Keyword to search the Vinted brand registry."
                    },
                    "brandIds": {
                        "title": "Brand IDs filter (mode=search)",
                        "type": "array",
                        "description": "Constrain item search to one or more brand IDs (e.g. [53] for Nike).",
                        "default": [],
                        "items": {
                            "type": "string"
                        }
                    },
                    "catalogIds": {
                        "title": "Catalog IDs filter (mode=search)",
                        "type": "array",
                        "description": "Constrain item search to one or more catalog IDs.",
                        "default": [],
                        "items": {
                            "type": "string"
                        }
                    },
                    "sizeIds": {
                        "title": "Size IDs filter (mode=search)",
                        "type": "array",
                        "description": "Constrain item search to one or more size IDs.",
                        "default": [],
                        "items": {
                            "type": "string"
                        }
                    },
                    "colorIds": {
                        "title": "Color IDs filter (mode=search)",
                        "type": "array",
                        "description": "Constrain item search to one or more color IDs (1=Black, 3=Grey, 5=White, 7=Beige, 9=Pink, 11=Purple, 12=Red, 13=Yellow, 14=Blue, 16=Green, 17=Orange, 19=Brown, 30=Multicolour).",
                        "default": [],
                        "items": {
                            "type": "string"
                        }
                    },
                    "materialIds": {
                        "title": "Material IDs filter (mode=search)",
                        "type": "array",
                        "description": "Constrain item search to one or more material IDs.",
                        "default": [],
                        "items": {
                            "type": "string"
                        }
                    },
                    "statusIds": {
                        "title": "Condition / status IDs filter (mode=search)",
                        "type": "array",
                        "description": "Filter by condition: 6=New with tags, 1=New without tags, 2=Very good, 3=Good, 4=Satisfactory.",
                        "default": [],
                        "items": {
                            "type": "string"
                        }
                    },
                    "priceFrom": {
                        "title": "Min price (mode=search)",
                        "minimum": 0,
                        "maximum": 1000000,
                        "type": "integer",
                        "description": "Minimum price (in the country's local currency)."
                    },
                    "priceTo": {
                        "title": "Max price (mode=search)",
                        "minimum": 0,
                        "maximum": 1000000,
                        "type": "integer",
                        "description": "Maximum price (in the country's local currency)."
                    },
                    "minRating": {
                        "title": "Min seller feedback rating (filter)",
                        "minimum": 0,
                        "maximum": 5,
                        "type": "number",
                        "description": "Drop items whose seller's feedback rating is below this value (scale 1.0-5.0). Applied client-side after fetch; items with no rating attached pass through unchanged."
                    },
                    "containsKeyword": {
                        "title": "Title / description contains keyword (filter)",
                        "type": "string",
                        "description": "Drop items whose title or description does not contain this keyword (case-insensitive substring)."
                    },
                    "maxItems": {
                        "title": "Max items",
                        "minimum": 1,
                        "maximum": 1000,
                        "type": "integer",
                        "description": "Hard cap on emitted records.",
                        "default": 50
                    },
                    "perPage": {
                        "title": "Items per page",
                        "minimum": 1,
                        "maximum": 96,
                        "type": "integer",
                        "description": "Vinted API page size (1-96).",
                        "default": 96
                    },
                    "useProxy": {
                        "title": "Use Apify proxy",
                        "type": "boolean",
                        "description": "Route HTTP requests through Apify proxy. Vinted is generally accessible without proxy from datacenter IPs; enable if 403/Cloudflare challenges appear.",
                        "default": false
                    },
                    "autoEscalateOnBlock": {
                        "title": "Auto-escalate to proxy on block",
                        "type": "boolean",
                        "description": "If a 403/Cloudflare challenge appears on a direct request, automatically retry through Apify proxy (datacenter then residential).",
                        "default": true
                    },
                    "proxyConfiguration": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Apify proxy configuration. Used only when useProxy is enabled.",
                        "default": {
                            "useApifyProxy": true,
                            "apifyProxyGroups": []
                        }
                    },
                    "cookieHeader": {
                        "title": "Cookie header (optional)",
                        "type": "string",
                        "description": "Optional logged-in cookie header (e.g. _vinted_xx_session=...; access_token_web=...). Not required for public endpoints; pass only if you see persistent 401/403."
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
