Vinted Secondhand Listings, Closets & Seller Feedback
Search Vinted secondhand fashion listings by keyword, brand, size, color, material and price across 19 storefronts, or pull a seller's closet, a brand's catalog, or a seller's feedback history.
Input schema
Input fields, types, required flags, descriptions, defaults, and prefills come from the published definition. Prefill examples are distinct from defaults.
| Field | Type | Required | Description |
|---|---|---|---|
mode | string | required | search: keyword/filters → items. byUrl: explicit Vinted item, member, brand, catalog or search URLs. byUser: profile + closet. byBrand / byCatalog: listings for a brand or category. byBrandSearch: brand registry. byUserFeedbacks: seller reviews. |
country | string | required | Vinted market to query. The market controls currency, language and local inventory. |
searchText | string | optional | Free-text keyword. Leave empty with a brand/category filter to browse. A bare run defaults to adidas. |
Show all input fields
| Field | Type | Required | Description |
|---|---|---|---|
mode | string | required | search: keyword/filters → items. byUrl: explicit Vinted item, member, brand, catalog or search URLs. byUser: profile + closet. byBrand / byCatalog: listings for a brand or category. byBrandSearch: brand registry. byUserFeedbacks: seller reviews. |
country | string | required | Vinted market to query. The market controls currency, language and local inventory. |
searchText | string | optional | Free-text keyword. Leave empty with a brand/category filter to browse. A bare run defaults to adidas. |
order | string | optional | Result ordering for item searches. |
urls | array | optional | Item, member, brand, catalog or filtered search URLs. Mixed country domains are supported. |
userId | string | optional | Numeric Vinted user ID, username, or member URL. |
brandId | string | optional | Numeric brand ID or brand URL. Discover IDs with Search brand registry. |
catalogId | string | optional | Numeric category ID or /catalog/<id>-slug URL. |
brandKeyword | string | optional | Keyword to search the Vinted brand registry. |
brandIds | array | optional | Numeric brand IDs, e.g. [53] for Nike. |
catalogIds | array | optional | Numeric category IDs, e.g. [1904] for Women. |
sizeIds | array | optional | Numeric Vinted size IDs. Use the size facet shown on a Vinted search URL. |
color | string | optional | Single colour filter. Choose any to leave it unfiltered. |
materialIds | array | optional | Numeric material IDs from Vinted's Material facet (e.g. 44 = Cotton). |
condition | string | optional | Vinted condition. Choose any to leave it unfiltered. |
priceFrom | integer | optional | Minimum price in the market's local currency. |
priceTo | integer | optional | Maximum price in the market's local currency. |
deepSearch | boolean | optional | Vinted returns at most 960 results per query. Deep search splits the query into price bands so it can collect more (more requests, slower). |
includeItemDetails | boolean | optional | Open each item page for description, colour, material, category, condition ID, upload age, all photos and seller rating. One extra request per item. |
includeSellerStats | boolean | optional | Add seller rating, feedback count, item/sold counts, followers and shop identity (one profile request per distinct seller). |
minRating | number | optional | Drop items whose seller rating is below this value (0–5). Items without a rating pass through. Automatically enables seller stats. |
containsKeyword | string | optional | Drop items whose title or description does not contain this keyword (case-insensitive). Without item details only the title is searched. |
maxItems | integer | optional | Hard cap on emitted records. Values above 960 need deep search. |
feedbackType | string | optional | All reviews, member-written reviews, or Vinted's automatic sale-completion entries. |
Download the published input schema
View complete JSON
{
"description": "Search Vinted second-hand fashion across 27 country domains, pull item details, seller closets, profiles, shop data, feedback, brands and categories.",
"properties": {
"brandId": {
"description": "Numeric brand ID or brand URL. Discover IDs with Search brand registry.",
"editor": "textfield",
"sectionCaption": "Per-Mode Targets",
"title": "Brand ID or URL (mode=byBrand)",
"type": "string"
},
"brandIds": {
"default": [],
"description": "Numeric brand IDs, e.g. [53] for Nike.",
"editor": "stringList",
"prefill": [],
"sectionCaption": "Search Filters",
"title": "Brand IDs filter (mode=search)",
"type": "array"
},
"brandKeyword": {
"description": "Keyword to search the Vinted brand registry.",
"editor": "textfield",
"sectionCaption": "Per-Mode Targets",
"title": "Brand keyword (mode=byBrandSearch)",
"type": "string"
},
"catalogId": {
"description": "Numeric category ID or /catalog/<id>-slug URL.",
"editor": "textfield",
"sectionCaption": "Per-Mode Targets",
"title": "Catalog ID or URL (mode=byCatalog)",
"type": "string"
},
"catalogIds": {
"default": [],
"description": "Numeric category IDs, e.g. [1904] for Women.",
"editor": "stringList",
"prefill": [],
"sectionCaption": "Search Filters",
"title": "Catalog IDs filter (mode=search)",
"type": "array"
},
"color": {
"default": "any",
"description": "Single colour filter. Choose any to leave it unfiltered.",
"editor": "select",
"enum": [
"any",
"1",
"3",
"12",
"20",
"4",
"21",
"11",
"22",
"7",
"23",
"5",
"24",
"6",
"25",
"26",
"9",
"27",
"17",
"30",
"10",
"28",
"16",
"2",
"29",
"8",
"13",
"14",
"15",
"32"
],
"enumTitles": [
"Any color",
"Black",
"Gray",
"White",
"Cream",
"Beige",
"Apricot",
"Orange",
"Coral",
"Red",
"Burgundy",
"Pink",
"Rose",
"Purple",
"Lilac",
"Light blue",
"Blue",
"Navy",
"Turquoise",
"Mint",
"Green",
"Dark green",
"Khaki",
"Brown",
"Mustard",
"Yellow",
"Silver",
"Gold",
"Multi",
"Clear"
],
"prefill": "any",
"sectionCaption": "Search Filters",
"title": "Color filter (mode=search)",
"type": "string"
},
"condition": {
"default": "any",
"description": "Vinted condition. Choose any to leave it unfiltered.",
"editor": "select",
"enum": [
"any",
"new_with_tags",
"new_without_tags",
"very_good",
"good",
"satisfactory"
],
"enumTitles": [
"Any condition",
"New with tags",
"New without tags",
"Very good",
"Good",
"Satisfactory"
],
"prefill": "any",
"sectionCaption": "Search Filters",
"title": "Condition filter (mode=search)",
"type": "string"
},
"containsKeyword": {
"description": "Drop items whose title or description does not contain this keyword (case-insensitive). Without item details only the title is searched.",
"editor": "textfield",
"sectionCaption": "Enrichment & Limits",
"title": "Title or description contains keyword",
"type": "string"
},
"country": {
"default": "com",
"description": "Vinted market to query. The market controls currency, language and local inventory.",
"editor": "select",
"enum": [
"com",
"co.uk",
"fr",
"de",
"it",
"es",
"pl",
"cz",
"nl",
"lt",
"lu",
"at",
"be",
"pt",
"ro",
"sk",
"fi",
"se",
"gr",
"dk",
"ee",
"hr",
"hu",
"ie",
"lv",
"si",
"com.au"
],
"enumTitles": [
"United States (vinted.com, USD)",
"United Kingdom (vinted.co.uk, GBP)",
"France (vinted.fr, EUR)",
"Germany (vinted.de, EUR)",
"Italy (vinted.it, EUR)",
"Spain (vinted.es, EUR)",
"Poland (vinted.pl, PLN)",
"Czechia (vinted.cz, CZK)",
"Netherlands (vinted.nl, EUR)",
"Lithuania (vinted.lt, EUR)",
"Luxembourg (vinted.lu, EUR)",
"Austria (vinted.at, EUR)",
"Belgium (vinted.be, EUR)",
"Portugal (vinted.pt, EUR)",
"Romania (vinted.ro, RON)",
"Slovakia (vinted.sk, EUR)",
"Finland (vinted.fi, EUR)",
"Sweden (vinted.se, SEK)",
"Greece (vinted.gr, EUR)",
"Denmark (vinted.dk, DKK)",
"Estonia (vinted.ee, EUR)",
"Croatia (vinted.hr, EUR)",
"Hungary (vinted.hu, HUF)",
"Ireland (vinted.ie, EUR)",
"Latvia (vinted.lv, EUR)",
"Slovenia (vinted.si, EUR)",
"Australia (vinted.com.au, AUD)"
],
"prefill": "com",
"sectionCaption": "Mode & Market",
"title": "Country / market",
"type": "string"
},
"deepSearch": {
"default": false,
"description": "Vinted returns at most 960 results per query. Deep search splits the query into price bands so it can collect more (more requests, slower).",
"editor": "checkbox",
"prefill": false,
"sectionCaption": "Enrichment & Limits",
"title": "Deep search past 960 results",
"type": "boolean"
},
"feedbackType": {
"default": "all",
"description": "All reviews, member-written reviews, or Vinted's automatic sale-completion entries.",
"editor": "select",
"enum": [
"all",
"member",
"automatic"
],
"enumTitles": [
"All feedback",
"Member reviews",
"Automatic system feedback"
],
"prefill": "all",
"sectionCaption": "Enrichment & Limits",
"title": "Feedback type (mode=byUserFeedbacks)",
"type": "string"
},
"includeItemDetails": {
"default": false,
"description": "Open each item page for description, colour, material, category, condition ID, upload age, all photos and seller rating. One extra request per item.",
"editor": "checkbox",
"prefill": false,
"sectionCaption": "Enrichment & Limits",
"title": "Include item details",
"type": "boolean"
},
"includeSellerStats": {
"default": false,
"description": "Add seller rating, feedback count, item/sold counts, followers and shop identity (one profile request per distinct seller).",
"editor": "checkbox",
"prefill": false,
"sectionCaption": "Enrichment & Limits",
"title": "Include seller stats / shop",
"type": "boolean"
},
"materialIds": {
"default": [],
"description": "Numeric material IDs from Vinted's Material facet (e.g. 44 = Cotton).",
"editor": "stringList",
"prefill": [],
"sectionCaption": "Search Filters",
"title": "Material IDs filter (mode=search)",
"type": "array"
},
"maxItems": {
"default": 50,
"description": "Hard cap on emitted records. Values above 960 need deep search.",
"editor": "number",
"maximum": 5000,
"minimum": 1,
"prefill": 1,
"sectionCaption": "Enrichment & Limits",
"title": "Max items",
"type": "integer"
},
"minRating": {
"description": "Drop items whose seller rating is below this value (0–5). Items without a rating pass through. Automatically enables seller stats.",
"editor": "number",
"maximum": 5,
"minimum": 0,
"sectionCaption": "Enrichment & Limits",
"title": "Minimum seller rating",
"type": "number"
},
"mode": {
"default": "search",
"description": "search: keyword/filters → items. byUrl: explicit Vinted item, member, brand, catalog or search URLs. byUser: profile + closet. byBrand / byCatalog: listings for a brand or category. byBrandSearch: brand registry. byUserFeedbacks: seller reviews.",
"editor": "select",
"enum": [
"search",
"byUrl",
"byUser",
"byBrand",
"byCatalog",
"byBrandSearch",
"byUserFeedbacks"
],
"enumTitles": [
"Search items (keyword + filters)",
"By URL (item / member / brand / catalog / search)",
"By user (profile + closet)",
"By brand (items)",
"By catalog (category items)",
"Search brand registry",
"By user feedbacks (seller reviews)"
],
"prefill": "search",
"sectionCaption": "Mode & Market",
"title": "Scrape mode",
"type": "string"
},
"order": {
"default": "relevance",
"description": "Result ordering for item searches.",
"editor": "select",
"enum": [
"relevance",
"newest_first",
"price_low_to_high",
"price_high_to_low"
],
"enumTitles": [
"Relevance",
"Newest first",
"Price: low to high",
"Price: high to low"
],
"prefill": "relevance",
"sectionCaption": "Search Inputs",
"title": "Sort order (mode=search / byBrand / byCatalog)",
"type": "string"
},
"priceFrom": {
"description": "Minimum price in the market's local currency.",
"editor": "number",
"maximum": 1000000,
"minimum": 0,
"sectionCaption": "Search Filters",
"title": "Min price (mode=search)",
"type": "integer"
},
"priceTo": {
"description": "Maximum price in the market's local currency.",
"editor": "number",
"maximum": 1000000,
"minimum": 0,
"sectionCaption": "Search Filters",
"title": "Max price (mode=search)",
"type": "integer"
},
"searchText": {
"default": "",
"description": "Free-text keyword. Leave empty with a brand/category filter to browse. A bare run defaults to adidas.",
"editor": "textfield",
"prefill": "adidas",
"sectionCaption": "Search Inputs",
"title": "Search query (mode=search)",
"type": "string"
},
"sizeIds": {
"default": [],
"description": "Numeric Vinted size IDs. Use the size facet shown on a Vinted search URL.",
"editor": "stringList",
"prefill": [],
"sectionCaption": "Search Filters",
"title": "Size IDs filter (mode=search)",
"type": "array"
},
"urls": {
"default": [],
"description": "Item, member, brand, catalog or filtered search URLs. Mixed country domains are supported.",
"editor": "stringList",
"prefill": [],
"sectionCaption": "Per-Mode Targets",
"title": "Vinted URLs (mode=byUrl)",
"type": "array"
},
"userId": {
"description": "Numeric Vinted user ID, username, or member URL.",
"editor": "textfield",
"sectionCaption": "Per-Mode Targets",
"title": "User ID, username or URL (mode=byUser / byUserFeedbacks)",
"type": "string"
}
},
"required": [
"mode",
"country"
],
"schemaVersion": 1,
"title": "Vinted Scraper Input",
"type": "object"
}
Output schema
Published result links and storage locations. This schema is not an exhaustive contract for every field in a dataset record.
| Field | Type | Required | Description |
|---|---|---|---|
items | string | optional | Dataset containing all scraped Vinted item, user, brand and feedback records. |
Download the published output schema
View complete JSON
{
"actorOutputSchemaVersion": 1,
"description": "One record per Vinted item, seller profile, brand or feedback entry across 27 markets, with prices, condition, images, seller rating, shop data and source URLs.",
"properties": {
"items": {
"description": "Dataset containing all scraped Vinted item, user, brand and feedback records.",
"template": "{{links.apiDefaultDatasetUrl}}/items",
"title": "Vinted records",
"type": "string"
}
},
"title": "Vinted Multi-Market Listings, Closets & Seller Feedback Output"
}
Dataset schema
Published dataset views and any declared field definitions. A view can select only a subset of the returned record fields.
Download the published dataset schema
View complete JSON
{
"actorSpecification": 1,
"views": {
"overview": {
"display": {
"component": "table",
"properties": {}
},
"title": "Vinted listings",
"transformation": {
"fields": [
"recordType",
"title",
"brandTitle",
"condition",
"priceAmount",
"priceCurrency",
"sellerLogin",
"sellerRating",
"sourceCountry",
"itemUrl"
]
}
}
}
}
Key-value schema
Published key-value store definitions, when provided by this build.
This definition is not present in the default published build. See the published README for available documentation.
Published README
Read the full published documentation
Vinted Secondhand Listings, Closets & Seller Feedback
Vinted is a large second-hand fashion marketplace spread across country storefronts. This actor turns its public listings, item pages, seller profiles, closets, feedback history, brands and categories into clean dataset rows across 27 markets. Search by keyword with Vinted's own filters, paste filtered URLs, open full item details, or vet a seller before buying. No account, cookies or proxy setup is needed.
What this actor does
- Seven modes:
search,byUrl,byUser,byBrand,byCatalog,byBrandSearch,byUserFeedbacks - 27 markets: United States, United Kingdom, France, Germany, Italy, Spain, Poland, Czechia, Netherlands, Lithuania, Luxembourg, Austria, Belgium, Portugal, Romania, Slovakia, Finland, Sweden, Greece, Denmark, Estonia, Croatia, Hungary, Ireland, Latvia, Slovenia and Australia
- Search filters: keyword, brand, category, size, colour, condition, material, price range and sort order, combinable in one search
- Deep search: split a broad search into price bands to collect beyond Vinted's 960-result ceiling per query
- Optional item details: description, colour, material, category path, condition ID, upload age, every photo and seller rating
- Optional seller stats: rating, feedback counts, live and sold item counts, followers, business/shop identity
- Seller feedback: full review history with rating, text, reviewer and optional owner reply
- Best-effort enrichment: item details and seller stats are optional; under Vinted rate limits those fields can be omitted or delayed while the search rows still return
- Empty fields are omitted — every value in a row is real; fields Vinted does not expose are absent, not filled with placeholders
Output per item
itemId,title,descriptionbrandTitle,brandId,brandUrlsizeTitle,sizeId,sizeEquivalentsstatus(condition as shown on the storefront),condition(English),conditionId,statusIdcolor,colors,materials,otherAttributescatalogId,categoryName,categoryPathpriceAmount,priceCurrency,totalPriceAmount,serviceFeeAmount,shippingAmount,freeShippingfavouriteCount,isPromoted,isReserved,isClosed,isHidden,isVisible,availabilityuploadedAgo— Vinted's relative posting age (e.g. "2 hours ago")itemUrl,canonicalUrl,imageUrl,photos[],photoCountsellerId,sellerLogin,sellerCountryCode,sellerProfileUrl,sellerAvatarUrlsellerRating,sellerFeedbackCount,sellerFeedbackReputationsellerPositiveFeedbackCount,sellerNeutralFeedbackCount,sellerNegativeFeedbackCountsellerItemCount,sellerSoldItemCount,sellerBoughtItemCount,sellerFollowersCountsellerIsBusiness,sellerIsOnline,sellerBadgessellerShopName,sellerShopLegalName,sellerShopVatNumber,sellerShopCountry,sellerShopsourceUrlwhen an item came from a pasted URLrecordType,scrapedAt,siteName,sourceCountry,sourceCountryCode
Fields marked optional above appear only when the selected mode enriches the row or Vinted supplies them.
Output per seller profile
userId,login,realName,about,city,countryCode,countryTitle,countryIdavatarUrl,avatarThumbnailUrl,profileUrlrating(0–5),feedbackCount,feedbackReputation,feedbackRatingpositiveFeedbackCount,negativeFeedbackCount,neutralFeedbackCountitemCount,totalItemsCount,soldItemCount,boughtItemCountfollowersCount,followingCountisBusiness,isOnHoliday,isOnline,verificationsshop— name, legal name/code, VAT number, registrar, country, address and verification state for business sellerslastLoggedOn,recordType,scrapedAt,siteName,sourceCountry,sourceCountryCode
One profile row is written before that seller's closet items.
Output per feedback entry
feedbackId,feedbackText,rating,createdAtitemId,itemUrlfeedbackUserId,reviewerId,reviewerLogin,reviewerProfileUrlisSystem,isAutomatic,feedbackType(memberorautomatic)ownerComment,ownerLoginrecordType,scrapedAt,siteName,sourceCountry,sourceCountryCode
Output per brand
brandId,title,slugfavouriteCount,itemCount,currencyisVisibleInListings,requiresAuthenticityCheck,isLuxury,isHighValuebrandUrl,canonicalUrlrecordType,scrapedAt,siteName,sourceCountry,sourceCountryCode
Input
| Field | Type | Default | Description |
|---|---|---|---|
mode |
string | search |
search, byUrl, byUser, byBrand, byCatalog, byBrandSearch or byUserFeedbacks |
country |
string | com |
Market suffix, e.g. com, co.uk, fr, de, pl |
searchText |
string | – | Keyword (mode=search) |
order |
string | relevance |
relevance, newest_first, price_low_to_high, price_high_to_low |
urls |
array | – | Item, member, brand, catalog or filtered search URLs (mode=byUrl) |
userId |
string | – | Numeric user ID, username or member URL (mode=byUser / byUserFeedbacks) |
brandId |
string | – | Brand ID or brand URL (mode=byBrand) |
catalogId |
string | – | Category ID or catalog URL (mode=byCatalog) |
brandKeyword |
string | – | Brand registry keyword (mode=byBrandSearch) |
brandIds |
array | – | Brand ID filters |
catalogIds |
array | – | Category ID filters |
sizeIds |
array | – | Size ID filters |
color |
string | any |
Vinted colour ID; the dropdown shows labels such as Black, Gray, White, Cream, Beige, Red, Blue, Green, Brown, Yellow, Silver, Gold and Multi |
materialIds |
array | – | Material ID filters |
condition |
string | any |
new_with_tags, new_without_tags, very_good, good, satisfactory |
priceFrom / priceTo |
integer | – | Price range in the market's local currency |
deepSearch |
boolean | false |
Split broad searches into price bands past 960 results; a saturated single-price band is treated as truncated |
includeItemDetails |
boolean | false |
Add description, attributes, all photos and seller rating from item pages |
includeSellerStats |
boolean | false |
Add seller rating, counts, followers and shop identity |
minRating |
number | – | Drop items below this seller rating (0–5); items without a rating pass |
containsKeyword |
string | – | Keep items whose title or description contains this text |
maxItems |
integer | 50 |
Hard cap (1–5000) |
feedbackType |
string | all |
all, member or automatic (mode=byUserFeedbacks) |
Example: search a brand with filters
{
"mode": "search",
"country": "fr",
"searchText": "nike air max",
"brandIds": ["53"],
"sizeIds": ["207"],
"condition": "very_good",
"priceFrom": 20,
"priceTo": 80,
"maxItems": 100
}
Example: item details and seller stats
{
"mode": "search",
"country": "de",
"searchText": "carhartt jacket",
"includeItemDetails": true,
"includeSellerStats": true,
"maxItems": 25
}
Example: a seller's profile, closet and feedback
{
"mode": "byUrl",
"country": "co.uk",
"urls": [
"https://www.vinted.co.uk/member/123456789-seller-name"
],
"maxItems": 50
}
{
"mode": "byUserFeedbacks",
"country": "fr",
"userId": "123456789",
"feedbackType": "member",
"maxItems": 100
}
Example: deep search past 960 results
{
"mode": "search",
"country": "pl",
"searchText": "nike",
"deepSearch": true,
"maxItems": 3000
}
Use cases
- Resale sourcing — scan a brand, size or category for underpriced listings before they sell
- Price monitoring — track asking prices and buyer-protection totals across markets over time
- Seller vetting — pull a seller's rating, sold count, feedback history, followers and shop identity
- Market research — measure listing volume, condition mix and price bands for a brand or category
- Closet monitoring — schedule a seller's closet to spot new stock as it appears
- Brand and category discovery — resolve Vinted brand IDs and category paths for saved searches
FAQ
Do I need a Vinted account or cookies? No. Every mode reads publicly available Vinted pages and endpoints. No login, API key or cookie setup is required.
How many markets are supported?
27 live Vinted markets, each with its own currency and storefront language. Use the country dropdown; pasted URLs use their own domain.
How many results can I get?
Vinted returns at most 960 results per query. Turn on deepSearch to split a broad query into price bands and collect beyond that ceiling. If a single price point still has more than 960 matches, that band cannot be fully enumerated and is treated as truncated, so deep coverage is broader than 960 but not exhaustive. Closets are capped by Vinted at 10,000 visible items per seller.
Why is the posting date relative instead of an exact timestamp?
Vinted stopped exposing an exact listing creation time. The actor returns the relative uploadedAgo value the site shows and does not invent a date. View counts are no longer public either, so neither field is fabricated.
Why do some items lack a brand, material, colour, description or seller rating? Sellers can leave optional fields blank, and new sellers have no feedback yet. Item-page and seller-stat enrichment is best-effort: if Vinted rate-limits those routes, the row keeps its search fields and omits the enrichment fields instead of inventing values. Seller-stat enrichment stops after repeated API failures, so a rate-limited run can take several minutes and finish with fewer seller counts. Optional fields are omitted rather than filled with a placeholder.
Why is status in a local language while condition is in English?
Vinted localizes condition names per market. status keeps the storefront wording, while condition and conditionId provide a stable cross-market equivalent. The ID is the reliable key for filtering.
Can I scrape sold listings or sold prices?
No. Vinted removes sold listings from public search and exposes no complete sold feed. Seller soldItemCount and review rows with an item ID are useful sale signals, but they are not a sold-price history.
Do the same listings appear in several markets?
Some markets share one inventory pool and show the same item at converted prices. Match rows by itemId; a price difference between markets is often currency conversion, not a separate listing.
Do images open without authentication? Yes. Image URLs are public and load without cookies or a referrer.
Is this affiliated with Vinted? No. This is an independent third-party actor that reads publicly accessible marketplace data. It is not affiliated with or endorsed by Vinted.
Python quickstart
Use a schema-derived input and the Python standard library to start a run. An Apify account and token are required for execution.
Source build mBEPDeegiIM7YP28R. Documentation is regenerated from the default published build; private drafts are not included.