{"description":"Searches eBay.co.uk like its search page: title, price in pounds (or range, plus the crossed-out price), bids, time left and end for auctions, Buy It Now price, Best Offer, postage cost, where the item is posted from, number sold, condition, seller with positive feedback and rating count, Top Rated, image and link. Filters: price, condition, auction or Buy It Now, free postage, UK-only, sort. Sponsored listings are dropped by default.","effect":"read","id":"ebay.co.uk/search-listings","keywords":["ebay","ebay uk","buy","used","pre-owned","auction","buy it now","best offer","deals","second hand","marketplace","listings","refurbished","cheap","uk"],"output":{"schema":{"properties":{"listings":{"items":{"properties":{"auction":{"type":"boolean"},"best_offer":{"type":"boolean"},"bids":{"type":["integer","null"]},"buy_it_now_price_gbp":{"description":"Buy It Now price next to an auction","type":["number","null"]},"condition":{"description":"e.g. 'Pre-Owned', 'Brand New', 'Excellent - Refurbished'","type":["string","null"]},"ends_text":{"description":"When the auction ends, as eBay shows it in the viewer's time zone, e.g. 'Mon, 07:35 PM'","type":["string","null"]},"id":{"type":"string"},"image":{"type":["string","null"]},"new_listing":{"type":"boolean"},"postage_gbp":{"description":"0 for free postage; null when not specified for the viewer's location","type":["number","null"]},"posted_from":{"description":"Country the item is posted from, when not the UK (eBay shows 'from China')","type":["string","null"]},"price_gbp":{"description":"Current price; the lower end for a price range. Null when eBay shows another currency","type":["number","null"]},"price_max_gbp":{"description":"Upper end when the listing has variants","type":["number","null"]},"price_text":{"type":["string","null"]},"seller":{"type":["string","null"]},"seller_positive_pct":{"type":["number","null"]},"seller_ratings":{"type":["integer","null"]},"sold":{"description":"Sold count shown on the card (a lower bound for '1K+ sold')","type":["integer","null"]},"sponsored":{"type":"boolean"},"time_left":{"description":"e.g. '1d 22h left'","type":["string","null"]},"title":{"type":"string"},"top_rated":{"type":"boolean"},"url":{"type":"string"},"was_price_gbp":{"description":"Crossed-out previous price","type":["number","null"]}},"type":"object"},"type":"array"},"page":{"type":"integer"},"query":{"type":"string"},"total":{"description":"eBay's result count (shown as '3,000+', so a lower bound)","type":["integer","null"]}},"required":["query","listings"],"type":"object"},"value":"let $s = steps.search[0], $ads = steps.search[0].ad_label_ids || `[]`, $keep_ads = params.include_sponsored == `true` in {query: params.query, total: ($s.count_text && to_number(replace(replace(split($s.count_text, ' ')[0], ',', ''), '+', ''))) || `null`, page: params.page || `1`, listings: map(&(let $c = @, $rows = [r2, r3, r4, r5, r6, r7][?@ != `null`], $st = seller_text || '' in let $ship = ($rows[?contains(@, 'delivery') || contains(@, 'ostage') || contains(@, 'hipping')] | [0]) || '', $loc = ($rows[?starts_with(@, 'from ')] | [0]), $sold = ($rows[?ends_with(@, ' sold')] | [0]), $rt = $st && contains($st, '(') && split(split($st, '(')[1], ')')[0] || '' in {id: $c.id, title: $c.title, price_gbp: $c.price_low && starts_with($c.price_low, '£') && to_number(replace(replace($c.price_low, '£', ''), ',', '')) || `null`, price_max_gbp: $c.price_high && starts_with($c.price_high, '£') && to_number(replace(replace($c.price_high, '£', ''), ',', '')) || `null`, was_price_gbp: $c.was_price && starts_with($c.was_price, '£') && to_number(replace(replace($c.was_price, '£', ''), ',', '')) || `null`, price_text: $c.price_high && join('', [$c.price_low, ' to ', $c.price_high]) || $c.price_low || `null`, auction: $c.bids_text != `null`, bids: $c.bids_text && to_number(split($c.bids_text, ' ')[0]) || ($c.bids_text && `0`) || `null`, time_left: $c.time_left || `null`, ends_text: $c.time_end && replace(replace($c.time_end, '(', ''), ')', '') || `null`, buy_it_now_price_gbp: $c.bin_price_text && starts_with($c.bin_price_text, '£') && to_number(replace(replace($c.bin_price_text, '£', ''), ',', '')) || `null`, best_offer: length($rows[?contains(@, 'Best Offer')]) > `0`, postage_gbp: (contains($ship, 'Free') && `0`) || (contains($ship, '+£') && to_number(replace(split(split($ship, '+£')[1], ' ')[0], ',', ''))) || `null`, posted_from: $loc && replace($loc, 'from ', '') || `null`, sold: $sold && to_number(replace(replace(replace(replace(split($sold, ' ')[0], '+', ''), ',', ''), 'K', '000'), '.', '')) || `null`, condition: $c.condition || `null`, seller: $st && split(trim($st), ' ')[0] || `null`, seller_positive_pct: $st && contains($st, '% positive') && to_number(split(trim(split($st, '% positive')[0]), ' ')[-1]) || `null`, seller_ratings: ($rt && ends_with($rt, 'K') && floor(to_number(replace($rt, 'K', '')) * `1000` + `0.5`)) || ($rt && ends_with($rt, 'M') && floor(to_number(replace($rt, 'M', '')) * `1000000` + `0.5`)) || ($rt && to_number(replace($rt, ',', ''))) || `null`, top_rated: $c.top_rated != `null`, new_listing: $c.new_listing != `null`, sponsored: length(split($c.ad_ids || '', ' ')[?contains($ads, @)]) > `0`, image: $c.image, url: join('', ['https://www.ebay.co.uk/itm/', $c.id])}), $s.items[?id != `null` && title != `null`] || `[]`)[?$keep_ads || !(sponsored)]}"},"params":{"additionalProperties":false,"properties":{"condition":{"default":"any","enum":["any","new","used"],"type":"string"},"format":{"default":"any","description":"Auctions only, Buy It Now only, or both","enum":["any","auction","buy_it_now"],"type":"string"},"free_shipping":{"default":false,"description":"Free postage only","type":"boolean"},"include_sponsored":{"default":false,"description":"Keep sponsored listings (marked sponsored)","type":"boolean"},"max_price":{"description":"Maximum price in GBP","minimum":0,"type":"number"},"min_price":{"description":"Minimum price in GBP","minimum":0,"type":"number"},"page":{"default":1,"maximum":20,"minimum":1,"type":"integer"},"query":{"description":"Search words, e.g. 'iphone 13 128gb', 'lego 75192', 'road bike 56cm'","maxLength":120,"minLength":2,"type":"string"},"sort":{"default":"best_match","description":"price_low/price_high include shipping","enum":["best_match","price_low","price_high","newest","ending_soonest"],"type":"string"},"uk_only":{"default":false,"description":"Only items located in the UK","type":"boolean"}},"required":["query"],"type":"object"},"provenance":{"method":"browser-inspect","notes":"eBay answers servers with 403 (bot protection), so this runs only in the user's browser. Same search page and URL filters as ebay.com/search-listings and ebay.de/search-listings (GET /sch/i.html: _sop sort codes 12/15/16/10/1, _udlo/_udhi price, LH_ItemCondition 1000/3000, LH_Auction, LH_BIN, LH_FS, LH_PrefLoc=1 for UK-only items, _pgn, _ipg). Cards are li.s-card[data-listingid]. The condition is the last .s-card__subtitle-row of the card header (the row before it, when present, lists product specs; product star ratings may follow it). Auction cards often show no seller block. Attribute rows (format, shipping, location, sold) are read one by one by position and matched by their text. Seller rating counts use K/M suffixes (42.4K). Sponsored: the footer's aria-labelledby ids that point to an element reading 'Sponsored'. UK wording: '+£3.99 delivery', 'Free international postage', 'Postage not specified' (→ null), 'Free returns' is not postage; items from abroad show 'from China'. Prices are in pounds, also for visitors from abroad. v2 (2026-11-07 22:38): tos.notes only; requests and output unchanged.","recorded_at":"2026-11-07T22:02:00+01:00","recorded_by":"C4"},"requires_login":false,"schema":"https://wield.run/schema/recipe/v1.json","site":{"country":"GB","id":"ebay.co.uk","language":"en","login_url":"https://signin.ebay.co.uk/ws/eBayISAPI.dll?SignIn","name":"eBay","origin":"https://www.ebay.co.uk","origins":["https://www.ebay.co.uk"]},"steps":[{"description":"The search results page (server-rendered cards). The one-item foreach maps the filter params to eBay's URL codes. Sponsored listings are identified by their accessible label: each card's footer has aria-labelledby ids, and the ids whose element reads 'Sponsored' (in a container directly under <body>) mark it as an ad; the visible label is an obfuscated image. The attribute rows are read one by one because their text runs together.","expect":{"assert":"contains(body, 'srp-results') || contains(body, 'srp-save-null-search')","content_type":"html","status":[200]},"extract":{"html":{"ad_label_ids":{"all":true,"attr":"id","selector":"body > div > div[id^='s-']:not(:empty)"},"count_text":{"selector":".srp-controls__count-heading"}},"html_items":{"items":{"fields":{"ad_ids":{"attr":"aria-labelledby","selector":".s-card__footer [aria-labelledby]"},"bids_text":{"selector":".s-card__attribute-row:has(.s-card__time)"},"bin_price_text":{"selector":".s-card__attribute-row:has(.s-card__time) ~ .s-card__attribute-row .s-card__price"},"condition":{"selector":".su-card-container__header > .s-card__subtitle-row:not(:has(~ .s-card__subtitle-row)) .s-card__subtitle"},"id":{"attr":"data-listingid","selector":":scope"},"image":{"attr":"src","selector":"img.s-card__image"},"new_listing":{"selector":".s-card__title .s-card__new-listing"},"price_high":{"selector":".su-card-container__attributes__primary > .s-card__attribute-row:first-child .s-card__price + .s-card__price + .s-card__price"},"price_low":{"selector":".su-card-container__attributes__primary > .s-card__attribute-row:first-child .s-card__price"},"r2":{"selector":".su-card-container__attributes__primary > .s-card__attribute-row:nth-child(2)"},"r3":{"selector":".su-card-container__attributes__primary > .s-card__attribute-row:nth-child(3)"},"r4":{"selector":".su-card-container__attributes__primary > .s-card__attribute-row:nth-child(4)"},"r5":{"selector":".su-card-container__attributes__primary > .s-card__attribute-row:nth-child(5)"},"r6":{"selector":".su-card-container__attributes__primary > .s-card__attribute-row:nth-child(6)"},"r7":{"selector":".su-card-container__attributes__primary > .s-card__attribute-row:nth-child(7)"},"seller_text":{"selector":".su-card-container__attributes__secondary .s-card__attribute-row:not(:has(.su-icon))"},"time_end":{"selector":".s-card__time-end"},"time_left":{"selector":".s-card__time-left"},"title":{"selector":".s-card__title .su-styled-text.primary"},"top_rated":{"selector":".su-card-container__attributes__secondary .su-icon--legacy-top-rated-seller"},"was_price":{"selector":".su-card-container__attributes__primary > .s-card__attribute-row:first-child .strikethrough"}},"max":60,"selector":"ul.srp-results > li.s-card[data-listingid]"}}},"foreach":{"as":"f","in":"[{sop: (params.sort == 'price_low' && `15`) || (params.sort == 'price_high' && `16`) || (params.sort == 'newest' && `10`) || (params.sort == 'ending_soonest' && `1`) || `12`, cond: (params.condition == 'new' && '1000') || (params.condition == 'used' && '3000') || `null`, auction: params.format == 'auction' && '1' || `null`, bin: params.format == 'buy_it_now' && '1' || `null`, fs: params.free_shipping == `true` && '1' || `null`, loc: params.uk_only == `true` && '1' || `null`}]","max":1},"id":"search","request":{"headers":{"Accept":"text/html"},"method":"GET","query":{"LH_Auction":"{{f.auction}}","LH_BIN":"{{f.bin}}","LH_FS":"{{f.fs}}","LH_ItemCondition":"{{f.cond}}","LH_PrefLoc":"{{f.loc}}","_ipg":"60","_nkw":"{{params.query}}","_pgn":"{{params.page}}","_sop":"{{f.sop}}","_udhi":"{{params.max_price}}","_udlo":"{{params.min_price}}"},"url":"/sch/i.html"}}],"task":"Search eBay UK listings with price, bids, postage and seller","tos":{"notes":"eBay.co.uk's robots.txt disallows Claude-User (AI agents acting for users) on search URLs and Anthropic's crawlers site-wide, and eBay's user agreement restricts automated access and scraping without permission. Wield runs it only when the user asks, in the user's own browser, one search page per call: no bulk collection, no bidding or buying.","reviewed":false},"verify":{"checks":["length(output.listings) > `5`","length(output.listings[?price_gbp > `0`]) == length(output.listings)","length(output.listings[?price_gbp > `300`]) == `0`","length(output.listings[?sponsored]) == `0`","length(output.listings[?starts_with(url, 'https://www.ebay.co.uk/itm/')]) == length(output.listings)","output.total > `100`"],"example_params":{"condition":"used","max_price":300,"query":"iphone 13 128gb"},"max_ms":6000},"version":2}