Vinted Scraper & New Listing Monitor avatar

Vinted Scraper & New Listing Monitor

Pricing

from $0.85 / 1,000 products

Go to Apify Store
Vinted Scraper & New Listing Monitor

Vinted Scraper & New Listing Monitor

Monitor multiple Vinted searches across countries and return only listings discovered since the previous successful run.

Pricing

from $0.85 / 1,000 products

Rating

0.0

(0)

Developer

Trove Vault

Trove Vault

Maintained by Community

Actor stats

1

Bookmarked

1

Total users

0

Monthly active users

14 hours ago

Last modified

Share

Scrape current Vinted listings on demand or monitor searches and receive only listings that were not present in the previous successful monitoring run. The Actor works across 26 Vinted countries and extracts structured listing data including price, buyer-protection price, brand, size, condition, image, country, and direct URL.

Use Scrape current listings for research, catalog exports, resale sourcing, price comparison, and one-off searches. Use Monitor new listings with an Apify schedule when speed matters and you want a clean feed of newly discovered items instead of downloading the same results every minute.

The Actor reads public search pages without a Vinted login. It does not interact with listings or accounts.

Scraper mode and monitor mode

Scrape current listings

This is the default mode. Every run returns the current listings found for each configured search, up to `maxResultsPerSearch`. It does not consult or update monitoring history. Running the same input twice can therefore return the same listings twice, which is expected for a scraper.

Monitor new listings

Monitor mode keeps a private list of previously observed listing IDs for each distinct search and country. On later successful runs, it emits only listings whose IDs were not in that search's stored history. Monitoring works best with an Apify schedule, for example every minute, every five minutes, or hourly.

The first monitoring run has two possible behaviors:

  • `return_current`: return the current matching listings and store them as the initial baseline.
  • `establish_baseline`: store the current matching listings without output, so later runs emit only subsequent discoveries.

Monitoring state is updated only after a search succeeds. A failed request does not erase or replace the last known baseline. State belongs to this Actor and is shared by its scheduled and manual runs, so use stable search inputs for a stable monitoring stream.

Supported countries

The Actor supports France, Germany, Portugal, Spain, Italy, the Netherlands, the United Kingdom, the United States, Belgium, Luxembourg, Austria, Poland, Czechia, Slovakia, Lithuania, Latvia, Estonia, Sweden, Denmark, Finland, Hungary, Romania, Croatia, Greece, Ireland, and Slovenia.

Input

FieldTypeDescription
`mode`string`scrape_current` returns current results every run. `monitor_new` keeps state and returns only newly discovered listings after the baseline.
`searchTerms`string[]Keywords, brands, models, or product descriptions. Every term runs in every selected country.
`countries`string[]One or more supported Vinted country codes.
`searchUrls`request listOptional complete Vinted catalog URLs containing filters configured on Vinted.
`minPrice`numberOptional minimum price for keyword-based searches.
`maxPrice`numberOptional maximum price for keyword-based searches.
`maxResultsPerSearch`integerMaximum newest listings checked per search, from 1 to 500.
`firstRunMode`stringFirst-run behavior for monitor mode only: `return_current` or `establish_baseline`.
`proxyConfiguration`objectOptional Apify Proxy settings for blocked cloud requests.
`datasetId`stringOptional existing dataset that receives a second copy of every row.
`runId`stringOptional workflow identifier copied to every row.

At least one usable search term or filtered search URL is required. Blank terms are removed and duplicate terms, countries, and URLs are normalized. Price filters apply to keyword searches; parameters already included in pasted Vinted URLs are preserved.

Example: scrape current listings

{
"mode": "scrape_current",
"searchTerms": ["Barbour jacket", "Carhartt Detroit"],
"countries": ["fr", "de", "pt"],
"minPrice": 20,
"maxPrice": 180,
"maxResultsPerSearch": 96
}

This creates six searches: two terms across three markets. The Actor returns the current results found in all searches and deduplicates listings that overlap within the run.

Example: monitor new listings

{
"mode": "monitor_new",
"searchTerms": ["Arc'teryx Beta"],
"countries": ["fr", "de", "it", "es"],
"maxResultsPerSearch": 96,
"firstRunMode": "establish_baseline",
"runId": "arcteryx-europe"
}

Schedule this input to run repeatedly. The first run creates the baseline without output. Later runs output only IDs that were not previously observed for those searches.

Output

