Vinted Scraper: Listings, Prices & Item Details avatar

Vinted Scraper: Listings, Prices & Item Details

Pricing

from $0.50 / 1,000 catalog listings

Go to Apify Store
Vinted Scraper: Listings, Prices & Item Details

Vinted Scraper: Listings, Prices & Item Details

Extract public Vinted listings and optional item descriptions, attributes, displayed prices, buyer fees, shipping and seller links across 27 markets.

Pricing

from $0.50 / 1,000 catalog listings

Rating

0.0

(0)

Developer

Inus Grobler

Inus Grobler

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

10 hours ago

Last modified

Categories

Share

Collect public Vinted listings from keywords, filtered catalog URLs or individual item URLs. Export listing titles, brands, sizes, conditions, images and displayed prices, with optional public descriptions, seller links, buyer protection totals, shipping minimums and explicit sold or reserved labels.

Useful for resale research, inventory sourcing and marketplace price snapshots. No Vinted account or API key is required. This Actor reads public HTML pages and does not call Vinted source APIs.

Input example and Console run

Enter search keywords and choose countries, or clear keywords and supply catalog/item URLs. Start with three items and inspect the default Dataset. Export JSON, CSV or Excel. The run summary explains limits, empty searches, blocks and failed detail requests.

{
"keywords": [
"nike"
],
"countries": [
"FR"
],
"maxItems": 3,
"includeDetails": true
}

Countries and input

Configured countries: Austria, Australia, Belgium, Croatia, Czechia, Denmark, Estonia, Finland, France, Germany, Greece, Hungary, Ireland, Italy, Latvia, Lithuania, Luxembourg, Netherlands, Poland, Portugal, Romania, Slovakia, Slovenia, Spain, Sweden, United Kingdom and United States. Country codes are AT AU 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. countries: ["ALL"] searches all configured markets. Availability can differ by market and proxy; the run summary reports each target's actual outcome.

Use these five main inputs:

InputMeaning
keywordsSearch terms, one per line. Clear this field for URL-only runs
countriesDefaults to France; choose ALL for all 27 markets
maxItemsNumber of listings to save across the whole run; default 3, maximum 1,000
includeDetailsInclude descriptions, seller links and price context. Turn off for faster, cheaper price snapshots
startUrlsOptional public catalog/item URLs; catalog filters and each URL's country are preserved

Pages, per-search limits and request limits adjust automatically when you change the number of listings. You do not need to coordinate multiple limits. The optional Proxy settings section defaults to residential Apify Proxy; standard residential proxy traffic is included in the event prices described below. Custom external proxy services may bill you separately. Most users can leave it unchanged.

For 100 catalog listings, use {"keywords": ["nike"], "countries": ["FR"], "maxItems": 100, "includeDetails": false}. For one listing from each market, use {"keywords": ["nike"], "countries": ["ALL"], "maxItems": 27, "includeDetails": false}.

Use 1 GB memory, including for multi-market runs. Larger detail requests may produce partial results within the run timeout. Check the run summary before treating a run as complete.

Existing JSON/API integrations can still supply maxItemsPerTarget (1–1,000), maxPagesPerTarget (1–20), maxRequests (1–1,500) or proxyConfiguration. Explicit limits take precedence over automatic sizing. These collection overrides are hidden from the form to keep normal runs simple. Setting proxyConfiguration: {"useApifyProxy": false} enables direct access, which can be rate limited.

Catalog targets receive turns in rounds. Targets that cannot receive a row under the remaining global cap are not fetched. Direct item URLs always fetch their item page, even when catalog detail enrichment is disabled. Matches across searches are deduplicated, so fewer rows than requested can be a valid result.

Results

The default Listings view shows the title, market, numeric asking price, currency, brand, size, condition and item link. Item details, Price breakdown and Coverage and sources offer descriptions, separated price amounts and diagnostics. Full JSON exports retain every existing field. Full listing data preserves the original overview view for existing API users.

One row is saved per unique item ID and market. Matches across searches are joined in sourceReferences. Prices contain numeric amount, ISO currency and the original displayed raw text.

{
"itemId": "123",
"url": "https://www.vinted.fr/items/123-nike",
"market": "FR",
"title": "Nike shoes",
"brand": "Nike",
"size": "L",
"condition": "Très bon état",
"description": "Seller's public description",
"imageUrls": [],
"askingPrice": { "amount": 12.5, "currency": "EUR", "raw": "12,50 €" },
"priceIncludingBuyerProtection": { "amount": 13.83, "currency": "EUR", "raw": "13,83 €" },
"shippingMinimum": null,
"availability": "unknown",
"availabilityEvidence": null,
"sellerName": null,
"sellerProfileUrl": null,
"sourceReferences": ["https://www.vinted.fr/catalog?search_text=nike"],
"detailStatus": "ok",
"detailError": null,
"scrapedAt": "2026-09-30T12:00:00.000Z"
}

