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

Scrape Vinted listings from any country site by keyword, category, brand, size, condition, color and price, or from search, item and member links. Get prices with fees, photos, favourites, seller ratings and whole closets.

- **URL**: https://apify.com/automly/vinted-scraper.md
- **Developed by:** [Automly](https://apify.com/automly) (community)
- **Categories:** E-commerce, Lead generation
- **Stats:** 3 total users, 0 monthly users, 95.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.65 / 1,000 items

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

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

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## 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.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Vinted Scraper

### What is Vinted Scraper?

**Vinted Scraper** is a tool that lets you **scrape Vinted listings** from any Vinted country site: title, price with the buyer protection fee and total, brand, size, condition, color, category, photos, favourites, availability (for sale, reserved or sold), shipping price, the seller's description and the seller's public rating, reviews and closet size. Search by keyword with Vinted's own filters, paste any Vinted search, item or member link, click **Start**, and download the items as Excel, CSV or JSON.

- ⚡ **Fast:** about 2,000 items from a search in under a minute, or 100 items with every detail in about a minute and a half (our tests)
- 🌍 **Every Vinted country:** France, Germany, United Kingdom, United States, Italy, Spain, Poland, Netherlands, Belgium and 17 more, with prices in each site's own currency
- 🔎 **Whole searches:** Vinted shows at most 960 results for one search; this scraper goes past that and brings back the full search
- 👗 **Whole closets:** every item a member has for sale, with the seller's rating, reviews and followers
- 🔓 **No login:** no Vinted account needed
- 🛡️ **No personal data:** only public seller handles and shop figures; names, cities and contact details are left out

### What can Vinted Scraper do?

- **Scrape Vinted search results** for any keyword, like `nike air max`, `levis 501` or `zara dress`
- **Filter Vinted listings** by category, brand, size, condition, color and price, sorted by relevance, newest first or price
- **Scrape any Vinted link**: catalog and search pages with the filters you set on the site, brand pages, single items and member profiles
- **Scrape a Vinted closet**: every item a seller has for sale, from a profile link or member number
- **Get full item details**: description, every photo, color, material, category path, shipping price, sold or reserved status
- **Track Vinted prices** across countries: run the same search on vinted.fr, vinted.de and vinted.co.uk and compare
- **Monitor new Vinted listings** with "Newest first" and a schedule
- Export to Excel, CSV, JSON, HTML or XML, or send the data to Google Sheets, Make, Zapier and more

### What data can you extract from Vinted?

| | | |
|---|---|---|
| 🏷️ Title and item link | 💶 Price, buyer protection fee and total | 🚚 Shipping price |
| 👟 Brand and brand ID | 📏 Size | ✨ Condition |
| 🎨 Color and material | 🗂️ Category path and ID | 📝 Seller's description |
| 📸 Main photo and every photo | ❤️ Favourites | ✅ For sale, reserved or sold |
| 👤 Seller username, ID and profile link | ⭐ Seller rating and review count | 📦 Seller's items for sale, items sold, followers |
| 🌍 Seller country | 🏪 Business seller flag | 📅 Upload date (closets) |

### How to scrape Vinted

1. [Create a free Apify account](https://console.apify.com/sign-up).
2. Open **Vinted Scraper**.
3. Enter search terms and pick a country, or paste Vinted links or members, one per line.
4. Set filters if you like, and how many items you want per search.
5. Click **Start**, then download the items as Excel, CSV, JSON or HTML.

### How much does it cost to scrape Vinted?

You pay per item saved. An item with full details (with **Include full details** turned on) costs a little more than an item from the search results alone. The **Pricing** tab shows the exact price per 1,000 items on your Apify plan, with lower prices on paid plans. Platform usage is included, so you pay nothing else for the run.

Every Apify account gets **$5 of free usage each month**, which is plenty to try the scraper on real searches. **Max items per search, link or member** keeps the cost of a run under control, and you can also set a maximum cost per run.

### ⬇️ Input

| Setting | What it does |
|---|---|
| **Search terms** | What to search for, one per line, like `nike air max` |
| **Country** | Which Vinted site the search terms use, like France (vinted.fr) or United Kingdom (vinted.co.uk) |
| **Vinted links** | Search and catalog pages with any filters, brand pages, item pages and member profiles, from any Vinted country |
| **Members (closets)** | Member profile links or member numbers whose closet you want |
| **Max items per search, link or member** | How many items to save for each (default 100). Set 0 for every matching item |
| **Include full details** | Adds the description, every photo, color, category, shipping price, availability and the seller's rating, reviews, items and country |
| **Sort by** | Relevance, newest first, price low to high or price high to low |
| **Categories** | Vinted category numbers or links, like `1904` (Women) or `https://www.vinted.fr/catalog/525-leggings` |
| **Brands** | Brand names as Vinted spells them, like `Nike` or `Levi's`, or brand numbers |
| **Size numbers** | Size numbers from a Vinted search link where you picked a size |
| **Condition** | New with tags, new without tags, very good, good, satisfactory, not fully functional |
| **Colors** | Black, white, blue, beige and the rest of Vinted's colors |
| **Minimum price / Maximum price** | Price range in the country's currency |

Nike items in very good condition between 10 and 50 euros on vinted.fr, newest first:

```json
{
  "search": ["nike air max"],
  "country": "fr",
  "conditions": ["very_good"],
  "minPrice": 10,
  "maxPrice": 50,
  "sortBy": "newest_first",
  "maxItems": 200
}
```

A search link from the site, a single item and a member's closet, with full details:

```json
{
  "startUrls": [
    "https://www.vinted.de/catalog?search_text=levis%20501&brand_ids[]=10&status_ids[]=2",
    "https://www.vinted.co.uk/items/10385883305-levis-711-white-jeans-size-33-womens",
    "https://www.vinted.fr/member/73050930-crosstraining"
  ],
  "includeDetails": true,
  "maxItems": 100
}
```

### ⬆️ Output

One row per item. A row with full details:

```json
{
  "id": "10385925876",
  "url": "https://www.vinted.de/items/10385925876-pantalone-di-tuta-nike",
  "title": "pantalone di tuta nike",
  "brand": "Nike Air",
  "size": "L",
  "condition": "Sehr gut",
  "price": 20.0,
  "currency": "EUR",
  "serviceFee": 1.7,
  "totalPrice": 21.7,
  "shippingFrom": 4.85,
  "favourites": 0,
  "availability": "available",
  "promoted": false,
  "photo": "https://images1.vinted.net/t/02_01eba_nnHXGcxtJj2dnaUgUsBYL76h/f800/3cf658d2.webp",
  "photos": [
    "https://images1.vinted.net/t/02_01eba_nnHXGcxtJj2dnaUgUsBYL76h/f800/3cf658d2.webp",
    "https://images1.vinted.net/t/05_00f7c_kQ3qYnVCzVAe1vZcLcZtiWZ4/f800/4df3bf9c.webp"
  ],
  "description": "pantalone nero nike nuovo usato pochissime volte taglia L",
  "color": "Schwarz, Weiß",
  "category": "Herren > Kleidung > Hosen > Jogging-Hosen",
  "categoryId": "1821",
  "brandId": "5977",
  "attributes": {"Material": "Baumwolle"},
  "uploadedAt": null,
  "listedAgo": "6 Min.",
  "sellerId": "295566409",
  "sellerUsername": "veronica4625",
  "sellerUrl": "https://www.vinted.de/member/295566409",
  "sellerIsBusiness": false,
  "sellerRating": 5.0,
  "sellerReviewCount": 9,
  "sellerItemCount": 15,
  "sellerFollowers": 0,
  "sellerSoldCount": 9,
  "sellerCountry": "IT",
  "sellerOnHoliday": false,
  "country": "de",
  "domain": "www.vinted.de",
  "details": true,
  "source": "nike air max",
  "scrapedAt": "2026-10-15T11:34:04Z"
}
```

Without full details a row has the same fields, with the description, color, category, shipping price and seller figures left empty. Labels such as condition and color come in the language of the Vinted site you scrape.

The **Output** tab has two views: **Overview** (photo, title, brand, size, condition, prices, favourites, seller) and **Details and sellers**. A run report lists, for every search, link or member, how many items the site lists and how many were saved.

### How do I scrape more than 960 results from a Vinted search?

Vinted's own search pages stop at 960 items. Set **Max items** above 960 (or to 0 for everything) and the scraper reads the whole search: past 960 items the results come back in price order, each item once. The run report says when a search was that big.

### How do I scrape a Vinted seller's closet?

Paste the member's profile link (like `https://www.vinted.fr/member/73050930-crosstraining`) under **Vinted links** or **Members**, or type the member number. You get every item they have for sale, with the seller's rating, reviews, items for sale, followers and country on each row, and each item's upload date.

### How do I get prices in pounds, dollars or złoty?

Pick the country: each Vinted site shows prices in its own currency, so vinted.co.uk gives GBP, vinted.com USD, vinted.pl PLN, vinted.cz CZK, vinted.se SEK, vinted.dk DKK, vinted.hu HUF and vinted.ro RON. Every row says its currency.

### Use cases

- **Resellers:** find underpriced items by brand and size, and check what similar items sell for
- **Price research:** compare second-hand prices for a brand across countries and conditions
- **Brands and retailers:** see how your products trade second-hand, which sizes and colors sell, and at what price
- **Market research:** count listings by category and brand, track new listings every day
- **Sellers:** study competing closets, their prices and their ratings

### Use with AI agents (MCP)

AI agents can run Vinted Scraper through the Apify MCP server. Ask for something like "find 50 Levi's 501 jeans in very good condition under 40 euros on vinted.fr, newest first", and the agent runs it with:

```json
{"search": ["levis 501"], "country": "fr", "brands": ["Levi's"], "conditions": ["very_good"], "maxPrice": 40, "sortBy": "newest_first", "maxItems": 50}
```

### Integrations and API

Run Vinted Scraper from your own code with the Apify API or the Apify clients for JavaScript and Python, schedule it daily, and connect the results to Google Sheets, Slack, Make, Zapier, Airbyte or your own webhook. Every run's items are also available as an API link in JSON, CSV or Excel.

### ❓FAQ

#### How much does Vinted Scraper cost?

You pay per item saved; see the **Pricing** tab for the price per 1,000 items on your plan. Items with full details cost a little more. The free $5 of monthly usage covers your first tests.

#### Which Vinted countries are supported?

France, Germany, United Kingdom, United States, Italy, Spain, Poland, Netherlands, Belgium, Lithuania, Czechia, Austria, Luxembourg, Portugal, Sweden, Denmark, Finland, Slovakia, Hungary, Romania, Croatia, Greece, Ireland, Slovenia, Estonia and Latvia. Links from any of these sites work as they are.

#### Can I get the number of views of an item?

No. Vinted shows view counts only to the seller. You get the number of favourites instead.

#### Do I need a Vinted account?

No. The scraper reads what anyone can see on Vinted without logging in.

#### What about personal data?

The scraper saves only what a listing shows publicly: the seller's username, member number, rating, review count, items for sale, items sold, followers, country and whether they sell as a business. It leaves out sellers' names, cities, last-seen times and verification details, and removes email addresses and phone numbers typed into descriptions. If you store data about sellers, make sure you have a lawful reason to, under the GDPR and similar laws.

#### Is it legal to scrape Vinted?

Scraping public data is generally allowed, but you are responsible for how you use it. Do not collect personal data you have no lawful reason to process, and respect Vinted's rights in its content. This scraper is not affiliated with, endorsed by or connected to Vinted.

#### Why did my search return fewer items than I asked for?

The search has fewer items than your limit, or some items appeared in another of your searches in the same run (each item is saved once). The run report shows how many items the site lists for each search.

#### An item or member was not found. Why?

The item was deleted or the member closed their account. Such inputs are listed as not found in the run report, and the run still succeeds.

#### Something is not working. What should I do?

Open an issue on the **Issues** tab with your input and the run link, and we will look at it quickly.

### Your feedback

If Vinted Scraper helps you, please leave a review on the Store page. It helps other people find it, and we read every one.

# Actor input Schema

## `search` (type: `array`):

What to search Vinted for, one search per line, e.g. nike air max, levis 501, zara dress. Each search uses the country and filters below. Leave empty to use only links, members or filters.

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

Which Vinted country site to search, e.g. fr for vinted.fr or uk for vinted.co.uk. Prices come in that site's currency (EUR, GBP, USD, PLN, CZK, SEK, DKK, HUF, RON). Pasted links keep their own country.

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

Paste Vinted links from any country site in any mix, e.g. a search or category page with the filters you set on the site (vinted.fr/catalog?search_text=nike\&brand_ids\[]=53), an item page (vinted.de/items/...) or a member's profile (vinted.co.uk/member/...) for their whole closet.

## `members` (type: `array`):

Vinted member profile links or member numbers whose closet (every item for sale) you want, e.g. https://www.vinted.fr/member/73050930-crosstraining or 73050930. Numbers use the country above.

## `maxItems` (type: `integer`):

How many items to save for each search, link or member, e.g. 100. Set 0 for every matching item.

## `includeDetails` (type: `boolean`):

Adds each item's description, every photo, color, category, shipping price, availability (sold or reserved) and the seller's rating, reviews, items for sale, followers and country. Slower and priced per detailed item; leave off for the listing fields only.

## `sortBy` (type: `string`):

Order in which items are collected, e.g. newest_first for the latest listings.

## `categories` (type: `array`):

Vinted category numbers or category links, e.g. 1904 (Women) or https://www.vinted.fr/catalog/525-leggings.

## `brands` (type: `array`):

Brand names exactly as Vinted spells them, or brand numbers, e.g. Nike, Zara, Levi's or 53.

## `sizeIds` (type: `array`):

Vinted size numbers, e.g. 207 (women's M). Copy them from a Vinted search link where you picked the size (size_ids\[]=207).

## `conditions` (type: `array`):

Only items in these conditions, e.g. new_with_tags and very_good.

## `colors` (type: `array`):

Only items in these colors, e.g. black and white.

## `minPrice` (type: `integer`):

Lowest item price in the country's currency, e.g. 10.

## `maxPrice` (type: `integer`):

Highest item price in the country's currency, e.g. 50.

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

Leave the default. Change only if you know you need a specific proxy.

## Actor input object example

```json
{
  "search": [
    "nike air max"
  ],
  "country": "fr",
  "maxItems": 50,
  "includeDetails": false,
  "sortBy": "relevance",
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

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

No description

## `details` (type: `string`):

No description

## `results` (type: `string`):

No description

## `report` (type: `string`):

No description

# 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 = {
    "search": [
        "nike air max"
    ],
    "maxItems": 50,
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("automly/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 = {
    "search": ["nike air max"],
    "maxItems": 50,
    "proxyConfiguration": { "useApifyProxy": True },
}

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

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

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

```

## CLI example

```bash
echo '{
  "search": [
    "nike air max"
  ],
  "maxItems": 50,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call automly/vinted-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,automly/vinted-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/oDDn1Y5aDlmy91UfB/builds/EUinwqCbfE0DN4yiS/openapi.json
