{"description":"Searches eBay.fr like its search page: title, price in euros (or range, plus the crossed-out price), bids, time left and end for auctions, Buy It Now price, best-offer flag, shipping cost, where the item ships from, number sold, condition, private or business seller, positive feedback and rating count, Top Rated, image and link. Filters: price, condition, auction or Buy It Now, free shipping, France only, sort. Sponsored listings are dropped by default.","effect":"read","id":"ebay.fr/search-listings","keywords":["ebay","ebay.fr","acheter","occasion","enchères","achat immédiat","faire une offre","bonnes affaires","second hand","auction","buy it now","used","marketplace","france"],"output":{"schema":{"properties":{"listings":{"items":{"properties":{"auction":{"type":"boolean"},"best_offer":{"type":"boolean"},"bids":{"type":["integer","null"]},"buy_it_now_price_eur":{"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"},"price_eur":{"description":"Current price; the lower end for a price range","type":["number","null"]},"price_max_eur":{"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"]},"seller_type":{"enum":["private","business",null],"type":["string","null"]},"shipping_eur":{"description":"0 for free shipping; null when not specified for the viewer's location","type":["number","null"]},"ships_from":{"description":"Country the item ships from, when not France","type":["string","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_eur":{"description":"Crossed-out previous price","type":["number","null"]}},"type":"object"},"type":"array"},"page":{"type":"integer"},"query":{"type":"string"},"total":{"description":"eBay's result count","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(replace(replace(split(replace(replace($s.count_text, ' ', ' '), ' ', ' '), ' r')[0], ' ', ''), '.', ''), ',', ''), '+', ''))) || `null`, page: params.page || `1`, listings: map(&(let $c = @, $rows = [r2, r3, r4, r5, r6, r7][?@ != `null`], $st = seller_text || '', $cond = condition || '' in let $ship = ($rows[?contains(@, 'ivraison')] | [0]) || '', $loc = ($rows[?starts_with(@, 'de ')] | [0]), $sold = ($rows[?ends_with(@, ' vendus')] | [0]), $rt = $st && contains($st, '(') && split(split($st, '(')[-1], ')')[0] || '' in {id: $c.id, title: $c.title, price_eur: $c.price_low && to_number(replace(replace(replace(replace(replace(replace($c.price_low, ' ', ' '), ' ', ' '), 'EUR', ''), ' ', ''), '.', ''), ',', '.')) || `null`, price_max_eur: $c.price_high && to_number(replace(replace(replace(replace(replace(replace($c.price_high, ' ', ' '), ' ', ' '), 'EUR', ''), ' ', ''), '.', ''), ',', '.')) || `null`, was_price_eur: $c.was_price && to_number(replace(replace(replace(replace(replace(replace($c.was_price, ' ', ' '), ' ', ' '), 'EUR', ''), ' ', ''), '.', ''), ',', '.')) || `null`, price_text: $c.price_high && join(' – ', [$c.price_low, $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_eur: $c.bin_price_text && to_number(replace(replace(replace(replace(replace(replace($c.bin_price_text, ' ', ' '), ' ', ' '), 'EUR', ''), ' ', ''), '.', ''), ',', '.')) || `null`, best_offer: length($rows[?contains(@, 'offre')]) > `0`, shipping_eur: (contains($ship, 'gratuit') && `0`) || (contains($ship, '+') && to_number(replace(replace(replace(replace(replace(replace(split(trim(replace(replace(replace(split($ship, '+')[1], ' ', ' '), ' ', ' '), 'EUR ', '')), ' ')[0], ' ', ' '), ' ', ' '), 'EUR', ''), ' ', ''), '.', ''), ',', '.'))) || `null`, ships_from: $loc && replace($loc, 'de ', '') || `null`, sold: $sold && to_number(replace(replace(replace(split(replace(replace($sold, ' ', ' '), ' ', ' '), ' ')[0], '+', ''), '.', ''), ',', '')) || `null`, condition: $cond && trim(split($cond, '|')[0]) || `null`, seller_type: (contains($cond, 'Particulier') && 'private') || (contains($cond, 'Pro') && 'business') || `null`, seller: $st && split(trim($st), ' ')[0] || `null`, seller_positive_pct: $st && contains($st, '%') && to_number(replace(split(trim(split($st, '%')[0]), ' ')[-1], ',', '.')) || `null`, seller_ratings: ($rt && ends_with($rt, 'K') && floor(to_number(replace(replace($rt, 'K', ''), ',', '.')) * `1000` + `0.5`)) || ($rt && ends_with($rt, 'M') && floor(to_number(replace(replace($rt, 'M', ''), ',', '.')) * `1000000` + `0.5`)) || ($rt && to_number(replace(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.fr/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,"type":"boolean"},"include_sponsored":{"default":false,"description":"Keep sponsored listings (marked sponsored)","type":"boolean"},"max_price":{"description":"Maximum price in EUR","minimum":0,"type":"number"},"min_price":{"description":"Minimum price in EUR","minimum":0,"type":"number"},"national_only":{"default":false,"description":"Only items located in France","type":"boolean"},"page":{"default":1,"maximum":20,"minimum":1,"type":"integer"},"query":{"description":"Mots-clés, e.g. 'iphone 13 128gb', 'lego 75192'","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"}},"required":["query"],"type":"object"},"provenance":{"method":"browser-inspect","notes":"Same search page, cards and URL filters as ebay.com/search-listings and ebay.de/search-listings (LH_PrefLoc=1 for items in France). Euro prices with a decimal comma ('259,57 EUR' or 'EUR 200,00'); the last card subtitle is '<condition> | <private or business seller>'; attribute rows (format, shipping, ships-from, sold) are matched by their fr wording (ivraison, 'de <country>', 'offre', 'vendus'). Seller rating counts use K with a decimal comma (8,1K). Sponsored: the footer's aria-labelledby ids that point to the accessible 'sponsored' label. eBay answers servers with 403, so this runs in the user's browser. v2 (2026-11-07 22:38): tos.notes only; requests and output unchanged.","recorded_at":"2026-11-07T22:13:00+01:00","recorded_by":"C4"},"requires_login":false,"schema":"https://wield.run/schema/recipe/v1.json","site":{"country":"FR","id":"ebay.fr","language":"fr","login_url":"https://signin.ebay.fr/ws/eBayISAPI.dll?SignIn","name":"eBay","origin":"https://www.ebay.fr","origins":["https://www.ebay.fr"]},"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.national_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 France listings with price, bids, shipping and seller","tos":{"notes":"eBay.fr's robots.txt disallows AI crawlers (ClaudeBot, anthropic-ai), 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_eur > `0`]) == length(output.listings)","length(output.listings[?price_eur > `300`]) == `0`","length(output.listings[?sponsored]) == `0`","length(output.listings[?condition != `null`]) == length(output.listings)","length(output.listings[?starts_with(url, 'https://www.ebay.fr/itm/')]) == length(output.listings)","output.total > `50`"],"example_params":{"condition":"used","max_price":300,"query":"iphone 13 128gb"},"max_ms":6000},"version":2}