Vestiaire Collective Scraper - Products, Prices & Sellers avatar

Vestiaire Collective Scraper - Products, Prices & Sellers

Pricing

from $1.40 / 1,000 listing or journal records

Go to Apify Store
Vestiaire Collective Scraper - Products, Prices & Sellers

Vestiaire Collective Scraper - Products, Prices & Sellers

Scrape Vestiaire Collective, the luxury resale marketplace: listings with prices in 7 markets, full product details with seller statistics, sold-item comparables, sale campaigns and the journal news feed. Search, URL and journal modes with sorting, filters and scheduled change tracking.

Pricing

from $1.40 / 1,000 listing or journal records

Rating

0.0

(0)

Developer

Abot API

Abot API

Maintained by Community

Actor stats

1

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Categories

Share

Vestiaire Collective Scraper: Products, Prices & Sellers

Vestiaire Collective Scraper turns the world's leading luxury resale marketplace into a clean data API. Search keywords, walk any category, brand or sale campaign, follow a seller's closet, collect sold-item comparables, or track the journal news feed - and get structured rows with prices and original prices, condition reports, materials, measurements, buyer fees, seller statistics, full photo sets and market currencies across 7 storefronts - then export to JSON, CSV or Excel, or pull the results straight into your app through the API.

Why This Scraper?

  • Seven markets, one actor. Australia, United States, United Kingdom, France, Germany, Italy and Spain, each with its own currency and language; category links carry their own market automatically.
  • Three ways in. Keyword search, pasted links of every shape the site emits (search, category, brand, model, sale campaign, new arrivals, seller profile, product page, journal), or the journal news mode.
  • Full price picture. Current price, original price, discount percentage, buyer fee and the seller's own asking price on enriched rows - sold items included as resale comparables.
  • Real detail reads. The condition report, material, measurements, negotiability, seller statistics (items sold, listings, pass rate, rating badge) and the complete photo gallery on each enriched row.
  • Journal included. The marketplace's editorial news feed with titles, summaries, categories and dates - no other Vestiaire Collective scraper ships the news.
  • Built for schedules. Incremental mode returns only new and changed records on recurring runs, and a refused run fails loudly instead of returning an empty dataset.

Use Cases

  • Who: luxury resellers and arbitrage hunters - track asking prices across markets, compare sold prices, and watch seller closets for fresh consignment.
  • Who: market researchers - measure brand and category inventory, discount depth and condition mix on a schedule.
  • Who: pricing analysts - build sold-item comparables with the Sold listings only toggle.

Data You Get

Sample shape: one row per product, from a live record.

FieldExample
titleGrand shopping leather tote
brandChanel
modelGrand shopping
price2100.0
wasPrice2415.0
discountPercent13
currencyAUD
conditionDescriptionVery good condition
materialLeather
measurements[{"name": "Width", "value": "33"}, {"name": "Height", "value": "25"}]
buyerFee28.0
sellerNameMina
sellerRatingBadgeCommon
soldfalse
url(the listing page on Vestiaire Collective)
changeTypeNEW

How to Use

  1. Pick a mode: keyword search (default), paste links, or journal for the news feed.
  2. In URL mode, paste any mix of search, category, brand, model, sale, new arrivals, seller, product and journal links (search links honour ?page= and ?sortBy=). Leave the field untouched and the run walks one example link of each shape, sharing Max items evenly between them. In search mode, add keywords and narrow with condition, department, price range or curator picks.
  3. Set Max items for the run cap (20 by default) and keep Fetch product details on for the condition report, seller statistics and galleries.
  4. Run the actor and export the dataset, or select an MCP connector to send records into your apps.

Search keywords:

{"mode": "search", "searchTerms": ["chanel bag"], "market": "AU", "maxItems": 20}

Sold-item comparables:

{"mode": "search", "searchTerms": ["hermes birkin"], "soldOnly": true, "sort": "price-desc", "maxItems": 50}

Walk a category and the sale campaign:

{"mode": "urls", "urls": ["https://www.vestiairecollective.com/women-bags/handbags/chanel/", "https://www.vestiairecollective.com/c/flash-price-drops-10474/"], "maxItems": 40}

Collect the journal news feed:

{"mode": "journal", "journalCategories": ["fashion-stories"], "maxItems": 20}

Run it from your code

Run it from Python:

from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("abotapi/vestiaire-collective-scraper").call(run_input={
"mode": "search",
"searchTerms": ["chanel bag"],
"maxItems": 20,
"fetchDetails": True,
})
items = client.dataset(run["defaultDatasetId"]).list_items().items

