eBay Sold Listings Comps AI: Price Checker & Max Buy Price
Pricing
from $5.00 / 1,000 clean comp (rules only)s
eBay Sold Listings Comps AI: Price Checker & Max Buy Price
First 25 comps free. eBay sold listings cleaned into exact-match comps: for-parts, lots, accessories and outliers removed, AI-matched to your item, plus the median and max buy price. Pay per clean comp, junk never charged. Free demo on any plan; live search runs on your own Apify account.
Pricing
from $5.00 / 1,000 clean comp (rules only)s
Rating
0.0
(0)
Developer
Rich Minds
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
5 days ago
Last modified
Categories
Share
Clean eBay sold comps and a max buy price for your exact item, every week.
⚡ First 25 comps free · 💵 $0.005 per clean comp · 🤖 $0.01 with the AI match check · ⏱️ demo in seconds

Try it in 30 seconds. Click Try it — the form is pre-filled with 16 sample sold listings of a Nintendo Switch OLED. Your first 25 clean comps are free, and junk sales are never charged. → What a run costs · What the AI adds · Run it weekly
⚡ At a glance
| What you get | eBay sold comps that match your exact item + a price report: median, band, sales per day, trend, list and max buy price |
| You provide | the item as a keyword, e.g. iphone 13 pro 128gb (1–6 per run) |
| Typical run | 100 sold rows → ≈ 56 clean comps, ≈ 2 min (estimate — the demo keeps 9 of 16) |
| Cost of that run | $0.68 rules only ($0.40 source + 56 × $0.005) · $0.95 with the AI check (42 AI-checked × $0.01, ≈ $0.06 tokens) |
| Keys / setup | No API key where your Apify plan includes model access — otherwise your own Gemini / Groq key (llmProvider: byok) |
| Free tier | first 25 clean comps per account |
| Works with | Schedules, e-mail digest, webhooks, Google Sheets, Slack, Make / n8n / Zapier, MCP & AI agents |
🎯 What this Actor does
It runs eBay Sold Listings Search (caffein.dev/ebay-sold-listings) on your account, drops every sale that would
skew your comps and prices the cleaned rest — resale price research without the spreadsheet:
- Junk out before the math — "for parts", "box only", cases and other accessories, "lot of 3", replicas: removed in 5 languages across the 8 eBay sites, never charged.
- Your exact item, not its cousin — the 13 Pro Max stays out of 13 Pro comps, 256 GB out of 128 GB, a PSA 9 out of PSA 10 card comps; the AI checks borderline sales against your own words.
- Honest prices — Best-Offer rows carry eBay's asking price, so they stay out of the median; so do price ranges, other currencies and outliers.
- Only new sales on re-runs — cross-run memory; the report still uses every clean sale.
📉 The price report — eBay comps summed up per keyword
PRICE_REPORT — free with 10+ comps of the keyword in the run, else $0.03 per report; the demo run's record, whole:
{"generatedAt": "2026-09-27T08:00:00+00:00", "demo": true, "reports": [{"keyword": "nintendo switch oled", "stats": {"n": 8, "median": 232.0}, "byCondition": {"used": {"median": 219.0}},"byGrade": null, "salesPerDay": 0.3, "trendPct": 4.3, "suggestedListPrice": 224.0, "maxBuyPrice": 194.32,"confidence": "C", "chargedEvent": null}]}
maxBuyPrice = list price × (1 − feeRatePct) − shippingCost − targetProfit, in the site's currency
(resaleMath.currency) — your bid limit. Graded cards get byGrade: PSA 10, PSA 9 and raw never share a median.
🚀 How to use it
- Click
Try it— the form runs the free demo on 16 sample sold listings; it works as is. - Type your item into
keywords(e.g.iphone 13 pro 128gb) — that switches the source to the live eBay search on your account. Describe it initemDescription, leaveenableAion: your first 25 comps show the AI check free. - Press Start — best matches first; the status says the median.
- Schedule it weekly (Actions → Schedule) with your address in
notifyEmail— only new sales are charged.

