# Vinted Catalog Browser (`apt_marble/vinted-catalog-browser`) Actor

Browse newest Vinted arrivals per catalog category with brand, size, price and status filters — titles, prices, photos, sellers and links, no keyword needed.

- **URL**: https://apify.com/apt\_marble/vinted-catalog-browser.md
- **Developed by:** [Hamza](https://apify.com/apt_marble) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$1.50 / 1,000 catalog items

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

## Vinted Catalog Browser

Browse Vinted's newest arrivals by catalog category — no keyword needed. Pick a market and a catalog (women, men, kids and their subcatalogs), add brand, size, price and status filters, and get every fresh item back as clean, structured data. Each row carries the title, price, brand, size, status, photo, seller and a direct link. Collect anywhere from a handful of new arrivals to a 5,000-row multi-catalog export. Built for resellers, vintage hunters, market researchers and fashion teams who need Vinted supply as data: watch what lands first, spot underpriced pieces fast, track prices by brand or size, and build watchlists without opening a single category page by hand.

### What you can do with it

- **Catch new arrivals first** — browse newest-first and re-run on a schedule to spot fresh pieces before anyone else.
- **Browse by catalog** — cover women, men, kids and their subcatalogs together, or focus on one category.
- **Filter by brand and size** — narrow the feed to the labels and sizes you actually sell or wear.
- **Find the cheapest pieces** — sort by price to surface the lowest-priced items in any catalog.
- **Build watchlists and inventory lists** — export titles, prices, brands, sizes, photos and links straight into a spreadsheet or pipeline.
- **Watch supply over time** — re-run daily or weekly and compare datasets to track prices, brands and availability.

### What you get

One row per item. Abridged sample of a single result:

```json
{
  "itemId": "4123456789",
  "title": "Wool coat - beige, great condition",
  "url": "https://www.vinted.fr/items/4123456789",
  "thumbnail": "https://images.vinted.net/t/abc123_300x300.jpg",
  "price": 32.5,
  "currency": "EUR",
  "brand": "Mango",
  "size": "M",
  "status": "Good",
  "seller": "parisfashion",
  "catalogId": "1242",
  "domain": "www.vinted.fr"
}
```

Each row keeps the item's main photo, its brand and size where shown, and the market it was found in. Where an item omits a field — no brand, no size, no photo — the actor leaves it empty rather than guessing.

### Input reference

| Setting | Type | Default | What it does |
| --- | --- | --- | --- |
| Market domains | list of text | `www.vinted.fr` | Vinted markets to browse: `www.vinted.fr`, `www.vinted.de`, `www.vinted.es`, `www.vinted.it`, `www.vinted.co.uk` and other Vinted markets. |
| Catalog categories | list of text | — | Catalog category IDs to browse (women / men / kids subcatalogs), e.g. `1242`. One browse runs per ID. Leave empty to browse the whole market feed. |
| Brand IDs | list of text | — | Only return items of these brand IDs, e.g. `53`. Leave empty for all brands. |
| Size IDs | list of text | — | Only return items of these size IDs. Leave empty for all sizes. |
| Status IDs | list of text | — | Only return items with these status IDs (e.g. new, with tags). Leave empty for every status. |
| Minimum price | number | — | Only return items priced at or above this amount in the market currency. |
| Maximum price | number | — | Only return items priced at or below this amount in the market currency. |
| Max items | whole number | `200` | How many items to collect. The actor works through the result pages automatically until this number is reached or the results run out. Maximum 5,000. |
| Sort | choice | `newest` | `newest` (newest first), `price_asc` (cheapest first), `price_desc` (priciest first), or `relevance`. |

Provide at least a market (it has a default, so a run works out of the box); add catalog IDs to focus the feed and filters to narrow it.

### Output fields

| Field | Type | Description |
| --- | --- | --- |
| `itemId` | text | The item's numeric ID. |
| `title` | text | Item title as shown to readers. |
| `url` | text | Direct link to the item. |
| `thumbnail` | text | The item's main photo, when it has one. |
| `price` | number | Asking price, when listed. |
| `currency` | text | Currency code of the market, e.g. `EUR`. |
| `brand` | text | Brand name, when shown. |
| `size` | text | Size label, when shown. |
| `status` | text | Item status/condition, when shown. |
| `seller` | text | Seller's display name, when shown. |
| `catalogId` | text | Catalog category ID the item was found in (empty for whole-market browses). |
| `domain` | text | Market host the item was found on. |
| `rank` | number | Position of the item in its catalog results. |

### Example use cases

- **Reseller deal flow** — browse the dresses catalog newest-first every morning and message sellers on the standout pieces.
- **Brand watch** — follow a brand ID in your size across two markets on a daily schedule and track what appears, at what price.
- **Price research** — pull 2,000 rows for a coats catalog and compare asking prices by brand and size.
- **Kids' wardrobe refresh** — browse kids subcatalogs cheapest-first each week and export fresh options with links.
- **Market sizing** — count items per catalog and brand to see where supply concentrates.

### Pricing

You pay per result, with no monthly minimum.

| What you are charged for | Price |
| --- | --- |
| Catalog item — one item added to your dataset | **$1.50 per 1,000** |

**Worked example.** A morning check collecting 2000 items costs 2000 × $0.0015 = **$3.00**.

### Limits & what this actor cannot do

- Titles, prices, photos and availability are a snapshot at the moment of collection; items are edited, reserved or sold constantly.
- The actor returns what Vinted actually serves and reports distinct items only — the same item repeated across pages is returned once.
- Each row carries the catalog result's single main photo, not the full gallery, and no description text; both live on the item page.
- Where an item omits a field the actor leaves it empty rather than guessing.
- Prices come back in each market's own currency; a figure is never re-labelled into a different currency.
- Speed depends on the size of the job and on Vinted's own response times; no fixed throughput is promised.
- Vinted's terms govern automated access. You are responsible for using the data lawfully and in line with the source site's terms, and for handling any personal data in line with applicable privacy law.

### FAQ

**Do I need a Vinted account?**
No. The actor reads only what Vinted shows publicly in its catalog results.

**Does it need my login or password?**
No. There is nothing to connect and nothing to configure — pick a market and press start.

**Which markets can I browse?**
Any Vinted market host (`www.vinted.fr`, `www.vinted.de`, `www.vinted.es`, …). Mix as many as you like in one run.

**How many items can I get in one run?**
Up to 5,000 per run. If a catalog holds more than that, split it with narrower filters or fewer catalogs per run.

**Why are some fields empty?**
Because the item did not show them. The actor reports exactly what the catalog carries — an empty field means "not shown", never a failed guess.

**Can I get full descriptions and all photos?**
Not from catalog results — they carry one photo and no description. Feed the item links from any run into an item-details scraper for the complete record.

**Can I schedule it?**
Yes. Schedule it hourly, daily or weekly, and each run writes a fresh dataset you can compare against the last — ideal for tracking prices, new arrivals and supply over time.

**Is the data complete?**
It is complete for everything Vinted shows openly in its catalog results. The actor reports distinct items rather than the shifting estimate of the total, and leaves unshown fields empty instead of inventing them.

# Actor input Schema

## `domains` (type: `array`):

Vinted market hosts to browse, e.g. www.vinted.fr, www.vinted.de, www.vinted.es, www.vinted.it, www.vinted.co.uk. One browse is run per domain.

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

Catalog category IDs to browse (women / men / kids subcatalogs), e.g. 1242. One browse is run per catalog ID. Leave empty to browse the whole market feed.

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

Only return items of these brand IDs, e.g. 53. Leave empty for all brands.

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

Only return items of these size IDs. Leave empty for all sizes.

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

Only return items with these status IDs (e.g. new, with tags). Leave empty for every status.

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

Only return items priced at or above this amount in the market currency. Leave empty for no lower bound.

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

Only return items priced at or below this amount in the market currency. Leave empty for no upper bound.

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

Maximum total items to collect across all catalogs. The actor pages through results automatically until this number is reached or the results run out.

## `sort` (type: `string`):

Order the results are returned in.

## Actor input object example

```json
{
  "domains": [
    "www.vinted.fr",
    "www.vinted.de"
  ],
  "catalogIds": [
    "1242"
  ],
  "brandIds": [],
  "sizeIds": [],
  "statusIds": [],
  "maxItems": 200,
  "sort": "newest"
}
```

# Actor output Schema

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

Every row this run produced.

## `runSummary` (type: `string`):

What this run collected, and anything it could not read.

# 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 = {
    "domains": [
        "www.vinted.fr",
        "www.vinted.de"
    ],
    "catalogIds": [
        "1242"
    ],
    "brandIds": [],
    "sizeIds": [],
    "statusIds": [],
    "maxItems": 200,
    "sort": "newest"
};

// Run the Actor and wait for it to finish
const run = await client.actor("apt_marble/vinted-catalog-browser").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 = {
    "domains": [
        "www.vinted.fr",
        "www.vinted.de",
    ],
    "catalogIds": ["1242"],
    "brandIds": [],
    "sizeIds": [],
    "statusIds": [],
    "maxItems": 200,
    "sort": "newest",
}

# Run the Actor and wait for it to finish
run = client.actor("apt_marble/vinted-catalog-browser").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 '{
  "domains": [
    "www.vinted.fr",
    "www.vinted.de"
  ],
  "catalogIds": [
    "1242"
  ],
  "brandIds": [],
  "sizeIds": [],
  "statusIds": [],
  "maxItems": 200,
  "sort": "newest"
}' |
apify call apt_marble/vinted-catalog-browser --silent --output-dataset

```

## MCP server setup

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

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/M0zKR18YFHswiDxiT/builds/dae4sFZlx2bv88oX0/openapi.json
