A real example: 240 Shure SM7B sales
One request for used Shure SM7B microphones on ebay.com returned these numbers. It is one observed sample, collected on the date shown, the same one used in our Python guide.
Shure SM7B, used, ebay.com, collected August 30, 2026
raw page: 240 sales median $200.00
after cleanup: 207 sales median $215.00 average $227.36
low $90 high $550 middle half $175.71 to $260.00Why the median wins
The average adds every sale and divides. One $550 sale (a bundle, a mint example, a typo) lifts it for everyone. The median is the middle sale once they are sorted, so a few extremes on either side barely move it. That is why the average ($227.36) sat $12 above the median ($215) in the sample: a small group of expensive sales stretched it.
For the range to list in, use the middle half of sales: the 25th to 75th percentile, $175.71 to $260 in the sample. It shows what most buyers actually paid.
Clean before you price, or the median lies too
The median protects you from a few outliers, not from a page full of the wrong items. A search for a microphone also returns pop filters, shock mounts, cables and broken units. In the sample, 33 of the 240 rows were not the microphone, and they dragged the median from $215 down to $200, a 7.5% error. Remove accessories, parts, lots and other models first, then take the median. Across 100 products, cleanup moved 34 medians by 10% or more: see the cleaning study.
Two more traps: accepted Best Offer sales show the asking price on eBay, not what the buyer paid (see real Best Offer prices), and too few comps make any statistic shaky (see how many comps you need).
Get the cleaned median by API
Every CompSniper response includes the median, p25, p75, mean, min, max and average shipping, calculated after cleanup, and keeps the raw median so you can see what cleanup changed.
from compsniper import CompSniper # pip install compsniper
client = CompSniper()
data = client.sold("shure sm7b", count=240, itemCondition="used")
s = data["summary"]
print("price from:", s["median"]) # the middle sale
print("typical range:", s["p25"], "to", s["p75"]) # the middle half of sales
print("average (for reference):", s["mean"])
print("raw median before cleanup:", data["rawMedian"], "from", data["rawSampleCount"], "sales")Frequently asked questions
Median vs average sold price
Should I use the average or the median eBay sold price?
The median. It is the middle sale, so a few high outliers, bundles or broken units cannot drag it around. In a real 207-sale Shure SM7B sample the average was $227.36 while the median was $215: the average was pulled up by a handful of expensive sales.
Why is my eBay average sold price too low or too high?
Usually because the comps include the wrong things: accessories, parts, lots or different models pull it down, and bundles or rare variants pull it up. In the Shure SM7B sample, the raw median was $200; after removing accessories, parts and wrong models it was $215, 7.5% higher.
What price range should I list at?
Use the middle half of sales, the 25th to 75th percentile (p25 to p75). For the Shure SM7B sample that was $175.71 to $260. Price near the median to sell steadily, toward p75 for an item in better condition.
Does the CompSniper API return the median?
Yes. Every response includes median, p25, p75, mean, min, max and average shipping, calculated after the AI cleanup, plus rawMedian and rawSampleCount so you can see what cleanup changed. Set relevance=false for eBay's results exactly as listed.