Depop Scraper - Listings, Prices, Brands & Shops avatar

Depop Scraper - Listings, Prices, Brands & Shops

Pricing

from $1.20 / 1,000 listings

Go to Apify Store
Depop Scraper - Listings, Prices, Brands & Shops

Depop Scraper - Listings, Prices, Brands & Shops

Scrape Depop listings by search query or by shop: price, brand, size, condition, likes, sold status, photos and seller. Brand, size, price and condition filters. No login.

Pricing

from $1.20 / 1,000 listings

Rating

0.0

(0)

Developer

Cliqto Media

Cliqto Media

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

5 days ago

Last modified

Categories

Share

Depop Scraper collects listings from Depop, the second-hand fashion marketplace. Add a search query or a shop username, and you get one row per listing with price, brand, size, condition, likes, sold status, photos and seller. No Depop account or login is needed.

The smallest run is one query, for example vintage nike with 20 listings: it finishes in a few seconds and costs $0.034 on the Free plan.

Depop Scraper: search or shop input, listing rows with price, brand, size and likes, seller and photos

Table of contents

What it does

The Actor reads public Depop listings in two ways:

  • Search mode — the listings Depop shows for your keywords, like the search box on depop.com.
  • Shop mode — the listings of one or more Depop shops, by username or shop link.

You can keep only one brand, one size, a price range and chosen conditions. The Actor saves each listing once per run, even when two queries find it.

Good fit

  • Track prices of a brand or item type, for example vintage Nike jackets in size M under $50.
  • Check what a shop sells, how items are priced and which items are already sold.
  • Collect listing photos, brands and sizes for resale research or price comparison.

Not a fit / limits

  • No login: the Actor does not read messages, orders, offers, private data or seller contact details.
  • Listing dates are not available without login: createdAt is always null.
  • Search returns the listings Depop shows for a query. It is not a full export of all Depop listings.
  • Seller usernames in Search mode are optional and cost extra (see includeSellerDetails).

What data you get

One Dataset row per listing:

  • Listing: id, url, title, description, category, photos.
  • Price: price, originalPrice, isReduced, shippingPrice, currency.
  • Item: brand, size, condition, colours, gender.
  • Demand: likes, sold, status.
  • Seller: sellerId; sellerUsername, sellerUrl and sellerVerified in Shop mode or with includeSellerDetails.
  • Run context: mode, searchQuery, shopUsername, position, fetchedAt.

The key-value store also has a RUN_SUMMARY record with the run status, counts per query or shop and public shop numbers (items sold, followers, reviews) in Shop mode.

Quick start

  1. Open the Input tab.
  2. Keep What to scrape (mode) as Search results.
  3. Add a keyword to Search queries (queries), for example vintage nike. The form already has it.
  4. Keep Max listings per query or shop (maxItems) at 20 for a first test.
  5. Click Start.
  6. Open the Output tab. The Overview table shows photo, title, price, brand, size, condition, likes, sold and link.

Expected result: 20 listings for vintage nike in a few seconds, status message Saved 20 listings from 1 query.

Input

All fields are optional, but Search mode needs queries or brand, and Shop mode needs shopUsernames.

FieldPlain nameTypeDefault / prefillAllowed valuesWhat it changesRecommendation
modeWhat to scrapestringdefault searchsearch, shopSearch by keyword or read shopsUse shop when you know the sellers
queriesSearch queriesarray of stringsprefill ["vintage nike"]up to 50; empty lines and duplicates are droppedOne Depop search per line (Search mode)Short queries like a Depop user would type
shopUsernamesShop usernamesarray of stringsnoneup to 50; username, @username or https://www.depop.com/username/Shops to read (Shop mode)Check the spelling; a missing shop is reported as not found
maxItemsMax listings per query or shopintegerdefault 100, prefill 201–5000Stops each query or shop after this many saved listingsStart small; each saved listing is one paid result
brandBrandstringnoneany brand name, e.g. NikeKeeps only this brand. Without queries in Search mode, the brand itself is searchedUse the brand name as Depop shows it
sizeSizestringnonea size label, e.g. M, US 9, 32Keeps only listings with this sizeCase, spaces and inch marks are ignored
priceMinMin pricenumbernone0–1000000Lowest item price, without shippingPrice is in the marketplace currency
priceMaxMax pricenumbernone0–1000000, not below priceMinHighest item price, without shipping
conditionsConditionarraynone (any)brand_new, used_like_new, used_excellent, used_good, used_fairKeeps only these conditions
sortSortstringdefault relevancerelevance, priceLowToHigh, priceHighToLowOrder of search resultsUse a price order to find the cheapest or most expensive items
countryMarketplacestringdefault usus, gb, au, ca, de, fr, it, ieDepop marketplace and currency (USD, GBP, AUD, CAD, EUR)Choose the market you sell or buy in
includeSellerDetailsAdd seller username (Search mode)booleandefault falsetrue, falseOpens each listing page to add sellerUsername, sellerUrl, sellerVerifiedTurn on only when you need the seller; it is slower and paid per listing

