Vinted Sold Listings Tracker: Sold Prices & Time to Sell avatar

Vinted Sold Listings Tracker: Sold Prices & Time to Sell

Pricing

from $6.00 / 1,000 sold listings

Go to Apify Store
Vinted Sold Listings Tracker: Sold Prices & Time to Sell

Vinted Sold Listings Tracker: Sold Prices & Time to Sell

Track any Vinted search on a schedule and get the listings that sold, each confirmed by Vinted's completed-sale record: last asking price, first price, brand, size, condition, seller, days on market and sale date. 26 countries, no account needed.

Pricing

from $6.00 / 1,000 sold listings

Rating

0.0

(0)

Developer

Epic Scrapers

Epic Scrapers

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

0

Monthly active users

9 days ago

Last modified

Features

Limited permissions

Share

Vinted Sold Listings Tracker: find what sells on Vinted, with price, time on market and sale confirmation

Vinted Sold Listings Tracker turns Vinted sellers and searches into a spreadsheet of listings that sold. Paste a seller's profile link, a search link or a keyword, schedule the actor, and each run reports the listings that were sold since the last run. Each row has the last asking price, brand, size, condition, seller, how many days it took to sell, and the time Vinted recorded the completed sale. It is for resellers, price researchers and anyone who wants sold prices on Vinted, not asking prices.

Vinted does not show sold items in search results. Once an item sells, it disappears. This actor watches a search over time and confirms each sale with Vinted, so you get sold listings instead of guesses.

  • Sale confirmation, not guesswork. A listing is reported as sold only when Vinted confirms it: either the listing page shows it can no longer be bought (usually the same day), or Vinted has a completed-transaction record for that exact item. Listings that were deleted are not reported as sold.
  • Time on market. daysOnMarket, plus lastSeenForSaleAt and disappearedAt, show how fast items sell and narrow down when.
  • Price drops included. firstSeenPrice is the price when the tracker first saw the listing and price is the last asking price, so you see what sellers accepted.
  • Keeps its own state. Tracking state is saved in a named key-value store, so it persists between scheduled runs. Give it a fixed Tracker name to edit the searches later without losing history.
  • 26 Vinted countries. Track keywords on any Vinted country site, or paste URLs with your own filters.
  • No Vinted account or proxy setup. Export to JSON, CSV, Excel or Google Sheets.

Best for tracking sellers

The tracker works best on sellers: competitors, suppliers or shops you want to learn from. A seller URL reads the seller's whole shop on every run, so every listing is tracked from the moment it appears until it sells, and no sale is missed between runs.

Tracking a search? Schedule it to run very often (every hour for busy searches). A search only returns its newest listings (up to Listings per search), and on a popular search new listings push older ones out of that window within hours. A listing first listed and sold between two runs, or that fell out of the window before the tracker ever saw it, is never reported. The more often the search runs, the fewer sales you miss.

Scope: This actor reports sales only for listings it saw before they sold. Vinted does not expose past sales for a search, so the first run saves a baseline and reports nothing. It does not scrape active listings for their own sake; for deal alerts on active listings use Vinted Scraper.

What can you do with Vinted Sold Listings Tracker?

GoalHow
Price an item by what it sold forTrack the brand and model, then read price and totalPrice of sold rows.
See how fast items sellSort by daysOnMarket, or compare lastSeenForSaleAt and disappearedAt.
Find the real discount sellers acceptCompare firstSeenPrice with price.
Find what sells in a categoryTrack a category URL sorted by newest, and count sold rows per brand, size or condition.
Spot top sellersUse the Sellers view or group by seller.login.
Check demand before buying stockRead favouriteCount and viewCount next to the sale.

How it works

  1. First run: baseline. The actor records every listing currently for sale in your searches. No sold listings are output yet.
  2. Every later run: detect sales. The actor scans the sellers and searches again. For each tracked listing that is no longer in the results, it checks the seller's shop:
    • Still for sale (it only dropped out of the search window): tracking continues.
    • Reserved: tracking continues.
    • Gone: the actor looks for Vinted's completed-transaction record for that item. When it finds one, the listing is output as sold.
  3. No record yet: check the listing page. Vinted records a completed transaction a few days after purchase, so for gone listings without one the actor opens the listing page. If it can no longer be bought, the listing is output as sold right away. If the page no longer exists, the seller deleted it. If it is back for sale, tracking continues. A listing whose seller is in holiday mode is not reported as sold, since holiday mode also blocks buying.
  4. Listings that are still unconfirmed keep being checked for the sale confirmation window (14 days by default).

