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

Scrapes Vinted product listings from a keyword search. Returns each item as a flat row with price, brand, size, photo URLs, and seller info. Export to CSV, JSON, Excel, or XML.

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

## Pricing

from $19.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.
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?

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

[![ParseForge](https://raw.githubusercontent.com/ParseForge/apify-assets/main/banner.jpg)](https://apify.com/parseforge?fpr=vmoqkp)

### Vinted Scraper

**Scrape secondhand fashion listings from Vinted by keyword, up to a million per run.** Every item comes with its price, brand, size, photo URLs, and seller info. No login or API key. Export to CSV, JSON, Excel, or XML.

Vinted's official API is closed to the public, and manual browsing across its many country domains is slow. This actor reads the public search feeds directly, so you can pull thousands of listings for a keyword like 'vintage jacket' or 'Nike sneakers' in one structured dataset. It filters by price, sort order, brand ID, and size ID as it runs, returning only the matches you need.

| Who uses it | What they scrape Vinted for |
|---|---|
| Resellers | Spotting undervalued items to flip for a profit. |
| Market researchers | Tracking which brands and styles are saturating the secondhand market. |
| Data journalists | Analyzing pricing trends in circular fashion across different countries. |
| E-commerce managers | Monitoring competitor pricing on pre-owned inventory. |

### What it does

This Actor collects Vinted product listings from a keyword search and returns each one as a flat row with price, brand, size, photo, and seller details.

- 🔍 **Keyword search:** feed it any term like 'leather boots' or 'Zara dress' and get every matching listing.
- 💰 **Price range filter:** set a minimum and maximum price to isolate items within your budget or margin.
- 🏷️ **Brand and size IDs:** pass comma-separated Vinted brand or size IDs to narrow results to specific catalogs.
- 📊 **Sort control:** order results by newest first, price low-to-high, price high-to-low, or relevance.

Results export to CSV, JSON, Excel, or XML, or straight from the API.

### What you can do with Vinted data

**📈 Monitor resale prices.**

A vintage reseller runs the actor daily for 'Carhartt jacket' with a max price filter to find new bargains before they sell.

**🧵 Analyze fashion trends.**

A market researcher scrapes thousands of listings for 'Y2K dress' to report which colors and sizes are most listed this quarter.

**🛒 Feed a niche shop.**

An e-commerce manager pulls all listings for a set of brand IDs and imports the structured data into their own storefront.

**📰 Investigate circular economy.**

A data journalist collects pricing data across multiple Vinted country domains to compare secondhand inflation rates.

### Why choose this scraper

|  | What you get |
|---|---|
| **No API key needed** | Reads public search pages, so you skip OAuth and rate-limit headaches. |
| **Flat, predictable schema** | Every listing arrives as one row with the same columns, ready for your spreadsheet or database. |
| **Up to 1M listings** | One long run can pull a deep catalog for a keyword, limited only by what Vinted shows. |
| **Multi-format export** | Download as CSV, JSON, Excel, or XML directly from your Apify dataset. |

### How it compares

This actor focuses on high-volume keyword search with direct price and ID filters, while competitors add profile scraping or pay-per-result pricing.

| Feature | ParseForge | Vinted Scraper: Search, Items, Prices & Profiles | ⚡ Vinted Turbo Scraper | Vinted Scraper Ppr |
|---|---|---|---|---|
| Keyword search input | Yes | Yes | Not listed | Yes |
| Price range filter | Yes | Yes | Not listed | Yes |
| Brand ID filter | Yes | Yes | Not listed | Yes |
| Size ID filter | Yes | Not listed | Not listed | Yes |
| User profile scraping | Not listed | Yes | Not listed | Not listed |
| Pay-per-result pricing | Not listed | Not listed | Not listed | Yes |

### Configure the run

Drive the Actor from a single search keyword, and optionally narrow results with price range, sort order, and brand or size IDs so only the listings you want land in your dataset. The Input tab lists every parameter.

A first run with the defaults:

```json
{
  "searchText": "vintage jacket",
  "maxItems": 10
}
```

A larger pull:

```json
{
  "searchText": "vintage jacket",
  "maxItems": 200
}
```

### Pricing

Pay-per-result: **$0.021 per result** collected. You pay only for the results written to your dataset.

| Results collected | Approximate cost |
|---|---|
| 100 results | $2.10 |
| 1,000 results | $21.00 |
| 10,000 results | $210.00 |

New Apify accounts start with $5 in free credit.

### Free users

Free-plan runs return up to 10 results as a preview. [Upgrade your Apify plan](https://console.apify.com/sign-up?fpr=vmoqkp) to collect up to 1,000,000 results per run.

### Run it

1. [Create a free Apify account with $5 in credit](https://console.apify.com/sign-up?fpr=vmoqkp).
2. Open the [Vinted Scraper](https://apify.com/parseforge/vinted-scraper?fpr=vmoqkp).
3. Set your inputs and any filters, then click **Start**.
4. Export the results as CSV, Excel, JSON, or XML from the **Dataset** tab.

Run it programmatically through the [Apify API](https://docs.apify.com/api/v2) (`run-sync-get-dataset-items`) or the [ApifyClient](https://docs.apify.com/api/client/js) for JavaScript and Python.

### Use with AI agents (MCP)

Give an AI agent live access to Vinted through the Model Context Protocol. Add the Actor to Claude, Cursor, or any MCP client:

```bash
claude mcp add --transport http apify "https://mcp.apify.com/?tools=parseforge/vinted-scraper"
```

Then prompt it in plain language to run the scraper and read back the results.

### Troubleshooting

**Why am I getting no results?**

Check that your search term is spelled correctly and that the price range or brand/size IDs are not too restrictive. Try running with only the search text first, then add filters one by one.

**The actor returns fewer listings than my maxItems setting.**

Vinted only shows a finite number of pages for any search. If your filters are narrow or the keyword is uncommon, the total available listings may be less than your requested maximum.

**I get blocked or see captcha errors.**

Increase the run's memory to 4096 MB and enable Apify's residential proxies in the actor's advanced settings. This rotates IP addresses and reduces the chance of being flagged.

**The price filter does not seem to work.**

Make sure you are entering the price in the currency of the Vinted domain you are targeting. A price of 10 on the French site means 10 EUR, while on the Polish site it means 10 PLN.

**My brand ID filter is ignored.**

Brand IDs are integers separated by commas with no spaces, like '53,14'. Verify the IDs by checking the URL on Vinted after applying a brand filter manually.

### FAQ

| Question | Answer |
|---|---|
| Can I scrape Vinted without an account? | Yes. This actor reads the public search pages that anyone can see in a browser. No login, cookies, or API registration is required. |
| How do I find the brand ID or size ID for a filter? | Go to Vinted in your browser, apply a brand or size filter, and look at the URL. The number after 'brand\_id\[]=' or 'size\_id\[]=' is the ID you paste into the actor input. |
| Which Vinted country sites does this support? | The actor hits the domain you configure in the run. You can target any Vinted country marketplace by setting the correct base URL in the actor's advanced options. |
| What data fields do I get for each listing? | You get the title, price, currency, brand, size, condition, photo URLs, seller username, and the listing URL. The exact field list is shown in the sample output on the actor's page. |
| Can I scrape multiple search terms in one run? | The input takes one search term per run. To scrape multiple keywords, run the actor in parallel for each term or use an array of runs from a scheduler. |
| Is there a limit on how many listings I can collect? | You set the maximum in the input, up to 1,000,000. The actual number depends on how many results Vinted returns for your search and filters. |
| Does this actor handle Vinted's anti-bot measures? | It runs on Apify's infrastructure with rotating proxies and browser-like headers to reduce blocking. For very large runs, consider using Apify's residential proxy option. |
| Can I get the seller's full profile information? | This actor focuses on listing data. It returns the seller's username and a link to their profile, but it does not scrape the full profile page. |
| How fresh is the data? | The actor reads live search results at the moment you run it. There is no cache, so every run reflects what is currently listed on Vinted. |
| Can I filter by item condition or color? | The current input schema supports price, sort order, brand ID, and size ID. Condition and color filters are not yet exposed as direct inputs, but you can pass them via the search URL in advanced mode. |

### Related actors

Browse the full [ParseForge collection](https://apify.com/parseforge?fpr=vmoqkp) for more scrapers.

🆘 **Need help?** Email parseforge@protonmail.com with your run ID, your input, and what you expected.

⚠️ **Disclaimer.** This Actor is unofficial and is not affiliated with, endorsed by, or sponsored by Vinted, UAB. It collects only publicly available data. You are responsible for using the collected data in compliance with the source's terms of service and applicable data-protection laws, including GDPR, CCPA, and PIPL. Do not use it to collect personal data unlawfully.

# Actor input Schema

## `searchText` (type: `string`):

Keyword to search for (e.g. 'vintage jacket', 'Nike sneakers')

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

How many listings to collect per run.

## `priceFrom` (type: `number`):

Minimum price filter (in the site's local currency)

## `priceTo` (type: `number`):

Maximum price filter (in the site's local currency)

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

Sort order for results

## `brandIds` (type: `string`):

Comma-separated Vinted brand IDs to filter by (e.g. '53,14'). Find IDs via Vinted's brand filter URL params.

## `sizeIds` (type: `string`):

Comma-separated Vinted size IDs to filter by (e.g. '1,2,3'). Find IDs via Vinted's size filter URL params.

## Actor input object example

```json
{
  "searchText": "vintage jacket",
  "maxItems": 10,
  "order": "newest_first"
}
```

# Actor output Schema

## `results` (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 = {
    "searchText": "vintage jacket",
    "maxItems": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("parseforge/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 = {
    "searchText": "vintage jacket",
    "maxItems": 10,
}

# Run the Actor and wait for it to finish
run = client.actor("parseforge/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 '{
  "searchText": "vintage jacket",
  "maxItems": 10
}' |
apify call parseforge/vinted-scraper --silent --output-dataset

```

## MCP server setup

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