Reseller and shop tools
Show sellers what similar items sold for before they list, not what someone hopes to get.
Read the guideThe resale data behind your app: sold and active listings from eBay, Poshmark and 7 more marketplaces. We run the scrapers and fix them when sites change. Your pricing tool, reseller app or AI agent calls one API.
100 free requests · No credit card required · Try a live search
Search sold and active listings across top marketplaces. Get the listing price, details, and a link to the source.
curl -G https://api.soldgraph.com/v1/ebay/sold \ -H "Authorization: Bearer $SOLDGRAPH_KEY" \ --data-urlencode "q=sony wh-1000xm5" \ -d page=1 \ -d count=200{ "request_id": "00000000-0000-4000-8000-000000000001", "status": "complete", "credits": 1, "cached": false, "result": { "provider": "ebay", "country": "us", "query": "sony wh-1000xm5", "page": 1, "page_size": 200, "count": 1, "reported_total": 1, "next_page": null, "next_cursor": null, "collected_at": "2026-09-23T14:02:11Z", "schema_version": 2, "completeness": "provider_page_only", "summary": { "priced_count": 1, "currency": "USD", "median": 189, "low": 189, "high": 189, "p25": 189, "p75": 189, "earliest_sold_date": "2026-09-21", "latest_sold_date": "2026-09-21", "best_offer_accepted_count": 0, "median_excluding_best_offer": 189 }, "data": [ { "id": "123456789012", "title": "Example eBay listing", "link": "https://www.ebay.com/itm/123456789012", "format": "fixed_price", "displayed_price": { "amount": 189, "currency": "USD" }, "displayed_price_text": "$189.00", "displayed_price_range": null, "best_offer_accepted": false, "displayed_shipping": { "amount": 9.99, "currency": "USD" }, "shipping_text": "+$9.99 delivery", "sold_date": "2026-09-21", "sold_date_text": "Sep-21 14:35", "condition": "Pre-Owned", "bid_count": null, "seller_text": "sonyfan_outlet (2,418) 99.6%", "location_text": "Located in United States", "image": "https://i.ebayimg.com/images/g/example/s-l500.jpg" } ], "field_notes": "Fields that could not be read are null. Displayed prices are not verified accepted-offer prices." }}Like payments or search, resale data is plumbing you shouldn't build yourself. Soldgraph is the data layer under pricing tools, reseller apps, deal finders and AI agents.
Marketplaces block scrapers. We spread searches across networks and retry on another one, so a block is never your problem.
When a marketplace changes its pages, our checks catch it and we fix the parser. Your code keeps getting the same fields.
Every result comes back as the same JSON: price, sold date, condition and a link to the listing anyone can check.
Each search comes with the median, the typical range, the low and the high worked out, so your app shows a number, not a pile of rows.
Searches that fail are free, and every response says exactly what it cost.
Start with 100 free requests. Price a whole inventory in one batch, and scale to 100,000 requests a month on Business.
Build on marketplace data without maintaining a scraper for every source. Soldgraph brings eBay, Poshmark, Mercari, Depop, Whatnot, OfferUp, Facebook Marketplace, Vinted and TCGplayer searches into one API, with more marketplaces planned.
One marketplace at a time: eBay sold listings API · Poshmark sold listings API · Mercari sold listings API · findCompletedItems alternative
Comparing APIs and tools? Soldgraph vs SoldComps · vs Apify · vs 130point · every comparison
Try it on your own items. Start with 100 free requests, no credit card required.
Get a free API keyResale is a huge market with almost no clean data. Soldgraph gives your product the same prices buyers and sellers see, without building and fixing scrapers yourself.
Show sellers what similar items sold for before they list, not what someone hopes to get.
Read the guideCompare active listings with recent sold listings to spot items priced below what they usually sell for.
Read the guideValue a collection from recent sold listings, not guesses.
Back a valuation with recent sold listings, each with a link anyone can check.
Suggest a listing price based on what similar items recently sold for.
Let your agent look up recent sold listings, so it can answer “what is this worth?” with links to the source.
Read the guideeBay alone covers almost every category, from sneakers to vintage cameras. TCGplayer adds card prices and recent sales, and more specialist marketplaces are planned.
Get a key, send one command, then poll the job it returns for the result. We handle collecting the marketplace data, so you never maintain a scraper.
Search sold and active listings on eBay, Poshmark and Mercari; active listings on Depop, Whatnot and Vinted; local listings on OfferUp and Facebook Marketplace; and TCGplayer products and recent card sales.
Generate a typed client from the OpenAPI spec. It covers every route, parameter, job, result row and error.
Connect Claude, Cursor or VS Code to the hosted MCP server, or give your agent the HTTP API and Markdown docs.
Send many searches as one batch and poll one ID. Each result comes with the median, lowest and highest price, and you can download every row as CSV. eBay returns up to 200 rows per search.
Requests that fail are free, and every response shows exactly what it cost.
Every error has a code your code can check, for bad inputs, limits and temporary failures. Every response has a request ID for support.
curl -G https://api.soldgraph.com/v1/ebay/sold \ -H "Authorization: Bearer $SOLDGRAPH_KEY" \ --data-urlencode "q=nintendo switch oled" \ --data-urlencode "count=200"Connect your assistant to the hosted MCP server with one URL and your API key. It searches sold and active listings, waits for the results and links every row.
What have used Switch OLEDs sold for on eBay lately?
200 recent sales on one page. Median $180; bundles and special editions sold higher.
claude mcp add --transport http soldgraph https://api.soldgraph.com/mcp \ --header "Authorization: Bearer $SOLDGRAPH_KEY"One prompt gives your assistant the endpoint, the sign-in header and how to wait for a result, so its first script works. Get a free key and you have eBay sold prices in your app in minutes.
I'm building with the Soldgraph API. It returns sold and for-sale listings from eBay and other resale marketplaces. Read the docs first: https://soldgraph.com/llms.txt OpenAPI spec: https://soldgraph.com/openapi.json Rules for the code you write: - Base URL: https://api.soldgraph.com/v1 - Auth: send the header "Authorization: Bearer <key>". Read the key from the SOLDGRAPH_KEY environment variable. Never put it in browser code. - eBay sold prices: GET /ebay/sold?q=<search words>. Add count=200 for up to 200 rows. - A search often answers 202 with status "pending" and a poll_url. Request https://api.soldgraph.com plus poll_url with ?wait=20 and the same header, until status is "complete" or "failed". - Read result.summary for the median, low and high price. The rows are in result.data, each with title, displayed_price, sold_date and link. - Each completed search uses one request. A free account starts with 100 requests that do not refill, so save results while testing instead of repeating a search. Start with a short script that prints the median sold price for "nintendo switch oled". Then ask me what I want to build.
Every plan includes endpoints for eBay (8 countries), Vinted (US, UK and Europe), Poshmark (US and Canada), Depop (US, UK, Australia and Canada) and Whatnot (US and Canada), plus Mercari, OfferUp, Facebook Marketplace and TCGplayer (US). A completed search costs one request. Failed searches are free, and you can change plans any time.
For trying every endpoint and building a first version.
For side projects, bots and personal pricing sheets.
For tools and sheets that check prices every day.
For shops and apps that price inventory every day.
For products built on resale data at real volume.
Need more than 100,000 requests a month? Contact us
Still wondering about something? Email hello@soldgraph.com and a person will reply.
eBay's public Browse API only returns active listings. Its sold-data API, Marketplace Insights, isn't accepting new applicants. Soldgraph gives you eBay sold listings as clean JSON with a key you can get today.
TCGplayer isn't giving out new developer API keys. Soldgraph has product search and a recent-sales sample by product ID, without a TCGplayer login. The sample is limited to the rows the public source returns.
Terapeak shows eBay sold data inside Seller Hub, but it has no API. Soldgraph gives you sold prices as JSON you can use in your own app, spreadsheet or agent.
From public listing pages on each marketplace. We never need your marketplace login.
Every result links back to the original listing, so anyone can check it.
Both, on eBay, Poshmark and Mercari: sold listings and active listings. Depop, Whatnot, OfferUp, Facebook Marketplace and Vinted provide active inventory. TCGplayer has product search and an exact-product recent-sales sample. The sample is limited and does not represent complete sale history.
Matching searches are cached for 15 minutes. Otherwise you get a job to poll while we collect the page. Each result has collected_at, so you can see how fresh it is.
eBay covers 8 countries: the US, UK, Canada, Australia, Germany, France, Italy and Spain. Send country=uk, ca, au, de, fr, it or es on eBay sold and active listings. Prices come back in that country's currency.
Vinted covers the US, UK and 24 European countries, such as fr, de, it, es, nl and pl.
Poshmark covers the US and Canada. Depop covers the US, UK, Australia and Canada. Whatnot covers the US and Canada.
Mercari, OfferUp, Facebook Marketplace and TCGplayer are US only. Leave country out, or send country=us.
Yes. Send a list of searches to POST /v1/batches and get one batch ID back. Poll it once, then read a price summary for each search or download every row as one CSV file.
A batch holds 10 searches on Free, 15 on Lite, 25 on Starter, 50 on Pro and 100 on Business. Each search that completes costs one request, the same as sending it alone.
Yes. Every listing search returns a summary with the median, lowest and highest price on the page, plus the oldest and newest sold dates on sold searches.
It is plain maths over the rows you got. No rows are removed, so you can see every listing behind the number.
A search that completes is one request, including a cache hit. A page of 200 eBay rows is still one request, and so is each search in a batch. Failed searches are free. Polling a job is free, but it counts toward the 60 calls per minute. Reuse an idempotency key when you retry a search, so you're only charged once.
You can build with Soldgraph on every plan, including Free. Third-party source data may carry separate rights and usage restrictions; check the relevant source terms before redistribution.
Each request returns one page of results from eBay, Poshmark or Mercari. There's no fixed history window, and one page isn't every sale. Displayed prices can differ from what the buyer paid.
Create a free account, make a key, and send your first request in about two minutes. Start with 100 free requests, no credit card required.