eBay sold-history API
Up to 3 years of eBay sold history, as JSON.
Go past the recent window. Query up to 3 years of eBay sold-market history through one API — average sold price, sold range, sell-through, and the listing rows behind them. No scraping, no eBay OAuth, no App ID.
One request
curl "https://grail.solutions/v1/research/sold?keyword=leica+m6&days=1095" \ -H "Authorization: Bearer ***"
Up to 3 years of history
Go past the recent window: query up to 1,095 days of eBay sold-market history in one call.
Summary + listing rows
Get average sold price, sold range, total sold, sell-through, and sellers — plus the listing-level rows behind them.
No scraping, no OAuth
One Grail bearer key. No App ID, no token refresh, no proxies, no CAPTCHAs.
Built for products
Structured JSON for pricing tools, resale apps, dashboards, and AI agents.
Built for products
The historical pipe for sold-price data.
A recent snapshot is not enough when you are pricing a catalog, sizing a market, or tracking a trend. Grail gives your product years of sold history behind one request.
Trend & seasonality
See how a keyword has moved over years, not days — for sourcing and market analysis.
Inventory valuation
Price a catalog against real historical sold data instead of a single snapshot.
AI agents
Give an agent a dependable historical sold-price tool through REST or hosted MCP.
Python
import requests
res = requests.get(
"https://grail.solutions/v1/research/sold",
params={"keyword": "leica m6", "days": 1095},
headers={"Authorization": f"Bearer {GRAIL_KEY}"},
timeout=30,
)
data = res.json()
print(data["summary"]) # multi-year sold-market summary
print(data["coverage"]) # how deep + how completeResponse shape
{
"schemaVersion": "grail.research_sold.1",
"source": { "name": "ebay_sold_history", "kind": "sold_history" },
"coverage": { "requestedDays": 1095, "itemsReturned": 50,
"totalSold": 24491, "totalSellers": 5170 },
"summary": { "mean": 367.63, "avgShipping": 17.6,
"soldPriceRange": "$ 0.01 - $ 17,000.00",
"totalItemSales": 9003626.33 },
"items": [
{ "itemId": "275446905731", "title": "Leica M6 Classic 0.72 …",
"soldPrice": 3100.00, "soldCurrency": "USD", "totalSold": 12 }
]
}FAQ
Straight answers before you wire it in.
How far back does the sold history go?
Up to 3 years (1,095 days) via GET /v1/research/sold. For fresh per-listing detail from the recent window, use GET /v1/scrape (up to 240 rows).
Is this an official eBay API?
No. Grail returns structured eBay sold-market data behind a Grail key, so your product does not need eBay OAuth, an App ID, or an approval queue.
What does a history response include?
A market summary (average sold price, sold price range, total sold, sell-through, seller count, total item sales) plus listing-level rows, with a coverage block telling you exactly how deep the answer is.
Can I use it in a commercial app?
Yes. Commercial use is allowed on every plan, including the free tier. The full 3-year rail is unlocked on Pro and above.