# Vinted Scraper — Secondhand Fashion, Electronics & Home Items (`studio-amba/vinted-scraper`) Actor

Scrape listings, prices, seller ratings, and item details from Vinted — Europe's #1 secondhand marketplace. Supports all EU countries.

- **URL**: https://apify.com/studio-amba/vinted-scraper.md
- **Developed by:** [Studio Amba](https://apify.com/studio-amba) (community)
- **Categories:** E-commerce
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per usage

This Actor is paid per platform usage. The Actor is free to use, and you only pay for the Apify platform usage, which gets cheaper the higher subscription plan you have.

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

## 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 -- Europe's #1 Secondhand Marketplace

Scrape listings, prices, seller ratings, and item details from Vinted across 15 European countries. Fashion, electronics, home goods -- extract structured data from the continent's largest secondhand platform.

### What is Vinted Scraper?

Vinted is Europe's biggest peer-to-peer marketplace for secondhand items, with over 80 million members across 18 markets. This scraper extracts listing data via Vinted's internal API, delivering clean structured JSON for any search query or category.

Here's what people use it for:

- **Reselling arbitrage** -- Find underpriced items across different Vinted country sites. A Nike jacket listed at EUR 15 in Lithuania might sell for EUR 40 in France.
- **Market price research** -- Building a pricing model for secondhand goods? Get real asking prices across thousands of listings, filtered by brand, size, condition, and country.
- **Competitive intelligence** -- Track what's selling, at what price, and how fast. Monitor view counts and favourite counts to gauge demand.
- **Inventory sourcing** -- Run automated searches to find items matching your criteria before other resellers do.
- **Brand monitoring** -- Track how your brand's products are resold. See pricing, condition, and volume on the secondhand market.
- **Academic research** -- Study circular economy dynamics, pricing psychology, or fashion trends with real marketplace data.

### What data does Vinted Scraper extract?

Every listing comes with a rich set of fields:

- **Title** and description
- **Price** and currency
- **Condition** -- New with tags, New without tags, Very good, Good, Satisfactory
- **Brand** -- Nike, Zara, H&M, IKEA, Apple, etc.
- **Size** -- S, M, L, XL, EU 38, etc.
- **Color** -- primary and secondary colors
- **Category** -- Vinted catalog category
- **Images** -- main image + all listing photos
- **Seller info** -- username, rating (0-1), review count, city
- **Engagement** -- view count and favourite count
- **Upload date** -- when the listing was created
- **URL** -- direct link to the listing

### How to scrape Vinted

#### Search by keyword

Find items matching a search term across all categories.

```json
{
    "searchQuery": "nike air max",
    "country": "be",
    "maxResults": 100
}
````

#### Scrape a specific Vinted URL

Pass any Vinted catalog or search URL directly.

```json
{
    "startUrls": [
        { "url": "https://www.vinted.be/catalog?search_text=iphone+14&order=newest_first" }
    ],
    "maxResults": 200
}
```

#### Filter by category

Use Vinted catalog IDs to narrow results to a specific category.

```json
{
    "searchQuery": "jacket",
    "country": "fr",
    "category": "1904",
    "maxResults": 50
}
```

#### Scrape multiple countries

Run separate instances for each country, or use startUrls pointing to different Vinted domains.

```json
{
    "startUrls": [
        { "url": "https://www.vinted.be/catalog?search_text=nike" },
        { "url": "https://www.vinted.fr/catalog?search_text=nike" },
        { "url": "https://www.vinted.de/catalog?search_text=nike" }
    ],
    "maxResults": 300
}
```

### Supported countries

Belgium, France, Germany, Netherlands, Italy, Spain, Portugal, Poland, Czech Republic, Lithuania, Hungary, Romania, Austria, Luxembourg, and the United Kingdom.

### Output example

```json
{
    "title": "Nike Air Max 90 - Size 42",
    "price": 35.00,
    "currency": "EUR",
    "url": "https://www.vinted.be/items/1234567890-nike-air-max-90",
    "scrapedAt": "2026-04-03T12:00:00.000Z",
    "condition": "Very good",
    "brand": "Nike",
    "size": "42",
    "color": "Black, White",
    "category": "1242",
    "imageUrl": "https://images1.vinted.net/t/03_024af_xxx/f800/1234567890.jpeg",
    "imageUrls": [
        "https://images1.vinted.net/t/03_024af_xxx/f800/1234567890.jpeg",
        "https://images1.vinted.net/t/03_024af_xxx/f800/1234567891.jpeg"
    ],
    "sellerName": "fashionista_bxl",
    "sellerRating": 1.0,
    "sellerReviewCount": 42,
    "sellerCity": "Brussels",
    "views": 120,
    "favourites": 5,
    "uploadDate": "2026-03-28T14:30:00Z",
    "description": "Nike Air Max 90 in excellent condition, worn only twice."
}
```

### Tips for best results

- **Use proxies** for large scrapes (1000+ items). Vinted rate-limits heavy usage from single IPs.
- **Country matters** -- Each Vinted country site has different listings. Belgian sellers only appear on vinted.be.
- **Combine with scheduling** -- Set up periodic runs to track price changes or new listings for specific searches.
- **Start small** -- Test with `maxResults: 10` first to verify your search returns what you expect.

### Cost estimate

This actor uses Vinted's internal API, making it very efficient:

- \~100 items: under 10 seconds, minimal compute
- \~1,000 items: about 30 seconds
- \~10,000 items: a few minutes

No browser is needed, keeping costs low.

### Legal notice

This actor is provided for educational and research purposes. Respect Vinted's Terms of Service and applicable laws. Use responsibly and do not overload Vinted's servers.

# Actor input Schema

## `startUrls` (type: `array`):

Vinted listing or search URLs. Example: https://www.vinted.be/catalog?search\_text=nike

## `searchQuery` (type: `string`):

Search for items by keyword (e.g., 'nike air max', 'iphone 14', 'ikea kallax'). Searches across all categories.

## `country` (type: `string`):

Which Vinted country site to scrape. Determines currency, language, and available listings.

## `category` (type: `string`):

Optional category filter. Use Vinted catalog IDs (e.g., '1904' for Women's Clothing, '5' for Men's Clothing). Leave empty for all categories.

## `maxResults` (type: `integer`):

Maximum number of listings to return.

## `proxyConfiguration` (type: `object`):

Proxy settings. Recommended for reliability — Vinted may rate-limit direct requests.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://www.vinted.be/catalog?search_text=nike"
    }
  ],
  "searchQuery": "nike air max",
  "country": "be",
  "maxResults": 100
}
```

# 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 = {
    "startUrls": [
        {
            "url": "https://www.vinted.be/catalog?search_text=nike"
        }
    ],
    "searchQuery": "nike air max"
};