Results are stored in the run's default dataset. Each row represents one listing observed in one Vinted market.

{
"itemId": "1234567890",
"title": "Barbour Bedale wax jacket",
"brand": "Barbour",
"size": "M",
"condition": "Very good",
"price": 85,
"priceWithBuyerProtection": 89.2,
"currency": "EUR",
"country": "fr",
"url": "https://www.vinted.fr/items/1234567890-barbour-bedale-wax-jacket",
"imageUrl": "https://images1.vinted.net/...",
"matchedSearches": ["Barbour jacket"],
"discoveryReason": "current_snapshot",
"observedAt": "2026-08-15T10:30:00.000Z",
"runId": null
}
FieldMeaning
`itemId`Stable public Vinted listing identifier.
`title`Listing title derived from the public item URL.
`brand`Brand shown in the search result, when available.
`size`Displayed size, when available.
`condition`Condition label displayed in the selected market.
`price`Listing price before buyer protection and shipping.
`priceWithBuyerProtection`Displayed price including buyer protection, when available; shipping is excluded.
`currency`Currency associated with the selected market.
`country`Vinted market where the listing was observed.
`url`Direct public listing URL.
`imageUrl`Primary image URL, when available.
`matchedSearches`All configured searches that matched the listing during the run.
`discoveryReason``current_snapshot`, `initial_snapshot`, or `new_since_previous_run`.
`observedAt`UTC time when this run observed the listing, not Vinted's publication time.
`runId`Optional identifier copied from the input.

Fields that Vinted does not expose consistently are returned as `null`. Monetary values are numbers, while `currency` supplies their context. Buyer protection and shipping rules can vary by country and buyer, so treat the displayed buyer-protection value as an observation rather than a checkout quote.

Deduplication and monitoring state

Within one run, the Actor identifies a listing by `country` plus `itemId`. If several configured searches find the same listing, one row is emitted and `matchedSearches` contains all matching labels.

In monitor mode, each search keeps its own state key. Search terms, countries, filtered URLs, and price settings are part of that identity. Materially changing a search can create a new baseline, which is safer than applying unrelated history to a new query.

The monitor retains up to 10,000 observed IDs per search. This is designed for frequent new-listing detection, not as a permanent historical database. Store emitted results in a dataset, database, webhook workflow, or other destination if you need long-term history.

API

Run the Actor through the Apify API with the slug `trovevault~vinted-scraper-monitor`:

curl -X POST \
"https://api.apify.com/v2/acts/trovevault~vinted-scraper-monitor/runs" \
-H "Authorization: Bearer YOUR_APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"mode": "scrape_current",
"searchTerms": ["Barbour jacket"],
"countries": ["pt"],
"maxResultsPerSearch": 20
}'

Reliability and partial failures

Searches run independently: successful results are saved even if another country fails, and `RUN_SUMMARY` records failures. Vinted can change page structure, rate limits, and access behavior without notice. Coverage is bounded by `maxResultsPerSearch` and the newest pages inspected. Start without a proxy; enable a suitable Apify Proxy only if a market repeatedly blocks cloud requests.

Limitations

  • This Actor reads public search results, not private accounts, messages, favorites, orders, or checkout data.
  • It does not claim the exact Vinted publication timestamp. `observedAt` is the time of this run.
  • Search metadata can be absent or localized, so brand, size, condition, image, or buyer-protection price may be `null`.
  • Deleted or sold listings may disappear between runs; monitor mode is optimized for additions, not removals.
  • Monitoring compares IDs inside the newest result window. If more new listings arrive between runs than the configured depth can cover, some may never enter that window.
  • Results and currencies are market-specific. Do not combine prices across currencies without conversion.
  • The Actor does not bypass access controls and cannot guarantee uninterrupted access to third-party pages.

Troubleshooting

  • No scraper results: loosen filters, verify the term on that market, or paste the complete filtered Vinted URL.
  • Empty first monitor run: expected with `establish_baseline`; later runs emit new discoveries.
  • Empty repeated monitor: no unseen ID was found in the checked window. Use `scrape_current` for a full current snapshot.
  • Repeated scraper rows: expected because scraper mode is stateless. Use monitor mode or downstream deduplication.
  • One country fails: inspect `RUN_SUMMARY`, test it separately, and consider a suitable proxy if direct access remains blocked.

Responsible use

Follow applicable law, Vinted's terms, and Apify's policies. Use reasonable schedules and process only data you are entitled to collect.