Run it from JavaScript:

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });
const run = await client.actor('abotapi/vestiaire-collective-scraper').call({
mode: 'search',
searchTerms: ['chanel bag'],
maxItems: 20,
fetchDetails: true,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
ShapeExample path
Search/search/?q=chanel%20bag (&page=2, &sortBy=price-asc honoured; sort values: relevance, price-asc, price-desc, recency)
Category/women-bags/handbags/
Brand and category/women-bags/handbags/chanel/
Brand/chanel/
Model/women-bags/handbags/chanel/grand-shopping/
Sale campaign/c/flash-price-drops-10474/
New arrivals/new-items/
Seller profile/profile/32743220
Product/women-bags/handbags/chanel/<slug>-72479772.shtml
Journal index, category or article/journal/

URL mode with the field untouched walks the example links above in turn and shares Max items evenly between them, so every shape returns rows once Max items is at least the number of links.

Tips

  • A product link always reads its product record: the read is that record's only data source, so the detail fee applies even with the listing-row toggle off.
  • The catalog serves the first ~1,020 listings per scope (the feed's own depth limit); sort by price to reach deeper slices of an expensive category.
  • Price ranges and price sort follow the selected market's currency; category and brand links keep their own market and currency.
  • Journal records include full article text (content), HTML (contentHtml), ordered content blocks, images and article links. Narrow the feed with Journal categories (for example fashion-stories, promotions, sustainability), or paste a specific article URL. contentStatus reports complete or unavailable when only the summary could be read.
  • Keep Fetch details enabled for the full product gallery (pictureUrls and imageCount), sizes and seller attributes. Turning it off returns listing cards, usually with one preview photo; detailStatus makes this explicit. productDetails preserves category-specific source attributes. Null sizes on bags or absent original prices are source omissions, not invented values.

Send results into your apps (MCP connectors)

Optionally send records into the apps you already use through MCP connectors: set MCP connectors (for example a Notion database) and cap the export with Max items to export per connector. The export is a gated side channel: it never changes the dataset.

FieldWhat it does
mcpConnectorsConnector ids to export to (empty = no export).
notionParentPageUrlURL or id of the Notion parent page (required for the Notion connector).
maxNotifyListingsCap on records written to each connector per run.

Input Parameters

ParameterTypeDefaultDescription
modestringsearchHow to start the scrape: keyword search, pasted links, or the journal feed.
searchTermsarray-Keywords for search mode, for example 'chanel bag', 'hermes birkin'.
urlsarrayeleven example linksOne example of each link shape (table above). Search, category, brand, model, sale, new arrivals, seller, product or journal links, any mix.
journalCategoriesarray-Narrow the journal feed to categories like fashion-stories or promotions.
marketstringAUStorefront: AU, US, GB, FR, DE, IT or ES. Prices follow the market's currency.
sortstringrelevanceListing order: relevance, price low to high, price high to low, or most recent.
soldOnlybooleanfalseWalk only sold listings (resale comparables).
conditionsarray-Condition filter: never worn (with or without tag), very good, good or fair.
universesarray-Department filter: women, men or kids.
priceRangesarray-Price buckets in the market's currency: 0-100, 100-500, 500+.
editorPicksarray-Curator labels: We love, Vintage, Exceptional Pieces.
fetchDetailsbooleantrueRead each product's full record: condition, material, measurements, fees, seller statistics, gallery.
maxItemsinteger20The single cap on the run: stop after this many records.
proxyobjectshared datacenterLeave the default for the cheapest run. Residential access is used automatically as a backup when your plan includes it; you can also pick it here or supply your own proxy URLs.
resumeFromRunIdstring-Paste a previous run ID or dataset ID to continue a large crawl without returning or charging for records already collected there.
incrementalModebooleanfalseTrack changes across scheduled runs; suppress and never bill unchanged records.
stateKeystring-Optional name for the incremental baseline.
emitUnchangedbooleanfalseAlso return unchanged records, marked and billed.
emitExpiredbooleanfalseAlso return disappeared records, marked and billed.
ignoreFieldsForChangesarray-Extra top-level fields excluded from change detection (the likes counter is always ignored).
mcpConnectorsarray-Connector ids to export to (empty = no export).
notionParentPageUrlstring-URL or id of the Notion parent page (required for the Notion connector).
maxNotifyListingsinteger50Cap on records written to each connector per run.

Output Example

Sample shape: one row per product, from a live record.

Live record: Grand shopping leather tote

{
"productId": "72479772",
"title": "Grand shopping leather tote",
"brand": "Chanel",
"model": "Grand shopping",
"price": 2100.0,
"wasPrice": 2415.0,
"discountPercent": 13,
"currency": "AUD",
"conditionDescription": "Very good condition",
"material": "Leather",
"measurementFormatted": "Width 33 cm, Height 25 cm, Depth 13 cm",
"buyerFee": 28.0,
"sellerName": "Mina",
"sellerRatingBadge": "Common",
"sold": false,
"imageCount": 15
}

Plan Requirement

The catalog and product data load through the default shared connection, which keeps costs low. The site's own pages sit behind a challenge that datacenter and residential connections alike cannot pass, so the actor reads the marketplace's data feeds instead. If the selected connection is refused, the actor continues on a backup connection and logs: "The selected connection is unavailable to this run. Apify free plans do not include residential proxies." Some pages may then stay unavailable. If no page can be read at all, the run fails with a clear message ("Could not load any results page (the requests failed), so nothing was collected. This is a connection problem, not an empty search.") instead of returning an empty dataset. A paid Apify plan, or your own proxy URLs, gives the most reliable access.

FAQ

How much does it cost?

The actor is pay per event: a start fee per run, a per-record fee for every record returned, and a detail surcharge when a product's full record is read (on by default). Exact prices are on the actor's Pricing tab. Max items is the cost lever: a run's record count is bounded by it.

The actor reads the public marketplace surfaces: search, category, product and journal data. It does not access accounts, wishlists or checkout. You are responsible for using the data in line with the site's terms of use, privacy law such as GDPR or CCPA, and applicable regulations; personal data of identifiable individuals requires a lawful basis.

Does it include product reviews?

Vestiaire Collective does not publish buyer reviews or star ratings on listings. What the marketplace does publish is the seller's track record - items sold, listings, pass rate and a rating badge - and every enriched row carries it.

Can I get only new or changed items on a schedule?

Yes. Turn on Incremental mode and schedule the actor. The first run returns everything matching as NEW; later runs return only NEW and UPDATED records. Price moves, sell-outs and restocks all count as changes; the likes counter does not. Use State key to keep a monitoring campaign stable, and Emit unchanged or Emit expired only if you also want those rows (they return and bill extra rows).

Why did a run return fewer results than the site shows?

The feed serves the first ~1,020 listings per scope, and the run stops at Max items (20 by default). Raise the cap, sort by price to slice deeper, or narrow the scope.

Why did my run fail instead of returning an empty dataset?

A run that never got a single readable answer fails loudly with a connection message instead of reporting an empty catalog. On a scheduled incremental run with no changes, the run reports "Nothing changed since the last run" instead of an empty-catalog message. A run that reads some pages but is refused others still succeeds and names the refused count with a Partial results status.

What does the run summary contain?

Each run stores a summary under the key-value store key OUTPUT: records returned, records scanned, detail reads charged and failed, scopes and scopes with errors, pages served and refused, and flags for cap reached, cut by deadline, incremental mode and resumed run. Dataset rows follow a declared fields contract, so every row has the same typed columns; fields the source omits are null.

Can I use it with AI agents or MCP?

Yes. Every record is plain JSON over the dataset API, and the MCP connector export sends rows straight into tools like Notion. Point an agent at the dataset items endpoint with the input above.

πŸ”— More scrapers you might like

Pair this actor with these related scrapers from the same team:

🏷️ Poshmark Scraper
Scrape Poshmark fashion-resale listings: keyword search, brand and category browse, sold...
πŸ›’ MUJI Scraper
Scrape MUJI products from the United States, Canada and Australia storefronts. Search by...
🏷️ Curtsy Fashion Resale Scraper
Scrape Curtsy, the US secondhand fashion marketplace: listings with brand, size, list vs...
πŸ›’ The RealReal Scraper
Scrape luxury consignment listings from therealreal.com. Browse by designer, category or...
πŸ“° Veepee Scraper
Scrape Veepee flash sales: live campaigns with brands, dates and discounts plus per-sale...
🧩 Grailed Scraper
Scrape Grailed by keyword, category, designer, condition, size or URL. Extract prices and...

πŸ‘‰ Browse all abotapi scrapers

πŸ’¬ Support

  • 🐞 Found a bug or a missing field? Open a ticket on the Issues tab. We usually reply within hours.
  • πŸ› οΈ Need another site, extra fields or a private build? Email contact@abotapi.com.
  • ⭐ Enjoying it? A quick review on the actor page helps other users find it.