Vinted Smart Scraper: Listings, Sellers & Prices
Pricing
from $1.88 / 1,000 results
Vinted Smart Scraper: Listings, Sellers & Prices
Scrape Vinted listings by keyword in 26 countries, compare prices between euro-zone markets, watch sellers and track item prices. Export to JSON, CSV or Excel, or use the API, schedules and webhooks.
Pricing
from $1.88 / 1,000 results
Rating
5.0
(5)
Developer
KazKN
Maintained by CommunityActor stats
10
Bookmarked
1.1K
Total users
51
Monthly active users
38 days
Issues response
5 days ago
Last modified
Categories
Features
Share
๐๏ธ Vinted Smart Scraper: Listings, Sellers & Prices
Vinted Smart Scraper helps resellers and analysts scrape Vinted listings by keyword in 26 countries, compare prices between euro-zone Vinted markets, watch sellers and track item prices. Export the results to CSV, Excel or JSON, or use the API, schedules and webhooks. The input form starts with a Quick search (20 listings from vinted.fr, no premium event, about $0.05 on the Free plan).
| KazKN ยท Resale & market intelligence suite ย ย โขย ย Vinted arbitrage, luxury resale, Shopify intelligence, App Store research | |||
|
Vinted โค You are here Compare markets, listings, and sellers. |
Vestiaire Research luxury listings and sellers. |
Shopify Apps Research stores, products, and apps. |
App Store Compare localized app metadata. |
Copy to your AI assistant
You can paste this complete block into ChatGPT, Claude, Claude Code, Codex, Kimi Code, or an IDE assistant. Use kazkn/vinted-smart-scraper on Apify to compare Vinted markets, find fresh deals, or monitor a seller, then retrieve the resulting Dataset.Never paste or share your Apify API token. Load APIFY_API_TOKEN from the environment.Python:import osfrom apify_client import ApifyClientclient = ApifyClient(os.environ["APIFY_API_TOKEN"])run = client.actor("kazkn/vinted-smart-scraper").call(run_input={"workflowPreset": "ARBITRAGE_SCANNER","query": "nike air force 1","countries": ["fr", "de", "nl", "it", "es"],"maxItems": 100,})items = client.dataset(run["defaultDatasetId"]).list_items().itemsprint(items)Start with one outcome preset: QUICK_SEARCH (cheapest), ARBITRAGE_SCANNER, DEAL_ALERTS, or SELLER_WATCHLIST.Required inputs for this example: workflowPreset, query, countries, and maxItems.Useful output fields: recordType, id, title, url, price, currency, country, seller.profileUrl, opportunityScore, spread, and scrapedAt.Evidence limit: Vinted may hide, remove, or challenge listings; treat price gaps and seller signals as research leads and verify current listings before acting.Inspect the full default-build specification with GET https://api.apify.com/v2/acts/kazkn~vinted-smart-scraper/builds/default, including inputSchema, actorDefinition.storages.dataset, and readme.Get or manage the token at https://console.apify.com/account/integrations. Keep it in the APIFY_API_TOKEN environment variable and never paste or share the secret.
๐ฏ Choose the result you need
| I want toโฆ | Choose this outcome preset | Open this Dataset view |
|---|---|---|
| See what Vinted lists for one keyword (cheapest first run) | ๐ QUICK_SEARCH | Overview for listing rows and URLs |
| Compare a product across countries | ๐ ARBITRAGE_SCANNER | Arbitrage opportunities for the summary, then Arbitrage items for sampled listings |
| Monitor fresh listings for one niche | โก DEAL_ALERTS | Overview for listing rows and URLs |
| Inspect seller inventory and profile signals | ๐ค SELLER_WATCHLIST | Seller profiles for seller-level rows |
Live usage changes; check the current Store page before quoting users or reviews. Public counters are directional usage signals, not payer or creator-revenue proof.
Pricing is pay-per-event: a small start event, one event per saved result row, and a fixed event for premium workflows, charged only once its data is saved. See Cost Guardrails for the per-plan table.
๐งญ Start With One of These Workflows
| Workflow | Outcome preset | Runtime mode | What you get |
|---|---|---|---|
| ๐ Quick search | QUICK_SEARCH | SEARCH | Listing rows for one keyword, no premium event (seller URLs are refused) |
| ๐ Arbitrage Scanner | ARBITRAGE_SCANNER | CROSS_COUNTRY | Price-gap summary and sampled listings |
| โก Deal Alerts | DEAL_ALERTS | SEARCH | Fresh filtered listings for a schedule or webhook |
| ๐ค Seller Watchlist | SELLER_WATCHLIST | SELLER_PROFILE | Seller inventory, profile, and rating signals |
Advanced modes are still available: PRICE_TRACK for exact listing price history, SELL_THROUGH_TRACKER for demand validation over time (item URL watchlists only for now), ITEM_DETAIL for URL lookups, and TRENDING for engagement-ranked discovery. SOLD_ITEMS (Sold Signals) has been removed because Vinted no longer shows sold listings in public search; for a seller's number of sales, use soldItemCount from SELLER_PROFILE.
โ Arbitrage Workflow to Sell
Use this actor to make a buy/no-buy decision fast:
Workflow to sell: search opportunity -> compare countries -> detect underpriced listings -> alert/export -> buy/resell.
| 1. Search opportunity | 2. Compare countries | 3. Detect underpriced listings | 4. Alert / export | 5. Buy / resell |
|---|---|---|---|---|
| Pick a niche, brand, size, or seller | Run CROSS_COUNTRY across 2-5 markets | Sort by spread, price gap, and opportunity score | Send CSV/API/webhook/Telegram | Validate shipping, fees, condition, and demand before buying |
The main output to watch is the arbitrage summary row. This is a sanitized representative shape; values vary by run:
{"recordType": "ARBITRAGE_SUMMARY","query": "nike air force 1","opportunityScore": 78,"buyCountry": "fr","sellCountry": "nl","spread": 23,"estimatedResellPrice": 58,"priceGapPercent": 65.7,"alertReason": "High spread: buy in fr around 35 EUR, compare resale in nl around 58 EUR."}
๐ค Who Should Run This?
- Vinted arbitrageurs watching price gaps across France, Germany, Italy, Spain, and the Netherlands
- Resellers who need a fast โis this underpriced?โ signal before buying inventory
- Deal hunters who want scheduled alerts instead of refreshing Vinted manually
- Pricing analysts comparing active supply by country, brand, size, and condition
- Agencies and automation builders delivering Vinted opportunity feeds to clients
๐ Recipes for recurring use
The fastest path from a useful first result to repeat usage is to save one focused Apify Task, schedule it, and send each completed Dataset to the destination where you make decisions. The Bronze estimates below assume at most 1 GB of Actor memory and the listed number of saved rows.
| Recipe | Cadence | Dataset output | Bronze cost |
|---|---|---|---|
| โก Daily deal alerts | 30 runs / month | New listing rows and URLs | $0.288/run ยท $8.64/month |
| ๐ค Daily seller watchlist | 30 runs / month | One seller profile row | $0.11025/run ยท $3.3075/month |
| ๐ Weekly cross-country comparison | 4 runs / month | Summary plus up to 100 listing rows | $0.42525/run ยท $1.701/month |
โก Daily deal alerts
Use a narrow query and newest_first so every scheduled run answers one clear question: โwhat new listings should I review today?โ The SEARCH mode does not persist a cross-run deduplication list, so a fresh result can reappear in later Datasets; keep the Dataset history or deduplicate by item ID in your own export/workflow. Save the input below as a Task with daily as the default cadence, then connect each Dataset to a webhook, Google Sheets, Telegram, or your own API. A faster schedule multiplies the per-run budget; estimate that cost before enabling it.
{"workflowPreset": "DEAL_ALERTS","mode": "SEARCH","query": "carhartt detroit jacket","countries": ["fr"],"condition": ["very_good", "good"],"priceMin": 30,"priceMax": 120,"sortBy": "newest_first","maxItems": 100}
At Bronze rates, 100 saved listing rows cost about $0.00005 start + $0.045 monitor-check + $0.225 results = $0.27005 per run, or $8.1015 for 30 runs. Actual charges follow rows saved and the selected workflow. This preset field is intentional: the legacy direct SEARCH input remains supported, while workflowPreset: DEAL_ALERTS selects the Deal Alerts outcome and its monitor check.
๐ค Daily seller watchlist
Start with one seller whose public closet you want to understand. Save the input below as a daily Task and preserve each profile snapshot in the Dataset, CSV, or Google Sheets export. Compare rating, ratingCount, itemCount, soldItemCount, sellThroughRate, followerCount, and activeItems between those exports; the Actor does not provide a built-in cross-run seller-watchlist delta. The seller URL was observed in historical successful Actor output; the URL was rechecked read-only and no new canary was run. It is included so the example is immediately runnable rather than a made-up ID.
Ready-made daily example: open the public Daily Seller Watchlist example, then copy Task ID k2rF3OtqbpUS4P0jh into your Apify account and schedule it daily.
{"workflowPreset": "SELLER_WATCHLIST","mode": "SELLER_PROFILE","sellerUrls": ["https://www.vinted.fr/member/18816404-jnn3101"]}
For one seller and one saved profile row, the Bronze rate is approximately $0.00005 start + $0.090 seller details + $0.00225 result = $0.0923 per run, or $2.769 for 30 daily runs. A confirmed Free account is limited to one seller per Free run; use a paid Apify plan when a watchlist needs more sellers, and keep the same URLs and schedule for comparable snapshots.
๐ Weekly cross-country comparison
Run the same focused query once per week across five markets. Review the ARBITRAGE_SUMMARY row first, then inspect the returned listings before checking shipping, fees, condition, and demand. This is a repeatable market check, not an automatic buy decision.
{"workflowPreset": "ARBITRAGE_SCANNER","mode": "CROSS_COUNTRY","query": "nike air force 1","countries": ["fr", "de", "nl", "it", "es"],"condition": ["very_good", "good"],"sortBy": "price_low_to_high","maxItems": 100}
Assuming up to 100 listing rows plus one summary row, the Bronze rate is about $0.00005 start + $0.180 arbitrage-check + $0.22725 results = $0.4073 per run, or $1.6292 for 4 weekly runs. Use a schedule only after the first result is relevant enough to review.
๐งฉ Ready-to-Use Apify Task Templates
Create an Apify Task with one of these inputs, run it once, then add a schedule or webhook. Use maxItems: 100 for a focused scan and 300 for a broader arbitrage or alert workflow. Very small 8-30 row samples can be too narrow for useful market comparison.
Example URL note: numeric item URLs in generic advanced examples are illustrative. The Seller Watchlist recipe above uses a public seller URL observed in historical successful Actor output; the URL was rechecked read-only and no new canary was run. For your own watchlist, use the current public profile URL you want to monitor.
| Template | Use it for | Default cadence | Main guardrail |
|---|---|---|---|
| Cross-Country Arbitrage Scanner | Buy-low / sell-high country gaps | Daily or weekly | maxItems: 300, max 5 countries |
| Vinted Deal Alerts | New cheap listings for one niche | Daily by default | maxItems: 100-300, webhook/Telegram export |
| Seller Watchlist | Competitor seller stats and inventory signals | Daily | SELLER_PROFILE for stats; PRICE_TRACK for specific listings |
1. Cross-Country Arbitrage Scanner
{"mode": "CROSS_COUNTRY","query": "nike air force 1","countries": ["fr", "de", "nl", "it", "es"],"condition": ["very_good", "good"],"priceMin": 20,"priceMax": 90,"sortBy": "price_low_to_high","maxItems": 300}
Use this first. It answers: which returned country sample is cheaper, which is more expensive, and is the observed spread large enough to investigate?
2. Vinted Deal Alerts
{"workflowPreset": "DEAL_ALERTS","mode": "SEARCH","query": "carhartt detroit jacket","countries": ["fr"],"condition": ["very_good", "good"],"priceMin": 30,"priceMax": 120,"sortBy": "newest_first","maxItems": 100}
Save as an Apify Task and schedule it daily by default, then send successful run results to a webhook, n8n, Discord, Telegram, Google Sheets, or your own API. A 15โ60 minute cadence is optional but multiplies the per-run cost; set a budget before choosing a faster frequency.
The legacy direct SEARCH input remains supported; keep workflowPreset: DEAL_ALERTS when you intend the Deal Alerts outcome and its monitor check.
3. Seller Watchlist
{"workflowPreset": "SELLER_WATCHLIST","mode": "SELLER_PROFILE","sellerUrls": ["https://www.vinted.fr/member/18816404-jnn3101"]}
Schedule this daily to capture seller rating, review count, follower count, item count, and sold item count. Store each profile snapshot in your Dataset export and compare it in your own workflow; there is no built-in cross-run seller-watchlist delta. This is the same public fixture used in the recurring Seller Watchlist recipe above; the URL was observed in historical successful Actor output and rechecked read-only. Replace it only with a current public profile URL when creating your own Task.
For exact listing watchlists, use PRICE_TRACK. On paid plans, keep each Task to 100 or fewer item URLs as an operational guardrail; Free runs are capped to 10 URLs.
{"mode": "PRICE_TRACK","itemUrls": ["https://www.vinted.fr/items/1234567890-example","https://www.vinted.fr/items/2345678901-example"],"trackingStoreName": "daily-seller-price-watchlist"}
๐ธ Cost Guardrails
Free Apify accounts are best for proof runs: broad arbitrage/search/monitor workflows are transparently capped to 30 results, Price Track URL watchlists to 10 item URLs, and Seller Profile URL watchlists to one seller per Free run. For scheduled 100 / 300 result Vinted monitors, use an Apify paid plan and save the setup as a Task.
Each run combines the applicable fixed workflow event with the Actor start and the Dataset rows actually saved.
| Paid event | Free | Bronze | Silver | Gold | Platinum | Diamond |
|---|---|---|---|---|---|---|
| Result row | $0.0025 | $0.00225 | $0.002125 | $0.001875 | $0.001875 | $0.001875 |
| Actor start | $0.00005 | $0.00005 | $0.00005 | $0.00005 | $0.00005 | $0.00005 |
| Cross-country arbitrage check | $0.20 | $0.18 | $0.17 | $0.15 | $0.15 | $0.15 |
| Daily monitor check | $0.05 | $0.045 | $0.0425 | $0.0375 | $0.0375 | $0.0375 |
| Seller details | $0.10 | $0.09 | $0.085 | $0.075 | $0.075 | $0.075 |
| Price tracking persistence | $0.06 | $0.054 | $0.051 | $0.045 | $0.045 | $0.045 |
| Sell-through check | $0.08 | $0.072 | $0.068 | $0.06 | $0.06 | $0.06 |
A premium event is charged only after the data it pays for is saved, so a run that ends empty or fails before saving it does not pay the event: arbitrage-check once the summary row compares at least 2 countries, monitor-check with the first saved listing, seller-enriched with the first seller profile, price-track-check with the first tracked price, and sell-through-check with the first tracker row. The Actor start and each saved row are charged as usual.
Example: on the Free plan, an Arbitrage Scanner run capped at 30 item rows also emits one summary row and one usage-notice row, so up to 32 charged result rows: $0.20 workflow + $0.00005 start + $0.08 results = about $0.28. The prefilled Quick search (20 rows, no premium event) costs about $0.00005 start + 20 ร $0.0025 = $0.05 on the Free plan. Review the charge estimate shown by Apify before starting.
Important guardrails:
- The current runtime accepts up to 300 items per run and up to 5 markets for stability. Use multiple tasks if you need 1,000+ rows.
- Dataset rows are what drive the result fee. For arbitrage and deal alerts, control spend with
maxItems; for Sell-Through Tracker,emitActiveItems: falsecan reduce daily charges after the first baseline. - Start focused with
maxItems: 100; use300for serious arbitrage scans or deal-alert tasks once the output is useful. - For item URL watchlists, each watched URL can emit one status row per run; Sell-Through Tracker now caps watched URLs by
maxItemsfor billing control. - If your maximum cost per run cannot cover the premium event plus one result row, the run stops before collecting and says why.
๐ Advanced Sell-Through Report
โ ๏ธ Sell-Through Tracker currently works with item URL watchlists (
itemUrls) only: keyword (query) trackers fail. See 6. Daily Sell-Through Tracker below.
| Runtime fields | What it means | What a reseller does next |
|---|---|---|
trackingStatus: active, changeType: first_seen | New item entered the tracker | Check if price is below your buy threshold |
trackingStatus: active, changeType: still_active | Item stayed visible | Watch price, favourites, or seller behavior |
trackingStatus: missing, changeType: missing | Item disappeared once | Wait for confirmation before calling it sold |
trackingStatus: likely_sold, changeType: likely_sold | Item disappeared for enough scheduled runs | Treat it as demand signal |
trackingStatus: active, changeType: reappeared | Item came back after disappearing | Avoid counting it as a clean sale |
trackingStatus: sold, changeType: explicit_sold | Vinted exposed it as sold | High-confidence sale signal |
Each Sell-Through Tracker run can also emit a final summary row. This is a sanitized representative shape; values vary by run:
{"recordType": "SELL_THROUGH_DAILY_SUMMARY","trackerId": "my-item-watchlist","checkedAt": "2026-11-05T08:00:00.000Z","newItems": 0,"activeItems": 142,"missingItems": 5,"likelySoldItems": 3,"explicitSoldItems": 0,"sellThroughRate": 0.02,"avgPrice": 42.8,"topBrands": [{ "brand": "Nike", "count": 61 },{ "brand": "Adidas", "count": 29 }],"dailySellThroughSignals": 3,"telegramText": "Vinted sell-through my-item-watchlist: 150 observed, 0 first seen, likely sold: 3, sold: 0, reappeared: 0."}
Use this optional Sell-Through summary row after you already found a promising niche with arbitrage or deal-alert scans. It is useful for scheduled webhooks, Telegram alerts, and CSV reports. Item-level rows still include recordType: "SELL_THROUGH_ITEM".
๐ฏ Who Is This For?
- ๐ Fashion & sneaker resellers who source in one country and sell in another
- ๐ Vinted buyers comparing returned prices across supported markets
- ๐ Data analysts & developers who need structured Vinted data for their projects
- ๐ช Businesses tracking competitor pricing on Vinted at scale
โก Why Use Vinted Smart Scraper?
- ๐ฐ Investigate cross-border price gaps using returned listings from up to 5 euro-zone countries per run (prices are not converted between currencies).
- ๐ท๏ธ Price your listings right by comparing active market prices and sell-through signals over time
- ๐ต๏ธ Track competitor sellers โ monitor their pricing, inventory, and sell-through rates
- ๐ Explore engagement trends in the returned sample to see which brands and items may be gaining momentum
๐ Built for Vinted arbitrage workflows: cross-country price gaps between euro markets, scheduled deal alerts, and seller watchlists.
โ Advanced Feature: Sell-Through Tracker
Vinted no longer shows sold listings in public search results. That rules out classic "sold item" search scraping, and a missing listing can mean sold, removed, relisted, moderated, or temporarily hidden.
SELL_THROUGH_TRACKER compares scheduled snapshots over time. The first run builds a baseline for a list of watched item URLs. Later runs set trackingStatus to active, missing, likely_sold, or sold; an item that returns is active with changeType: reappeared. Keyword (query) trackers currently fail, so watch item URLs (see 6. Daily Sell-Through Tracker).
Use it after an arbitrage or deal-alert scan reveals a promising niche. The advanced workflow is: find opportunity -> save tracker -> schedule daily -> validate demand -> webhook/Telegram/CSV.
Use it when you need:
- Sell-through signals for listings you picked in a niche, brand, size, or country
- Demand tracking before buying inventory
- Competitor monitoring without trusting Vinted's hidden sold pages
- A repeatable daily dataset for pricing and restock decisions
๐ฌ Video Tutorial โ See It in Action
โถ๏ธ Watch the full tutorial โ from search to export.
๐ฌ๐ง English tutorial | ๐ซ๐ท Tutoriel franรงais | ๐ฉ๐ช Deutsches Tutorial
๐ What Data Can You Scrape from Vinted?
๐ฆ Item Listings Title, price, brand, size, condition, colour/color when returned, photos ๐ค Seller Profiles Username, rating, reviews, followers, verification ๐ฐ Price Comparison Avg, median, min, max prices across countries ๐ฅ Trending Items Engagement-ranked items in the returned sample ๐ช Seller Closet Visible seller inventory returned by the current lookup ๐ Markets 26 Vinted country sites accepted as input (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); compare prices between euro markets only ๐ Price Tracking Monitor price drops and days listed โ Sell-Through Tracking Detect likely sold items from scheduled snapshots of watched item URLs
๐ Screenshot: Apify input form โ select mode, enter query, pick countries
๐ How to Scrape Vinted in 5 Steps
- Create a free Apify account at apify.com
- Open Vinted Smart Scraper and click "Try for free"
- Keep the prefilled Quick search for a first run, or pick Arbitrage Scanner, Deal Alerts, or Seller Watchlist
- Click Start and wait for the run to finish
- Download your data in JSON, CSV, Excel, or connect via API
That's it. No coding, no proxies to configure, no Vinted account needed.
๐ Vinted Scraping Modes
Start with CROSS_COUNTRY if your goal is arbitrage. Use SEARCH for scheduled deal alerts and SELLER_PROFILE for seller watchlists. Sell-Through is an advanced validation layer once you already know which niche is worth tracking.
| Mode | Best for | Recurring value |
|---|---|---|
CROSS_COUNTRY | Arbitrage and country price-gap monitoring | Primary workflow |
SEARCH | Scheduled deal alerts for one niche | High when saved as a task |
SELLER_PROFILE | Seller watchlists | High |
PRICE_TRACK | Specific listing price changes | Medium to high for exact watchlists |
SELL_THROUGH_TRACKER | Advanced demand and sell-through validation (item URL watchlists only for now) | High after you find a niche |
ITEM_DETAIL | Deep inspection of known URLs | Low |
TRENDING | Engagement-ranked sample | Medium |
๐ 1. Search Items
Search the Vinted catalog with filters: keywords, brand, size, price range, condition, category.
Input example:
{"mode": "SEARCH","query": "nike air force 1","countries": ["fr"],"priceMin": 10,"priceMax": 100,"condition": ["very_good"],"maxItems": 100}
Output example (sanitized representative shape; values vary by run):
[{"id": 1234567890,"title": "Nike Air Max","url": "https://www.vinted.fr/items/1234567890-example","price": 62,"currency": "EUR","brand": "Nike","condition": "Neuf avec รฉtiquette","size": "45","favouriteCount": 10,"viewCount": 42,"country": "fr","seller": {"id": 18816404,"username": "jnn3101","profileUrl": "https://www.vinted.fr/member/18816404-jnn3101"},"scrapedAt": "2026-08-09T00:00:00.000Z"}]
The number of returned rows depends on current Vinted visibility, filters, plan caps, and maxItems.
๐ฆ 2. Item Detail
Inspect the item fields visible to the current lookup, including available description, photos, seller info, views, and favorites.
Input example:
{"mode": "ITEM_DETAIL","itemUrls": ["https://www.vinted.fr/items/1234567890-example"]}
Output example (sanitized representative shape; values vary by run):
{"id": 1234567890,"title": "Air Force 1","description": "Air force 1 parfait รฉtat, Pointure 40","price": 45,"currency": "EUR","brand": "Nike","category": "Femmes Baskets","condition": "New","color": "Blanc","photos": ["https://images1.vinted.net/..."],"favouriteCount": 49,"viewCount": 234,"isSold": false,"seller": {"id": 123456,"username": "example_seller","rating": 0.98,"followerCount": 1500}}
๐ค 3. Seller Profile
Analyze any Vinted seller. Rating, reviews, followers, sold items count, verification status.
Input example:
{"mode": "SELLER_PROFILE","sellerUrls": ["https://www.vinted.fr/member/18816404-jnn3101"]}
Output example (sanitized representative shape; values vary by run):
{"recordType": "SELLER_PROFILE","mode": "SELLER_PROFILE","sellerId": 18816404,"username": "jnn3101","profileUrl": "https://www.vinted.fr/member/18816404-jnn3101","country": "fr","rating": 0.96,"ratingCount": 2628,"itemCount": 526,"soldItemCount": 3180,"followerCount": 10283,"followingCount": 3146,"verifications": { "email": true, "phone": false },"lastSeenAt": "2026-08-08T18:30:00.000Z","checkedAt": "2026-08-09T00:00:00.000Z"}
๐ 4. Cross-Country Vinted Price Comparison
Compare active listing prices for the same search across multiple Vinted markets. Use the output to investigate possible cross-border gaps before checking fees, shipping, condition, and real demand.
Input example:
{"mode": "CROSS_COUNTRY","query": "nike air force 1","countries": ["fr", "de", "es", "it", "nl"]}
Output example (sanitized representative shape; values vary by run):
{"recordType": "ARBITRAGE_SUMMARY","query": "playstation 5","opportunityScore": 48,"buyCountry": "de","sellCountry": "es","spread": 45.1,"estimatedBuyPrice": 167.4,"estimatedResellPrice": 212.5,"priceGapPercent": 26.9,"alertReason": "Moderate spread: buy in de around 167.4 EUR, compare resale in es around 212.5 EUR.","comparisons": [{"country": "fr","avgPrice": 182.85,"medianPrice": 170,"minPrice": 23,"maxPrice": 440,"itemCount": 20,"currency": "EUR"},{"country": "de","avgPrice": 167.4,"medianPrice": 150,"minPrice": 28,"maxPrice": 400,"itemCount": 20,"currency": "EUR"},{"country": "es","avgPrice": 212.5,"medianPrice": 235,"minPrice": 45,"maxPrice": 310,"itemCount": 20,"currency": "EUR"}],"bestBuyCountry": "de","bestSellCountry": "es","arbitrageSpreadPct": 26.9}
This example illustrates the comparison fields. Treat a price gap as a research lead, then verify current listings, shipping, fees, condition, and demand before acting.
If one country fails, the listings from the other countries are kept: the summary row adds partial: true and failedCountries (country and error code), and the run's status message reports a partial result. If fewer than 2 countries return listings, arbitrage-check is not charged.
๐ Screenshot: Dataset output โ cross-country price comparison with avg/median/min/max per country
๐ฐ 5. Vinted Price Tracking
Track prices of specific items over time. Monitor price drops, calculate days listed, and get price history.
{"mode": "PRICE_TRACK","itemUrls": ["https://www.vinted.fr/items/1234567890-example","https://www.vinted.fr/items/2345678901-example"],"trackingStoreName": "nike-air-force-price-history"}
Keep the same trackingStoreName when scheduling this mode. The actor writes price history to a named Apify key-value store so later runs can output real priceHistory and priceDropPct values.
โ 6. Daily Sell-Through Tracker
Detect what likely sold by comparing scheduled snapshots. The first run builds a baseline from a list of item URLs. Later runs use trackingStatus values such as active, missing, likely_sold, or sold; a returned item uses changeType: reappeared.
โ ๏ธ Keyword trackers currently fail. A tracker with a
queryrelies on a Vinted catalogue API that Vinted has removed. Such a run now fails with a clear message (plus oneSELL_THROUGH_RUN_WARNINGrow), never updates the tracking state, and does not chargesell-through-check. Tracking a list of item URLs still works: leavequeryempty and useitemUrls, as below.
{"mode": "SELL_THROUGH_TRACKER","itemUrls": ["https://www.vinted.fr/items/1234567890-example"],"trackingStoreName": "watched-items-fr","missingRunsThreshold": 2,"emitRunSummary": true}
Use an Apify schedule daily or every few hours. Keep the same trackingStoreName and trackerId to compare runs over time. Send successful run outputs to CSV/API, an Apify webhook, a self-hosted n8n flow, or your Telegram bot.
๐ฅ 7. Trending Items
Explore the returned product sample sorted by engagement (favorites) to identify items worth further research.
{"mode": "TRENDING","query": "nike","countries": ["fr"],"maxItems": 100}
The output includes trendScore, favsGrowthRate, viewsGrowthRate, and listedHoursAgo so you can rank items by engagement speed, not only by raw favorites.
๐ Vinted Country Sites Accepted as Input
| Region | Markets |
|---|---|
| Western Europe | FR, DE, UK, IT, ES, NL, BE, AT, IE, LU |
| Central / Eastern Europe | PL, CZ, SK, HU, RO, HR, LT, LV, SI, EE |
| Northern Europe | FI, DK, SE |
| Southern Europe | PT, GR |
| North America | US |
๐ซ๐ท France vinted.fr EUR | ๐ฉ๐ช Germany vinted.de EUR | ๐ฌ๐ง United Kingdom vinted.co.uk GBP
๐ฎ๐น Italy vinted.it EUR | ๐ช๐ธ Spain vinted.es EUR | ๐ณ๐ฑ Netherlands vinted.nl EUR
๐ต๐ฑ Poland vinted.pl PLN | ๐ต๐น Portugal vinted.pt EUR | ๐ง๐ช Belgium vinted.be EUR
๐ฆ๐น Austria vinted.at EUR | ๐ฑ๐น Lithuania vinted.lt EUR | ๐จ๐ฟ Czechia vinted.cz CZK
๐ธ๐ฐ Slovakia vinted.sk EUR | ๐ญ๐บ Hungary vinted.hu HUF | ๐ท๐ด Romania vinted.ro RON
๐ญ๐ท Croatia vinted.hr EUR | ๐ซ๐ฎ Finland vinted.fi EUR | ๐ฉ๐ฐ Denmark vinted.dk DKK
๐ธ๐ช Sweden vinted.se SEK | ๐ช๐ช Estonia vinted.ee EUR | ๐ฌ๐ท Greece vinted.gr EUR
๐ฎ๐ช Ireland vinted.ie EUR | ๐ฑ๐บ Luxembourg vinted.lu EUR | ๐ฑ๐ป Latvia vinted.lv EUR
๐ธ๐ฎ Slovenia vinted.si EUR | ๐บ๐ธ United States vinted.com USD
Cross-country price gaps are computed from local prices without currency conversion. Compare euro markets only: UK (GBP), PL (PLN), CZ (CZK), HU (HUF), RO (RON), DK (DKK), SE (SEK) and US (USD) are reported in their own currency.
๐ก Vinted Scraper Use Cases
๐ช For Resellers & Flippers
- Spot price gaps between euro-zone countries
- Cross-border research: compare returned country samples to identify a possible spread before checking shipping, fees, demand, and resale risk
- Monitor competitors' prices and adjust your listings
- Track price drops on items you want to buy
- Track sell-through over time with scheduled snapshots of watched item URLs
๐ For Market Researchers & Analysts
- Analyze pricing trends across the European second-hand market
- Study seller behavior: top sellers' strategies, pricing patterns, inventory size
- Monitor brand popularity and demand by country
- Export data for analysis in Excel, Google Sheets, or BI tools
- Study seasonal changes in returned listings and engagement signals
๐ค For Developers & Automation Builders
- Build Vinted price comparison tools using our structured JSON output
- Create Vinted alerts with Apify webhooks, self-hosted n8n, or your Telegram bot endpoint
- Feed data into ML models for price prediction
- Integrate via Vinted API alternative for structured scheduled data access
๐ How to Scrape Vinted via API
The input form opens on Quick search, but an API call with a query and neither workflowPreset nor mode still runs Arbitrage Scanner (CROSS_COUNTRY), as before, with its arbitrage-check event. Send "workflowPreset": "QUICK_SEARCH" or "mode": "SEARCH" when you only want listings.
Via Apify API (cURL)
curl "https://api.apify.com/v2/acts/kazkn~vinted-smart-scraper/runs" \-X POST \-H "Content-Type: application/json" \-H "Authorization: Bearer ${APIFY_API_TOKEN}" \-d '{"mode": "SEARCH","query": "nike","countries": ["fr"],"maxItems": 100}'
Via JavaScript/Node.js
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_API_TOKEN });const run = await client.actor('kazkn/vinted-smart-scraper').call({mode: 'CROSS_COUNTRY',query: 'nike air force 1',countries: ['fr', 'de', 'es', 'it'],});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
Via Python
import osfrom apify_client import ApifyClientclient = ApifyClient(os.environ["APIFY_API_TOKEN"])run = client.actor("kazkn/vinted-smart-scraper").call(run_input={"mode": "CROSS_COUNTRY","query": "nike air force 1","countries": ["fr", "de", "es", "it"],})items = client.dataset(run["defaultDatasetId"]).list_items().itemsprint(items)
๐ Integrations
This Vinted scraper works with:
- CSV / Excel exports for daily reseller spreadsheets
- Apify API for programmatic market monitors
- Apify webhooks for run-complete notifications
- Self-hosted n8n for zero-subscription automations
- Telegram bot workflows through your own webhook endpoint
๐ฐ Vinted Scraper Pricing
This Actor uses pay-per-event pricing. A run can include three components: one Actor start, the fixed event for the selected premium workflow (charged only after its data is saved), and one result event per saved Dataset row. See Cost Guardrails above for the tier-by-tier table. Cap maxItems; for Sell-Through Tracker, turn off emitActiveItems after the first baseline if you only need changes.
โก Performance & Limits
๐ฆ Max items per run: 300 in the current stable runtime ๐ Markets per run: up to 5 โฑ๏ธ Run time: search, arbitrage and trending runs follow the run's own timeout (default run: 512 MB memory, 600-second timeout), keeping 20 to 90 seconds in reserve to save results, instead of stopping after a fixed ~4 minutes; item, price-track, seller and sell-through runs keep their ~4-minute budget ๐งฉ Partial results: in Search, Arbitrage, and Trending runs, a failed country no longer loses the listings from the other countries; the run's status message reports a partial result and names the failed countries ๐ซ Nothing collected: if no listing was collected and at least one country failed, the run fails with a clear message instead of ending as an empty success. If every country answers but Vinted lists nothing for your search, the run ends with a warning status, saves nothing and charges no result or premium event ๐ก๏ธ Access can be partial: Vinted can change visible surfaces, challenge requests, or return fewer rows than requested ๐ Proxy input: optional; start with the default and change it only when a run needs it
โ Frequently Asked Questions
Is it legal to scrape Vinted?
The Actor is designed for publicly visible listing and seller surfaces; it does not automate purchases or sales. Rules can depend on your use, location, data, and current platform terms, so assess those separately. This README is product documentation, not legal advice.
When is this Vinted scraper a good fit?
Use it when you need cross-country listing comparisons, scheduled deal alerts, seller watchlists, or structured exports. Start with a small run and confirm that the visible fields match your workflow before scheduling it.
How to compare Vinted prices across countries?
Use the CROSS_COUNTRY mode. Enter your search query and select which countries to compare, up to 5 countries per run. The scraper returns average, median, min, and max prices per country, plus opportunityScore, buyCountry, sellCountry, spread, estimatedResellPrice, priceGapPercent, and alertReason. Cross-country price gaps are computed from local prices without currency conversion. Compare euro markets only: UK (GBP), PL (PLN), CZ (CZK), HU (HUF), RO (RON), DK (DKK), SE (SEK) and US (USD) are reported in their own currency.
Can I use this as a Vinted bot alternative?
It can monitor and structure visible data, but it does not automate buying, selling, messaging, or account actions.
Can I download Vinted data to Excel or Google Sheets?
Absolutely. Apify lets you export results in JSON, CSV, Excel, XML, and RSS. You can also connect directly to Google Sheets via the Apify integration for automatic updates.
How often can I run this Vinted scraper?
Use sensible schedules based on your workflow. For arbitrage scans, start daily with maxItems: 100. For deal alerts on fast-moving niches, test a tight filter first, then choose a cadence based on run stability and cost.
How do I avoid a surprise bill on daily schedules?
Set maxItems, keep countries to 5 or fewer per run, and include the workflow event shown in Cost Guardrails when estimating each run. The workflow event is charged only after its data is saved, so a run that ends empty or fails before saving it does not pay the event. For Sell-Through Tracker only, use emitActiveItems: false after the first baseline if you want fewer daily result rows.
Which Vinted markets can I use?
The input accepts 26 Vinted country sites: France, Germany, United Kingdom, Italy, Spain, Netherlands, Poland, Portugal, Belgium, Austria, Lithuania, Czech Republic, Slovakia, Hungary, Romania, Croatia, Finland, Denmark, Sweden, Estonia, Greece, Ireland, Luxembourg, Latvia, Slovenia, and the United States. Vinted can show different results or block requests per country, so start with a small run. Compare prices between euro markets only.
How is this different from the Vinted API?
This is an independent Apify Actor, not an official Vinted API. It turns supported visible surfaces into structured Dataset rows and adds cross-country comparison and tracking workflows.
Can I connect this to AI assistants like Claude or ChatGPT?
Yes. Paste the Copy to your AI assistant block at the top of this page into your assistant: it runs this Actor through the Apify API with your own token.
โญ Recent User CTA
If Vinted Smart Scraper saved you time or helped you find a real market gap, leave a short Apify review with your use case:
"I use it to monitor [brand/query] in [countries] every [day/week]. It helps me [source inventory / price listings / track sellers / report to clients]."
That feedback decides which daily templates and output fields get improved next.
๐ Changelog
November 2026 (build 1.6.21)
- Searches above 96 listings per country read the following result pages again: they used to stop at 96 with a partial result
- A listing that shows up on two result pages (Vinted's order shifts while pages load) is kept once, so it is neither saved nor charged twice
November 2026 (build 1.6.18)
- Vinted's "no result" pages are read correctly again: a search with no result is recognised in seconds instead of waiting for the timeout and failing
- A Search, Arbitrage or Trending run where every country answers but Vinted lists nothing for the search now ends with a warning instead of failing: nothing is saved and no result or premium event is charged. A run that collects nothing because a country failed still fails with a clear message
- Actor start fee lowered to $0.00005 on every plan (it was $0.02 on Free and $0.018 on Bronze), and the unused
sold-signal-checkevent removed from the price list - New title and introduction: Vinted listings by keyword in 26 countries, price comparison between euro-zone markets, seller watchlists and price tracking
November 2026 (build 1.6.15)
- Removed
SOLD_ITEMS(Sold Signals): Vinted no longer shows sold listings in public search. Inputs that still send it are refused with a clear error, before any premium charge; usesoldItemCountfromSELLER_PROFILEfor a seller's number of sales - Added the Quick search preset (
QUICK_SEARCH), now prefilled in the input form; API calls withoutworkflowPresetormodestill run Arbitrage Scanner - Premium events are now charged only after their data is saved, never for a run that ends empty or fails before saving it;
arbitrage-checkonly when at least 2 countries were compared - A failed country no longer loses the other countries' listings in Search, Arbitrage, and Trending runs (
partialandfailedCountrieson the arbitrage summary); if every country fails, the run fails with a clear message - Search, arbitrage and trending runs now use the run's own timeout instead of stopping after about 4 minutes
- Quick search refuses seller URLs and seller details (they belong to the paid Seller Watchlist workflow), so it never charges a premium event
- Sell-Through Tracker: keyword (
query) scans currently fail with a clear message and leave the tracking state unchanged; item URL watchlists still work
v1.2 (June 2026)
- Recentered the Store README around cross-country Vinted arbitrage and scheduled deal alerts
- Promoted 3 primary workflows above the fold: Arbitrage Scanner, Deal Alerts, and Seller Watchlist
- Added arbitrage-first output fields:
opportunityScore,buyCountry,sellCountry,spread,estimatedResellPrice,priceGapPercent, andalertReason - Moved Sell-Through Tracker to advanced demand validation instead of the first workflow new users see
- Updated cost guardrails to explain
maxItemsfor arbitrage/alerts andemitActiveItemsonly for Sell-Through Tracker
v1.1 (May 2026)
- Added
SELL_THROUGH_TRACKERas a daily demand-validation workflow - Added Apify Task templates for daily sneaker monitoring, seller watchlists, and cross-country arbitrage
- Updated daily templates and input defaults toward
maxItems: 100or300 - Added
SELL_THROUGH_DAILY_SUMMARYoutput rows for schedules, webhooks, Telegram, and CSV reports - Added cost guardrails for 300, 1,000, 10,000 emitted rows, and monthly daily schedules
- Added status guide for
first_seen,missing,likely_sold,explicit_sold, and thereappearedchange event - Updated Store copy, input guidance, and actor descriptions around 26 supported Vinted markets
- Clarified current pay-per-event pricing: dataset item fee plus actor start fee
v1.0 (February 2026)
- Initial release
- 8 scraping modes: Search, Item Detail, Seller Profile, Cross-Country, Price Track, Sell-Through Tracker, Sold Signals, Trending
- 26 Vinted markets supported
- Initial request pacing and retry controls
- Initial pay-per-result pricing