# Vinted Cross-Country Arbitrage Scraper (`ahmed_jasarevic/vinted-cross-country-arbitrage-scraper`) Actor

Scrapes Vinted listings across multiple countries and compares prices for cross-country arbitrage opportunities. Supports search filters, seller extraction, and market analysis to identify profitable buying and selling differences between EU markets.

- **URL**: https://apify.com/ahmed\_jasarevic/vinted-cross-country-arbitrage-scraper.md
- **Developed by:** [Ahmed Jasarevic](https://apify.com/ahmed_jasarevic) (community)
- **Categories:** E-commerce, Automation, Developer tools
- **Stats:** 5 total users, 2 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.70 / 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 a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use 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 Master Arbitrage Pro (2026 Edition)

**The ultimate all-in-one tool for Vinted resellers, collectors, and arbitrage hunters.** Unlock the full potential of Vinted markets across **25+ countries** including Europe and the USA. Whether you are looking for the cheapest Jordan 4s in Poland or tracking trending items in France, this actor has you covered.

---

### 🌟 Key Features

* **🌍 Cross-Country Arbitrage:** Compare prices for the same item across different national markets (FR, PL, DE, IT, etc.) in a single report.
* **📈 Trending Items Mode:** Discover what's hot right now using Vinted's relevance algorithms.
* **👤 Seller Wardrobe Scraper:** Export entire collections from top sellers to analyze their inventory and pricing strategies.
* **🔍 Advanced Search:** Filter by brand, category, condition, and price range with precision.
* **📄 Deep Product Data:** Get detailed JSON metadata for specific items including high-res images and full descriptions.
* **💰 Smart Currency Conversion:** Automatically converts PLN, GBP, and other currencies to EUR for easy comparison.

---

### 🚀 How to Use

#### 1. Basic Search (`SEARCH`)
Find items in a specific country.
* **Query:** `Nike Jordan 4 Black Cat`
* **Countries:** `["fr"]`
* **Limit:** `100`

#### 2. Market Arbitrage (`CROSS_COUNTRY`)
Find out where it's cheapest to buy.
* **Query:** `Corteiz Hoodie`
* **Countries:** `["fr", "pl", "de", "it", "es"]` (Max 5 recommended)
* **Output:** Generates a **Final Arbitrage Report** with margins and recommendations.

#### 3. Seller Analysis (`SELLER_PROFILE`)
Keep an eye on your competition.
* **Mode:** `SELLER_PROFILE`
* **Seller URLs:** Paste the link to their profile (e.g., `https://www.vinted.fr/member/12345678`).

---

### 🛠 Input Configuration

| Field | Type | Description |
| :--- | :--- | :--- |
| `mode` | `Enum` | Choose between SEARCH, CROSS_COUNTRY, TRENDING, etc. |
| `query` | `String` | Your search keywords. |
| `countries` | `Array` | List of country codes (fr, pl, de, uk, us...). |
| `maxItems` | `Integer` | Number of items to scrape per country. |
| `minPrice` | `Integer` | Minimum price in EUR. |
| `status_ids` | `Array` | Item condition (New with tags, Very good, etc.). |

---

### 📊 Output Example (Arbitrage Report)

When using **Cross-Country** mode, you will receive a specialized report:

```json
{
  "type": "FINAL_ARBITRAGE_REPORT",
  "recommendation": "Buy in PL, sell in FR",
  "margin": "24.5%",
  "market_data": [
    { "country": "pl", "avg": 120.50, "min": 95.00 },
    { "country": "fr", "avg": 150.00, "min": 135.00 }
  ]
}
````

***

### 💡 Pro Tips for Resellers

1. **The "Poland" Trick:** Always include Poland (`pl`) in your arbitrage runs. High-end sneakers and streetwear are often listed significantly lower there compared to the French or German markets.
2. **Condition Matters:** Use the `status_ids` filter to search only for "New with tags" if you are flipping for maximum profit.
3. **Timing:** Use the `newest_first` sort order to catch steals the second they are uploaded.

***

### 🔒 Limitations & Security

- **Free Tier:** Limited to 20 results per run to prevent bot detection for non-paying users.
- **Safety First:** To ensure high performance and prevent IP bans, the actor limits multi-country runs to **5 countries at a time**.
- **Privacy:** This actor uses advanced browser fingerprinting to stay undetected and provide clean data.

***

**Developed with ❤️ for the Vinted Reselling Community.** *Disclaimer: This tool is not affiliated with or endorsed by Vinted. Use responsibly and in accordance with Vinted's Terms of Service.*

# Actor input Schema

## `mode` (type: `string`):

Select how you want to scrape Vinted.

## `query` (type: `string`):

Keywords for finding items (e.g. 'Nike Jordan 4').

## `countries` (type: `array`):

Select up to 5 Vinted markets to scrape per run.

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

Maximum items to fetch per country.

## `section_urls` (type: `string`):

Fill these only if you use Item Detail or Seller Profile modes.

## `itemUrls` (type: `array`):

List of specific Vinted item links.

## `sellerUrls` (type: `array`):

List of Vinted seller profile links.

## `section_filters` (type: `string`):

Narrow down your search results.

## `status_ids` (type: `array`):

Select item conditions. The scraper will map these to Vinted IDs automatically.

## `minPrice` (type: `integer`):

Minimum price filter.

## `maxPrice` (type: `integer`):

Maximum price filter.

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

How to sort results.

## `catalog_ids` (type: `string`):

Vinted Category ID (Optional).

## `brand_ids` (type: `string`):

Filter by Brand IDs (Optional, comma separated).

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

Recommended: Use Residential Proxies to avoid Cloudflare blocks.

## Actor input object example

```json
{
  "mode": "SEARCH",
  "query": "Nike Jordan 4",
  "countries": [
    "fr",
    "pl",
    "de"
  ],
  "maxItems": 40,
  "minPrice": 100,
  "order": "newest_first",
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# 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 = {
    "query": "Nike Jordan 4"
};

// Run the Actor and wait for it to finish
const run = await client.actor("ahmed_jasarevic/vinted-cross-country-arbitrage-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 = { "query": "Nike Jordan 4" }

# Run the Actor and wait for it to finish
run = client.actor("ahmed_jasarevic/vinted-cross-country-arbitrage-scraper").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 '{
  "query": "Nike Jordan 4"
}' |
apify call ahmed_jasarevic/vinted-cross-country-arbitrage-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=ahmed_jasarevic/vinted-cross-country-arbitrage-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Vinted Cross-Country Arbitrage Scraper",
        "description": "Scrapes Vinted listings across multiple countries and compares prices for cross-country arbitrage opportunities. Supports search filters, seller extraction, and market analysis to identify profitable buying and selling differences between EU markets.",
        "version": "0.0",
        "x-build-id": "gy8GId52cNKxxipSn"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/ahmed_jasarevic~vinted-cross-country-arbitrage-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-ahmed_jasarevic-vinted-cross-country-arbitrage-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/ahmed_jasarevic~vinted-cross-country-arbitrage-scraper/runs": {
            "post": {
                "operationId": "runs-sync-ahmed_jasarevic-vinted-cross-country-arbitrage-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/ahmed_jasarevic~vinted-cross-country-arbitrage-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-ahmed_jasarevic-vinted-cross-country-arbitrage-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "mode"
                ],
                "properties": {
                    "mode": {
                        "title": "🎯 Scraping Mode",
                        "enum": [
                            "SEARCH",
                            "CROSS_COUNTRY",
                            "TRENDING",
                            "PRODUCT_DETAIL",
                            "SELLER_PROFILE"
                        ],
                        "type": "string",
                        "description": "Select how you want to scrape Vinted.",
                        "default": "SEARCH"
                    },
                    "query": {
                        "title": "🔍 Search Query",
                        "type": "string",
                        "description": "Keywords for finding items (e.g. 'Nike Jordan 4')."
                    },
                    "countries": {
                        "title": "🌍 Countries",
                        "type": "array",
                        "description": "Select up to 5 Vinted markets to scrape per run.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "fr",
                                "de",
                                "uk",
                                "it",
                                "es",
                                "nl",
                                "pl",
                                "pt",
                                "be",
                                "at",
                                "lt",
                                "cz",
                                "sk",
                                "hu",
                                "ro",
                                "hr",
                                "fi",
                                "dk",
                                "se",
                                "ee",
                                "gr",
                                "ie",
                                "lu",
                                "lv",
                                "si",
                                "us"
                            ],
                            "enumTitles": [
                                "France (FR)",
                                "Germany (DE)",
                                "United Kingdom (UK)",
                                "Italy (IT)",
                                "Spain (ES)",
                                "Netherlands (NL)",
                                "Poland (PL)",
                                "Portugal (PT)",
                                "Belgium (BE)",
                                "Austria (AT)",
                                "Lithuania (LT)",
                                "Czech Republic (CZ)",
                                "Slovakia (SK)",
                                "Hungary (HU)",
                                "Romania (RO)",
                                "Croatia (HR)",
                                "Finland (FI)",
                                "Denmark (DK)",
                                "Sweden (SE)",
                                "Estonia (EE)",
                                "Greece (GR)",
                                "Ireland (IE)",
                                "Luxembourg (LU)",
                                "Latvia (LV)",
                                "Slovenia (SI)",
                                "USA (US)"
                            ]
                        },
                        "default": [
                            "fr",
                            "pl",
                            "de"
                        ]
                    },
                    "maxItems": {
                        "title": "📊 Max Results",
                        "minimum": 1,
                        "maximum": 500,
                        "type": "integer",
                        "description": "Maximum items to fetch per country.",
                        "default": 40
                    },
                    "section_urls": {
                        "title": "📋 URLs (for specific modes)",
                        "type": "string",
                        "description": "Fill these only if you use Item Detail or Seller Profile modes."
                    },
                    "itemUrls": {
                        "title": "📦 Item URLs",
                        "type": "array",
                        "description": "List of specific Vinted item links.",
                        "items": {
                            "type": "object",
                            "required": [
                                "url"
                            ],
                            "properties": {
                                "url": {
                                    "type": "string",
                                    "title": "URL of a web page",
                                    "format": "uri"
                                }
                            }
                        }
                    },
                    "sellerUrls": {
                        "title": "👤 Seller URLs",
                        "type": "array",
                        "description": "List of Vinted seller profile links.",
                        "items": {
                            "type": "object",
                            "required": [
                                "url"
                            ],
                            "properties": {
                                "url": {
                                    "type": "string",
                                    "title": "URL of a web page",
                                    "format": "uri"
                                }
                            }
                        }
                    },
                    "section_filters": {
                        "title": "🎛️ Filters (Optional)",
                        "type": "string",
                        "description": "Narrow down your search results."
                    },
                    "status_ids": {
                        "title": "✨ Condition",
                        "type": "array",
                        "description": "Select item conditions. The scraper will map these to Vinted IDs automatically.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "new_with_tags",
                                "new_without_tags",
                                "very_good",
                                "good",
                                "satisfactory"
                            ],
                            "enumTitles": [
                                "New with tags",
                                "New without tags",
                                "Very good",
                                "Good",
                                "Satisfactory"
                            ]
                        }
                    },
                    "minPrice": {
                        "title": "💶 Min Price (EUR)",
                        "type": "integer",
                        "description": "Minimum price filter.",
                        "default": 100
                    },
                    "maxPrice": {
                        "title": "💶 Max Price (EUR)",
                        "type": "integer",
                        "description": "Maximum price filter."
                    },
                    "order": {
                        "title": "📈 Sort By",
                        "enum": [
                            "relevance",
                            "price_low_to_high",
                            "price_high_to_low",
                            "newest_first"
                        ],
                        "type": "string",
                        "description": "How to sort results.",
                        "default": "newest_first"
                    },
                    "catalog_ids": {
                        "title": "📁 Category ID",
                        "type": "string",
                        "description": "Vinted Category ID (Optional)."
                    },
                    "brand_ids": {
                        "title": "🏷️ Brand IDs",
                        "type": "string",
                        "description": "Filter by Brand IDs (Optional, comma separated)."
                    },
                    "proxyConfiguration": {
                        "title": "🌐 Proxy Configuration",
                        "type": "object",
                        "description": "Recommended: Use Residential Proxies to avoid Cloudflare blocks.",
                        "default": {
                            "useApifyProxy": true
                        }
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
