ScavioScavio
Pricing
Tools
Sign InsGet Startedg
Blog
Vinted9 min readNov 9, 2026

How to Get Vinted Listing Data Through an API: Prices With the Vinted Fee, Sold State and Seller Ratings

Scavio's Vinted API returns listings with price, Vinted fee and total, then each listing's sold state and the seller's rating and reviews, on 27 Vinted sites.

Scavio Team

Nov 9, 2026

Try the Vinted API free
scavio
Second hand / Price monitoring
Vinted

To get Vinted listing data programmatically, use Scavio's Vinted API. POST /api/v1/vinted/search with a country and a query returns 96 listings per call, each with the price, the Vinted fee, the total the buyer pays before shipping, size, condition, photos and the seller's id. Resolve brands, categories and conditions to ids with /brands, /categories and /filters first, read one listing in full (description, every photo, sold or reserved) with /product, and check the seller with /seller and /seller-feedback. Every call is 1 credit on any of the 27 Vinted sites.

Vinted's own API, Vinted Pro Integrations, is open only to allowlisted Vinted Pro businesses and manages their own items and orders, with no marketplace search. The steps below get the marketplace side as JSON with one Scavio key. Every response was captured on November 9, 2026 on vinted.co.uk, and the example is a pair of Levi's 501s in men's size W32.

Step 1: Turn names into ids

Search filters take ids, not names. Start with what shoppers type:

Bash
curl -s https://api.scavio.dev/api/v1/vinted/suggestions \
  -H "Authorization: Bearer $SCAVIO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"country": "uk", "query": "levis 5"}'

Captured data (6 of 10 suggestions trimmed):

JSON
{
  "country": "uk",
  "query": "levis 5",
  "count": 10,
  "suggestions": [
    { "text": "levi's 501 men", "type": "popular_search" },
    { "text": "levi's 511 men", "type": "popular_search" },
    { "text": "levis 502 men", "type": "popular_search" },
    { "text": "levis 501 90s", "type": "popular_search" }
  ]
}

Then the brand id:

Bash
curl -s https://api.scavio.dev/api/v1/vinted/brands \
  -H "Authorization: Bearer $SCAVIO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"country": "uk", "query": "levis"}'

Captured data (8 of 10 brands trimmed):

JSON
{
  "country": "uk",
  "query": "levis",
  "count": 10,
  "brands": [
    { "id": 10, "title": "Levi's", "slug": "levis", "url": "https://www.vinted.co.uk/brand/10-levis", "item_count": 15361045, "is_luxury": true, "requires_authenticity_check": true },
    { "id": 6413639, "title": "Levi Strauss & Co.", "slug": "levi-strauss-co", "url": "https://www.vinted.co.uk/brand/6413639-levi-strauss-co", "item_count": 784078, "is_luxury": false, "requires_authenticity_check": false }
  ]
}

Matching is fuzzy: the same answer lists Levi's Vintage Clothing, Levi's Made & Crafted and collaborations such as Supreme x Levi's. Pick the exact title. item_count is the brand's listing count on that site, 15,361,045 for Levi's, which makes /brands a quick way to size a brand. The category comes from /categories: {"country": "uk", "parent_id": 5} returned the Men tree, 189 categories, with Jeans as 257 and its four children (ripped, skinny, slim fit and straight fit).

Step 2: Get condition ids, with counts

Bash
curl -s https://api.scavio.dev/api/v1/vinted/filters \
  -H "Authorization: Bearer $SCAVIO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"country": "uk", "filter": "status", "query": "levis 501", "category_id": 257}'

Captured data (descriptions trimmed), in 0.4 seconds:

JSON
{
  "country": "uk",
  "filter": "status",
  "search_param": "status_ids",
  "query": "levis 501",
  "category_id": 257,
  "count": 5,
  "options": [
    { "id": 6, "title": "New with tags", "item_count": 9345 },
    { "id": 1, "title": "New without tags", "item_count": 10396 },
    { "id": 2, "title": "Very good", "item_count": 58028 },
    { "id": 3, "title": "Good", "item_count": 18078 },
    { "id": 4, "title": "Satisfactory", "item_count": 2271 }
  ]
}