SNAPSHOT_CHECKPOINT in the default key-value store contains delivered, billed listings and is saved periodically. Results are saved to the Dataset as each item finishes. If a run is interrupted, export the Dataset or the checkpoint’s listings array. discoveredCount may exceed the delivered count while details are being processed. Checkpoints do not automatically resume a run. Restarting or resurrecting a run that already performed billed work is rejected to prevent duplicate charges; its existing Dataset is preserved. Start a new run for a fresh snapshot.

RUN_SUMMARY in the default key-value store starts with a readable message and records target outcomes, the effective automatic limits, output and duplicate counts, request/retry totals and detail failures. coverageStatus distinguishes complete (all requested sources exhausted), bounded (configured catalog limits), partial (unvisited targets, source failures, interrupted work or failed details) and failed (every target failed). targetCounts gives total, visited, completed, empty, failed, limited and unvisited targets. stopReason: COMPLETE means the crawler finished its work; inspect coverage separately. Failed detail requests preserve useful catalog rows and set detailStatus to failed. HTTP 429 stops further requests and preserves partial output; wait before trying again. All-target access or parsing failures fail the run; valid empty searches remain successful empty results.

Python API example

With the Apify Python client 3.x, use your Apify token from an environment variable:

import os
from apify_client import ApifyClient
client = ApifyClient(os.environ["APIFY_TOKEN"])
run = client.actor("thescrapelab/vinted-listings-item-details-scraper").call(
run_input={
"keywords": ["nike"], "countries": ["FR"],
"includeDetails": True, "maxItems": 3,
}
)
if run is None:
raise RuntimeError("The run did not finish")
for item in client.dataset(run.default_dataset_id).list_items().items:
print(item)

Limitations and usage

Displayed prices are asking prices, including on sold-labelled pages; the Actor cannot establish actual transaction amounts. Buyer protection totals and minimum shipping are separate displayed values, not a guaranteed checkout total. Descriptions may contradict nominal prices; preserve that context when comparing items.

Missing fields are null. Sold/reserved status requires an explicit source label; disappearance is never treated as a sale. Countries represent the viewed marketplace, not necessarily the seller's location. Catalogs change while being paginated, so duplicate removal cannot guarantee complete inventory coverage.

No historical monitoring, currency conversion, image downloading or private seller contact enrichment is included. Login walls, challenge pages and source blocks are reported. Requests, pages and output are bounded; broad searches do not promise complete catalog exports.

Pricing and spending limits

Launch pricing uses pay per event with standard Apify compute, storage, transfer and residential proxy usage during the run included. Reading/exporting or storing results after the run may incur standard Apify charges. No subscription is required.

EventPriceWhat is charged
Catalog listing$0.50 per 1,000One delivered unique listing without successful detail extraction
Detailed listing$6.00 per 1,000One delivered listing with successfully extracted item details, including direct item URLs
Catalog page$0.01One catalog page processed; empty searches and source failures also incur this execution fee. Internal retries do not add page fees
Actor start$0.005 per GB, minimum oneCharged automatically at startup; use the recommended 1 GB memory

Catalog and detailed listing charges are mutually exclusive. Failed detail extraction falls back to the catalog price, and duplicates within the run do not incur another listing charge. A request skipped because of a time or request limit has no catalog-page charge. PAGE_OUTCOMES records processed pages and their errors; RUN_SUMMARY.billing records the delivered event counts.

Total cost is the start fee + catalog-page fees + the applicable listing fees. For example, 100 catalog listings from two pages cost $0.075, and 1,000 catalog listings from 20 pages cost $0.705, if those quantities are delivered. Three successful details from one catalog page cost $0.033. Searching 27 markets for one catalog item each costs $0.2885 when all 27 pages are processed. These examples show fee arithmetic, not a guarantee of results or page counts. A blocked one-page search costs $0.015 at 1 GB and returns no listings.

Set a spending limit in Apify Console or through the API (max_total_charge_usd in the Python client). A low budget may stop discovery or enrichment and return fewer listings with stopReason: CHARGE_LIMIT; inspect the summary. The Actor stops before scheduling work it cannot charge within that limit. Custom proxy providers’ external bills are outside this cap.

Use catalog-only mode for the lowest-cost price snapshots. Direct access may be rate limited; datacenter proxy access was blocked in development tests. Report problems with the run ID, market and summary error code, excluding credentials.

Optional direct-first access

The default accessStrategy: "configured" preserves configured proxy access. API users can opt into accessStrategy: "direct-first" to fetch catalog and detail pages directly and retry only blocked item detail requests through an allowed configured proxy. Explicit proxyConfiguration: {"useApifyProxy": false} disables proxy fallback. This strategy can reduce transfer costs, but does not guarantee that every public detail page is accessible.

Check RUN_SUMMARY for direct requests, proxied requests, detail proxy fallbacks, detail failures and coverage. Listings retain detailStatus and detailError; incomplete details do not count as complete-detail verification. Existing identity deduplication and result charging remain in effect.