// Run the Actor and wait for it to finish
const run = await client.actor("studio-amba/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 = {
    "startUrls": [{ "url": "https://www.vinted.be/catalog?search_text=nike" }],
    "searchQuery": "nike air max",
}

# Run the Actor and wait for it to finish
run = client.actor("studio-amba/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 '{
  "startUrls": [
    {
      "url": "https://www.vinted.be/catalog?search_text=nike"
    }
  ],
  "searchQuery": "nike air max"
}' |
apify call studio-amba/vinted-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Vinted Scraper — Secondhand Fashion, Electronics & Home Items",
        "description": "Scrape listings, prices, seller ratings, and item details from Vinted — Europe's #1 secondhand marketplace. Supports all EU countries.",
        "version": "0.1",
        "x-build-id": "KHLN4imaNC5SeZ4Qc"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/studio-amba~vinted-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-studio-amba-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/studio-amba~vinted-scraper/runs": {
            "post": {
                "operationId": "runs-sync-studio-amba-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/studio-amba~vinted-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-studio-amba-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": {
                    "startUrls": {
                        "title": "Start URLs",
                        "type": "array",
                        "description": "Vinted listing or search URLs. Example: https://www.vinted.be/catalog?search_text=nike",
                        "items": {
                            "type": "object",
                            "required": [
                                "url"
                            ],
                            "properties": {
                                "url": {
                                    "type": "string",
                                    "title": "URL of a web page",
                                    "format": "uri"
                                }
                            }
                        }
                    },
                    "searchQuery": {
                        "title": "Search Query",
                        "type": "string",
                        "description": "Search for items by keyword (e.g., 'nike air max', 'iphone 14', 'ikea kallax'). Searches across all categories."
                    },
                    "country": {
                        "title": "Country",
                        "enum": [
                            "be",
                            "fr",
                            "de",
                            "nl",
                            "it",
                            "es",
                            "pt",
                            "pl",
                            "cz",
                            "lt",
                            "hu",
                            "ro",
                            "at",
                            "lu",
                            "co.uk"
                        ],
                        "type": "string",
                        "description": "Which Vinted country site to scrape. Determines currency, language, and available listings.",
                        "default": "be"
                    },
                    "category": {
                        "title": "Category",
                        "type": "string",
                        "description": "Optional category filter. Use Vinted catalog IDs (e.g., '1904' for Women's Clothing, '5' for Men's Clothing). Leave empty for all categories."
                    },
                    "maxResults": {
                        "title": "Max Results",
                        "minimum": 1,
                        "maximum": 10000,
                        "type": "integer",
                        "description": "Maximum number of listings to return.",
                        "default": 100
                    },
                    "proxyConfiguration": {
                        "title": "Proxy Configuration",
                        "type": "object",
                        "description": "Proxy settings. Recommended for reliability — Vinted may rate-limit direct requests."
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
