How to use it: 3 steps
- Make a free Apify accountApify is the cloud platform where our tools run. The free plan gives you $5 of usage every month, no credit card needed. You pay Apify, not us.
- Paste your input and press StartNo code needed: you fill in a form (the input). It already has a working example. For example:
vintage nikein Search queries. Each start is one run. - Download the resultsWhen the run ends, the results are in a table (the dataset). Open Output, press Export and pick Excel or CSV. JSON and the API are there too.
This tool is an Apify Actor: a small program that runs on Apify. You can also run it on a schedule, for example every Monday. New to it? Read how it works, step by step and the 8 words you need first.
What it does
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.
- 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.
Good for
- 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 good fit
- No login: the Actor does not read messages, orders, offers, private data or seller contact details.
- Listing dates are not available without login:
createdAtis alwaysnull. - 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).
Who uses it
Resellers
Check prices of a brand or item before you buy or sell.
Shop owners
See how a rival shop prices items and what has sold.
Fashion researchers
Collect brands, sizes and photos for trend study.
Price
Pay per event: you pay for each result the tool saves, plus a small start fee for each run. The price includes Apify platform costs. Apify bills you, not us. Prices below are for the Apify free plan.
| What you pay for | Price | When |
|---|---|---|
| Start fee | $0.004 | Charged once per run. This tool uses 1 GB of memory or less by default; more memory costs more. |
| Listing | $0.0015 (from $0.0012 on paid Apify plans) | One Depop listing saved to the dataset. |
| Seller username | $0.0015 | Seller username, shop link and verified badge read from the listing page (Search mode, only when turned on). |
Examples
- One result: about $0.0055.
- 1,000 results: about $1.50.
- Every day 100 results, for 30 days: about $4.62 a month.
Free to try: the Apify free plan gives you $5 of usage every month, no credit card needed. That is enough for about 3,300 results.
Prices checked on 24 October 2026. See the current price on Apify.
Questions
Is this the Depop API?
No. Depop's Partner API needs a key. This tool reads public listings.
Why is the listing date empty?
Depop hides dates from logged-out visitors. The tool does not guess.
Do I pay for filtered listings?
No. Only saved listings are charged.
Which countries can I search?
US, UK, Australia, Canada, Germany, France, Italy and Ireland.
Do I need a Depop account?
No. The Actor reads only public listings and does not log in.
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.
Details
Step by step on Apify
- Open the Input tab.
- Keep What to scrape (
mode) as Search results. - Add a keyword to Search queries (
queries), for examplevintage nike. The form already has it. - Keep Max listings per query or shop (
maxItems) at 20 for a first test. - Click Start.
- Open the Output tab. The Overview table shows photo, title, price, brand, size, condition, likes, sold and link.
Use cases
| Goal | Input | Key fields | Next step |
|---|---|---|---|
| Price research for resale | queries, size, priceMin/priceMax, sort | price, originalPrice, condition, likes, sold | Export CSV or Excel and compare prices |
| Watch a brand | brand, conditions | brand, price, size, url, fetchedAt | Run on a schedule and compare runs |
| Check a shop | mode: shop, shopUsernames | price, sold, likes, category + shop numbers in RUN_SUMMARY | Track stock and prices over time |
| Find sellers for an item | queries, includeSellerDetails: true | sellerUsername, sellerUrl, sellerVerified | Open the shop link |
Tips for better results
- Pick the right marketplace country before you start.
- Use shop mode to get seller names for free.
- Avoid rare filter mixes. The run stops a query with very few matches.
Limits and good to know
- 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 withPARTIALand reasonTIME_LIMITand 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 incounts.sellerDetailsSkippedwith a warning inRUN_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 areskipped. 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
For developers
Sample result
One result from a real test run, in JSON. Real values change from run to run. In Excel or CSV each field is a column.
{
"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"
}Use it from code
Actor ID: cliqtomedia/depop-scraper. You need your Apify API token from Apify Console → Settings → API & Integrations.
from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("cliqtomedia/depop-scraper").call(run_input={
"mode": "search",
"queries": [
"vintage nike"
]
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item)curl -X POST "https://api.apify.com/v2/acts/cliqtomedia~depop-scraper/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"mode": "search", "queries": ["vintage nike"]}'# pip install langchain-apify
# set APIFY_TOKEN in your environment
from langchain_apify import ApifyActorsTool
tool = ApifyActorsTool("cliqtomedia/depop-scraper")
result = tool.invoke({"run_input": {"mode": "search", "queries": ["vintage nike"]}})
print(result)The cURL call waits for the results, up to 300 seconds. For longer runs, start a run (/runs) and get the results with a webhook or by checking the run. Apify API docs. LlamaIndex, MCP for AI agents and the JavaScript client: AI agents & MCP.
Data fields (39)
| Field | Type | Meaning |
|---|---|---|
id | integer | Depop product id. |
slug | string | Product slug, the last part of the listing link. |
url | string | Listing page on depop.com. |
title | string | Depop has no title field: the first line of the description, up to about 100 characters. |
description | string | Full listing description as the seller wrote it. |
price | number | Current item price in currency, without shipping. |
originalPrice | number | Price before the reduction when isReduced is true. |
isReduced | boolean | The seller has cut the price. |
currency | string | ISO currency code of the chosen marketplace, e.g. USD, GBP. |
shippingPrice | number | Shipping price Depop shows with the search result; null when not shown. |
brand | string | Brand name, e.g. Nike. |
brandId | integer | Depop's numeric brand id. |
size | string | Size label(s), comma-separated when the listing has several. |
sizes | array | All size labels of the listing. |
condition | string | brand_new, used_like_new, used_excellent, used_good or used_fair. |
category | string | Depop category name. |
productType | string | Product type, e.g. tshirts, jeans. |
gender | string | Department: male, female or null. |
colours | array | Colours the seller chose. |
styles | array | Style tags the seller chose. |
sellerId | integer | Seller's numeric Depop id. |
sellerUsername | string | Seller username. Always set in Shop mode; in Search mode only with "Add seller username". |
sellerUrl | string | Seller shop link. |
sellerVerified | boolean | Seller has the Depop verified badge; null when not fetched. |
likes | integer | Number of likes. |
sold | boolean | The listing is no longer on sale (sold or reserved). |
status | string | Depop's raw status, e.g. STATUS_ONSALE. |
quantity | integer | Quantity listed. |
photo | string | Main photo link. |
photos | array | All photo links, largest size Depop serves. |
isBoosted | boolean | Promoted (boosted) listing. |
country | string | Country the listing ships from. |
createdAt | null | Always null: Depop does not give the listing date to logged-out visitors. |
sellerDetailsFetched | boolean | Seller username and badge are filled in. |
mode | string | search or shop. |
searchQuery | string | Query that found the listing (Search mode). |
shopUsername | string | Shop the listing was taken from (Shop mode). |
position | integer | Position within its query or shop, from 1. |
fetchedAt | string | When the Actor read the listing (ISO 8601, UTC). |
Input settings (12)
The main fields of the input form. With the API you send them as JSON.
| Setting | Name in the API | Type | Example value |
|---|---|---|---|
| What to scrape | mode | string | "search" |
| Search queries | queries | array | ["vintage nike"] |
| Shop usernames | shopUsernames | array | |
| Max listings per query or shop | maxItems | integer | 20 |
| Brand | brand | string | |
| Size | size | string | |
| Min price | priceMin | number | |
| Max price | priceMax | number | |
| Condition | conditions | array | |
| Sort | sort | string | "relevance" |
| Marketplace | country | string | "us" |
| Add seller username (Search mode) | includeSellerDetails | boolean | false |
