Pricing Thousands of Items Daily From eBay Sold Data: The Real Cost (and How to Cut It)

A developer building a card scanner laid out the math in August 2026: "I need to fetch daily prices of 8000 cards on eBay with different variations such as Raw, PSA 8 9 10 .. which makes it 40000 request." Another wanted sold listings "for approximately 15k different products over the last 90 days."
This is the typical scale for a card, collectibles or catalog app. Here's what it costs, and how to need far less of it.
The naive plan: refresh everything daily
8,000 cards × 5 versions × 1 refresh a day = 40,000 lookups a day, about 1.2 million a month.
Most of those lookups re-buy an answer you already had. A card that sold 4 times in 90 days doesn't have a new price every morning.

Strategy 1: refresh when someone looks
Store each price with a timestamp. When a user opens a card, refresh it only if the stored price is older than 24 hours. Nobody looks at most of a catalog on a given day, so lookups follow real usage instead of catalog size. Typical result: 5,000–8,000 a day for the same 40,000 card-versions.
Strategy 2: tier by popularity
- Hot (top ~2% by views or sales volume): refresh daily.
- Everything else: every 3 weeks. Slow items rarely change, and Strategy 1 still refreshes anything a user actually opens.
40,000 card-versions with 2% hot: 800 daily + 39,200 ÷ 21 ≈ 1,870, so about 2,700 a day, roughly 80,000 a month.
Strategy 3: skip versions nobody sells
If a card has had zero PSA 8 sales in 90 days, there's nothing to refresh. Re-check empty versions weekly at most. For many sets this removes a third of all lookups.
What it costs
With one request per card-version per refresh, on SaleHistory pricing:
| Plan of attack | Lookups / month | Cost / month |
|---|---|---|
| Refresh everything daily | ~1,200,000 | Custom volume pricing |
| Refresh on view | ~180,000 | Scale ($79) + credits ≈ $379 |
| Tiered refresh | ~80,000 | Scale ($79) + credits ≈ $129 |
Scale includes 60,000 requests; extra requests use prepaid credits at $2.50 per 1,000. At the tiered volume that's about $0.0016 per lookup, and the same strategies work whatever data source you use. Pricing.
Scraping it yourself at this scale
Builders who tried report the same costs: residential proxies at "at least 2€/GB" with around "50% success rates," CAPTCHAs, layout changes, and, since mid-2026, needing signed-in sessions that risk the account you sell on. And when it fails, it often fails quietly. Read why empty results are the dangerous failure.
Implementation sketch
from datetime import datetime, timedelta
TTL = {"hot": timedelta(days=1), "rest": timedelta(days=21)}
def price(card_version):
row = db.get(card_version)
if row and datetime.utcnow() - row.fetched_at < TTL[row.tier]:
return row # cached, no request
data = sold(card_version.query)
if data["count"] == 0 and row: # a real "no sales": keep last price, mark it old
return db.touch(card_version)
return db.save(card_version, data["stats"], fetched_at=datetime.utcnow())
One query per version is still the rule. See how to comp trading cards for the query patterns.
Frequently asked questions
How many API requests do I need to price a card catalog?
One request per version of each card per refresh. 8,000 cards in Raw, PSA 8, PSA 9 and PSA 10 plus one more variant is 40,000 requests per full refresh. Refreshing on view and tiering by popularity usually cuts that by 85 to 95%.
How often should eBay sold prices be refreshed?
Daily for items users look at often or that move fast, every few weeks for the long tail (and whenever a user opens one). Sold prices for slow items barely change day to day, so refreshing them daily mostly re-buys the same answer.
Is scraping eBay cheaper than an API at scale?
Not usually, once you count residential proxies, failed requests, engineering time and breakage. Since mid-2026, scraping sold listings also needs signed-in eBay sessions, which risks account bans.
Sources
- r/scrapingtheweb: Daily prices of 8,000 cards across Raw, PSA 8, 9, 10 = 40,000 requests (Aug 2026) (accessed Oct 22, 2026)
- r/webscraping: Sold listings for 15k products over 90 days (Jul 2025) (accessed Oct 22, 2026)
- PokemonCollector issue #412: free tier doesn't cover a weekly refresh (Oct 2026) (accessed Oct 22, 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.