Vinted Arbitrage [💰$1.5/1K] | Cross-Country | Price Compare
Pricing
from $1.47 / 1,000 results
Vinted Arbitrage [💰$1.5/1K] | Cross-Country | Price Compare
Scrape Vinted listings across 26 European markets, convert local prices to EUR and compare margins to find buy/sell arbitrage opportunities. Get per-market averages, medians and pairwise gross-margin reports.
Pricing
from $1.47 / 1,000 results
Rating
0.0
(0)
Developer
Ahmed Jasarevic
Maintained by CommunityActor stats
0
Bookmarked
14
Total users
2
Monthly active users
16 days ago
Last modified
Categories
Security
Limited permissionsShare
Vinted Cross-Country Arbitrage Scraper
Scrape Vinted listings across 26 European markets in one run and get a normalised cross-country arbitrage report. Listings are converted to EUR using ECB reference rates, so prices from different currencies are directly comparable.
Quick start
{"mode": "CROSS_COUNTRY","query": "Nike Jordan 4","countries": ["fr", "de", "pl", "it"],"maxItems": 120,"minPrice": 5,"maxPrice": 300}
================ CROSS-COUNTRY ARBITRAGE REPORT ================1. PL 164.75 PLN (avg 37.71 EUR / median 40.55 EUR) range 10.84-300 n=1202. FR 71.32 EUR (avg 71.32 EUR / median 40.00 EUR) range 5-299 n=1203. IT 72.64 EUR (avg 72.64 EUR / median 45.00 EUR) range 5-299 n=1204. DE 78.34 EUR (avg 78.34 EUR / median 50.00 EUR) range 5-299 n=120===============================================================BUY in PL → SELL in DEGross margin: 107.7% (before fees, shipping, buyer protection)
How It Works

Looking for a Vinted scraper or a practical Vinted API alternative? Search 26 European markets and get normalized listings plus a cross-country arbitrage report for resale sourcing and price research. Each record includes title, price, buyer-protection fee, currency, brand, size, condition, URL, seller, country, likes, views and item ID.
Use the dataset to compare market prices, find sourcing gaps, track categories or build a resale dashboard. Export as JSON, CSV or Excel, or pull results through the Apify API. Start with a small run, then pay from $1.50 per 1,000 listings.
Modes
| Mode | Input | Output |
|---|---|---|
SEARCH | query, countries | Listings per market, up to the deep-pagination limit |
CROSS_COUNTRY | query, countries | Same as SEARCH plus the arbitrage report |
TRENDING | countries | Newest listings across markets |
PRODUCT_DETAIL | startUrls | One enriched row per item link (description, category, photos) |
SELLER_PROFILE | startUrls | Every public item of each seller profile |
Supported markets
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
USA is not supported. If us is passed it is skipped with a warning instead of failing the run.
Deep pagination
Vinted limits how many listings a single search pass can return. When a search matches more items than that limit, the Actor can split the configured price range into bands and sweep each band separately, so large runs keep collecting without gaps. This requires Max Price. Set priceBandPartitioning: false to disable it.
Filters
| Input | Notes |
|---|---|
query | Keywords. Empty browses the whole catalogue |
minPrice / maxPrice | Local currency. Both are sent to Vinted |
status_ids | new_with_tags, new_without_tags, very_good, good, satisfactory |
brand_ids | Vinted brand IDs, e.g. 53 (Nike), 14 (Adidas) |
size_ids / color_ids | Vinted size / colour IDs |
catalog_ids | Vinted category IDs |
order | newest_first, relevance, price_low_to_high, price_high_to_low, most_popular, highest_viewed |
Condition names are mapped automatically. Numeric IDs are also accepted.
Output fields
title price priceWithFee serviceFee currency brand size
condition url imageUrl seller country liked favourite views
promoted photoCount itemId scraped_at
PRODUCT_DETAIL adds description category color availability.
SELLER_PROFILE adds seller_id.
fetchPhotos: true adds allPhotos (every full-size photo URL, comma separated).
Limits
| Plan | Max items per market | Max markets per run |
|---|---|---|
| Free | 50 | 5 |
| Paid | up to 5000 | 5 |
Listings are collected across the selected markets and merged into one normalized dataset. A single run can cover up to five markets.
Local development
npm install# Apify CLI (uses the real proxy and Apify storage)apify run --input '{"mode":"SEARCH","query":"nike","countries":["fr"],"maxItems":50}'# or plain Node against local storagemkdir -p storage/key_value_stores/defaultecho '{"mode":"SEARCH","query":"nike","countries":["fr"],"maxItems":50}' > storage/key_value_stores/default/INPUT.jsonnode main.js
Requires Node 20+ (tested on Node 24).
Troubleshooting
| Symptom | Cause |
|---|---|
| Run returns 0 items | Check the requested price range exists for that market and that the query is spelled the way Vinted indexes it |
| Items repeat across markets | Expected — the same listing can appear in several markets. itemId is stable, use it to dedupe |
| Fewer items than expected | The market may have fewer matches, or the price range may be too narrow |
Notes
Only public catalogue and listing information is used. No login, account credentials or private data. Respect Vinted's terms of service and the rate limits of the markets you query.