Most Vinted scraping workflows are one-shot exports.
You run a search, download a CSV, and then the data starts getting old.
That is fine if you only need a snapshot. It is not enough if you are a reseller, pricing analyst, or automation builder trying to answer one daily question:
Did this listing get cheaper since yesterday?
That is why I updated Vinted Smart Scraper so PRICE_TRACK can keep real price history across scheduled runs.
🧠 What changed
PRICE_TRACK now writes item price history to a named Apify key-value store.
In practice, that means you can:
- Paste one or more Vinted item URLs.
- Set a stable
trackingStoreName. - Save the input as an Apify Task.
- Schedule it daily.
- Get
priceHistoryandpriceDropPctevery time it runs.
The important part is the stable store name. If you keep the same trackingStoreName, the Actor keeps reading and updating the same history instead of starting from zero on every run.
💸 Why this matters for resellers
Vinted prices move quietly.
A seller lists a Nike Air Force 1 at 45 EUR. Two days later it drops to 38 EUR. A week later it drops to 32 EUR. If you only search manually, you probably miss the timing.
Persistent price tracking turns that into a daily signal:
| Signal | What it tells you | Action |
|---|---|---|
currentPrice changed |
The seller moved the price | Re-check margin |
priceDropPct increased |
The item may be easier to negotiate | Add to buy list |
daysListed grows |
Supply is not moving fast | Lower resale confidence |
priceHistory stays flat |
Seller is holding price | Wait or ignore |
This is not an auto-buying bot. It does not buy, message, or manipulate Vinted. It gives you structured public listing data so you can make better pricing decisions.
⚙️ The input
Here is the smallest useful PRICE_TRACK setup:
{
"mode": "PRICE_TRACK",
"itemUrls": [
"https://www.vinted.fr/items/8140955190-air-force-1",
"https://www.vinted.fr/items/8092158420-nike-air-force"
],
"trackingStoreName": "nike-air-force-price-history"
}
The rule is simple:
One monitoring workflow = one stable
trackingStoreName.
If you track Nike Air Force 1 listings, use something like nike-air-force-price-history.
If you track Carhartt jackets, use another store like carhartt-detroit-price-history.
Do not reuse the same store for unrelated watchlists unless you intentionally want those histories together.
📊 The output
Each tracked listing returns a row like this:
{
"itemId": 9055843802,
"url": "https://www.vinted.fr/items/9055843802-scarpe-nike-air-force-1-bianche-455",
"currentPrice": 14,
"currency": "EUR",
"priceHistory": [
{
"price": 14,
"date": "2026-05-31T22:36:29.760Z"
}
],
"priceDropPct": 0,
"daysListed": null
}
After later scheduled runs, the same item can build a longer history:
{
"itemId": 9055843802,
"currentPrice": 11,
"currency": "EUR",
"priceHistory": [
{ "price": 14, "date": "2026-05-31T22:36:29.760Z" },
{ "price": 11, "date": "2026-06-03T08:00:00.000Z" }
],
"priceDropPct": 21.4
}
That is the difference between "scraping Vinted" and running a daily market monitor.
🛡️ What happens if Vinted blocks a price once
This was the important reliability fix.
If a run cannot extract the current price, the Actor does not write 0 into your price history.
Instead, the row is marked as unavailable and the history is left clean:
{
"itemId": 9055843802,
"currentPrice": 14,
"priceHistory": [
{ "price": 14, "date": "2026-05-31T22:36:29.760Z" }
],
"priceUnavailable": true,
"warning": "Current price could not be extracted; price history was not updated."
}
That matters because one temporary extraction failure should not destroy your price chart.
🗓️ How to schedule it
The workflow is:
- Open Vinted Smart Scraper on Apify.
- Select
PRICE_TRACK. - Paste the item URLs you want to monitor.
- Set
trackingStoreName. - Save the input as an Apify Actor Task.
- Add an Apify Schedule to run it daily.
For most reseller workflows, daily is enough. Hourly price tracking can be useful for high-value items, but it also creates more run starts and more rows.
💰 Cost example
The current public pricing is pay-per-event:
| Watchlist size | Rows per run | Approx Free-tier cost per daily run | Approx 30-day cost |
|---|---|---|---|
| 1 item | 1 row | about $0.022 | about $0.66 |
| 10 items | 10 rows | about $0.040 | about $1.20 |
| 100 items | 100 rows | about $0.220 | about $6.60 |
That includes the current Free-tier start fee plus result rows. Higher Apify Store tiers reduce the per-result and start-event prices.
The billing guardrail is simple: the number of item URLs roughly controls the number of output rows.
🔁 When to use PRICE_TRACK vs SELL_THROUGH_TRACKER
Use PRICE_TRACK when you care about specific listing URLs.
Use SELL_THROUGH_TRACKER when you care about a whole search market: Nike Air Force 1 in France, Carhartt jackets in Germany, Adidas Campus across five countries, and so on.
| Need | Best mode |
|---|---|
| Watch 20 exact item URLs | PRICE_TRACK |
| Detect if items disappear over time | SELL_THROUGH_TRACKER |
| Track competitor seller inventory |
SELLER_PROFILE or SELL_THROUGH_TRACKER
|
| Compare country-level price spreads | CROSS_COUNTRY |
The strongest reseller setup is often both:
-
SELL_THROUGH_TRACKERto find which niches move. -
PRICE_TRACKto monitor the exact listings you might buy.
✅ FAQ
Does PRICE_TRACK persist forever?
It persists across runs as long as you keep the same trackingStoreName and do not delete the Apify key-value store. Change the store name and you are intentionally starting a new history.
Can I export price history to CSV?
Yes. The Actor outputs dataset rows that can be exported through Apify as JSON, CSV, Excel, XML, or RSS using the platform export options and API.
Does this work for all 26 supported Vinted markets?
Yes. Vinted Smart Scraper supports 26 Vinted markets, including France, Germany, the United Kingdom, Italy, Spain, the 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.
Can I run this without coding?
Yes. You can create a free account on Apify, open the Actor, paste your item URLs, save a task, and schedule it from the UI.
🚀 Try it
If you already use Vinted data for sourcing, price checks, or arbitrage, this turns a manual spreadsheet habit into a daily signal.
Start with 5 to 20 item URLs, schedule it daily, and let the history build for a week.
Then look at the price drops.
Top comments (0)