# Vinted Products Crawler (`alkausari_mujahid/vinted-products-crawler`) Actor

Turn Vinted into your own searchable database. This fast Vinted scraper pulls prices, brands, conditions, sizes, colors, seller details, and photos from any catalog or search page — export to JSON or CSV. Perfect for reselling, price tracking, and market research. Not affiliated with Vinted Limited.

- **URL**: https://apify.com/alkausari\_mujahid/vinted-products-crawler.md
- **Developed by:** [Alkausari M](https://apify.com/alkausari_mujahid) (community)
- **Categories:** E-commerce, Integrations, Automation
- **Stats:** 27 total users, 11 monthly users, 99.4% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $5.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/platform/actors/running/actors-in-store#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

**Turn [Vinted](https://www.vinted.com) into your own searchable database.** This fast, no-code Vinted scraper pulls **prices, brands, conditions, sizes, colors, seller details, and photos** from any catalog or search page — and hands them back as one clean, structured record you can open in Excel, Google Sheets, or your own app. Whether you're **reselling, hunting bargains, or tracking the second-hand market**, get the data you need in minutes instead of scrolling for hours.

> Built and maintained by **Alkausari M**.

***

### ✦ Highlights

- ⚡  **Two speeds** — blazing-fast mode grabs ~96 listings per request; full-detail mode digs into every listing page
- 🛍️  **Full listing data** — title, price, size, condition, brand, color, and description
- 👤  **Seller insights** — username, rating, location, trust badges, and last active time
- 🖼️  **Product photos** — up to 9 high-resolution image links per item
- 🔗  **Flexible input** — scrape whole catalogs/searches, single item links, or a mix
- 📊  **Any format** — JSON, CSV, Excel, XML, or live via the Apify API
- 🛡  **Anti-blocking built-in** — residential proxies and smart retries

***

### ⚙ How it works

1. **Paste a URL** — a catalog/search page (apply any filters you like first), a direct item link, or several of each.
2. **Choose how many pages** — set the start and end page to control how much you scrape.
3. **Need descriptions too?** — turn on **Fetch full item details** for descriptions, colours, materials, shipping and seller ratings (slower; the default fast mode is fine for price tracking).
4. **Click Start** — proxies, retries, and parsing are handled for you.
5. **Download** — get your results as JSON, CSV, or Excel, or pull them from the API.

**Example input:**

```json
{
    "startUrls": [
        { "url": "https://www.vinted.com/catalog?catalog[]=2632&order=newest_first" }
    ],
    "startPageNum": 1,
    "endPageNum": 1,
    "proxyConfiguration": { "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"] }
}
```

> 💡 **Tip:** Apply your filters on Vinted *before* copying the URL — the scraper keeps every filter (brand, size, category, price range, condition) you set.

***

### 📦 What you get back

Each product listing is one structured record. Here's a full record (with **Fetch full item details** turned on):

```json
{
    "url": "https://www.vinted.com/items/8637599768-pastel-sambas",
    "title": "Pastel Sambas",
    "price": "$75.00",
    "totalPrice": "$79.45",
    "size": "9",
    "condition": "New with tags",
    "brand": "adidas",
    "brandUrl": "https://www.vinted.com/brand/14-adidas",
    "color": "Beige, Lilac",
    "description": "Brand new with box. Typical Samba fit for size reference.",
    "uploaded": "a week ago",
    "seller": "pre-ownedchic",
    "sellerProfileUrl": "https://www.vinted.com/member/3147450761",
    "sellerRating": 5,
    "sellerRatingCount": 6,
    "sellerBadges": ["Frequent Uploads", "Speedy Shipping"],
    "sellerLocation": "New York, United States",
    "sellerLastSeen": "Last seen an hour ago",
    "favorites": 12,
    "images": [
        "https://images1.vinted.net/.../1777322013.webp",
        "... up to 9 images"
    ],
    "shippingPrice": "from $0.00",
    "freeShipping": true,
    "material": "Leather, Rubber",
    "measurements": null,
    "scrapedAt": "2026-04-28T10:14:32.000Z"
}
```

> \[!NOTE]
> Every record in a run has the same columns. The default fast mode includes the core fields (title, price, size, condition, brand, images, seller username). Turning on **Fetch full item details** adds description, colour, material, measurements, shipping, and the seller's rating, location and last-seen. A `null` value always means the data genuinely wasn't available — never "not collected".

#### Prefer a spreadsheet view?

Download as **CSV or Excel** and each listing becomes a row, each field a column — like this sample from a full-details run:

| Title | Brand | Price | Total Price | Size | Condition | Color | Seller | Rating | Location | Favorites | Free Shipping | Uploaded |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Pastel Sambas | adidas | $75.00 | $79.45 | 9 | New with tags | Beige, Lilac | pre-ownedchic | 5.0 | New York, US | 12 | Yes | a week ago |
| Coach x Disney Sneakers | Coach | $125.00 | $131.95 | 8 | New without tags | Cream, White | marieb1488 | 4.7 | Ghent, NY, US | 5 | Yes | an hour ago |
| Skechers Shoes | Skechers | $15.00 | $16.45 | 7.5 | Very good | Black | palmdesertt | 5.0 | Austin, TX, US | 2 | No | 6 min ago |
| Keith Haring Converse | Converse | $8.00 | $9.10 | 8 | Satisfactory | Black | mimibeanieweenie | 4.8 | Bonaire, GA, US | 1 | Yes | 3 min ago |

> The table shows the most-used columns. Each row also carries the seller's profile link, product photos, description, shipping cost, material, seller badges, and more — see the full field list above.

***

### 📋 Input

| Field | Description | Required | Default |
|---|---|---|---|
| **Start URLs** | Vinted catalog/search pages, direct item URLs, or a mix. Direct item URLs are always scraped with full details | Yes | — |
| **Start Page** | First catalog page to scrape | No | `1` |
| **End Page** | Last catalog page to scrape (inclusive). Scraping stops early if the catalog has fewer pages | No | `1` |
| **Max items** | Exact number of listings to save. Scraping stops as soon as it has this many. `0` means no limit | No | `0` |
| **Max Concurrency** | How many pages to scrape in parallel. Lower it if you hit blocks; raise it for faster runs | No | `10` |
| **Fetch full item details** | OFF (default) is fast and cheap. Turn ON to also collect description, colour, material, measurements, shipping, and seller rating/location — much slower and uses far more data | No | `false` |
| **Proxy Configuration** | Proxy settings. Leave as default if unsure | No | Apify Proxy (Residential) |

> Each catalog page holds about 96 listings, so pages 1–5 returns roughly 480 items. If you want a specific number instead, set **Max items** — the run stops the moment it has that many, and you're only billed for what you get.

***

### 💵 How much does it cost?

You pay per result, and the price depends on which mode you run:

| Mode | What you get | Price |
|---|---|---|
| **Fast** (default) | 12 core fields — title, price, size, condition, brand, images, seller | **$5.00 / 1,000 items** |
| **Full details** | all 25 fields — adds description, colour, material, measurements, shipping, seller rating & location | **$13.00 / 1,000 items** |

Full-detail mode opens every listing's own page, which uses far more residential proxy bandwidth — that's the difference in price. The surcharge is only applied to pages that were **fetched and read successfully**. If a listing's page can't be opened, you are not charged the surcharge for it — the item is still saved with the details we already had from the catalog, and the item-page fields are left empty.

**Rough guide:** a typical run of 5 catalog pages (~480 listings) costs about **$2.40** in fast mode, or **$6.24** with full details.

> 💡 Start in fast mode. It already covers price tracking, resale sourcing and market research — only switch on full details when you specifically need descriptions or materials.

***

### 💡 Use cases

- **Price research** — track second-hand prices for specific brands or items over time.
- **Resale sourcing** — spot underpriced listings by comparing price, brand, and condition.
- **Market analysis** — understand what sells, at what price, and in what condition.
- **Inventory feeds** — build product lists for a category or brand to resell elsewhere.
- **Data pipelines** — pipe results to Sheets, BigQuery, or webhooks via the Apify API.

***

### ❓ FAQ

**The scraper got blocked or returned nothing — what do I do?**
Make sure the proxy is enabled (it is by default). Residential proxies route requests through real IP addresses that Vinted is far less likely to block.

**I got fewer results than expected — why?**
Raise the **End Page** to scrape more pages. Scraping also stops automatically once the catalog runs out of pages, so check that your search URL actually returns that many listings.

**Where are the description, colour and material columns?**
Those come from each item's own page, so they're only included when **Fetch full item details** is turned on. The default fast mode skips them to keep runs quick and cheap.

**Why are some fields empty (`null`)?**
Vinted sellers aren't required to fill in every detail. Optional fields like material or measurements appear as `null` when the seller left them blank.

**Is it legal to scrape Vinted?**
This Actor collects only publicly visible listing data — the same information any visitor sees without logging in. Use responsibly and in accordance with [Vinted's Terms of Service](https://www.vinted.com/terms_and_conditions).

***

### 📮 Support

Bugs, feature requests, or custom scraping work — open an issue on Apify or email **<alkausarimujahid@gmail.com>**.

***

<sub>Built by **Alkausari M**. This Actor is independent and not affiliated with, endorsed by, or sponsored by Vinted Limited. All trademarks, including "Vinted," are the property of their respective owners. Use scraped data responsibly and in accordance with the [Vinted Terms of Service](https://www.vinted.com/terms_and_conditions) and applicable law.</sub>

# Actor input Schema

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

Vinted URLs to scrape: catalog/search pages (paginated via Start/End Page) and/or direct item URLs like https://www.vinted.com/items/123456-name (each scraped as a single full-detail page). You can mix both.

## `startPageNum` (type: `integer`):

Page number to start scraping from.

## `endPageNum` (type: `integer`):

Page number to stop scraping at (inclusive).

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

Exact number of listings to save. Scraping stops as soon as this many have been collected, whatever the page range says. Set 0 for no limit.

## `maxConcurrency` (type: `integer`):

Maximum number of pages scraped in parallel. Lower this if you hit rate limits or blocks on Vinted; raise it for faster runs.

## `fetchItemDetails` (type: `boolean`):

Off (default) is fast and cheap: gets title, price, brand, size, condition, images and seller username from Vinted's catalog API — one request per ~96 items. Turn ON to also open each item's own page for description, colour, material, measurements, shipping, and the seller's rating, location and last-seen time. This fetches one page per result, so it is much slower, uses far more residential proxy data, and adds a per-item charge on top of the per-result price (billed only for pages that were fetched and read successfully).

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

Proxy settings. Enable Apify Proxy for better success rates on Vinted.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://www.vinted.com/catalog?catalog[]=12&brand_ids[]=172724"
    }
  ],
  "startPageNum": 1,
  "endPageNum": 1,
  "maxItems": 0,
  "maxConcurrency": 10,
  "fetchItemDetails": false,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# 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 = {
    "startUrls": [
        {
            "url": "https://www.vinted.com/catalog?catalog[]=12&brand_ids[]=172724"
        }
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("alkausari_mujahid/vinted-products-crawler").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 = { "startUrls": [{ "url": "https://www.vinted.com/catalog?catalog[]=12&brand_ids[]=172724" }] }

# Run the Actor and wait for it to finish
run = client.actor("alkausari_mujahid/vinted-products-crawler").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 '{
  "startUrls": [
    {
      "url": "https://www.vinted.com/catalog?catalog[]=12&brand_ids[]=172724"
    }
  ]
}' |
apify call alkausari_mujahid/vinted-products-crawler --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/acts/WRbD3mhjsXATCTSpw/builds/U3YEajdsuOc4Tesp4/openapi.json