How settings work together

WhenFieldsWhat happens
Brand without queriesbrand, queries emptySearch mode searches the brand name
Brand Depop knowsbrandDepop's own brand filter is used; the run summary shows brandFilter.brandId
Brand Depop does not knowbrandRows are matched by brand name, and a warning explains it
SizesizeW32 equals 32 (jeans waist); a bare number like 9 also matches US 9, UK 9 or EU 9
PricepriceMin, priceMaxSent to Depop and checked again on each row
Shop mode with filtersmode: shop + brand/size/price/conditionsFilters apply to the shop's listings. queries and includeSellerDetails are ignored in Shop mode
Many queriesqueriesmaxItems applies to each query. A listing found by two queries is saved once

Input examples

Search: vintage Nike, size M, $10–$50

{
"mode": "search",
"queries": ["vintage nike"],
"size": "M",
"priceMin": 10,
"priceMax": 50,
"maxItems": 50
}

Expected behavior: the Actor searches vintage nike on the US marketplace and keeps size M items between $10 and $50. Expected output: up to 50 rows with price, brand, size, likes and url.

Shop: listings of two shops

{
"mode": "shop",
"shopUsernames": ["username", "https://www.depop.com/another_username/"],
"maxItems": 200
}

Expected behavior: up to 200 listings are read from each shop (found through Depop search, see Limits). Rows have sellerUsername and sellerUrl, and RUN_SUMMARY has public shop numbers. Cost note: shop profiles are not charged; you pay for saved listings.

Search with seller usernames

{
"mode": "search",
"queries": ["carhartt jacket"],
"includeSellerDetails": true,
"maxItems": 20
}

Expected output: 20 rows where sellerUsername, sellerUrl and sellerVerified are filled and sellerDetailsFetched is true. Cost note: each enriched listing adds one seller-details event.

Output example

One row from the prefill run (vintage nike, 20 listings). The seller name in slug and url, sellerId and the photo link are placeholders, and the photo list is shortened.

{
"id": 952642444,
"slug": "example_seller-mens-medium-vintage-nike-track-156f",
"url": "https://www.depop.com/products/example_seller-mens-medium-vintage-nike-track-156f/",
"title": "Men’s medium vintage Nike track pants",
"description": "Men’s medium vintage Nike track pants\nRip on waist but has been sewed",
"price": 25,
"originalPrice": 25,
"isReduced": false,
"currency": "USD",
"shippingPrice": 3.99,
"brand": "Nike",
"brandId": 270,
"size": "M",
"sizes": ["M"],
"condition": "used_fair",
"category": "Joggers",
"productType": "joggers-tracksuits",
"gender": "male",
"colours": ["navy", "black"],
"styles": [],
"sellerId": 12345678,
"sellerUsername": null,
"sellerUrl": null,
"sellerVerified": null,
"likes": 34,
"sold": false,
"status": "STATUS_ONSALE",
"quantity": 1,
"photo": "https://media-photos.depop.com/r1/12345678/1234567890_0123456789abcdef0123456789abcdef/P0.jpg",
"photos": ["https://media-photos.depop.com/r1/12345678/1234567890_0123456789abcdef0123456789abcdef/P0.jpg"],
"isBoosted": false,
"country": "US",
"createdAt": null,
"sellerDetailsFetched": false,
"mode": "search",
"searchQuery": "vintage nike",
"shopUsername": null,
"position": 2,
"fetchedAt": "2026-10-15T02:32:21.242Z"
}

null means Depop did not give this value, or it needs an option that was off (here: seller username in Search mode). An empty list [] means the listing has no value of this kind.

Output fields

