# Vinted Scraper: Search, Items, Prices & Profiles (`scrape.badger/vinted-scraper`) Actor

Scrape Vinted listings, item details, user profiles, and catalog data across 26 European markets. Filter by brand, price, color, condition. Structured JSON with prices, photos, seller info. For market research, price monitoring, e-commerce.

- **URL**: https://apify.com/scrape.badger/vinted-scraper.md
- **Developed by:** [ScrapeBadger](https://apify.com/scrape.badger) (community)
- **Categories:** E-commerce
- **Stats:** 105 total users, 22 monthly users, 99.5% runs succeeded, 3 bookmarks
- **User rating**: No ratings yet

## Pricing

$1.00 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — 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

### ScrapeBadger: Vinted Scraper - Search Items, Compare Prices, and Extract Seller Data Across 26 Markets

[![ScrapeBadger Vinted Scraper](https://raw.githubusercontent.com/ScrapeBadger/twitter-scraper/refs/heads/main/scrapebadger.png)](https://scrapebadger.com)

ScrapeBadger provides powerful data extraction capabilities to scrape Vinted listings, user profiles, and catalog reference data across all **26 European markets**. Get structured JSON output with prices, photos, seller information, brand data, and more. All this starts at just **$1.00 per 1,000 results.**

Whether you're tracking second-hand fashion prices, monitoring competitor inventory, building a resale arbitrage tool, or conducting market research across European countries, ScrapeBadger's Vinted Scraper delivers reliable, structured data without the complexity of managing proxies, sessions, or anti-bot bypasses.

#### Key Features

- **26 Vinted Markets:** Access all Vinted country domains including FR, DE, UK, IT, ES, PL, NL, BE, CZ, LT, PT, AT, US, and more.
- **Powerful Search Filters:** Filter by keywords, brands, price range, colors, sizes, and item condition.
- **Complete Item Data:** Get titles, prices, photos, seller info, favorite counts, view counts, and full descriptions.
- **User Profile Intelligence:** Extract seller profiles with reputation scores, feedback counts, follower stats, and location data.
- **Reference Data Lookups:** Search brands by name, list available colors, conditions, and all supported markets programmatically.
- **Anti-Bot Bypass:** Automatic session management and fingerprint rotation handled by ScrapeBadger's infrastructure.
- **Structured Output:** Clean JSON/CSV output ready for analysis, dashboards, or downstream pipelines.
- **Pay Per Result:** Only pay for what you scrape. No monthly subscriptions.

#### Great For

- **Price Monitoring:** Track item prices across multiple Vinted markets for resale arbitrage opportunities.
- **Market Research:** Analyze listing volumes, pricing trends, and popular brands by country.
- **Competitor Intelligence:** Monitor seller inventory, pricing strategies, and reputation.
- **E-commerce Analytics:** Build datasets of second-hand fashion items for trend analysis.
- **Academic Research:** Study cross-border pricing, consumer behavior, and marketplace dynamics.
- **Lead Generation:** Identify high-volume sellers or niche brand specialists.

#### How to Use - Mode-Specific Input Parameters

| Mode | Description | Key Input | JSON Parameter | Optional Filters |
|:-----|:------------|:----------|:---------------|:-----------------|
| Search Items | Search Vinted catalog with filters | **Search Query** | `query` | `market`, `price_from`, `price_to`, `brand_ids`, `color_ids`, `status_ids`, `order`, `max_results` |
| Get Item Details | Get full details for a single listing | **Item ID** | `item_id` | `market` |
| Get User Profile | Get seller profile and reputation | **User ID** | `user_id` | `market` |
| Get User Items | Browse all items from a seller | **User ID** | `user_id` | `market`, `max_results` |
| Search Brands | Find brand IDs by name | **Search Query** | `query` | `market`, `max_results` |
| List Colors | Get all color filter options | - | - | `market` |
| List Conditions | Get all condition statuses | - | - | `market` |
| List Markets | List all 26 supported markets | - | - | - |

#### Request and Response Examples

##### 1. Search Items

**Request:**

```json
{
  "mode": "Search Items",
  "query": "nike air force 1",
  "market": "fr",
  "price_to": "100",
  "order": "newest_first",
  "max_results": 50
}
```

**Response (per item):**

```json
{
  "id": 4856231890,
  "title": "Nike Air Force 1 '07 White",
  "price_amount": "45.00",
  "price_currency": "EUR",
  "brand_title": "Nike",
  "size_title": "42",
  "status": "Very good",
  "url": "https://www.vinted.fr/items/4856231890",
  "photo_url": "https://images1.vinted.net/t/...",
  "favourite_count": 12,
  "view_count": 89,
  "seller_id": 12345678,
  "seller_login": "seller_username",
  "market": "fr"
}
```

##### 2. Get Item Details

**Request:**

```json
{
  "mode": "Get Item Details",
  "item_id": 4856231890,
  "market": "fr"
}
```

**Response includes all search fields plus:**

- Full description text
- Catalog/category information
- Color, size, brand, and status IDs
- Seller feedback reputation and item count
- Reserved/closed/hidden status flags

##### 3. Get User Profile

**Request:**

```json
{
  "mode": "Get User Profile",
  "user_id": 12345678,
  "market": "fr"
}
```

**Response:**

```json
{
  "id": 12345678,
  "login": "marie_style92",
  "country_code": "FR",
  "city": "Paris",
  "feedback_count": 156,
  "feedback_reputation": 0.98,
  "positive_feedback_count": 153,
  "neutral_feedback_count": 2,
  "negative_feedback_count": 1,
  "item_count": 47,
  "followers_count": 234,
  "following_count": 89,
  "is_online": false,
  "market": "fr"
}
```

##### 4. Get User Items

**Request:**

```json
{
  "mode": "Get User Items",
  "user_id": 12345678,
  "market": "fr",
  "max_results": 200
}
```

##### 5. Search Brands

**Request:**

```json
{
  "mode": "Search Brands",
  "query": "nike",
  "market": "fr"
}
```

**Response (per brand):**

```json
{
  "id": 53,
  "title": "Nike",
  "slug": "nike",
  "item_count": 1250000,
  "is_luxury": false,
  "url": "/brand/nike"
}
```

##### 6. List Markets

**Request:**

```json
{
  "mode": "List Markets"
}
```

**Response (per market):**

```json
{
  "code": "fr",
  "domain": "vinted.fr",
  "country": "France",
  "currency": "EUR"
}
```

#### Supported Markets

| Market | Domain | Market | Domain |
|--------|--------|--------|--------|
| `fr` | vinted.fr | `de` | vinted.de |
| `uk` | vinted.co.uk | `it` | vinted.it |
| `es` | vinted.es | `pl` | vinted.pl |
| `nl` | vinted.nl | `be` | vinted.be |
| `cz` | vinted.cz | `lt` | vinted.lt |
| `pt` | vinted.pt | `at` | vinted.at |
| `lu` | vinted.lu | `sk` | vinted.sk |
| `dk` | vinted.dk | `fi` | vinted.fi |
| `se` | vinted.se | `ro` | vinted.ro |
| `hu` | vinted.hu | `hr` | vinted.hr |
| `gr` | vinted.gr | `us` | vinted.com |
| `ca` | vinted.ca | `au` | vinted.com.au |
| `lv` | vinted.lv | `ee` | vinted.ee |

#### Output Fields

**Item listings include:**

- **Core:** id, title, url, description (detail mode)
- **Pricing:** price\_amount, price\_currency
- **Attributes:** brand\_title, size\_title, status (condition)
- **Media:** photo\_url
- **Engagement:** favourite\_count, view\_count
- **Seller:** seller\_id, seller\_login, seller\_feedback\_reputation (detail mode)
- **Metadata:** market, category, catalog\_id (detail mode)

**User profiles include:**

- **Core:** id, login, country\_code, city, profile\_url
- **Reputation:** feedback\_count, feedback\_reputation, positive/neutral/negative counts
- **Stats:** item\_count, followers\_count, following\_count
- **Status:** is\_online, is\_on\_holiday, last\_loged\_on\_ts

#### Pricing

This actor uses **Pay Per Event (PPE)** pricing at **$1.00 per 1,000 results**. You only pay for data you actually receive. Failed requests and empty results are not charged by ScrapeBadger (though a minimal marker record is pushed to track empty results).

**Cost examples:**

- Search 100 items: ~$0.10
- Get 1 item detail: ~$0.001
- Scrape 10,000 items across markets: ~$10.00

#### FAQ

**Is it legal to scrape Vinted?**
Scraping publicly available data is generally permitted for personal use, research, and analysis. This actor only accesses publicly visible listings and profiles. Always review Vinted's Terms of Service and applicable laws in your jurisdiction.

**Do I need a Vinted account?**
No. ScrapeBadger handles all authentication and session management automatically.

**How fast is it?**
Typical response time is 1-3 seconds per API call. A search for 100 items completes in under 10 seconds.

**What if an item or user is not found?**
The actor pushes a status record with `"status": "empty"` and `"reason": "not_found"` so you can track which lookups returned no data.

#### Other ScrapeBadger Actors

| Actor | Description |
|:------|:------------|
| [Twitter User Scraper](https://apify.com/scrapebadger/twitter-user-scraper) | Scrape Twitter/X user profiles, followers, and followings |
| [Twitter Tweet Scraper](https://apify.com/scrapebadger/twitter-tweet-scraper) | Extract tweets, replies, retweets, and search results |
| [Twitter Trends Scraper](https://apify.com/scrapebadger/twitter-trends-scraper) | Get trending topics and hashtags by location |
| [Twitter Lists Scraper](https://apify.com/scrapebadger/twitter-lists-scraper) | Scrape Twitter list members and tweets |
| [Twitter Communities Scraper](https://apify.com/scrapebadger/twitter-communities-scraper) | Extract community members and discussions |

#### About ScrapeBadger

This actor is powered by [ScrapeBadger](https://scrapebadger.com) - a reliable web scraping and social media data extraction service.

- **Official Website:** [scrapebadger.com](https://scrapebadger.com)
- **Faster Support:** Get priority support directly through the ScrapeBadger website
- **SDK & API Access:** Want to use ScrapeBadger outside of Apify? The [Python SDK](https://pypi.org/project/scrapebadger/) and [Node.js SDK](https://www.npmjs.com/package/scrapebadger) are available for direct integration into your own applications
- **Documentation:** [docs.scrapebadger.com](https://docs.scrapebadger.com)

# Actor input Schema

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

Select the type of Vinted data to scrape. Each mode requires different input parameters.

## `query` (type: `string`):

Keywords to search for items or brands. Required for <b>Search Items</b> and <b>Search Brands</b> modes. Example: <b>nike air force 1</b>

## `item_id` (type: `integer`):

Numeric Vinted item ID. Required for <b>Get Item Details</b> mode. You can find item IDs from search results or the item URL. Example: <b>4856231890</b>

## `user_id` (type: `integer`):

Numeric Vinted user ID. Required for <b>Get User Profile</b> and <b>Get User Items</b> modes. You can find user IDs from search results or the user profile URL. Example: <b>12345678</b>

## `market` (type: `string`):

Vinted market (country) to target. Each market has its own catalog, currency, and language. Use <b>List Markets</b> mode to see all options.

## `price_from` (type: `string`):

Minimum price filter in the market's local currency. Only used in <b>Search Items</b> mode. Example: <b>10</b>

## `price_to` (type: `string`):

Maximum price filter in the market's local currency. Only used in <b>Search Items</b> mode. Example: <b>100</b>

## `brand_ids` (type: `string`):

Comma-separated brand IDs to filter by. Use <b>Search Brands</b> mode to look up IDs. Example: <b>53</b> (Nike) or <b>14,53,221</b>

## `color_ids` (type: `string`):

Comma-separated color IDs to filter by. Use <b>List Colors</b> mode to look up IDs. Example: <b>1,4,12</b>

## `status_ids` (type: `string`):

Comma-separated condition status IDs. Use <b>List Conditions</b> mode to look up IDs. Example: <b>6</b> (New with tags) or <b>1,2</b>

## `order` (type: `string`):

Sort order for search results. Only used in <b>Search Items</b> mode.

## `max_results` (type: `integer`):

Maximum number of items to return for paginated modes (Search Items, Get User Items, Search Brands). Higher values increase run time and cost. Default: 100.

## Actor input object example

```json
{
  "mode": "Search Items",
  "query": "nike air force 1",
  "market": "fr",
  "order": "relevance",
  "max_results": 100
}
```

# Actor output Schema

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

All scraped data including items, user profiles, and reference data stored in the default dataset

# 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 = {
    "query": "nike air force 1"
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrape.badger/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 = { "query": "nike air force 1" }

# Run the Actor and wait for it to finish
run = client.actor("scrape.badger/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 '{
  "query": "nike air force 1"
}' |
apify call scrape.badger/vinted-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,scrape.badger/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/FeU3ySr5pLpFASwUc/builds/3uW9mjUSwJRmEWuWZ/openapi.json
