AI Listing Tools: Price From Sold Comps, Not Asking Prices

AI listing tools should price from recent sold listings, not active ones. Active listings are asking prices, and many never sell, so a price built on them runs high and the item sits. Add a pricing step: after the AI identifies the item, search sold listings for that exact item and condition, use the median of clean sales, and show the user the sales behind it. Never let the model invent a price when the lookup fails.
A new-in-box Game Boy Color with a suggested price of $54.99 next to a median sold price of $142 for new copies with no lots

AI listing tools are good at the writing: a title with the right keywords, item specifics, a clean description from a few photos. Pricing is where they slip. Many either guess, or look at what similar items are listed for. Both run high.

Why active listings mislead

An active listing is a seller's hope. The ones priced too high don't sell, so they stay listed, so they're overrepresented in any search of active listings. Price from them and your user's item sits next to them, unsold.

Sold listings flip that: every row is a price a buyer actually paid. Builders who started with active-listing data learned this the hard way; one noted their tool was "only showing list comps."

Where pricing goes in the pipeline

  1. Identify (the AI's job): brand, model, size, variant, condition.
  2. Build a precise query from those fields, not the full generated title.
  3. Look up sold prices for that query and condition.
  4. Suggest a price from the median, with the range and sale count.
  5. Write the listing with that price.

Step 2 matters. A generated title is stuffed with keywords ("Vintage Retro Rare Nintendo 64 N64 Console Bundle Gift"). Search with the identifying parts only: nintendo 64 console.

The pricing step

import requests

def suggest_price(query: str, condition: str) -> dict:
    r = requests.get(
        "https://api.soldcomps.io/v1/sold",
        params={"q": query, "condition": condition},
        headers={"Authorization": f"Bearer {KEY}"},
        timeout=30,
    )
    if r.status_code != 200:
        return {"status": "unavailable"}          # the model must not invent a price
    d = r.json()
    clean = d["count"] - d["stats"]["excluded"]
    if clean < 5:
        return {"status": "thin", "sales": clean, "median": d["stats"]["median"]}
    return {"status": "ok", "median": d["stats"]["median"], "range": [d["stats"]["p25"], d["stats"]["p75"]], "sales": clean}

Feed the result to the model as data, and instruct it to use median as the price and to say "no reliable price" for thin or unavailable.

Guardrails that keep users' trust

  • Show the evidence. "Suggested $118 · median of 41 sales in 90 days." Experienced resellers won't trust a bare number. One wrote that AI "cannot determine variables in listings."
  • Match condition. New-in-box and used are different markets. eBay's own suggestion gets this wrong often. Examples.
  • Fail loudly. If the lookup fails, say so. Don't let the model fill the gap.
  • Let users pick the strategy: list at the median, or at the upper-middle (p75) for a slower, higher sale.

Using an AI agent instead of a fixed pipeline? See giving Claude or ChatGPT real eBay sold prices.

Frequently asked questions

How do AI listing tools decide on a price?

Many use active eBay listings or the model's own guess. Better tools look up recent sold listings for the identified item and use the median sold price.

Why are AI-suggested eBay prices often too high?

Active listings are asking prices, and the ones that don't sell stay listed, so they're overrepresented. Sold listings show what buyers actually paid.

Can an AI agent look up eBay sold prices?

Yes, through a tool or function call to a sold-listings API. Make the tool return explicit errors so the model can't fill in a made-up price when the lookup fails.

Sources

  1. r/eBaySellers: Why does eBay suggest a pre-owned price for a new-in-box item? (Sep 2026) (accessed Oct 23, 2026)
  2. r/reselling: AI can't determine variables in listings (Aug 2026) (accessed Oct 23, 2026)

SaleHistory sells an eBay sold-listings API, so we have a commercial interest in this topic. We link primary sources so you can check our work. Spotted something out of date? Email hello@soldcomps.io.