Each run's dataset contains the sales detected in that run. Views: Sold listings, Pricing, Sale timeline and Sellers.

Quick start

  1. Add one or more Vinted URLs (seller profiles, or search and catalog pages with your filters) and/or keywords.
  2. Optionally set a fixed Tracker name.
  3. Run it once to create the baseline.
  4. In Apify Console, go to Schedules and run the actor or a saved task on a schedule, for example hourly.

Track a seller:

{
"startUrls": [{ "url": "https://www.vinted.fr/member/12345678-sellername" }],
"trackerName": "competitor-fr",
"maxProducts": 960
}

Track a search:

{
"startUrls": [{ "url": "https://www.vinted.fr/catalog?search_text=nike%20dunk&order=newest_first" }],
"trackerName": "nike-dunk-fr",
"maxProducts": 200
}

For a seller, set Listings per search above the number of listings in the shop. For a search, sort by newest first, use a high Listings per search, and run it often: the more often it runs, the fewer listings drop out of the window unseen and the more precise the sale time.

Common schedules:

Use caseFrequencyCron expression
Busy search (sneakers, brands)Every hour0 * * * *
Niche searchEvery 6 hours0 */6 * * *
Seller shopDaily0 8 * * *

Input reference

Supply at least one URL or one keyword.

FieldTypeDefaultEffect
startUrlsArray of objectsEmptyVinted seller (/member/…) URLs, or search and catalog URLs used as provided with their own filters.
keywordsArray of stringsEmptyEach keyword is a separate search, newest first, on the selected country site.
countryString"it"Vinted site for keyword searches. Doesn't change URLs.
minPrice / maxPriceNumberEmptyPrice range for keyword searches, in the country's currency.
maxProductsInteger200Listings read from each seller or search per run, from 1 to 960.
trackerNameStringEmptyName of the saved state. Empty means it is derived from the searches, so changing the searches starts a new tracker.
confirmationWindowDaysInteger14How long a disappeared listing is checked for a completed sale (1 to 60).
includeDisappearedBooleanfalseAlso output listings that vanished without a confirmed sale (status is disappeared).
maxTrackingDaysInteger60Stop tracking a listing this many days after it was first seen (1 to 365).
maxTrackedItemsInteger10000Maximum listings kept in the tracker, 100 to 20,000. The least recently active are dropped first.
maxSellerChecksInteger300Maximum sellers checked per run, 1 to 5,000. Sellers waiting longest go first; the rest are checked on the next run.

Country codes are the same as in Vinted Scraper: at, be, hr, cz, dk, ee, fi, fr, de, gr, hu, ie, it, lv, lt, lu, nl, pl, pt, ro, sk, si, es, se, gb, us.

Output

Each run's default dataset contains the sales detected during that run. This example is illustrative, not a live listing:

{
"status": "sold",
"id": "10027204892",
"title": "Nike Dunk Low Panda",
"url": "https://www.vinted.fr/items/10027204892",
"price": 65,
"firstSeenPrice": 75,
"totalPrice": 69.95,
"currency": "EUR",
"brand": "Nike",
"size": "42",
"condition": "Très bon état",
"photo": "https://images1.vinted.net/...",
"seller": { "id": 3152018056, "login": "seller", "business": false },
"favouriteCount": 12,
"viewCount": 140,
"search": "“nike dunk” on vinted.fr",
"domain": "https://www.vinted.fr",
"firstSeenAt": "2026-09-20T10:00:00.000Z",
"lastSeenForSaleAt": "2026-09-26T09:00:00.000Z",
"disappearedAt": "2026-09-26T10:00:00.000Z",
"saleConfirmedAt": "2026-09-29T19:45:39+02:00",
"saleConfirmedBy": "feedback",
"daysOnMarket": 6,
"detectedAt": "2026-09-29T20:00:00.000Z"
}

Notes on fields

  • status is sold, or disappeared when includeDisappeared is on.
  • The sale happened between lastSeenForSaleAt and disappearedAt. saleConfirmedBy is feedback when Vinted's completed-transaction record confirmed it (saleConfirmedAt is then when Vinted recorded it), or item_page when the listing page showed it can no longer be bought (saleConfirmedAt is null). Both are null for disappeared rows.
  • price is the last seen asking price, which is not necessarily the amount paid if the buyer used an offer. totalPrice is the price with Vinted's buyer fee. firstSeenPrice shows price drops.
  • daysOnMarket counts from when the tracker first saw the listing. For listings that were already online during the first run, it is a lower bound.
  • condition is in the language of the Vinted site. id is a string.
  • search and domain show which search and Vinted site the listing came from.

