{"description":"Searches Vinted (Germany) second-hand listings like the site's own catalogue: title, brand, size, condition, item price, the total including Vinted's buyer protection fee, and the item link. Optional price range and cheapest-first sorting.","effect":"read","id":"vinted.de/search-items","keywords":["vinted","second hand","gebraucht","kleidung","secondhand mode","flohmarkt","kinderkleidung","used clothes","thrift","preloved","resale fashion"],"output":{"schema":{"properties":{"currency":{"const":"EUR"},"items":{"items":{"properties":{"brand":{"type":["string","null"]},"condition":{"type":["string","null"]},"id":{"type":"string"},"price_eur":{"type":["number","null"]},"size":{"type":["string","null"]},"title":{"type":"string"},"total_eur":{"description":"Including Vinted's buyer protection fee (shipping extra)","type":["number","null"]},"url":{"format":"uri","type":"string"}},"type":"object"},"type":"array"},"query":{"type":"string"}},"required":["query","items"],"type":"object"},"value":"{query: params.query, currency: 'EUR', items: steps.catalog.items[?href != `null` && alt != `null`].{id: replace(testid, 'product-item-id-', ''), title: contains(alt, ', Marke: ') && split(alt, ', Marke: ')[0] || split(alt, ', Zustand: ')[0], brand: contains(alt, ', Marke: ') && split(split(alt, ', Marke: ')[1], ', Zustand: ')[0] || `null`, condition: contains(alt, ', Zustand: ') && split(split(alt, ', Zustand: ')[1], ', Größe: ')[0] || `null`, size: contains(alt, ', Größe: ') && split(split(alt, ', Größe: ')[1], ', ')[0] || `null`, price_eur: price_text && to_number(replace(replace(split(trim(replace(price_text, 'inkl.', '')), ' ')[0], '.', ''), ',', '.')) || `null`, total_eur: total_text && to_number(replace(replace(split(trim(replace(total_text, 'inkl.', '')), ' ')[0], '.', ''), ',', '.')) || `null`, url: join('', ['https://www.vinted.de', split(href, '?')[0]])}}"},"params":{"additionalProperties":false,"properties":{"order":{"default":"relevance","enum":["relevance","price_low_to_high"],"type":"string"},"price_from":{"description":"EUR","minimum":0,"type":"number"},"price_to":{"description":"EUR","minimum":1,"type":"number"},"query":{"description":"What to search for, e.g. 'winterjacke 122', 'nike air max 42'","maxLength":100,"minLength":2,"type":"string"}},"required":["query"],"type":"object"},"provenance":{"method":"browser-inspect","notes":"spikes/vinted.md. The JSON catalogue API (/api/v2/catalog/items) now returns a 404 page, also in-browser; the catalogue page is server-rendered with 96 product cards. Card fields come from data-testid hooks and the image alt text ('<title>, Marke: <brand>, Zustand: <condition>, Größe: <size>, <price>, <total>'); Marke is missing when the seller set no brand. Cloudflare in front; neither curl nor the in-page fetch was challenged.","recorded_at":"2026-11-07T12:22:00+01:00","recorded_by":"C4"},"requires_login":false,"schema":"https://wield.run/schema/recipe/v1.json","site":{"country":"DE","id":"vinted.de","language":"de","login_url":"https://www.vinted.de/member/signup/select_type","name":"Vinted","origin":"https://www.vinted.de","origins":["https://www.vinted.de"]},"steps":[{"description":"Server-rendered catalogue page (Next.js app router, ~3.6 MB). The old JSON API /api/v2/catalog/items now answers 404.","expect":{"content_type":"html","status":[200]},"extract":{"html_items":{"items":{"fields":{"alt":{"attr":"alt","selector":"img"},"href":{"attr":"href","selector":"a[href*=\"/items/\"]"},"price_text":{"selector":"[data-testid$=\"--price-text\"]"},"testid":{"attr":"data-testid","selector":":scope"},"total_text":{"selector":"[data-testid*=\"breakdown\"]"}},"max":96,"selector":"[data-testid^=\"product-item-id-\"]:not([data-testid*=\"--\"])"}}},"id":"catalog","parse":"html","request":{"headers":{"Accept":"text/html"},"method":"GET","query":{"currency":"EUR","order":"{{params.order}}","price_from":"{{params.price_from}}","price_to":"{{params.price_to}}","search_text":"{{params.query}}"},"url":"/catalog"}}],"task":"Search second-hand fashion and items on Vinted","tos":{"notes":"Vinted's terms prohibit scraping and automated collection of listings. One user-initiated search page at a time from the user's own browser. Buying and messaging stay on vinted.de.","reviewed":false},"verify":{"checks":["length(output.items) > `10`","length(output.items[?price_eur > `40`]) == `0`","output.items[0].total_eur >= output.items[0].price_eur","starts_with(output.items[0].url, 'https://www.vinted.de/items/')"],"example_params":{"order":"price_low_to_high","price_to":40,"query":"winterjacke"},"max_ms":6000},"version":1}