How the eBay Sniper works

We scan eBay every 30 minutes for PSA 10s priced below market and rank them by margin.

1min readUpdated May 20, 2026

The pipeline

Every 30 minutes our scanner does this:

  1. Pulls active listings from eBay's Browse API for cards on our watch list
  2. Filters out wrong-set / wrong-grade matches using title parsing
  3. Looks up our internal market value for each (cardId, grade) tuple
  4. Computes margin: marketValue − listingPrice − estimatedFees
  5. Writes a row to EbayDeal for anything with positive margin
  6. Marks listings inactive when they end or 404

What "market value" means

For PSA 10 we use the 30-day median of recent eBay sold listings. When we have ≥ 8 sold rows in our cache, we use that. When we have fewer, we estimate as raw market × grade multiplier (8× for PSA 10 — see the grade multipliers article).

The lightbox always tells you which source is being used — green "eBay Sold · N sales" badge means real data; amber "Est." means we're using the multiplier.

Why deals don't refresh instantly

Vercel cron runs every 30 minutes. We can't poll eBay continuously (rate-limited at ~5000 req/day), so 30 min is the practical floor. Pro plan users see the latest 30-min snapshot; Free plan refreshes every 6 hours.

What's NOT in the Sniper

  • Raw cards — we don't surface raw deals because raw pricing is noisy and our deal criteria require a reliable market median
  • Bulk lots — we filter these out aggressively because the title parser can't decide which card is being valued
  • International listings — US eBay only right now

Keep reading

Related articles

Still need help?

We typically respond within 24 hours.

Contact support