The OUTPUT record in the run's key-value store has a run summary: newListings, relistedListings, soldDetected, disappearedWithoutSale, awaitingSaleConfirmation, trackedListings, sellersChecked, sellersFailed, sellersDeferred (left for the next run when the run neared its timeout), itemPagesChecked, soldConfirmedByItemPage and the name of the state store.

Run the tracker on a schedule

The tracker finds sales by comparing each run with the previous one, so it only works when it runs repeatedly. Apify can run it on a schedule and send the results wherever you need them.

1. Save your input as a task

Open the actor, set your searches and options, then click Save as a new task. A task is a saved input you can run again with one click or on a schedule. Keep using the same task so it keeps the same tracked-listings state.

2. Schedule the task

In Apify Console, go to Schedules, click Create new, choose how often to run (for example daily at 06:00 in your time zone), and add your task. See Schedules and How to create a schedule.

Watch how to schedule an Actor:

Or schedule a saved task:

Common schedules:

Use caseFrequencyCron expression
Busy search (sneakers, consoles)Every hour0 * * * *
Niche searchEvery 6 hours0 */6 * * *
Seller shopDaily0 6 * * *
Slow seller (furniture, vintage)Weekly (Monday)0 6 * * 1

3. Send the results to a spreadsheet

Connect Google in the task's Integrations tab to save every run to Google Sheets or Google Drive automatically:

4. Compare runs

Every row has id and detectedAt, so runs are easy to join:

  • Sell-through speed: daysOnMarket per brand or search.
  • Real prices: price, totalPrice and firstSeenPrice per id, to see how much sellers drop before a sale.
  • Demand signals: favouriteCount and viewCount on sold items.
  • Confirmed sales: rows with saleConfirmedAt set, against disappeared rows when includeDisappeared is on.
  • Top sellers: count of sold rows per seller.id.

FAQ

Why did my first run return nothing?

The first run only records what is for sale now. Sold listings appear from the second run on.

Why are some sold items missing?

The actor reports sales only for listings it saw before they sold. A listing that sells and vanishes between two runs is still caught, but one that was never inside the Listings per search window of any run is not. This only affects searches: track sellers instead, or run the search more often, raise maxProducts, or narrow the search so it fits in the window.

Why do some disappeared listings never show as sold?

A sale is confirmed when the transaction completes. If the order is cancelled, never completed, or the seller deleted the listing, there is no completed-transaction record. Turn on includeDisappeared to see those rows with status disappeared.

Why does a sale show up days after the listing vanished?

Most sales are confirmed the same day from the listing page. When the page can't be loaded, or the seller is in holiday mode, the actor waits for Vinted's completed-transaction record, which comes a few days after purchase. Gone listings are checked until the confirmation window ends.

Does it log in to Vinted?

No. The actor uses Vinted's public JSON endpoints and public listing pages with anonymous cookies, through a residential connection in the country of the Vinted site.

Can I run several trackers?

Yes. Use a different Tracker name for each. Runs with the same name continue the same tracker.

The actor collects publicly visible listing and feedback data. You are responsible for how you use it, including Vinted's terms and laws such as GDPR.

Cost

This actor uses pay-per-event pricing, with no subscription. Prices depend on your Apify plan:

EventFree planBronzeSilverGold and aboveCharged when
Actor start$0.00005$0.00005$0.00005$0.00005Once per run.
Tracked search$0.02$0.018$0.016$0.015Once per URL or keyword per run, including the first (baseline) run.
Result$0.01$0.008$0.007$0.006A sold listing (or, with includeDisappeared, a disappeared one) is saved.

Examples on the Free plan: one search checked hourly costs about $0.48 a day plus $0.01 per sale found; one search checked daily costs $0.02 a day plus $0.01 per sale. Set a maximum cost per run; the actor skips the remaining searches when it's reached. The Pricing tab always shows the current prices for your plan.

Support

Report problems in the Issues tab. Include the run ID, the input and what you expected.

This actor is not affiliated with or endorsed by Vinted. "Vinted" is a trademark of Vinted UAB.