You do not need to scrape Vinted for this. Scavio's Vinted API returns it in two calls: POST /api/v1/vinted/search with "sort": "newest_first" gives up to 96 of the newest matching listings, each with its price, the Vinted fee, the total, size, condition, a photo and its URL, and POST /api/v1/vinted/product with an item id gives that listing's full description and every photo. Run the search on a schedule, open only the ids you have not seen, and post them to Discord or Telegram. Each call is 1 credit.
The question comes from r/scrapingtheweb, where a developer wanted a bot that grabs each listing's image, description and price, and had "even tried using vinted api and it doesn't work". That last part has a simple reason: Vinted's only official API, Vinted Pro Integrations, is for allowlisted Vinted Pro businesses managing their own listings, and it has no marketplace search. The thread drew 21 comments. Several pointed to ready-made scrapers and paid APIs, and one laid out a self-built setup in six layers, with an estimate of a few hours of upkeep every month. Here is the API route, with responses captured on November 9, 2026 from vinted.co.uk.
Call 1: the newest listings, with price and photo
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": "barbour jacket"}'The search returned 96 listings in 2.9 seconds. One row, from the business seller dw_clothing, as captured:
{
"id": 10725445289,
"title": "Barbour Arlene Wax Jacket Fern/Ancient UK14 (RRP £249)",
"url": "https://www.vinted.co.uk/items/10725445289-barbour-arlene-wax-jacket-fernancient-uk14-rrp-ps249",
"price": 185,
"currency": "GBP",
"price_with_discount": null,
"service_fee": 9.95,
"total_price": 194.95,
"brand": "Barbour",
"size": "M / UK 12-14",
"condition": "Very good",
"favourite_count": 93,
"is_promoted": false,
"image": "https://images1.vinted.net/t/05_01740_Yaf4y38eimSvQ1MHLeN81C3a/f800/27c2e8b9.webp?s=c0ca59f6bff9b8c0cef2fbf6d2d8495c7481f94c",
"thumbnail": "https://images1.vinted.net/t/05_01740_Yaf4y38eimSvQ1MHLeN81C3a/310x430/27c2e8b9.webp?s=a96d9f9a441889920835d8bef4d7f405b44b2efa",
"photos": ["https://images1.vinted.net/t/05_01740_Yaf4y38eimSvQ1MHLeN81C3a/f800/27c2e8b9.webp?s=c0ca59f6bff9b8c0cef2fbf6d2d8495c7481f94c"],
"seller": { "id": 65958245, "is_business": true }
}That is two of the three things the poster wanted already: the price (£185, plus a £9.95 Vinted fee, so £194.95 to the buyer before shipping) and an image you can drop straight into an embed. A bot adds "sort": "newest_first" and its filters: brand ids from /brands, sizes and conditions from /filters, a category from /categories, and a price_to. The response echoes the filters Vinted applied, so you can see if one was ignored.
Call 2: the description and every photo
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": 10725445289}'Captured data in 4.0 seconds (8 of 10 photos and the category path trimmed):
{
"country": "uk",
"id": 10725445289,
"url": "https://www.vinted.co.uk/items/10725445289-barbour-arlene-wax-jacket-fernancient-uk14-rrp-gbp249",
"title": "Barbour Arlene Wax Jacket Fern/Ancient UK14 (RRP £249)",
"description": "Barbour Arlene waxed jacket in Fern/Ancient. Cropped fit, similar to the popular transport jackets\n\nWorn only once so condition is nearly new. Pin still in packaging\n\nSize UK14 \n\nPlease see my other Barbour items!",
"description_translated": false,
"price": 185,
"currency": "GBP",
"brand": { "id": 46805, "name": "Barbour" },
"size": "M / UK 12-14",
"condition": "Very good",
"color": "Dark green, Brown",
"material": null,
"uploaded_relative": "15 hours ago",
"category": { "id": 2528, "name": "Field & utility jackets" },
"photos": [
"https://images1.vinted.net/t/05_01740_Yaf4y38eimSvQ1MHLeN81C3a/f800/27c2e8b9.webp?s=c0ca59f6bff9b8c0cef2fbf6d2d8495c7481f94c",
"https://images1.vinted.net/t/04_025fa_GTey7J8CR13EoQgsfBJQF3Qk/f800/302b8b26.webp?s=7e9ff0155ab0d404eebc11db7434b6e3cf264228"
],
"favourite_count": 94,
"is_reserved": false,
"is_sold": false,
"status_label": null,
"can_buy": true,
"instant_buy": true,
"is_hidden": false,
"seller": { "id": 65958245, "login": "DW Clothing", "profile_url": "https://www.vinted.co.uk/member/65958245-DW%20Clothing", "is_business": true, "feedback_count": 240, "feedback_reputation": 1, "badges": ["Pro"] }
}The description is the seller's own text, and photos held all 10 images. Two details for the bot: the product price is in the seller's currency, which can differ from the site's (a £10.43 listing on vinted.co.uk came back as 20 AUD from an Australian seller), so post the search row's total_price and currency. And by the time you open a listing it may be gone: is_sold: true or is_reserved: true means skip it.
The bot
import time
import requests
KEY = "sk_live_your_key" # from the Scavio dashboard
WEBHOOK = "https://discord.com/api/webhooks/your/webhook"
API = "https://api.scavio.dev/api/v1/vinted"
HEADERS = {"Authorization": f"Bearer {KEY}"}
SEARCH = {"country": "uk", "query": "barbour jacket", "sort": "newest_first", "price_to": 120}
seen = {i["id"] for i in requests.post(f"{API}/search", json=SEARCH, headers=HEADERS, timeout=60).json()["data"]["items"]}
while True:
time.sleep(300) # one check every 5 minutes
for row in requests.post(f"{API}/search", json=SEARCH, headers=HEADERS, timeout=60).json()["data"]["items"]:
if row["id"] in seen:
continue
seen.add(row["id"])
item = requests.post(f"{API}/product", json={"country": "uk", "item_id": row["id"]},
headers=HEADERS, timeout=60).json()["data"]
if item["is_sold"] or item["is_reserved"]:
continue
requests.post(WEBHOOK, json={"embeds": [{
"title": row["title"], "url": row["url"],
"description": item["description"][:300],
"fields": [{"name": "Price", "value": f'{row["total_price"]} {row["currency"]} incl. Vinted fee'},
{"name": "Size / condition", "value": f'{row["size"]} / {row["condition"]}'}],
"image": {"url": row["image"]}}]})The first search seeds seen, so only listings that appear afterwards are posted. Cost: 288 search credits a day per saved search, plus 1 credit per new listing opened; skip the product call and post the search row alone if the title and photo are enough. A search returns at most 96 rows, so a very busy query checked rarely can miss listings between checks: check more often or narrow the filters.
What it will not do: it does not buy, reserve, make offers or message sellers, and it never signs in to Vinted. It posts alerts; a person decides. That matters on Vinted, where buyers openly resent instant-buy bots, and where Vinted's terms (in force from October 8, 2026) restrict automated tools on the site. There is also no sold-listing feed: search only shows items still for sale.
Getting started
- Sign up for 50 free credits, no card.
- Run the two calls above in the playground, then paste your key into the script.
- Change
countryto watch another Vinted site:fr,de,it,es,pl,us,auand 20 more.
Try the Vinted API free. For filters, seller checks and every endpoint step by step, read how to get Vinted listing data; for how Scavio compares with the other Vinted APIs, see the best Vinted APIs in 2026.
Reference: Vinted API overview · search · product · filters · brands
Frequently asked questions
Why doesn't the Vinted API work for my bot?
Vinted's official API, Vinted Pro Integrations, is open only to allowlisted Vinted Pro businesses and manages their own items and orders. It has no marketplace search, so it cannot return other sellers' new listings. A bot that watches the marketplace needs a third-party API such as Scavio's Vinted API, or its own scraper.
How often can a Vinted bot check for new listings?
As often as you are willing to pay for. Each Scavio search is 1 credit and returns the 96 newest matches, so a check every 5 minutes is 288 credits a day per saved search, plus 1 credit for each new listing you open for its description. Checks take a few seconds each.
Can the bot buy items or message sellers?
Not with Scavio. The API returns public listing data only: it does not sign in to Vinted, buy, make offers or send messages. Use it to alert yourself or your community, then act on Vinted yourself. Many Vinted users dislike instant-buy bots, and Vinted's terms restrict automated tools on the site.
Does it work outside the UK?
Yes. The same calls take a country parameter for all 27 Vinted sites, including France, Germany, Italy, Spain, Poland, the US and Australia. Prices come back in each site's currency and condition labels in its language.