CompSniper Docs

Depop Listings API

Search Depop listings by keyword in the US, UK, Australia and Canada with price, discount, shipping, brand, size, condition and seller, using one CompSniper API key.

GET /v1/depop/listings searches Depop by keyword and returns current listings with the asking price, any seller discount, shipping, brand, size, condition, color, seller and location. It covers Depop's US, UK, Australian and Canadian marketplaces, with prices in each market's own currency.

It uses the same API key, per-minute limit, monthly allowance and purchased credits as the eBay endpoints. No Depop account is needed.

Depop does not publish site-wide sold prices, so this endpoint returns what is for sale now. For real sold prices on fashion and streetwear, pair it with Grailed sold listings, eBay sold comps, Poshmark and Mercari.

For an overview with code in cURL, Python and JavaScript, see the Depop API page.

Make a request

curl --fail-with-body \
  -H "Authorization: Bearer cs_live_REPLACEWITHYOURKEY" \
  "https://api.compsniper.com/v1/depop/listings?keyword=vintage+levis+501&country=us&count=24"
Python
import requests

params = {"keyword": "arcteryx beta ar", "country": "gb", "count": 48}
rows = []
while len(rows) < 144:
    response = requests.get(
        "https://api.compsniper.com/v1/depop/listings",
        headers={"Authorization": "Bearer cs_live_REPLACEWITHYOURKEY"},
        params=params,
        timeout=45,
    )
    response.raise_for_status()
    data = response.json()
    rows += data["items"]
    if not data["hasNextPage"]:
        break
    params["cursor"] = data["nextCursor"]

print(len(rows), "listings, median asking price", data["summary"]["median"], data["summary"]["currency"])

Parameters

ParameterValuesDefault
keywordBrand, model and item, up to 300 charactersRequired
countryus, gb, au, caus
count1 to 48 listings per page24
cursorThe nextCursor value from the previous pageFirst page

Response

Example response (shortened)
{
  "keyword": "arcteryx beta ar",
  "page": 1,
  "count": 24,
  "marketplace": "depop",
  "country": "us",
  "totalListings": 108,
  "totalItems": 24,
  "hasNextPage": true,
  "nextCursor": "MnwyNHwxNzkyMjkzMDQx.BOOSTED_EXHAUSTED.0",
  "items": [
    {
      "productId": "957849745",
      "url": "https://www.depop.com/products/stronglyselated-arcteryx-grey-beta-ar-softshell-a78f/",
      "title": "Arc'teryx grey Beta AR softshell jacket #outdoor #hiking",
      "description": "Arc'teryx grey Beta AR softshell jacket #outdoor #hiking",
      "price": 160,
      "originalPrice": null,
      "shippingPrice": 1.99,
      "currency": "USD",
      "brand": "Arc'teryx",
      "category": "Outerwear",
      "sizes": ["M"],
      "condition": "Brand new",
      "gender": "male",
      "colors": ["navy", "black"],
      "quantity": 1,
      "sellerUsername": "stronglyselated",
      "location": "Norristown, United States",
      "country": "US",
      "imageUrl": "https://media-photos.depop.com/..."
    }
  ],
  "summary": { "count": 24, "currency": "USD", "median": 145, "mean": 162.4, "min": 40, "max": 450, "p25": 95, "p75": 210, "avgShipping": null },
  "scrapedAt": "2026-10-18T02:20:11.400Z"
}
  • Depop listings have no separate title, so title is the first line of the seller's description and description holds the full text.
  • originalPrice is set when the seller discounted the item; it is the price before the discount.
  • condition is one of Brand new, Like new, Used, excellent, Used, good or Used, fair.
  • totalListings is how many Depop listings match; page through them with cursor while hasNextPage is true.
  • summary describes the asking prices on the page in the market's own currency. A search can include a few listings priced in another currency; each listing shows its own currency, and those listings are left out of the summary.

Billing

  • One successful call is one request.
  • Failed requests are free.
  • Repeat calls can return instantly from a short-lived saved copy and count as one request.

Errors

The Depop endpoint uses the shared error format (code, error, requestId):

StatusCodeMeaningWhat to do
400invalid_paramsMissing keyword, an unsupported country, or a bad cursorFix the request
429rate_limited / quota_exceededPer-minute limit or monthly allowance reachedSee Rate limits
502, 503upstream_blocked / server_busyDepop did not answer this timeRetry after a few seconds, with a bound

See Errors for the full list.

On this page