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

Scrape Vinted for secondhand fashion listings across 13 countries. Get prices, brands, sizes, seller info, photos and more.

- **URL**: https://apify.com/h4sh/vinted-scraper.md
- **Developed by:** [Dominique](https://apify.com/h4sh) (community)
- **Categories:** E-commerce
- **Stats:** 6 total users, 1 monthly users, 83.3% runs succeeded, 0 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

👟 **The most comprehensive Vinted scraper on Apify** — extract product listings, prices, brands, sizes, seller info, and photos from Vinted with DataDome anti-bot bypass. Multi-country support.

### 🏆 Why This Actor?

| Feature | This Actor | Competitors |
|---------|-----------|-------------|
| **Price** | Current Apify API view: free; paid PPE recommended after guard/smoke verification | $5-10/1K |
| **Anti-Bot** | ✅ Camoufox (DataDome bypass) | ❌ Often blocked |
| **Data Fields** | 20+ fields | 5-10 fields |
| **Multi-Country** | ✅ 13 countries | Usually 1 |
| **Seller Profiles** | ✅ Full wardrobe scraping | ❌ Missing |
| **Brand/Size/Color** | ✅ All included | Partial |
| **Photos** | ✅ All listing photos | First only |
| **API Interception** | ✅ Clean JSON data | HTML scraping |

### ✨ Key Features

- 🔍 **Keyword Search** — Search any product on Vinted with pagination
- 🌍 **13 Countries** — US, UK, France, Germany, Spain, Italy, Poland, Netherlands, Belgium, Lithuania, Portugal, Austria, Czech Republic
- 👤 **Seller Scraping** — Extract all listings from any seller/member profile
- 🛡️ **DataDome Bypass** — Camoufox stealth browser defeats aggressive anti-bot
- 📊 **20+ Data Fields** — Price, brand, size, color, condition, seller rating, favorites, shipping
- 🖼️ **All Photos** — Every listing photo URL extracted
- 💾 **Clean JSON** — Export to JSON, CSV, or Excel

### 📥 Input Parameters

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `searchQueries` | Array | `["vintage nike"]` | Keywords to search on Vinted |
| `searchUrls` | Array | `[]` | Vinted search/category URLs |
| `sellerUrls` | Array | `[]` | Seller profile URLs to scrape |
| `country` | String | `"com"` | Country domain (com, fr, co.uk, de, es, it, pl, nl, be, lt, pt, at, cz) |
| `maxResults` | Integer | `100` | Max results per search (1-10,000) |
| `proxyConfiguration` | Object | Residential US | Proxy settings |

### 📤 Sample Output

```json
{
  "itemId": "4521789012",
  "title": "Vintage Nike Air Max 90 - Size 10",
  "description": "Great condition vintage Nike Air Max 90. Minor wear on sole.",
  "price": 45.00,
  "currency": "EUR",
  "brand": "Nike",
  "size": "10",
  "color": "White",
  "condition": "Good",
  "category": "Men's Shoes",
  "photos": ["https://images1.vinted.net/...", "https://images1.vinted.net/..."],
  "image": "https://images1.vinted.net/...",
  "sellerName": "vintage_kicks_eu",
  "sellerId": "78901234",
  "sellerRating": 0.98,
  "sellerItemCount": 47,
  "favoritesCount": 12,
  "shippingPrice": 5.90,
  "createdAt": "2026-03-15T14:30:00",
  "url": "https://www.vinted.com/items/4521789012-vintage-nike-air-max-90"
}
````

### 💡 Use Cases

- **Resale Arbitrage** — Find underpriced items across Vinted markets for resale
- **Brand Monitoring** — Track where and how your brand's products are being resold
- **Price Intelligence** — Analyze pricing trends for secondhand fashion by brand, size, and region
- **Market Research** — Study the growing secondhand fashion market across European countries
- **Inventory Sourcing** — Find specific items in bulk from seller profiles

### 💲 Pricing

- **Current live Apify API view:** free as of 2026-06-11.
- **Recommended paid PPE after successful smoke verification:** $5–$8 per 1,000 results, plus Apify platform usage.
- Residential proxies are recommended for Vinted/DataDome; proxy and browser overhead make zero-result guards important before charging.

### ⚠️ Empty Results & Diagnostics

If a run extracts **zero items**, the actor now fails intentionally instead of returning a silent empty-success dataset. This protects users from empty paid runs once PPE is enabled and makes DataDome/proxy/selector issues visible in Store health. Check the run log for likely causes such as anti-bot blocks, unsupported country/domain URLs, empty seller wardrobes, proxy country/group issues, or API/DOM drift.

### 🔗 Related Actors

- [Poshmark Scraper](https://apify.com/h4sh/poshmark-scraper) — US fashion resale marketplace
- [Etsy Scraper](https://apify.com/h4sh/etsy-scraper) — Handmade & vintage marketplace
- [Cars.com Scraper](https://apify.com/h4sh/carscom-scraper) — Automotive listing data
- [Anti-Bot Bypass Service](https://apify.com/h4sh/anti-bot-bypass) — Universal Cloudflare/DataDome bypass

### ⚙️ Technical Details

- **Engine**: Camoufox stealth browser (Firefox-based)
- **Extraction**: API interception (v2 catalog) + JSON state + HTML fallback
- **Anti-Bot**: DataDome bypass via browser fingerprint spoofing
- **Proxy**: Residential proxies required
- **Runtime**: Python 3.12 on Apify platform

# Actor input Schema

## `searchQueries` (type: `array`):

Keywords to search on Vinted (e.g., vintage nike, leather jacket)

## `searchUrls` (type: `array`):

Vinted search or category URLs to scrape (copy from browser)

## `sellerUrls` (type: `array`):

Vinted seller/member URLs to scrape all listings

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

Vinted country domain to use

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

Maximum results per search (default: 100)

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

Residential proxies required for DataDome bypass

## Actor input object example

```json
{
  "searchQueries": [
    "vintage nike"
  ],
  "searchUrls": [],
  "sellerUrls": [],
  "country": "com",
  "maxResults": 10,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "US"
  }
}
```

# Actor output Schema

## `vintedListings` (type: `string`):

Dataset containing scraped Vinted listings with pricing, brand, size, and seller data.

# 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 = {
    "searchQueries": [
        "vintage nike"
    ],
    "searchUrls": [],
    "sellerUrls": [],
    "country": "com",
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ],
        "apifyProxyCountry": "US"
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("h4sh/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 = {
    "searchQueries": ["vintage nike"],
    "searchUrls": [],
    "sellerUrls": [],
    "country": "com",
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
        "apifyProxyCountry": "US",
    },
}

# Run the Actor and wait for it to finish
run = client.actor("h4sh/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 '{
  "searchQueries": [
    "vintage nike"
  ],
  "searchUrls": [],
  "sellerUrls": [],
  "country": "com",
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "US"
  }
}' |
apify call h4sh/vinted-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Vinted Scraper",
        "description": "Scrape Vinted for secondhand fashion listings across 13 countries. Get prices, brands, sizes, seller info, photos and more.",
        "version": "0.1",
        "x-build-id": "kv0mmd2TkFK7RtS4f"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/h4sh~vinted-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-h4sh-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/h4sh~vinted-scraper/runs": {
            "post": {
                "operationId": "runs-sync-h4sh-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/h4sh~vinted-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-h4sh-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": {
                    "searchQueries": {
                        "title": "Search Keywords",
                        "type": "array",
                        "description": "Keywords to search on Vinted (e.g., vintage nike, leather jacket)",
                        "default": [
                            "vintage nike"
                        ],
                        "items": {
                            "type": "string"
                        }
                    },
                    "searchUrls": {
                        "title": "Search/Category URLs",
                        "type": "array",
                        "description": "Vinted search or category URLs to scrape (copy from browser)",
                        "items": {
                            "type": "string"
                        }
                    },
                    "sellerUrls": {
                        "title": "Seller Profile URLs",
                        "type": "array",
                        "description": "Vinted seller/member URLs to scrape all listings",
                        "items": {
                            "type": "string"
                        }
                    },
                    "country": {
                        "title": "Country/Domain",
                        "type": "string",
                        "description": "Vinted country domain to use",
                        "default": "com"
                    },
                    "maxResults": {
                        "title": "Max Results",
                        "minimum": 1,
                        "maximum": 10000,
                        "type": "integer",
                        "description": "Maximum results per search (default: 100)",
                        "default": 10
                    },
                    "proxyConfiguration": {
                        "title": "Proxy Configuration",
                        "type": "object",
                        "description": "Residential proxies required for DataDome bypass",
                        "default": {
                            "useApifyProxy": true,
                            "apifyProxyCountry": "US"
                        }
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
