# Marketplace Scraper for Vinted - Listings, Sellers & Reviews (`scrapesage/vinted-scraper`) Actor

Scrape Vinted secondhand fashion across 23 markets: listings, item details, prices, brands, sizes, conditions, photos, seller leads and reviews. Search by keyword, filters or item/member/catalog URLs. Monitor new listings & price drops. No login. Independent tool, not affiliated with Vinted.

- **URL**: https://apify.com/scrapesage/vinted-scraper.md
- **Developed by:** [Scrape Sage](https://apify.com/scrapesage) (community)
- **Categories:** E-commerce, Lead generation, Agents
- **Features:** Limited permissions
- **Stats:** 12 total users, 0 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.75 / 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

## Marketplace Scraper for Vinted - Listings, Sellers & Reviews

> **Disclaimer:** This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by Vinted or any of its subsidiaries. All trademarks mentioned are the property of their respective owners. "Vinted" is referenced only to describe the publicly available website this Actor collects data from.

Extract **structured data from [Vinted](https://www.vinted.com)**, the secondhand fashion marketplace, across **23 markets** (the US, the UK and 21 EU countries). Search listings by keyword, category, brand, size, condition, colour, material or price; pull full **item details** (description, category path, colours, every photo); turn sellers into **leads** (rating, sales volume, location, Vinted Pro trader details, lead score); and collect **seller reviews**. Paste item, member, brand or catalog URLs, or run a search and let the actor page through it.

No login, no cookies to manage, no API key. Prices and labels come back in each market's own currency and language: USD on vinted.com, GBP on vinted.co.uk, PLN on vinted.pl, EUR across the eurozone markets.

### Why this scraper for Vinted data?

Listings, full item details, seller leads and reviews in one run, a **monitor mode** that reports only listings created since the last run (plus price drops), and **no per-run start fee**.

| Field | Search row | With item details |
|---|---|---|
| Title, price, currency, brand, size, condition, favourites, main photo | ✅ | ✅ |
| **Total price incl. Buyer Protection** and the service fee | ✅ | ✅ |
| Condition in English plus Vinted's condition ID, on all 23 markets | ✅ | ✅ |
| Seller id, username and profile link | ✅ | ✅ |
| **Full description, category path, colours, material, every photo**, upload age | | ✅ |
| The seller's star rating, review count and badges | | ✅ |

The same run can also return:

- **Seller leads**: star rating, review counts, items listed, followers, location, last seen, bundle discounts and a 0-100 lead score. **Vinted Pro traders** add their published shop name, legal name, registration and VAT number.
- **Seller reviews**: rating, text, reviewer, the seller's reply and the item reviewed.
- **Filters**: category, brand, size, condition, colour, material and price, or a pasted filtered catalog URL.
- **Deeper searches**: Vinted shows at most 960 results per sort order; when a search has more, the actor continues with the other sort orders, without duplicates.
- **Unmatched keywords cost nothing**: a keyword Vinted has no listings for is neither delivered nor billed.

### Use cases

- **Resale & arbitrage**: compare prices, conditions and total-with-protection costs across markets to find underpriced stock and cross-border gaps.
- **Price & market research**: track how brands, sizes and conditions are priced over time and benchmark your own listings.
- **Seller sourcing & B2B leads**: find high-volume and Vinted Pro sellers by rating, sales volume and location; Pro sellers come with their published trader details.
- **Brand & trend intelligence**: measure supply, demand (favourites) and pricing for any brand or category across Europe and the US.
- **Deal alerts**: schedule a search with monitor mode and get only the new listings and price drops.
- **AI assistants and agents**: live lookups of current listings and prices through the Apify MCP server.

### How to use

1. [Sign up for Apify](https://console.apify.com/sign-up). The free plan is enough to try this actor.
2. Open this **scraper for Vinted**, enter one or more **search queries** (or paste item/member/catalog URLs), pick a **market**, and choose what to output.
3. Click **Start** and watch results stream into the dataset table.
4. **Export** as JSON, CSV, Excel, XML or RSS, or pull results programmatically via the [Apify API](https://docs.apify.com/api/v2).

### Input

```json
{
    "searchQueries": ["nike air max"],
    "country": "co.uk",
    "order": "newest_first",
    "statusIds": ["6", "1"],
    "priceTo": 80,
    "maxItems": 200,
    "includeItemDetails": true,
    "includeSellerLeads": true,
    "includeSellerReviews": false,
    "monitorMode": false
}
```

- **searchQueries**: keywords to search (e.g. `"zara dress"`, `"levis 501"`). With several queries, **maxItems** is shared fairly between them. A keyword Vinted has no listings for returns nothing and costs nothing.
- **startUrls**: Vinted URLs, auto-detected: item pages (`/items/…`) → item details, member pages (`/member/…`) → seller profiles, catalog, brand and search pages (`/catalog?…`, `/catalog/1904-women`, `/brand/53-nike`) → searches with their filters preserved. The market is taken from each URL's domain. You can also link or upload a text file of URLs, or paste a list into **urlsFromFile**.
- **itemIds / sellerIds**: bulk lists of Vinted item or member IDs.
- **country** *(default `com`, the US market)*: which market to search.
- **order**: `newest_first`, `relevance`, `price_low_to_high`, `price_high_to_low`.
- **Filters**: `priceFrom` / `priceTo`, `catalogIds`, `brandIds`, `sizeIds`, `statusIds` (condition), `colorIds`, `materialIds`. Condition and colour are pick-lists; the other IDs are in any filtered Vinted catalog URL. Filters without a keyword browse that category or brand.
- **maxItems** *(default 100)*: listings across all searches and URLs. Vinted shows at most 960 results per sort order; when a search has more, the actor continues with the other sort orders (without duplicates) to go deeper.
- **includeItemDetails** *(default false)*: open each item page for the full description, category path, colours, material and other attributes, all photos, upload age, standard condition and the seller's badges. Billed at the item-detail rate.
- **includeSellerLeads** *(default false)*: one deduplicated seller record per seller in the results.
- **includeSellerReviews** *(default false)*: the reviews left on those sellers (cap with **maxReviewsPerSeller**).
- **maxSellerItems** *(default 0)*: when scraping a member, also output up to this many of their listings (with all photos). A UK or US member's listings are read on their own market automatically.
- **monitorMode / monitorKey**: emit only listings created since the last run, plus price drops (see below).
- **proxyConfiguration**: leave the default Apify proxy; the actor rotates addresses itself.

### Output

Each row is tagged with a `type` of `item`, `seller` or `review`. The **Overview** view (opened first) shows every type in one table; the Items, Items with details, Seller leads and Reviews views show one type's columns.

An item record from a search (`type: "item"`):

```json
{
    "type": "item",
    "itemId": 10286641267,
    "title": "Woman's Nike air max muse",
    "url": "https://www.vinted.com/items/10286641267-womans-nike-air-max-muse",
    "price": 40,
    "currency": "USD",
    "totalPrice": 42.7,
    "serviceFee": 2.7,
    "brand": "Nike",
    "size": "7",
    "condition": "New without tags",
    "conditionId": 1,
    "conditionEn": "New without tags",
    "favouritesCount": 13,
    "isPromoted": false,
    "photo": "https://images1.vinted.net/t/…/f800/b1489406.webp",
    "sellerId": 3190708839,
    "sellerLogin": "casey0520",
    "sellerProfileUrl": "https://www.vinted.com/member/3190708839-casey0520",
    "sellerIsBusiness": false,
    "market": "com",
    "searchQuery": "nike air max",
    "searchOrder": "relevance",
    "searchPosition": 1,
    "scrapedAt": "2026-10-08T01:36:23.101Z"
}
```

With **includeItemDetails** the same row also carries `description`, `category`, `categoryPath` (e.g. `["Women", "Shoes", "Sneakers"]`), `catalogId`, `brandId`, `color` / `colors`, `otherAttributes` (material and other category-specific attributes), `photos` and `photoCount`, `uploadedAgo`, `conditionStandard`, `availability`, `isReserved`, `sellerBadges`, `sellerRating` and `sellerFeedbackCount`.

A seller record (`type: "seller"`) carries `login` (repeated as `sellerLogin`, the key item and review rows use, so all three join on it), `profileUrl` (also as `url`), `city`, `countryTitle`, `countryCode`, `about`, `rating` (out of 5; a seller with no reviews yet has none, never a 0), feedback counts, `itemCount`, `totalItemsCount`, `followersCount`, `lastSeenAt`, `isOnHoliday`, `bundleDiscounts`, `verifications`, `business` and a 0-100 `leadScore`. **Vinted Pro** sellers add their published trader details: `businessName`, `businessLegalName`, `businessEntityType`, `businessRegistrationNumber`, `businessRegistrar`, `businessVatNumber`, `businessCity`, `businessCountry`, and `businessEmail` / `businessPhone` when the trader publishes a business contact (personal contacts are never shown).

A review record (`type: "review"`) carries `rating`, `feedback`, `reviewerLogin`, `reviewerProfileUrl`, the seller's `reply`, `isSystem` (Vinted's automatic reviews), `itemId`, `itemUrl`, `createdAt`, `feedbackUrl` (also as `url`) and the reviewed seller's `sellerId` / `sellerLogin`.

#### What to expect

Vinted is seller-entered data, so some fields exist only when the seller filled them in.

| Record | Always present | Usually present | Present when published |
|---|---|---|---|
| **Item** | id, title, URL, price, total price, currency, condition, favourites, main photo, seller | brand, size | description, colours, material (with item details) |
| **Seller** | id, login, profile, country, counts, last seen, lead score | rating (once the seller has reviews), city, photo, bundle discounts | `about`, Vinted Pro trader details |
| **Review** | id, rating, reviewer, date, item | review text | the seller's `reply` |

- **View counts** are no longer public on Vinted, so they are not part of the output.
- A search result carries the listing's **main photo**; the full photo list comes with item details or a member's listings.
- `uploadedAgo` and condition labels are in the market's language; use `conditionEn` / `conditionId` to compare across markets.

### Monitor mode & scheduling

Two features work together for hands-off tracking:

- **Monitor mode** remembers, per saved search or seller, what earlier runs delivered (in a named key-value store). Each run then returns **only listings created since the last run**, plus any delivered listing whose **price dropped** (with `priceDropped` and `previousPrice`). The first run sets the baseline. If a busy search has more new listings than **maxItems**, the next run picks up the rest.
- **[Apify Schedules](https://docs.apify.com/platform/schedules)** control *when* the actor runs (e.g. every hour).

Combine them: schedule a search sorted by **Newest first** with monitor mode on, and each run returns just the fresh listings and price drops. Use a distinct **monitorKey** per saved search so their histories stay separate.

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

This Actor uses Apify's **pay-per-event** pricing: you are charged only for the results it delivers, with no monthly rental and no start fee. The events it can charge are:

- **Item** - One Vinted listing: title, URL, price, total price incl. Buyer Protection, service fee, currency, brand, size, condition, favourites, main photo and the seller (id, username, profile, business flag).
- **Item detail** - One fully-enriched Vinted listing - everything in an item record plus the full description, category path, colours, attributes, all photos and the exact item condition, parsed from the item page. Charged instead of 'item' when item details are enabled.
- **Seller lead** - One deduplicated Vinted seller: username, profile URL, location (city/country), rating and feedback counts, active item count, total items sold, followers, business-account flag, verifications, last seen, member 'about' and a 0-100 lead score.
- **Review** - One seller feedback/review: star rating, review text, reviewer username, the seller's reply, item id and date - returned when seller reviews are enabled.

The current price of each event is shown on the **Pricing** tab of this page. Set a maximum total charge on the run if you want a hard cap on spend, and use the input limits to control how much the Actor fetches. A keyword that matches nothing, a monitor run with nothing new, and a run Vinted refuses all cost nothing.

### Automate & integrate

Run this actor on autopilot and pull results into your own stack:

- **[Apify API](https://docs.apify.com/api/v2)**: start runs, fetch datasets and manage schedules over REST.
- **[apify-client for JavaScript](https://docs.apify.com/api/client/js/)** and **[Python](https://docs.apify.com/api/client/python/)**: official SDKs.
- **[Schedules](https://docs.apify.com/platform/schedules)**: run searches daily or hourly to capture new listings and price drops.
- **[Webhooks](https://docs.apify.com/platform/integrations/webhooks)**: trigger downstream actions (Slack alert, CRM import, reprice job) the moment a run finishes.

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

const client = new ApifyClient({ token: 'MY_APIFY_TOKEN' });

const run = await client.actor('scrapesage/vinted-scraper').call({
    searchQueries: ['vintage levis'],
    country: 'co.uk',
    maxItems: 200,
    includeItemDetails: true,
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(`Got ${items.length} records`);
```

Connect the dataset to 5,000+ apps, no code required:

- **[Make](https://docs.apify.com/platform/integrations/make)**: multi-step automation scenarios.
- **[Zapier](https://docs.apify.com/platform/integrations/zapier)**: push new listings or seller leads straight into your tools.
- **[Slack](https://docs.apify.com/platform/integrations/slack)**: get pinged when a monitored search finds new deals.
- **[Google Drive / Sheets](https://docs.apify.com/platform/integrations/drive)**: auto-export every run to a spreadsheet.
- **[Airbyte](https://docs.apify.com/platform/integrations/airbyte)**: pipe results into your data warehouse.
- **[GitHub](https://docs.apify.com/platform/integrations/github)**: trigger runs from commits or releases.

### Use with AI assistants (MCP)

The output is clean, LLM-ready JSON. Call this actor from Claude, ChatGPT or any agent framework through the **[Apify MCP server](https://docs.apify.com/platform/integrations/mcp)**: ask your assistant to "find Nike sneakers under £50 on Vinted UK and list the highest-rated sellers" and let it run the scraper for you.

### Agent-ready: autonomous payments (x402 & Skyfire)

This actor is **agent-ready**: AI agents can discover it, run it, and **pay for it autonomously**, with no Apify account and no human in the loop. It uses [pay-per-event](https://docs.apify.com/platform/actors/publishing/monetize/pay-per-event) pricing and [limited permissions](https://docs.apify.com/platform/actors/development/permissions), so it qualifies for Apify's agentic-payment standards:

- **[x402](https://docs.apify.com/platform/integrations/x402)**: an open, HTTP-native payment protocol. Agents pay per run in USDC on the Base network directly through the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp), with no account and no API key.
- **[Skyfire](https://docs.apify.com/platform/integrations/skyfire)**: agent-to-service payments for fully autonomous AI-agent workflows.

Building an AI agent, MCP tool, or autonomous data pipeline? This scraper is ready to plug in and pay as it goes.

### More scrapers from scrapesage

Build a complete **e-commerce & resale intelligence stack** across marketplaces:

- **[Poshmark Scraper](https://apify.com/scrapesage/poshmark-scraper)** - US resale listings, sold comps and seller leads (Vinted's US sibling).
- **[eBay Scraper](https://apify.com/scrapesage/ebay-scraper)** - active listings on 10 eBay marketplaces, prices, item details and seller leads.
- **[Reverb Scraper](https://apify.com/scrapesage/reverb-scraper)** - music-gear listings, price guide and seller leads.
- **[AliExpress Scraper](https://apify.com/scrapesage/aliexpress-scraper)** - products, prices, orders and supplier leads.
- **[Flipkart Scraper](https://apify.com/scrapesage/flipkart-scraper)** - India's largest online marketplace: products, prices, specs and reviews.
- **[Shopify Store Scraper](https://apify.com/scrapesage/shopify-store-scraper)** - products, variants, prices and store leads.

### Tips

- **Pick the market your buyers use.** The EU markets share one cross-border catalogue (shown in each market's currency); the UK and US markets are separate catalogues. For cross-border comparisons, run the same search on several markets.
- **Narrow with filters** (category, brand, size, condition, colour, material, price), or paste a filtered Vinted catalog URL into Start URLs: all its filters are preserved.
- **Seller leads**: turn on `includeSellerLeads` to deduplicate every seller in your results and score them, ideal for finding high-volume and Vinted Pro sellers.
- **Item details cost one extra page per item.** For large pulls where you only need price and condition, leave `includeItemDetails` off; turn it on when you need descriptions, categories, colours and all photos.
- **Deal alerts**: combine **monitor mode** (sorted by Newest first) with [Schedules](https://docs.apify.com/platform/schedules) and a [webhook](https://docs.apify.com/platform/integrations/webhooks) to get only new listings and price drops pushed to you.

### FAQ

**Which markets are supported?** 23 Vinted markets: the United States (vinted.com), United Kingdom, France, Germany, Spain, Italy, Netherlands, Belgium, Austria, Poland, Czechia, Slovakia, Lithuania, Luxembourg, Portugal, Sweden, Finland, Denmark, Romania, Hungary, Croatia, Greece and Ireland.

**Does it need the Vinted API or a key?** No. There is no public Vinted API; this actor reads Vinted's own public web endpoints. No key, login or browser needed.

**Can I scrape a specific seller?** Yes. Paste their member URL (or pass a seller ID). You get their profile as a lead, and optionally their listings (`maxSellerItems`) and reviews (`includeSellerReviews`).

**Can I get more than 960 results for one search?** Vinted itself shows at most 960 results per sort order. When you ask for more, the actor continues with the other sort orders and removes duplicates, so large searches go much deeper. Splitting a broad search by category, brand or price band reaches further still.

**Can I export to Google Sheets, CSV or Excel?** Yes: one click in the dataset view, or automatically on every run via the [Google Drive integration](https://docs.apify.com/platform/integrations/drive).

**How do I monitor a search for new deals?** Turn on **monitor mode**, give it a **monitorKey**, sort by **Newest first**, and create a [Schedule](https://docs.apify.com/platform/schedules). Each run returns only new listings and price drops; a run with nothing new costs nothing.

**A field is empty. Why?** Some sellers don't add a size, description or location. View counts are no longer shown publicly by Vinted, so they are not returned. Fields are blank only when Vinted does not publish that data.

**Is scraping Vinted legal?** This actor collects publicly available data only. You are responsible for using the data in compliance with applicable laws (e.g. GDPR for personal data) and Vinted's terms. Vinted reserves its rights against using its content to train AI models (a text-and-data-mining reservation under Article 4 of EU Directive 2019/790, published in its robots.txt), so do not use the output to train or fine-tune AI models.

### Data & lawful use

This Actor reads public listings and the seller information shown on them. Sellers on Vinted include private individuals, so seller names, usernames and any contact details are personal data. If you are in the EU or UK you are the data controller for what you do with them: have a lawful basis, use the data for market research, price monitoring or lawful sourcing, honour deletion requests, and do not send private sellers unsolicited marketing.

Under [Apify's Standard Actor Contract](https://docs.apify.com/legal/standard-actor-contract), which governs your use of this Actor, you are the controller of any personal data in your input and output and scrapesage acts only as your processor: that data is processed solely to run your job, written only to your own Apify storage, never used for any other purpose and never shared onward. If you need help with a data-subject request that involves this Actor's output, open an issue on the Issues tab.

### Disclaimer

**This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by Vinted or any of its subsidiaries. All trademarks mentioned are the property of their respective owners.**

"Vinted" and any related marks are the property of their respective owners and are used here only in a descriptive, nominative sense - to identify the publicly accessible website from which this Actor collects data. This Actor is not an official Vinted product, is not authorised or certified by Vinted, and does not distribute Vinted software. It collects only publicly available information; you are responsible for ensuring your use of that data complies with applicable laws, regulations and the terms of the source website.

### Need help?

Open an issue on the actor's **Issues** tab, or visit the [Apify help center](https://help.apify.com/). Feature requests are welcome; this actor is actively maintained.

# Actor input Schema

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

Keywords to search on Vinted (e.g. "nike air max", "zara dress", "levis 501"). Each query runs on the chosen market; Max items is shared fairly between queries. Combine with the filters below to narrow results. A keyword Vinted has no listings for returns nothing (and costs nothing) instead of unrelated filler.

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

Vinted URLs to scrape, auto-detected by type. Item pages (/items/…) become item-detail records, member pages (/member/…) become seller profiles (+ their listings and reviews when enabled), and catalog, brand and search pages (/catalog?…, /catalog/1904-women, /brand/53-nike) are scraped as searches with their filters preserved. The market is taken from each URL's domain (e.g. vinted.fr, vinted.co.uk), not from the Market setting. Example: https://www.vinted.co.uk/catalog?search_text=north%20face\&order=newest_first. You can also link or upload a text file of URLs.

## `itemIds` (type: `array`):

Vinted numeric item IDs (e.g. 10223978726). Each is fetched as a full item-detail record on the selected market. Pasted item URLs keep their own market.

## `sellerIds` (type: `array`):

Vinted numeric member IDs (e.g. 48689400). Each is fetched as a seller profile; their listings (Max items per seller) and reviews are also pulled when those options are enabled. A UK or US seller's listings are read on their own market automatically.

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

Which Vinted market to search. Prices and condition labels come back in that market's currency and language (USD on vinted.com, GBP on .co.uk, PLN on .pl …). EU markets share one cross-border catalogue; the UK and US markets are separate. Start URLs use their own domain regardless of this setting.

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

How to sort search results.

## `priceFrom` (type: `integer`):

Only return items priced at or above this amount (in the market's currency). Leave empty for no minimum.

## `priceTo` (type: `integer`):

Only return items priced at or below this amount (in the market's currency). Leave empty for no maximum.

## `catalogIds` (type: `array`):

Restrict searches to one or more Vinted category IDs (e.g. 1904 = Women, 5 = Men, 1193 = Kids, 2994 = Electronics). Find IDs in a catalog URL on Vinted (/catalog/1904-women). Leave empty to search all categories. Filters alone (no keyword) browse that category.

## `brandIds` (type: `array`):

Restrict searches to one or more Vinted brand IDs (e.g. 53 = Nike, 14 = adidas, 12 = Zara). Find IDs in a brand page or filtered catalog URL on Vinted (/brand/53-nike or brand_ids\[]=53).

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

Restrict searches to one or more Vinted size IDs (sizes depend on the category). Find IDs in a filtered catalog URL on Vinted (size_ids\[]=…).

## `statusIds` (type: `array`):

Only return listings in these conditions.

## `colorIds` (type: `array`):

Only return listings in these colours.

## `materialIds` (type: `array`):

Restrict searches to one or more Vinted material IDs (e.g. 44 = Cotton, 43 = Leather, 46 = Wool, 303 = Denim, 123 = Cashmere). Find IDs in a filtered catalog URL on Vinted (material_ids\[]=…).

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

Maximum number of item records across all queries and URLs, shared fairly between searches. Vinted shows at most 960 results per sort order; when a search has more, the actor continues with the other sort orders (deduplicated) to go deeper. Seller leads and reviews are additional and not counted against this limit.

## `includeItemDetails` (type: `boolean`):

Enrich every listing from its item page (one extra request per item): full description, category path, colour(s), material and other attributes, every photo, upload age, brand ID, standard condition, the buyer-protection total, reserved flag and the seller's badges and rating. Item records are then billed at the 'item detail' rate instead of the 'item' rate.

## `includeSellerLeads` (type: `boolean`):

Output one deduplicated seller record per unique seller found in the results: username, location, star rating and feedback counts, sales volume, followers, last seen, holiday mode, bundle discounts, verifications and a 0-100 lead score. Vinted Pro (business) sellers also carry their published trader details (shop name, legal name, registration and VAT number, business email when they publish one). Ideal for sourcing and wholesale outreach.

## `includeSellerReviews` (type: `boolean`):

Output the feedback/reviews left on each seller (rating, text, reviewer, the seller's reply, date). Pulls reviews for the sellers found in the results or for member URLs/IDs.

## `maxReviewsPerSeller` (type: `integer`):

How many of the most recent reviews to output per seller when Include seller reviews is on.

## `maxSellerItems` (type: `integer`):

When scraping a member/seller (via member URL or seller ID), how many of their listings to also output. 0 returns only their profile (and reviews if enabled).

## `monitorMode` (type: `boolean`):

Remember what previous runs delivered (in a named key-value store) and emit only listings created since the last run, plus delivered listings whose price dropped (with the previous price), and only new sellers and reviews. The first run sets the baseline. Use the Newest first sort order and an Apify Schedule for hands-off monitoring of a search or seller.

## `monitorKey` (type: `string`):

Names the monitor store so different searches keep separate memory (e.g. "nike-uk-under-50"). Reuse the same key across scheduled runs to keep deduplicating against the same history.

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

Proxy settings. The default Apify proxy works: the actor rotates addresses automatically and, if Vinted keeps refusing them, continues on a residential connection in the market's own country. Change this only if you want to use your own proxies.

## `urlsFromFile` (type: `string`):

Paste a list of URLs (one per line), OR one link to a .txt/.csv file, Google Sheet or Google Drive file containing them. Lets you import many Start URLs at once instead of typing each. Google Sheet/Drive share links are handled automatically.

## Actor input object example

```json
{
  "searchQueries": [
    "nike air max"
  ],
  "country": "com",
  "order": "newest_first",
  "maxItems": 100,
  "includeItemDetails": false,
  "includeSellerLeads": false,
  "includeSellerReviews": false,
  "maxReviewsPerSeller": 20,
  "maxSellerItems": 0,
  "monitorMode": false,
  "monitorKey": "default",
  "proxyConfiguration": {
    "useApifyProxy": true
  },
  "urlsFromFile": ""
}
```

# Actor output Schema

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

All scraped Vinted records (items, seller leads and reviews) as JSON items 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 = {
    "searchQueries": [
        "nike air max"
    ],
    "proxyConfiguration": {
        "useApifyProxy": true
    },
    "urlsFromFile": ""
};

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

# Run the Actor and wait for it to finish
run = client.actor("scrapesage/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 '{
  "searchQueries": [
    "nike air max"
  ],
  "proxyConfiguration": {
    "useApifyProxy": true
  },
  "urlsFromFile": ""
}' |
apify call scrapesage/vinted-scraper --silent --output-dataset

```

## MCP server setup

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