# Depop Scraper: Products, Sold Items, Shops & Reviews (`epicscrapers/depop-scraper`) Actor

Scrape Depop search results, product details, whole shops with sold items, reviews, followers and sellers. Get prices, fees, brands, sizes, condition, photos, seller username and stats. $1.20/1K products, proxy included, no login. Export JSON, CSV, Excel.

- **URL**: https://apify.com/epicscrapers/depop-scraper.md
- **Developed by:** [Epic Scrapers](https://apify.com/epicscrapers) (community)
- **Categories:** E-commerce, Automation, Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.80 / 1,000 product saveds

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

### What does Depop Scraper do?

**Depop Scraper extracts products, shops, sold items, reviews, followers and sellers from [Depop](https://www.depop.com/)** in one Actor. Search the marketplace by keyword, look up products by URL, export a whole shop with its sold history and reviews, or find the sellers behind a keyword.

- 🔍 **Product search** by keyword or Depop search URL, with prices, fees, sizes, condition, brand, photos and the seller's ID
- 🛍️ **Product details** by URL, slug or ID: seller username and verified badge, product title, style, material, era, likes and seller stats
- 🏬 **Full shops**: profile stats, active listings, **sold items**, reviews, followers and liked items
- ⭐ **Reviews** as seller or buyer, with the reviewer and the reviewed item
- 👥 **Followers and following** lists
- 🔎 **Seller discovery**: the shops selling a keyword, with followers, ratings and items sold

Residential proxy is included in the price, so runs just work. No Depop account, cookies or browser needed.

### Why scrape Depop?

- **Resellers and vintage dealers**: price items from what is listed and what has sold, and track competing shops.
- **Brands and analysts**: measure demand for brands, styles and eras on the leading Gen Z resale marketplace.
- **Agencies and lead generation**: find active sellers in a niche with their follower counts, ratings and sales.
- **Researchers**: collect reviews, ratings and seller activity for marketplace studies.

### How much does it cost to scrape Depop?

You pay only for the results you get. Platform usage and residential proxy are included.

| Result                                                                     | Price               |
| -------------------------------------------------------------------------- | ------------------- |
| Product (search result, shop listing, sold item, similar item, liked item) | **$1.20 per 1,000** |
| Full product details (optional add-on per product)                         | $0.50 per 1,000     |
| Review                                                                     | $0.50 per 1,000     |
| Follower or followed account                                               | $0.50 per 1,000     |
| Seller profile                                                             | $0.002 each         |
| Actor start                                                                | $0.00005            |

Examples:

- 1,000 search results for "vintage levis": **$1.20**
- 1,000 search results with full details (seller username, title, style, seller stats): **$1.70**
- A shop with 300 sold items, 500 reviews and its profile: **$0.61**

Products get cheaper on paid Apify plans: $1.10 (Bronze), $0.95 (Silver) and $0.80 (Gold and up) per 1,000. Error rows (a deleted shop, a broken URL) are free. With the free Apify plan's monthly credit you can scrape about 4,000 products a month at no cost.

### How to use Depop Scraper

1. Open the **Input** tab and pick a mode.
2. Enter keywords, product URLs or shop URLs (or usernames).
3. Set a result limit. Start small while testing.
4. Click **Start**, then open the **Output** tab to view or download the results.

| Mode            | What you get                                                                                | Input                                             |
| --------------- | ------------------------------------------------------------------------------------------- | ------------------------------------------------- |
| `SEARCH`        | Products for a keyword                                                                      | `searchQueries` and/or `searchUrls`               |
| `PRODUCTS`      | Full details for specific products, optionally with similar items                           | `productUrls`, `productSlugs` and/or `productIds` |
| `SELLER`        | Whole shops: profile, active and sold products, optional reviews, followers and liked items | `shopUrls`, `usernames` and/or `userIds`          |
| `REVIEWS`       | A shop's reviews as seller, buyer or both                                                   | `shopUrls`, `usernames` and/or `userIds`          |
| `FOLLOWERS`     | Followers, following or both                                                                | `shopUrls`, `usernames` and/or `userIds`          |
| `SELLER_SEARCH` | Sellers whose items match a keyword                                                         | `searchQueries`                                   |

Example: a shop's sold items and reviews.

```json
{
    "mode": "SELLER",
    "shopUrls": ["https://www.depop.com/nikerlina/"],
    "shopProductsStatus": "sold",
    "maxShopProducts": 300,
    "includeReviews": true,
    "country": "GB"
}
```

`country` sets the market (and the proxy country), so search results and prices match what shoppers in that country see. Set `currency` to match, for example `US` and `USD`.

### Output

Every row has a `recordType` (`product`, `seller`, `review`, `follow`, `likedItem` or `error`), and the **Output** tab has a view for each one. Download the data as JSON, CSV, Excel or HTML, or read it through the Apify API.

A product with full details:

```json
{
    "recordType": "product",
    "source": "search",
    "searchQuery": "nike dunk",
    "productId": 957233073,
    "productUrl": "https://www.depop.com/products/robshop10m-nike-sb-dunk-low-pro-de05/",
    "sellerId": 391957244,
    "sellerUsername": "robshop100",
    "sellerVerified": false,
    "sellerCountry": "GB",
    "productTitle": "Nike Men's Multi Trainers",
    "description": "Nike SB Dunk Low Pro \"Blue\" sneakers with gray, white, and blue color blocking...",
    "brandName": "Nike",
    "price": {
        "currency": "GBP",
        "itemPrice": 15,
        "buyerFee": 1.45,
        "shipping": 2.99,
        "totalPrice": 19.44,
        "isReduced": false
    },
    "attributes": {
        "condition": "used_fair",
        "colour": ["blue", "multi"],
        "gender": "male",
        "group": "footwear",
        "productType": "trainers"
    },
    "sizes": [{ "name": "UK 9.5", "quantity": 1, "status": "STATUS_ONSALE" }],
    "likeCount": 0,
    "hasFreeShipping": false,
    "sellerItemsSold": 2,
    "sellerLastSeen": "active_today",
    "shippingConfidence": "HIGH",
    "location": "Ilford, United Kingdom",
    "detailsFetched": true
}
```

A seller profile:

```json
{
    "recordType": "seller",
    "userId": 3138013,
    "username": "nikerlina",
    "shopUrl": "https://www.depop.com/nikerlina/",
    "country": "GB",
    "verified": false,
    "followersCount": 736,
    "followingCount": 100,
    "rating": 5,
    "reviewsTotal": 57,
    "sellerRatings": 40,
    "buyerRatings": 17,
    "soldCount": 52,
    "lastSeen": "2026-09-24T13:13:22.138482Z"
}
```

| Record type | Main fields                                                                                                                                                                  |
| ----------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `product`   | ID, URL, seller ID and username, title, description, brand, category, price breakdown, condition, colour, style, material, era, sizes, photos, location, likes, seller stats |
| `seller`    | User ID, username, shop URL, bio, website, country, verified, followers, following, rating, reviews, items sold, last seen, avatar                                           |
| `review`    | Review ID, shop, reviewer, role, rating, text, date, reviewed product                                                                                                        |
| `follow`    | Direction, shop, username, profile URL, bio, country, follower counts, avatar                                                                                                |
| `likedItem` | Product ID, URL, seller, description, brand, price, status, image                                                                                                            |
| `error`     | The input that failed and why (free)                                                                                                                                         |

### Tips

- **Full product details** are off by default. Search results already include the price, description, brand, condition, sizes, photos and seller ID. Turn details on when you need the seller's username, style and material tags, or seller stats.
- **Sold items**: in `SELLER` mode set **Product status** to `sold` or `both`.
- **Faster review or follower exports**: use the `REVIEWS` or `FOLLOWERS` mode. They skip the shop's products.
- **Recurring exports**: schedule the Actor and deduplicate on `productId`, `reviewId` or `userId`.

### FAQ

**Do I need a Depop account or proxies?** No. The Actor uses Depop's public data and includes residential proxies in the price.

**Why are there fewer reviews than the shop shows?** Depop hides reviews of deleted items, so the review count on a shop is often higher than the reviews it actually returns.

**Can I scrape the US site?** Yes. Set `country` to `US` and `currency` to `USD`.

**Is scraping Depop legal?** The Actor collects only publicly visible data. Follow Depop's terms and data protection laws such as GDPR, and don't collect personal data you don't need. This Actor is not affiliated with Depop.

**Something doesn't work?** Open an issue in the **Issues** tab with your run link. Custom exports and integrations are available on request.

# Actor input Schema

## `mode` (type: `string`):

<ul><li><strong>SEARCH</strong> — find products by keyword or search URL.</li><li><strong>PRODUCTS</strong> — full details for specific product URLs, slugs or IDs.</li><li><strong>SELLER</strong> — scrape whole shops, with optional reviews and followers.</li><li><strong>REVIEWS</strong> — scrape shop reviews and reviewer/product snapshots.</li><li><strong>FOLLOWERS</strong> — scrape followers, following, or both.</li><li><strong>SELLER_SEARCH</strong> — discover the sellers behind a keyword's search results.</li></ul>
## `searchQueries` (type: `array`):

Keywords to search for. Example: <code>vintage denim jacket</code>

## `searchUrls` (type: `array`):

Depop search URLs; the keyword is extracted from <code>?q=</code>. Example: <code>https://www.depop.com/search/?q=nike+dunk</code>

## `maxProductsPerQuery` (type: `integer`):

Maximum number of products to save per keyword. Keep low for tests; raise for deep crawls.

## `includeProductDetails` (type: `boolean`):

Also open each product page (SEARCH and SELLER modes) to add the seller username, verified badge and country, product title, style, material, era, like count, free shipping, and the seller's rating, items sold, last seen and average shipping days. Charged as one extra <em>product details</em> event per product. Off by default for faster, cheaper runs.

## `productUrls` (type: `array`):

Depop product URLs. Example: <code>https://www.depop.com/products/nikerlina-adidas-originals-fom-quake-trainers/</code>

## `productSlugs` (type: `array`):

Product slugs without the URL, e.g. <code>nikerlina-adidas-originals-fom-quake-trainers</code>. You can also paste numeric product IDs here.

## `productIds` (type: `array`):

Numeric Depop product IDs, e.g. <code>662860586</code>.

## `includeSimilar` (type: `boolean`):

Also scrape the <em>Similar items</em> shown on each product page (one extra request per product).

## `shopUrls` (type: `array`):

Depop shop URLs. Example: <code>https://www.depop.com/nikerlina/</code>

## `usernames` (type: `array`):

Depop usernames, e.g. <code>nikerlina</code>. Can be used instead of shop URLs or together with them.

## `userIds` (type: `array`):

Numeric Depop user IDs, e.g. <code>3138013</code>.

## `includeSellerProfile` (type: `boolean`):

Save one <code>seller</code> record per shop with bio, follower counts, ratings and avatar.

## `includeShopProducts` (type: `boolean`):

Scrape the shop's product listings (active and/or sold, depending on the status setting below).

## `shopProductsStatus` (type: `string`):

Scrape the shop's <code>active</code> listings, <code>sold</code> items, or <code>both</code>.

## `maxShopProducts` (type: `integer`):

Maximum number of product records per shop (split between active and sold when scraping both).

## `includeReviews` (type: `boolean`):

In SELLER mode, also scrape buyer/seller feedback. REVIEWS mode always includes it.

## `reviewsRole` (type: `string`):

Reviews where the shop acted as <code>seller</code>, as <code>buyer</code>, or <code>both</code>.

## `maxReviewsPerShop` (type: `integer`):

Maximum number of reviews per shop and role.

## `includeFollows` (type: `boolean`):

In SELLER mode, also scrape follow lists. FOLLOWERS mode always includes them.

## `followsDirection` (type: `string`):

Scrape accounts that <code>follow</code> the shop (followers), accounts the shop <code>follows</code> (following), or <code>both</code>.

## `maxFollowsPerShop` (type: `integer`):

Maximum number of follow records per shop and direction.

## `includeLikedItems` (type: `boolean`):

Scrape the products the shop has liked.

## `maxLikedItemsPerShop` (type: `integer`):

Maximum number of liked-item records per shop.

## `maxSellersPerQuery` (type: `integer`):

Used in SELLER_SEARCH mode: maximum number of sellers to save per keyword.

## `includeSellerProfiles` (type: `boolean`):

Used in SELLER_SEARCH mode: add followers, rating, reviews and items sold to every seller found (one extra request per seller).

## `country` (type: `string`):

Two-letter market country code, e.g. <code>GB</code>, <code>US</code>. Pins the proxy country and the market used for search and prices.

## `currency` (type: `string`):

Three-letter currency for prices, e.g. <code>GBP</code>, <code>USD</code>.

## `pageLimit` (type: `integer`):

Page size for API requests. Lower this if you see rate limiting.

## `proxyConfiguration` (type: `object`):

Apify Proxy settings. Residential proxy is included in the price and on by default; Depop blocks datacenter IPs.

## Actor input object example

```json
{
  "mode": "SEARCH",
  "searchQueries": [
    "vintage denim"
  ],
  "searchUrls": [],
  "maxProductsPerQuery": 100,
  "includeProductDetails": false,
  "productUrls": [
    "https://www.depop.com/products/nikerlina-adidas-originals-fom-quake-trainers/"
  ],
  "productSlugs": [],
  "productIds": [],
  "includeSimilar": false,
  "shopUrls": [
    "https://www.depop.com/nikerlina/"
  ],
  "usernames": [],
  "userIds": [],
  "includeSellerProfile": true,
  "includeShopProducts": true,
  "shopProductsStatus": "active",
  "maxShopProducts": 1000,
  "includeReviews": false,
  "reviewsRole": "seller",
  "maxReviewsPerShop": 500,
  "includeFollows": false,
  "followsDirection": "followers",
  "maxFollowsPerShop": 500,
  "includeLikedItems": false,
  "maxLikedItemsPerShop": 200,
  "maxSellersPerQuery": 50,
  "includeSellerProfiles": true,
  "country": "GB",
  "currency": "GBP",
  "pageLimit": 24,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "groups": [
      "RESIDENTIAL"
    ]
  }
}
```

# Actor output Schema

## `results` (type: `string`):

Default dataset containing product, seller, review, follow, liked item and error records.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "mode": "SEARCH",
    "searchQueries": [
        "vintage denim"
    ],
    "searchUrls": [],
    "productUrls": [
        "https://www.depop.com/products/nikerlina-adidas-originals-fom-quake-trainers/"
    ],
    "productSlugs": [],
    "productIds": [],
    "shopUrls": [
        "https://www.depop.com/nikerlina/"
    ],
    "usernames": [],
    "userIds": []
};

// Run the Actor and wait for it to finish
const run = await client.actor("epicscrapers/depop-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "mode": "SEARCH",
    "searchQueries": ["vintage denim"],
    "searchUrls": [],
    "productUrls": ["https://www.depop.com/products/nikerlina-adidas-originals-fom-quake-trainers/"],
    "productSlugs": [],
    "productIds": [],
    "shopUrls": ["https://www.depop.com/nikerlina/"],
    "usernames": [],
    "userIds": [],
}

# Run the Actor and wait for it to finish
run = client.actor("epicscrapers/depop-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "mode": "SEARCH",
  "searchQueries": [
    "vintage denim"
  ],
  "searchUrls": [],
  "productUrls": [
    "https://www.depop.com/products/nikerlina-adidas-originals-fom-quake-trainers/"
  ],
  "productSlugs": [],
  "productIds": [],
  "shopUrls": [
    "https://www.depop.com/nikerlina/"
  ],
  "usernames": [],
  "userIds": []
}' |
apify call epicscrapers/depop-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,epicscrapers/depop-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/ljZXhNaGtcRUfykmC/builds/1EsIdeB5bsnoDp6k7/openapi.json