search_param names the search parameter the ids go into. The counts are live: 98,118 listings match "levis 501" in Men > Jeans on vinted.co.uk, and 58,028 of them are in very good condition. The same endpoint takes "filter": "size", "color" or "material"; in the size list, W32 in the "Men > Men's trousers" group is id 1640. Titles come back in each site's language, while the ids are the same on every site.

Step 3: Search with the filters

Bash
curl -s https://api.scavio.dev/api/v1/vinted/search \
  -H "Authorization: Bearer $SCAVIO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"country": "uk", "query": "levis 501", "brand_ids": [10], "category_id": 257, "size_ids": [1640], "status_ids": [2], "price_to": 20, "sort": "newest_first"}'

Captured data in 3.8 seconds (94 of 96 items trimmed, and the private sellers' ids removed):

JSON
{
  "country": "uk",
  "currency": "GBP",
  "query": "levis 501",
  "page": 1,
  "per_page": 96,
  "count": 96,
  "listed_results": 960,
  "total_is_capped": true,
  "total_pages": 10,
  "has_more": true,
  "filters": {
    "query": "levis 501",
    "category_ids": [257],
    "brand_ids": [10],
    "status_ids": [2],
    "size_ids": [1640],
    "color_ids": [],
    "material_ids": [],
    "price_from": null,
    "price_to": 20,
    "currency": "GBP",
    "sort": "newest_first"
  },
  "items": [
    {
      "id": 10696569889,
      "title": "Vintage 501 Levi’s jeans",
      "url": "https://www.vinted.co.uk/items/10696569889-vintage-501-levis-jeans",
      "price": 15.14,
      "currency": "GBP",
      "price_with_discount": null,
      "service_fee": 1.46,
      "total_price": 16.6,
      "brand": "Levi's",
      "size": "W32",
      "condition": "Very good",
      "favourite_count": 4,
      "is_promoted": false,
      "image": "https://images1.vinted.net/t/05_00127_8FFMV4STEHom2HLqJMhBm6Xt/f800/b620e4e1.webp?s=b6b7444f734618afa4eceb9303b7ab8a6a752ea6",
      "thumbnail": "https://images1.vinted.net/t/05_00127_8FFMV4STEHom2HLqJMhBm6Xt/310x430/b620e4e1.webp?s=4838fc5f197fb247f9b191f9b128891f84bd1848",
      "photos": ["https://images1.vinted.net/t/05_00127_8FFMV4STEHom2HLqJMhBm6Xt/f800/b620e4e1.webp?s=b6b7444f734618afa4eceb9303b7ab8a6a752ea6"],
      "seller": { "is_business": false }
    },
    {
      "id": 10731904643,
      "title": "Levi’s 501 jeans",
      "url": "https://www.vinted.co.uk/items/10731904643-levis-501-jeans",
      "price": 7.5,
      "currency": "GBP",
      "price_with_discount": null,
      "service_fee": 1.08,
      "total_price": 8.58,
      "brand": "Levi's",
      "size": "W32",
      "condition": "Very good",
      "favourite_count": 0,
      "is_promoted": false,
      "image": "https://images1.vinted.net/t/06_011e9_gGiMUYYtUhupsD6VMfYY4QPP/f800/6f473066.webp?s=3d851400e0b0a3c889f4714ac6dff41dc3dfdaf6",
      "thumbnail": "https://images1.vinted.net/t/06_011e9_gGiMUYYtUhupsD6VMfYY4QPP/310x430/6f473066.webp?s=9b670932ec4ade6dd819ea4c0f4c1d31fd9dae1a",
      "photos": ["https://images1.vinted.net/t/06_011e9_gGiMUYYtUhupsD6VMfYY4QPP/f800/6f473066.webp?s=3d851400e0b0a3c889f4714ac6dff41dc3dfdaf6"],
      "seller": { "is_business": false }
    }
  ]
}

Read a row as: the seller asks £7.50, the Vinted fee (service_fee) is £1.08, so the buyer pays £8.58 before shipping. In 480 Levi's 501 listings we pulled that day, the fee was always £0.70 plus 5% of the price; shipping is not returned. The filters block is what Vinted applied: every id we sent is there, so the 96 rows really are W32, very good and at most £20. listed_results: 960 with total_is_capped: true means at least 960 matches, not exactly 960: Vinted serves 10 pages of 96 and no more, so narrow further to see the rest. For price research, one search per condition gives you the spread; on this query the median ask ran from £26.49 new with tags to £8.54 in satisfactory condition:

Levi's 501 men's jeans on vinted.co.uk, November 9, 2026: median asking price 26.49 pounds new with tags, 20.00 new without tags, 17.75 very good, 12.00 good and 8.54 satisfactory, from 96 listings per condition in five Scavio search calls

Step 4: Read one listing, and check whether it sold

Bash
curl -s https://api.scavio.dev/api/v1/vinted/product \
  -H "Authorization: Bearer $SCAVIO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"country": "uk", "item_id": 10017863818}'

This listing showed as £10.43 in a vinted.co.uk search. Captured data (2 of 3 photos trimmed; the seller's login, id and profile URL removed):

JSON
{
  "country": "uk",
  "id": 10017863818,
  "url": "https://www.vinted.co.uk/items/10017863818-vintage-levis-501-denim-jeans",
  "title": "Vintage Levi’s 501 denim jeans",
  "description": "Vintage Levi’s 501 \nBrand new with tags \nW28",
  "description_translated": false,
  "price": 20,
  "currency": "AUD",
  "brand": { "id": 10, "name": "Levi's" },
  "size": "W28",
  "condition": "New with tags",
  "color": "Blue",
  "material": "Cotton, Denim",
  "uploaded_relative": "7 weeks ago",
  "category": {
    "id": 1819,
    "name": "Straight fit jeans",
    "path": [
      { "id": 5, "title": "Men", "url": "https://www.vinted.co.uk/catalog/5-men" },
      { "id": 2050, "title": "Clothing", "url": "https://www.vinted.co.uk/catalog/2050-clothing" },
      { "id": 257, "title": "Jeans", "url": "https://www.vinted.co.uk/catalog/257-jeans" },
      { "id": 1819, "title": "Straight fit jeans", "url": "https://www.vinted.co.uk/catalog/1819-straight-fit-jeans" }
    ]
  },
  "photos": ["https://images1.vinted.net/t/04_007bb_W2vcNM4Rpe77PbM3qvKehaEb/f800/607f99bc.webp?s=7e64453d93ec29c8aa163b9695203754c1969a5f"],
  "favourite_count": 5,
  "is_reserved": false,
  "is_sold": false,
  "status_label": null,
  "can_buy": true,
  "instant_buy": true,
  "is_hidden": false,
  "seller": { "is_business": false, "feedback_count": 61, "feedback_reputation": 1, "badges": ["ACTIVE_LISTER"] }
}

The product price is the seller's: 20 AUD, which the UK search showed as £10.43. So listings from Australian sellers can appear on vinted.co.uk, converted to pounds; the EU sites likewise share one listing pool shown in each site's currency. Compare search prices with search prices. feedback_reputation is a 0-1 score, and uploaded_relative is Vinted's own wording, not a timestamp. The product response has no fee; take service_fee from the search row.

A listing that has sold still answers, with its last price. A TU rain coat (item_id 10560892020) came back as (other fields trimmed):

JSON
{ "price": 25, "currency": "GBP", "is_reserved": false, "is_sold": true, "status_label": "Sold", "can_buy": false, "instant_buy": false }

That is how a watcher knows to stop: re-check the item, and when is_sold or is_reserved turns true, drop it. Search never returns sold listings, so this is one item at a time, not a sales history.

Step 5: Check the seller

seller.id from a search row or product feeds three endpoints. The example is the business seller dw_clothing (65958245):

Bash
curl -s https://api.scavio.dev/api/v1/vinted/seller \
  -H "Authorization: Bearer $SCAVIO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"country": "uk", "user_id": 65958245}'

Captured data in 0.8 seconds:

JSON
{
  "country": "uk",
  "id": 65958245,
  "login": "dw_clothing",
  "profile_url": "https://www.vinted.co.uk/member/65958245-dwclothing",
  "is_business": true,
  "feedback_count": 240,
  "feedback_reputation": 1,
  "positive_feedback_count": 239,
  "neutral_feedback_count": 0,
  "negative_feedback_count": 1,
  "item_count": 16,
  "country_code": "UK",
  "country_name": "United Kingdom",
  "city": null,
  "verification": { "email": true, "facebook": false, "google": true },
  "avg_response_time": null,
  "is_on_holiday": false,
  "last_seen_date": "2026-11-09"
}

feedback_reputation: 1 sits next to one negative review, so quote the counts, not the score, when complaints matter. Then the reviews, up to 50 a page:

Bash
curl -s https://api.scavio.dev/api/v1/vinted/seller-feedback \
  -H "Authorization: Bearer $SCAVIO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"country": "uk", "user_id": 65958245, "limit": 50}'

Captured data (48 of 50 rows trimmed):

JSON
{
  "country": "uk",
  "user_id": 65958245,
  "page": 1,
  "per_page": 50,
  "total_results": 240,
  "total_pages": 5,
  "count": 50,
  "has_more": true,
  "feedback": [
    { "id": 4711451671, "rating": 5, "text": "Auto-feedback: Sale completed successfully", "created_at": "2026-11-09T09:53:49.000Z", "is_automatic": true, "seller_reply": null },
    { "id": 4705059523, "rating": 5, "text": "Excellent jacket and great seller very happy with my purchase", "created_at": "2026-11-07T22:02:28.000Z", "is_automatic": false, "seller_reply": null }
  ]
}

34 of the 50 rows were Vinted's automatic feedback, so filter on is_automatic before you summarize what buyers said; the other 16, from October 15 to November 7, were all 5 stars. Rows carry no reviewer and no item, by design. /seller-products with the same user_id and "limit": 96 returned all 16 of the shop's listings in one call, from a £28 waxed hood to a £225 Barbour Beaufort, each with the fee and total and is_sold and is_reserved flags.

Step 6: Turn the search into a new-listing alert

Python
import time
import requests

KEY = "sk_live_your_key"  # from the Scavio dashboard
BODY = {"country": "uk", "query": "levis 501", "brand_ids": [10], "category_id": 257,
        "size_ids": [1640], "status_ids": [2], "price_to": 20, "sort": "newest_first"}
seen = set()

while True:
    r = requests.post("https://api.scavio.dev/api/v1/vinted/search", json=BODY,
                      headers={"Authorization": f"Bearer {KEY}"}, timeout=60)
    for item in r.json()["data"]["items"]:
        if item["id"] not in seen:
            seen.add(item["id"])
            print(item["total_price"], item["currency"], item["title"], item["url"])
    time.sleep(300)  # one check every 5 minutes: 288 credits a day

The first run fills seen with the current 96; after that, only new listings print. Send them to Discord, Telegram or Slack instead of printing. The API returns data only: it does not buy, make offers or message sellers.

All 9 endpoints

EndpointWhat it returnsCredits
/api/v1/vinted/search96 listings a page, pages 1-10, with price, Vinted fee, total, size, condition, photos and seller id, plus the filters applied1
/api/v1/vinted/productOne listing by id or URL: description, every photo, category path, sold and reserved state, seller rating1
/api/v1/vinted/sellerA member's public profile: rating, positive, neutral and negative counts, items listed, verifications1
/api/v1/vinted/seller-productsA member's listings, up to 96 a page, with fee, total and sold and reserved flags1
/api/v1/vinted/seller-feedbackReviews, up to 50 a page, newest first, with the automatic flag and the seller's reply1
/api/v1/vinted/brandsBrand ids with listing counts and the luxury and authenticity-check flags1
/api/v1/vinted/suggestionsUp to 10 search-box suggestions in the site's language1
/api/v1/vinted/filtersSize, condition, color or material ids with live counts1
/api/v1/vinted/categoriesThe category tree in the site's language, or one subtree1

Errors are not charged: an unknown item, member or category is a 404, and a temporary failure a 502. Every endpoint takes country: fr (the default) and the other EU sites, uk, us or au. There is no sold-listing search, no shipping price and no similar-items endpoint. For a side-by-side of every Vinted option, see the best Vinted APIs; for resale comps on another marketplace, see eBay sold listings by API.

Getting started

  1. Sign up at dashboard.scavio.dev/sign-up: 50 free credits, no card required, enough for 50 Vinted calls.
  2. Copy your API key from the dashboard.
  3. Send a POST to /api/v1/vinted/search with {"country": "uk", "query": "levis 501"} and your key in the Authorization header.

Try the Vinted API free in the playground first, use the Python SDK, or call it from Claude and other agents through the MCP server.

Reference: Vinted API overview · search · product · seller · seller products · seller feedback · brands · filters · categories · suggestions

Frequently asked questions

How do I find a Vinted brand id or category id?

Call /api/v1/vinted/brands with a name: "levis" returned Levi's as brand id 10, with 15,361,045 listings on vinted.co.uk on November 9, 2026. /api/v1/vinted/categories returns the category tree with ids (Men > Clothing > Jeans is 257), and /api/v1/vinted/filters returns condition, size, color and material ids with live counts. Ids are shared across all 27 sites.

Why is a Vinted price different on the product page than in search?

Search shows every listing in the site's currency, and the product endpoint shows the seller's own. A Levi's 501 listed at £10.43 in a vinted.co.uk search came back from /product at 20 AUD, because the seller is in Australia. Use the search price to compare listings on one site.

How many results can one Vinted search return?

96 per page and 10 pages, so 960 at most. When total_is_capped is true there are more matches than that; narrow the search with a category, brand, size, condition or price range and run each slice separately.

Can I tell if a Vinted item has sold?

Yes, one item at a time. Scavio's /api/v1/vinted/product returns is_sold true, status_label "Sold" and can_buy false for a sold listing, with its last price. Search only returns listings that are still for sale, so there is no list of sold items to page through.

How much does it cost to get Vinted data with Scavio?

Every Vinted endpoint is 1 credit per call, $1 per 1,000 requests at the Growth rate of $1 per 1,000 credits. A search returns 96 listings for that 1 credit. Errors such as an unknown item (404) are not charged, and new accounts get 50 free credits with no card.

Vinted listing data as JSON

  • Search by brand, size, condition and price
  • Sold and reserved state on any listing
  • Seller ratings and reviews, 1 credit a call
Try the Vinted API free

50 free credits, no credit card

On this page

  1. Step 1: Turn names into ids
  2. Step 2: Get condition ids, with counts
  3. Step 3: Search with the filters
  4. Step 4: Read one listing, and check whether it sold

Related articles

View all
  • scavio
    Comparison / Second hand
    Vinted
    6 Best Vinted APIs in 2026: Scavio Returns 96 Listings per Call With the Vinted Fee Already Added
  • scavio
    Bots / Second hand
    Vinted
    Scraping Vinted for Listing Photos, Descriptions and Prices? Two API Calls Return All Three
ScavioScavio

One scraper API for every social, search, e-commerce and real estate platform. Built for AI agents.

Product

  • Features
  • Pricing
  • Dashboard
  • Affiliates

Developers

  • Documentation
  • API Reference
  • Quickstart
  • MCP Integration
  • Python SDK

Alternatives

  • Tavily Alternative
  • SerpAPI Alternative
  • Firecrawl Alternative
  • Exa Alternative
  • Serper Alternative
  • Tavily vs Scavio
  • SerpAPI vs Scavio
  • All alternatives
  • Compare Scavio vs alternatives

Search APIs

  • Google Search API
  • Amazon Product API
  • YouTube API
  • Reddit API
  • Walmart Product API
  • TikTok API
  • Instagram API

Tools

  • All Tools

© 2026 Scavio. All rights reserved.

Featured on TAAFT
Terms of ServicePrivacy Policy