FieldMeaningTypeCan be null?Example
idDepop listing idintegerno952642444
slugListing slug from the linkstringnouser-mens-medium-…-156f
urlListing pagestringnohttps://www.depop.com/products/…/
titleFirst line of the description, without trailing hashtags, up to about 100 characters. Depop has no separate titlestringyesMen’s medium vintage Nike track pants
descriptionFull listing textstringyes
priceCurrent item price, without shippingnumberyes25
originalPricePrice before a discount (same as price when not reduced)numberyes25
isReducedThe seller reduced the pricebooleannofalse
currencyCurrency of all pricesstringyesUSD, GBP, EUR
shippingPriceShipping price for the marketplacenumberyes3.99
brandBrand namestringyesNike
brandIdDepop brand idintegeryes270
sizeAll sizes in one textstringyesM or S, M
sizesSizes as a list. Removed size variants are left outarrayno (can be [])["M"]
conditionItem conditionstringyesbrand_new, used_like_new, used_excellent, used_good, used_fair
categoryDepop category namestringyesJoggers
productTypeDepop product typestringyesjoggers-tracksuits
genderDepartmentstringyesmale, female
coloursColoursarrayno (can be [])["navy", "black"]
stylesStyle tagsarrayno (can be [])["streetwear"]
sellerIdSeller's numeric idintegeryes12345678
sellerUsernameSeller's usernamestringyes: filled in Shop mode or with includeSellerDetailssome_shop
sellerUrlSeller's shop pagestringyes, same as abovehttps://www.depop.com/some_shop/
sellerVerifiedSeller has a verified badgebooleanyes, same as abovefalse
likesNumber of likesintegeryes34
soldItem is sold (status is not on sale)booleannofalse
statusDepop listing statusstringyesSTATUS_ONSALE, STATUS_SOLD
quantityListed quantityintegeryes1
photoFirst photostringyeshttps://media-photos.depop.com/…/P0.jpg
photosAll photosarrayno (can be [])
isBoostedListing is promoted by the sellerbooleanyesfalse
countrySeller's country codestringyesUS
createdAtListing date. Depop does not show it without loginnullalways nullnull
sellerDetailsFetchedSeller fields come from the shop or listing pagebooleannofalse
modeMode that found the rowstringnosearch, shop
searchQueryQuery that found the row (Search mode)stringyesvintage nike
shopUsernameShop that was read (Shop mode)stringyessome_shop
positionPlace of the row in its query or shopintegerno2
fetchedAtWhen the row was read (UTC)stringno2026-10-15T02:32:21.242Z

Run summary

The key-value store record RUN_SUMMARY explains every run:

  • status: COMPLETE, PARTIAL, NO_RESULTS, ERROR, INVALID_INPUT or CANCELLED.
  • reason: why a run stopped early, for example MAX_ITEMS, CHARGE_LIMIT, TIME_LIMIT, LOW_YIELD, SPARSE_FILTER or SOURCE_ERROR.
  • targets: one entry per query or shop with status (complete, partial, no_results, not_found, error, skipped), pages read and listings saved. In Shop mode it also has public shop numbers: items sold, followers, reviews and rating.
  • counts: saved listings, seller details (fetched, failed, skipped), and rows skipped as duplicates, by filters or as other sellers' items.

In Shop mode, rows have sellerDetailsFetched: true, but counts.sellerDetailsFetched stays 0: the shop page is free, and this counter counts only paid seller-details events.

Pricing and cost examples

This Actor uses pay-per-event pricing. You pay for:

EventWhenPrice
Actor startOnce per run$0.004
ListingEach listing saved to the Dataset$0.0015 (Free plan), $0.0014 (Bronze), $0.0013 (Silver), $0.0012 (Gold and higher)
Seller usernameEach Search mode listing enriched when includeSellerDetails is on$0.0015

Search pages, shop profiles, filtered or duplicate rows and the run summary are not charged. A run with no listings costs only the start: $0.004. This is also true for a run that stops on invalid input or a source error.

Cost examples (Free plan prices)

ScenarioInputCharged eventsCost
First test1 query, maxItems: 201 start + 20 listings$0.034
Small10 listings1 start + 10 listings$0.019
Normal100 listings1 start + 100 listings$0.154
Large1,000 listings1 start + 1,000 listings$1.504
With seller usernames100 listings + includeSellerDetails1 start + 100 listings + 100 seller usernames$0.304
No matchesa filter that matches nothing1 start$0.004

To cap your spend, set Maximum cost per run in the run options. The Actor stops before it goes over it, keeps the listings it saved and ends with PARTIAL and reason CHARGE_LIMIT.

Use cases

GoalInputKey fieldsNext step
Price research for resalequeries, size, priceMin/priceMax, sortprice, originalPrice, condition, likes, soldExport CSV or Excel and compare prices
Watch a brandbrand, conditionsbrand, price, size, url, fetchedAtRun on a schedule and compare runs
Check a shopmode: shop, shopUsernamesprice, sold, likes, category + shop numbers in RUN_SUMMARYTrack stock and prices over time
Find sellers for an itemqueries, includeSellerDetails: truesellerUsername, sellerUrl, sellerVerifiedOpen the shop link

Scheduling and monitoring

Use Apify Schedules to run the same input every day or week. Each run is a full snapshot: it does not compare with earlier runs. To see changes, compare id, price and sold between two runs' Datasets, for example in a spreadsheet or with a webhook to your own system.

