# Vinted New Listings Scraper (`schnellscrapers/vinted-new-listings`) Actor

Scrape Vinted's newest listing cards from one or more catalog URLs. Get item titles, prices, buyer-protection totals, brands, sizes, conditions, photos, and URLs, with price, brand, condition, include, and exclude filters applied before billing. No login, API key, browser, or proxy required.

- **URL**: https://apify.com/schnellscrapers/vinted-new-listings.md
- **Developed by:** [Nate Schnell](https://apify.com/schnellscrapers) (community)
- **Categories:** E-commerce, Automation, Integrations
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.50 / 1,000 listings

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

### What does Vinted New Listings Scraper do?

Vinted New Listings Scraper turns public Vinted catalog searches into a clean, newest-first listing feed. It returns the item title, price, buyer-protection total, brand, size, condition, photo, and URLs so resellers can spot fresh inventory and price opportunities without copying cards by hand.

### What data can you extract from Vinted?

- **Listing identity** — item ID, title, listing URL, source catalog URL
- **Pricing** — displayed item price, currency, buyer-protection total, total currency
- **Catalog attributes** — brand, size, condition, primary image URL
- **Run context** — source page number and UTC scrape timestamp

Filters are applied after the catalog page is fetched but before a record is validated, written, or billed. Duplicate item IDs found across multiple URLs or pages are emitted once.

### How to use Vinted New Listings Scraper

1. Open the actor and add one or more public Vinted catalog URLs to **Vinted catalog URLs**. Use Vinted's own brand, category, size, price, or market filters in each URL.
2. Set **Maximum listings** and **Maximum pages** for the run budget. The actor keeps the catalog filters and requests pages in newest-first order.
3. Optionally add brand, condition, include-keyword, exclude-keyword, minimum-price, or maximum-price filters.
4. Click **Run**. The actor reads public listing cards directly and skips invalid URLs or failed pages while keeping successful inputs.
5. Open the dataset and download JSON, CSV, or Excel, or connect the dataset API to your workflow.

### How much does it cost?

This actor uses pay-per-event pricing: **$0.0015 per listing** ($1.50 / 1,000 Vinted listings) plus **$0.0025 per Actor Start** event. Apify charges the start event according to the actor memory allocation, with at least one event per run. The listing event applies only to records written to the dataset. Dry runs fetch, parse, filter, and validate without writing listing records, but the Actor Start event still applies. Keep **Maximum listings** and **Maximum pages** low while testing.

### Input

The required input is a list of public Vinted `/catalog` URLs. Put search text and Vinted's own filters in the URL, then use the optional fields for local price, brand, condition, and keyword rules.

```json
{
  "startUrls": [
    { "url": "https://www.vinted.com/catalog?search_text=patagonia&order=newest_first" }
  ],
  "maxItems": 20,
  "maxPages": 1,
  "brands": ["Patagonia"],
  "excludeKeywords": ["bundle"]
}
```

### Output

Each dataset row is one Vinted listing. Prices remain in the market currency shown on the catalog card.

```json
{
  "itemId": "9805928344",
  "title": "Patagonia XL Midweight Capilene Baselayer 3 Men’s Longsleeve Tee",
  "listingUrl": "https://www.vinted.com/items/9805928344-patagonia-xl-midweight-capilene-baselayer-3-mens-longsleeve-tee?referrer=catalog",
  "imageUrl": "https://images1.vinted.net/t/06_0053c_dHaCuXAqoqcwHJojgVTHWYtL/310x430/425e64d8.webp?s=38d2f6bf3b2c837277016c1a5598ae57ad6f75ad",
  "price": 26,
  "currency": "USD",
  "buyerTotalPrice": 28,
  "buyerTotalCurrency": "USD",
  "brand": "Patagonia",
  "size": "XL",
  "condition": "Very good",
  "sourceUrl": "https://www.vinted.com/catalog?search_text=patagonia&order=newest_first&page=1",
  "page": 1,
  "scrapedAt": "2026-08-28T13:20:00.000Z"
}
```

### Integrations

Use the Apify API from Python or Node.js, webhooks, schedules, Make, n8n, Zapier, or Google Sheets to turn a Vinted listing feed into a recurring sourcing workflow.

### Related actors

- [Shopify New Products Monitor](https://apify.com/schnellscrapers/shopify-new-products-monitor) — watch newly published storefront products with timestamps and availability.
- [Shopify Sale Monitor](https://apify.com/schnellscrapers/shopify-sale-monitor) — track sale and stock changes on public Shopify catalogs.
- [Amazon Best Sellers Scraper](https://apify.com/schnellscrapers/amazon-best-sellers-scraper) — compare ranked marketplace products and prices.

### FAQ

#### How does Vinted New Listings Scraper work?

It requests the same public Vinted catalog pages a visitor can open, scopes each rendered listing card by its item marker, and normalizes the visible identity, pricing, and catalog attributes. The actor adds `order=newest_first` and paginates within the limits you set.

#### Can I use Vinted New Listings Scraper as an API?

Yes. Start the actor through the Apify API and read the run's default dataset endpoint. The Output tab and API examples in the Apify console show the exact request shape for your account.

#### Can I use Vinted New Listings Scraper in Python or Node.js?

Yes. Use `apify-client` to start a run and read its dataset, for example: `await apify.actor('schnellscrapers/vinted-new-listings').call(input)`.

#### What does this actor access?

The actor accesses public Vinted catalog and search pages only. It does not log into an account, request private closets, or fetch seller-profile details. No API key or proxy is required for the default path.

#### Is it legal to scrape Vinted?

That depends on your jurisdiction, purpose, and how you use the data. This actor reads public catalog listing information; review the rules that apply to your project and obtain professional advice for commercial redistribution or other high-risk uses.

#### Can I get seller profiles, listing history, or sold prices?

Not in this focused feed. Seller identity, historical price changes, and sold status are not part of the catalog-card output. Use the listing URL for manual follow-up or a separate actor when you need detail enrichment.

#### How do I keep costs predictable?

Set a small maximum listing count and page budget, use the URL's own Vinted filters, and apply local price, brand, condition, include, and exclude filters. Records that fail a local filter are not written or billed.

### Your feedback

If a Vinted catalog layout changes or you need a buyer-facing field from the public card, open an issue in the actor's Issues tab with a sample URL and the expected output. Feature requests for additional markets and filters are welcome.

# Actor input Schema

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

Add one or more public Vinted catalog or search URLs, such as https://www.vinted.com/catalog?search\_text=patagonia. Keep your Vinted brand, category, size, price, and sort filters in the URL.

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

Stop after this many matching listings across all URLs. Use 20 for a bounded smoke run.

## `maxPages` (type: `integer`):

Maximum catalog pages fetched across all start URLs. Page 1 is fetched first; later pages preserve the URL filters and newest-first order.

## `minPrice` (type: `number`):

Keep listings at or above this displayed item price in the source currency. Listings without a readable price are excluded when this filter is set.

## `maxPrice` (type: `number`):

Keep listings at or below this displayed item price in the source currency. Use the same currency and market as the catalog URL.

## `brands` (type: `array`):

Keep listings whose parsed brand matches one of these names, case-insensitively (for example, Patagonia or Nike). Leave empty to keep every brand.

## `conditions` (type: `array`):

Keep listings with one of these Vinted condition labels, such as New with tags, New without tags, Very good, Good, or Satisfactory. Leave empty to keep every condition.

## `includeKeywords` (type: `array`):

Keep a listing when its title contains at least one of these case-insensitive phrases (for example, fleece or jacket). Leave empty to disable the filter.

## `excludeKeywords` (type: `array`):

Drop a listing when its title contains any of these case-insensitive phrases (for example, damaged or bundle). Excluded records are never written or billed.

## `dryRun` (type: `boolean`):

Fetch, parse, filter, and validate listings without writing dataset records. Logs matched and written counts separately.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://www.vinted.com/catalog?search_text=patagonia&order=newest_first"
    }
  ],
  "maxItems": 100,
  "maxPages": 1,
  "brands": [],
  "conditions": [],
  "includeKeywords": [],
  "excludeKeywords": [],
  "dryRun": false
}
```

# Actor output Schema

## `records` (type: `string`):

Filtered Vinted listing records with item identity, prices, brand, size, condition, image, source page, and URL.

# 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?search_text=patagonia&order=newest_first"
        }
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("schnellscrapers/vinted-new-listings").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?search_text=patagonia&order=newest_first" }] }

# Run the Actor and wait for it to finish
run = client.actor("schnellscrapers/vinted-new-listings").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 '{
  "startUrls": [
    {
      "url": "https://www.vinted.com/catalog?search_text=patagonia&order=newest_first"
    }
  ]
}' |
apify call schnellscrapers/vinted-new-listings --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,schnellscrapers/vinted-new-listings"
        }
    }
}

```

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/Me1KxbZ837y9WG64N/builds/DkhLo0VLb2XVgYFWh/openapi.json
