Sign inTry it

Search eBay Italy listings with price, bids, shipping and seller.

Searches eBay.it 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, Italy only, sort. Sponsored listings are dropped by default.

No reports yetRead-only, no login
Site
eBay, Italy
Version
v2 of 2
Runs, last 7 days
No reports yet
sha256
e565fca6980d…

Run it with your agent

after installing Wield

Ask in plain words. Your agent finds this recipe and calls it:

“Search eBay Italy listings with price, bids, shipping and seller.”

Read-only: it changes nothing on the site. No login needed.

{
  "tool": "run",
  "arguments": {
    "recipe_id": "ebay.it/search-listings",
    "params": {
      "condition": "used",
      "max_price": 300,
      "query": "iphone 13 128gb"
    }
  }
}

Requests

sent from your browser, in order
  1. 1GET/sch/i.html?LH_Auction&LH_BIN&LH_FS&LH_ItemCondition&LH_PrefLoc&_ipg&_nkw&_pgn&_sop&_udhi&_udloThe 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.repeats, max 1

Parameters

from your agent
conditionenum "any" | "new" | "used" = "any"
formatenumAuctions only, Buy It Now only, or both "any" | "auction" | "buy_it_now" = "any"
free_shippingboolean = false
include_sponsoredbooleanKeep sponsored listings (marked sponsored) = false
max_pricenumberMaximum price in EUR
min_pricenumberMinimum price in EUR
national_onlybooleanOnly items located in Italy = false
pageinteger = 1
querystringrequiredParole chiave, e.g. 'iphone 13 128gb', 'lego 75192'
sortenumprice_low/price_high include shipping "best_match" | "price_low" | "price_high" | "newest" | "ending_soonest" = "best_match"

Returns

to your agent
listingsobject[]auction, best_offer, bids, buy_it_now_price_eur, condition, ends_text, id, image, new_listing, price_eur, price_max_eur, price_text, seller, seller_positive_pct, seller_ratings, seller_type, shipping_eur, ships_from, sold, sponsored, time_left, title, top_rated, url, was_price_eur
pageinteger
querystring
totalintegereBay's result count

Where it can send

  • www.ebay.it

Anything else is blocked by the extension.

Reads from your session

Nothing. Your browser attaches the site's cookies by itself.

Used only in requests to the addresses on the left. Never sent to wield.run or your agent.

Checks

a run passes when
  • 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.it/itm/')]) == length(output.listings)
  • output.total > `50`

Raw recipe

Served as canonical JSON from /api/v1/recipes/ebay.it/search-listings, so its sha256 matches the ETag and the index.

Check it yourself
curl -s https://wield.run/api/v1/recipes/ebay.it/search-listings | shasum -a 256
# e565fca6980d4d62cd131fef2c7003e5e7347ca42fbe2eae4037494fcb6c0376
ebay.it/search-listings.json, v2
{
  "description": "Searches eBay.it 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, Italy only, sort. Sponsored listings are dropped by default.",
  "effect": "read",
  "id": "ebay.it/search-listings",
  "keywords": [
    "ebay",
    "ebay.it",
    "comprare",
    "usato",
    "asta",
    "compralo subito",
    "proposta d'acquisto",
    "offerte",
    "second hand",
    "auction",
    "buy it now",
    "used",
    "marketplace",
    "italy"
  ],
  "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 Italy",
                "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(@, 'onsegna') || contains(@, 'pedizione')] | [0]) || '', $loc = ($rows[?starts_with(@, 'da ')] | [0]), $sold = ($rows[?ends_with(@, ' venduti')] | [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(@, 'Proposta')]) > `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, 'da ', '') || `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, 'privato') && 'private') || (contains($cond, 'professionale') && '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.it/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 Italy",
        "type": "boolean"
      },
      "page": {
        "default": 1,
        "maximum": 20,
        "minimum": 1,
        "type": "integer"
      },
      "query": {
        "description": "Parole chiave, 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 Italy). 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 it wording (onsegna/pedizione, 'da <country>', 'Proposta', 'venduti'). 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": "IT",
    "id": "ebay.it",
    "language": "it",
    "login_url": "https://signin.ebay.it/ws/eBayISAPI.dll?SignIn",
    "name": "eBay",
    "origin": "https://www.ebay.it",
    "origins": [
      "https://www.ebay.it"
    ]
  },
  "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 Italy listings with price, bids, shipping and seller",
  "tos": {
    "notes": "eBay.it'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.it/itm/')]) == length(output.listings)",
      "output.total > `50`"
    ],
    "example_params": {
      "condition": "used",
      "max_price": 300,
      "query": "iphone 13 128gb"
    },
    "max_ms": 6000
  },
  "version": 2
}