API, export and integrations

  • Export: download the Dataset as JSON, CSV, Excel, XML or HTML from the Output tab or by API.
  • API: start a run with POST https://api.apify.com/v2/acts/cliqtomedia~depop-scraper/runs and the input JSON, then read rows from the run's default Dataset. See the Apify API docs.
  • Integrations: connect runs to Google Sheets, Make, Zapier, Slack or webhooks in the Integrations tab.

Use with AI agents (MCP)

  • MCP server with only this Actor: https://mcp.apify.com?tools=cliqtomedia/depop-scraper. See the Apify MCP docs.
  • Smallest useful input: {"mode": "search", "queries": ["vintage nike"], "maxItems": 20}.
  • Key fields: title (what the item is), price and currency (asking price), size and condition (item details), sold (still available or not), url (link to cite).
  • A 20-listing search finishes in under 20 seconds and costs $0.034 on the Free plan. At most 50 queries or shops per run and up to 5,000 listings per query or shop (the largest tested run saved 1,300). RUN_SUMMARY explains empty and partial runs.

Limits and partial results

  • Run time: about 1,300 search listings take around 2–3 minutes. With includeSellerDetails, about 2 listings per second: 100 listings took under a minute in our test. The default timeout is 30 minutes; if time runs out, the run ends with PARTIAL and reason TIME_LIMIT and keeps what it saved.
  • Page limit: at most 250 result pages (about 6,000 listings) per query or shop (PAGE_LIMIT). The largest run we tested saved 1,300 listings; bigger runs were not tested.
  • Slow product pages: each Depop request waits at most 20 seconds. If product pages answer too slowly, seller details stop: the remaining listings are saved without a seller username, are not charged for seller-details, and are counted in counts.sellerDetailsSkipped with a warning in RUN_SUMMARY.
  • Few results (LOW_YIELD): a run reads up to 5 search pages (or 2 shop pages) for free, plus 2 search pages for each saved listing. If pages keep giving almost nothing — typos, a size nobody sells, many overlapping queries — the run stops and the remaining queries or shops are skipped. For example, when the first two shops are not found, later shops are skipped.
  • Rare filter (SPARSE_FILTER): after 10 pages, a query whose filters keep fewer than 1 in 100 listings is stopped, and the run moves to the next query.
  • Shop mode: the Actor finds a shop's listings through Depop search for the username and keeps only that shop's items. It stops after 3 pages in a row without the shop's items. In our tests it returned all listings shown on the shop page, but very large shops may be incomplete.
  • Duplicates: a listing found again in the same run is not saved again and not charged.

Troubleshooting

The run ends with no listings

Symptom: status NO_RESULTS, empty Dataset. Likely reason: the query has a typo, or the filters (size, brand, price, conditions) match nothing. Check: open RUN_SUMMARY and look at reason and targets[].skippedFilter. Action: search the same words on depop.com, loosen the filters, and run again.

Some queries or shops are skipped

Symptom: targets shows skipped, reason LOW_YIELD. Likely reason: earlier queries or shops gave too few listings (see Limits). Action: fix the spelling, remove queries that find the same items, or run the rest in a separate run.

A shop is not_found

Symptom: warning Shop not found: …. Likely reason: wrong username, or the shop was closed. Action: open https://www.depop.com/<username>/ in a browser and copy the username from the link.

The brand filter keeps fewer items than expected

Symptom: warning that the brand is not recognised. Likely reason: Depop does not know this exact brand name, so rows are matched by name. Action: use the brand name exactly as Depop shows it on listings.

The run fails with a source error

Symptom: status ERROR or PARTIAL with reason SOURCE_ERROR, code like SOURCE_BLOCKED or SOURCE_UNAVAILABLE. Likely reason: Depop was not reachable or blocked requests after several retries. Action: start the run again later. Saved listings stay in the Dataset.

FAQ

Do I need a Depop account?

No. The Actor reads only public listings and does not log in.

Is this the Depop API?

No. Depop has its own Partner API for sellers to manage their shops, and it needs a key from Depop. This Actor needs no key: it reads the public listings anyone can see and gives you the same data as JSON, CSV or Excel through the Apify API.

Why is createdAt always null?

Depop does not show the listing date to logged-out visitors. The Actor keeps the field null instead of guessing.

Why is sellerUsername empty in Search mode?

Depop search results carry only the seller's numeric id (sellerId). Turn on includeSellerDetails to add the username, or use Shop mode.

Do I pay for listings that do not match my filters?

No. Only saved listings are charged. Filtered and duplicate rows are free.

Are prices and sold status live?

They are what Depop showed at fetchedAt. Prices and status can change at any time.

Which countries are supported?

The US, UK, Australia, Canada, Germany, France, Italy and Ireland marketplaces, chosen with country.

Support

Use the Issues tab of this Actor for bugs, questions and feature requests. Include the run ID, the mode and the error text. Never post tokens, cookies or private data.