Fetch a single Vinted listing by item URL or numeric ID.
- Search and Vinted User Info call the internal Vinted API v2 (
/api/v2/...) with an auto-managed session.
- Item loads the public HTML page (
/items/{id}). The legacy JSON endpoint /api/v2/items/{id} returns 404.
Piloterr parses the embedded Next.js payload, normalizes all keys to snake_case, and optionally enriches the response with the seller profile via /api/v2/users/{seller_id}.
Costs 1 credit per call.
- Vinted Search to find listings
- Item (this endpoint) for the full normalized page payload + seller snapshot
- Vinted User Info when you only have a member ID/URL
GET https://api.piloterr.com/v2/vinted/item?query=https://www.vinted.com/items/9437210920-purple-prom-dress
GET https://api.piloterr.com/v2/vinted/item?query=9437210920®ion=com
| Parameter |
Type |
Required |
Description |
query |
string |
yes |
Item URL or numeric item ID |
region |
string |
no |
Force domain when query is a bare ID (com, https://www.vinted.de, …) |
Dynamic extraction from the Next.js payload: all item-linked Vinted plugins are collected, keys normalized to snake_case, and new sidebar attributes are supported automatically.
{
"id": 9437210920,
"title": "Purple prom dress",
"description": "Long purple prom dress, one strap",
"url": "https://www.vinted.com/items/9437210920-purple-prom-dress",
"price": { "amount": "9.0", "currency_code": "USD" },
"photos": [{ "id": 39947998424, "url": "...", "is_main": true, "full_size_url": "..." }],
"seller_id": 3163220665,
"size_title": "S / US 4-6",
"status": "New without tags",
"color": "Purple",
"uploaded_at": "an hour ago",
"attributes": {
"size": { "value": "S / US 4-6", "id": 506 },
"status": { "value": "New without tags", "id": 50 },
"color": "Purple"
},
"favourite_count": 0,
"catalog_id": 1777,
"shipping_details": { "is_free_shipping": true, "price": { "amount": "0", "currency_code": "USD" } },
"pricing_services": {
"total_amount": { "amount": "10.15", "currency_code": "USD" },
"services": { "buyer_protection": { "final_price": { "amount": "1.15", "currency_code": "USD" } } }
},
"plugins": {
"breadcrumbs": { "catalog_id": 1777, "breadcrumbs": [{ "title": "Women", "url": "/catalog/1904-women" }] },
"favourite": { "favourite_count": 0, "is_favourite": false }
},
"user": { "id": 3163220665, "login": "gingertastic88", "profile_url": "...", "item_count": 10 }
}
- All keys are
snake_case (isFreeShipping → is_free_shipping, currencyCode → currency_code).
- Core RSC item object + every plugin linked to the item (
"name", "type", …).
- Sidebar attributes →
attributes.{code}; scalar values also promoted to top-level (size → size_title, upload_date → uploaded_at; other codes like material keep their name).
- Each plugin is also stored under
plugins.{name}; useful scalars are hoisted to top-level (favourite_count, description, …). Generic keys name, type, section are not hoisted.
shipping_details and pricing_services are read next to the core item object.
- JSON-LD (
schema.org/Product) fills missing fields only (title, price, url, photos, …).
user is fetched from /api/v2/users/{seller_id} when available; if the user API fails, the item is still returned without user.
| Field |
Description |
id / url / title |
Item identity |
description |
Seller-written description |
price.amount / price.currency_code |
Listing price |
photos[] |
Image gallery |
attributes |
Raw sidebar attributes by code |
size_title / status / color / uploaded_at |
Promoted attribute aliases |
shipping_details |
Shipping options |
pricing_services |
Buyer protection + shipping breakdown |
plugins |
Raw plugin payloads (breadcrumbs, favourite, …) |
catalog_id / seller_id |
Internal Vinted IDs |
favourite_count |
Number of favourites |
user |
Seller profile when the user API succeeds |
| Search (API v2 catalog) |
Item (HTML page) |
photo (main image) |
photos[] gallery |
service_fee / total_item_price |
pricing_services |
user (light snapshot) |
user (full profile, optional) |
| Fixed catalog card shape |
attributes, plugins, dynamic sidebar fields |
| Code |
Cause |
400 |
Item ID could not be parsed from query |
404 |
Item not found on any tested Vinted domain |
403 |
Page blocked (anti-bot) |
- Full item URL is the fastest input: domain is taken from the URL.
- Bare numeric ID: tries
vinted.fr, vinted.com, vinted.de, vinted.es, vinted.it, vinted.pl, vinted.nl, vinted.be, and vinted.co.uk.
- Pass
region with a bare ID to skip the multi-domain lookup.
user may be absent if the seller API errors; the item payload is still returned.
- Public listing data only.
- Enrich Search results with description, attributes, shipping, and pricing breakdown
- Fetch seller profile alongside item details in one call
- Resale analytics on individual listings