📚 Learn more: Step-by-step tutorial — ebay sold comps without the junk
🆚 Why this instead of an eBay Sold Listings Scraper?
eBay Sold Listings Search (caffein.dev/ebay-sold-listings) | This Actor | |
|---|---|---|
| Price | $0.004 per row + $0.00005 start · 729 users / 30 days | $0.005 per clean comp ($0.01 AI-checked), first 25 free |
| What you pay for | every sold row, parts and lots included | clean comps only — junk and repeats cost $0 |
| Same 100 comps, all in | $0.72 for ≈ 180 unsorted rows + your spreadsheet hour | 100 matched comps + report: $0.50 here + $0.72 source you pay either way = $1.22 rules only · ≈ $1.71 with the AI check · junk costs $0 |
| Statistics | none; Best-Offer asking prices count as sales | median, band, trend, list and max buy price |
The direct eBay comps rivals (Store, 2026-09-27) — 100 clean comps, like for like (≈ 180 raw rows):
| Actor | Users / 30 d | Fail | Pricing | 100 clean comps, all in |
|---|---|---|---|---|
| This Actor (eBay Sold Listings Comps AI) | new | 0 % | $0.005 / clean comp, $0.01 AI-checked, 25 free | $1.22 rules · $1.71 AI (source included) |
midwest_united/ebay-sold-comps | 3 | 6.5 % | $0.02 / comp + $0.10 / report | $2.10 |
marielise.dev/ebay-sold-listings-intelligence | 13 | 2.0 % | $0.025 per row | $2.50 |
xtracto/ebay-sold-comps-scraper | 5 | 5.1 % | $0.03 per row + $0.005 start | $3.01 |
khadinakbar/ebay-sold-comps-analytics-scraper | 3 | 8.7 % | $0.005 / raw item + $0.05 / report | $0.95 for 180 raw rows + your cleanup |
memo23/ebay-search-scraper-ppe | 221 | 2.0 % | $0.005 / raw row + $0.02 summary + $0.02 start | $0.94 for 180 raw rows + your cleanup |
💸 A Terapeak alternative and a ZIK Analytics alternative
| Tool | Cost | Lacks | Where it wins |
|---|---|---|---|
| Terapeak (eBay Seller Hub) | free | API, schedule, alerts, lot / variant cleanup, max buy price — one manual search at a time | 3 years of eBay data, active-listing counts |
| 130point | free | the same, and no median | accepted Best-Offer prices (cards) — eBay's sold data shows the asking price |
| ZIK Analytics PRO | $39.9 / month (pricing, checked 2026-09-27) | a seat, manual lookups | product research beyond comps |
A weekly 5-item watchlist here: ≈ $7 / month rules only, ≈ $10 with the AI check.
💵 Pricing — what a run really costs
| Event | When it is charged | Price |
|---|---|---|
free-tier | your first 25 clean comps, any mode | $0.00 |
qualified-comp-basic | a clean comp scored by the rules (AI off, or a clear match the AI skipped) | $0.005 |
qualified-comp-ai | a clean comp the AI checked: verdict, attributes, defects | $0.01 |
price-report | a keyword's PRICE_REPORT when fewer than 10 of its comps are delivered in the run (free with 10+) | $0.03 |
One free tier: when the AI is unavailable, rule-scored comps use your 25 free comps too, except the last 5, kept so you still see the AI tier free.
Never charged: rejected rows (counted per reason in OUTPUT.rejected), sales you already received, the demo, the
digest. Platform compute is included.
How that compares — 1.33× the $0.00375 median of the Store's "ebay sold listings" Actors, which bill raw rows; one clean comp replaces 1.8 raw rows ($0.0068) plus the cleanup. Comps rivals charge $0.02–0.03: 4–6× more.
Worked example — 1 keyword × 100 sold rows: $0.40 source on your account → 56 clean comps. AI off: 56 × $0.005 → $0.68 (≈ $0.012 for each clean comp). AI on: 42 used / borderline comps × $0.01 + 14 × $0.005 + ≈ $0.06 tokens → $0.95 (≈ $0.017 each). Your first 25 comps are free.
AI tier, all in: ≈ $0.0114 per AI-checked comp ($0.01 + ≈ $0.0014 tokens, estimate) — 2.3× the basic comp.
🤖 What the AI tier adds
The AI reads item specifics and the seller's text against your item. The same comp, AI off (the demo run):
{"title": "Nintendo Switch OLED 64GB Neon Red/Blue - Tested, Works Great", "unitPrice": 211.5, "score": 95,"attributes": {"model": null, "storage": null, "color": null}, "aiAssessment": {"verdict": null}}
AI on (qualified-comp-ai) — the AI example run on 2026-09-27 with an own Groq key, checked
against "Nintendo Switch OLED console with dock and Joy-Cons, working, any colour":
{"title": "Nintendo Switch OLED 64GB Neon Red/Blue - Tested, Works Great", "unitPrice": 211.5, "score": 85,"attributes": {"brand": "Nintendo", "model": "Switch OLED", "storage": "64GB", "color": "Neon Red/Blue"},"aiAssessment": {"verdict": "exact", "confidence": 0.85, "severity": "none", "model": "groq:openai/gpt-oss-120b","reason": "Title matches Nintendo Switch OLED 64GB Neon Red/Blue, the same console model and storage."}}
With Apify's model access it runs on anthropic/claude-haiku-4.5; without it, the demo shows these verdicts labelled
aiModel: "sample", never charged. It saves opening each borderline listing (20–30 s each).
⚙️ Input
| Field | Default | What it does |
|---|---|---|
keywords | — | 1–6 eBay searches, one report each; typing one starts the live search |
sourceMode | actor | live search · dataset · list. With nothing to search — {} over the API — the free demo runs: nothing charged, the source Actor is never started |
minScore | 70 | The match a comp needs — the field that decides what you pay |
itemDescription | — | Your exact item in words, for the AI check |
maxQualified | 200 | Cap on comps delivered and charged; the report uses all (under 10 comps: $0.03 per report) |
maxDiscoveryChargeUsd | 0.5 | Caps the eBay search's cost ($0.004 per row) |
enableAi | true | AI match check on borderline / used comps |
mustInclude / mustExclude | — | Title terms, number-aware (128gb = "128 GB") |
keepConditions | new, open_box, refurbished, used | Conditions that count |
lotHandling / bestOfferHandling | exclude / excludeFromStats | Lots: exclude · normalize · include; Best Offer: out of stats · include · drop |
ebaySite / daysToScrape / maxSoldPerKeyword | ebay.com / 30 / 100 | Where and how far back |
feeRatePct / shippingCost / targetProfit | 13.25 / 0 / 0 | The max-buy-price math, in the site's currency (the 0.1 names shippingCostUsd / targetProfitUsd still work) |
alertOnly / alertMedianMovePct | false / 10 | E-mail / Slack / Discord only on a sale under your max buy price or a median move |
The rest — outlierIqrK, categoryId, minPrice / maxPrice, targetFlags, suppressionList, the model,
webhookHeaders, dedupeStoreName (one per client) — is in the Input tab.
Flags
Names for targetFlags (belowP25 works too) — only comps with one are delivered; an unknown name stops the run.
📤 Output
One dataset item per new clean comp — the demo row from above:
{"itemId": "300000000010", "url": "https://www.ebay.com/itm/300000000010", "keyword": "nintendo switch oled","title": "Nintendo Switch OLED Console Neon - minor scratches on screen", "conditionBucket": "used","endedAt": "2026-09-16", "unitPrice": 199.0, "currency": "USD", "matchVerdict": "exact","bucketMedian": 219.0, "priceVsMedianPct": -9.1, "isBelowP25": true, "score": 95, "label": "hot","suggestedPriceNote": "Sold 199.00 USD on 2026-09-16 (used) — 9.1 % below the 219.00 USD used median.","chargedEvent": "demo", "dedupeKey": "ebay:ebay.com:300000000010"}
Upsert key: dedupeKey — ebay:<site>:<itemId>, the key of the cross-run memory; itemId is eBay's item number.
Views: Shortlist, Comps sheet (CSV), AI match check. Next to OUTPUT: PRICE_REPORT (generatedAt, demo,
reports — one per keyword), a DIGEST (what changed since the last run — OUTPUT.trend) and a client-ready
REPORT page. Outcomes: Run outcomes; AI-on runs say "N AI-assessed
(model; D delivered, R rejected), M rule-scored (reasons)" — OUTPUT.aiCoverage, the reasons add up.
⭐ Found it useful? A review on the Store helps others find it — it takes a minute on the Actor's page.
🔁 Run it weekly
- Actions → Save as a new task → Schedule after a real run (input:
OUTPUT.scheduleInput), withnotifyEmail— every run mails the median per keyword and its change vs the last run, then the new comps. - Keep
dedupeAcrossRuns: true— the next run charges only new sales; the report still uses every clean one. Each run adds to the price history of the search:OUTPUT.history, a median-per-run chart on theREPORTpage and a sparkline in the digest. slackWebhookUrl/discordWebhookUrlpost the same digest. Deal alerts:alertOnly: trueposts only when a new sale lands under your max buy price or a median moves ≥alertMedianMovePct(10 %) —OUTPUT.alerts.- Into a sheet: import the docs/img/n8n-weekly-comps.json (Monday → run → Google Sheet upsert on
dedupeKey→ Slack) and the Sheets template; orwebhookUrlper comp.
Weekly cost of 5 items (daysToScrape: 7, maxSoldPerKeyword: 50, maxDiscoveryChargeUsd: 1): $1.00 source → ≈ 135
new comps = $0.68 → ≈ $1.68 / week rules only, ≈ $2.32 with the AI check (estimates).
🎯 Try it for your niche
| Niche | What it looks for | Input |
|---|---|---|
| Console flipper | three consoles, lots normalized, shipping + profit | docs/img/preset-console-flipper.json |
| Phone reseller | exact storage, no Max / Mini / Plus | docs/img/preset-phone-reseller.json |
| Card collector | one graded card, 90 days, deal alerts | docs/img/preset-card-collector.json |
Paste one into the Input tab's JSON view, add notifyEmail, press Start.
🔌 Integrations, automation and API
- Webhook — each new comp, then one
comps.reportper keyword (payloads below); a failed POST never fails the run. - Google Sheets / Slack — the Integrations tab. Discord —
discordWebhookUrl, or a/comps <item>bot for your group (docs/marketing/kit/integrations.md#discord-comps-bot). - AI agents / MCP — plain typed fields. First call = the free trial:
{}runs the free demo.
Use it from Claude, ChatGPT or any MCP client:
{"mcpServers": {"apify": {"url": "https://mcp.apify.com/?actors=rich_minds/ebay-sold-comps-ai"}}}
Then ask: "Run ebay-sold-comps-ai with no input (free demo), then price iphone 13 pro 128gb with
maxDiscoveryChargeUsd: 0.5 — median and max buy price?"
List-mode rows — what a pasted record needs
list and dataset mode run on any plan, with rows of any eBay sold scraper.
Run outcomes — what your integration sees
👥 Who is it for?
| You are… | You run it to… | Start with |
|---|---|---|
| A reseller / flipper | know what this exact item sells for and the most you can pay | keywords + targetProfit, shippingCost |
| An eBay seller pricing inventory | list at the price that sells in your condition | keywords + keepConditions: ["used"] |
| A consignment shop / agency | a price band per client item, one memory per client | keywords + dedupeStoreName + the REPORT link |
| A collectibles buyer | a weekly watchlist that pings on a deal | daysToScrape: 90 + alertOnly + notifyEmail |
🧠 How the AI works
- Grounded, not generative. One listing → a typed verdict (exact / variant / accessory / parts / lot / unrelated), confidence, attributes, defects — each a substring of the listing, else dropped. The model never writes a price.
- Tokens only where they matter: borderline sales (rule score 40–90) and used / open-box matches, best first.
- Model:
anthropic/claude-haiku-4.5via Apify's model access, orllmProvider: "byok". Fallback: a model error keeps the rule score, verdict and defect lexicon.
🔒 Data, compliance and limits
- Public sold listings only, fetched on your account; no login; not affiliated with eBay. 8 sites, 1–6 keywords, up to 90 days, one currency per report. Keep your use within eBay's terms and GDPR / CCPA.
❓ FAQ
What will my first real search cost? At most $0.50 on the eBay search (1 keyword × 100 rows = $0.40), then ≈ 56 clean comps — 25 free, the rest $0.005 ($0.01 AI-checked).
Is this an eBay sold listings search or an eBay sold listings scraper? Both: it runs eBay Sold Listings Search on
your account and adds the cleanup, the match check and the price report; rows of any eBay sold listings scraper work in
dataset / list mode.
What is the eBay sold price of my item — is this an eBay price checker? Yes: the status and PRICE_REPORT give the
median per condition, the list price and the max buy price, built on clean comps only.
Are these eBay sold comps good reseller comps for flipping? Yes — only exact matches, per condition, with
sell-through and trend; set targetProfit and the max buy price is your bid limit.
Why pay when Terapeak or 130point is free — and how is this different from ZIK Analytics? Terapeak and 130point are free, manual, one search at a time — no API, schedule, alerts, lot / variant cleanup or max buy price; 130point wins on accepted Best-Offer prices, which eBay's sold data (and this Actor) cannot see. ZIK Analytics PRO is $39.9 / month; a weekly 5-item watchlist here is ≈ $7 / month rules only, in your own sheet.
How long does a run take? Demo: 0.1 s for 16 rows (measured, OUTPUT.timing). Live: the source run (≈ 1–2 min per
100 rows) + ≈ 1 s per AI-checked comp with Apify's model access (estimates). Own key (llmProvider: byok): 2 calls at
a time, one after a rate limit, AI stops after 2 min of waiting (OUTPUT.timing.aiBackoffSecs); a free-tier key
checked 2 of 9 comps in 103 s (measured) — expect 1–3 AI checks per run, a second pass retries the borderline comps
one at a time; a paid Groq / Gemini key checks every comp. Worst case with a slow own key: ≈ 25 min per 100 borderline
comps, stopped before the run's own timeout (3600 s) — pass timeoutSecs 3600 to .call().
Which Apify plan do I need? Any plan runs the demo and dataset / list mode; the live search runs a Store Actor
and the built-in AI uses Apify's model access — without them, use list mode and your own key.
🧩 More Actors from the same developer
Not quite your use case? The same pay-per-qualified-result model, for the same e-commerce buyers:
- Facebook Ad Library Winning Ads Finder — the products whose Facebook ads are winning right now, before you source one
🆘 Support
Something missing or wrong? Open an issue on the Actor's page or message the developer through the Apify Console — requests from buyers are shipped first.
📝 Changelog
One line per published build, newest first. Next: a deal finder (live listings under your max buy price), a batched AI check, bulk SKUs.
- 0.3.2 (2026-09-27) — 2026-09-26.md — M-01.
- 0.3.1 (2026-09-27) — card grades (
grade,byGrade); price history; Discord digest;price-report$0.03 under 10 comps; an AI second pass for rate-limited own keys. - 0.2.1 (2026-09-27) — deal alerts (
alertOnly); sample AI verdicts on every plan;shippingCost/targetProfit;matchScoredropped, usescore;OUTPUT.sourceStatus. - 0.1.1 (2026-09-26) — first public release — clean eBay sold comps, the free price report and the AI match check.