# Depop Scraper \[Only $1.5/1K💰] | Fashion Resale | 11 Markets (`ahmed_jasarevic/depop-scraper`) Actor

Extract Depop listings data from 11 marketplaces — US, UK, AU, CA, NZ, IE, DE, FR, IT, NL, ES — via Depop's own public JSON API. Prices, brands, sold & boosted flags, and seller info for fashion resale research and price monitoring. No browser, one request per 48 listings.

- **URL**: https://apify.com/ahmed_jasarevic/depop-scraper.md
- **Developed by:** [Ahmed Jasarevic](https://apify.com/ahmed_jasarevic) (community)
- **Features:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.30 / 1,000 results

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

### Depop Scraper — Fashion Resale Listings & Prices From 11 Marketplaces

Extract Depop listings data for secondhand fashion market research and resale arbitrage: prices, brands, conditions, sold and boosted flags, and seller info from 11 Depop marketplaces — via Depop's own public JSON API, no browser, from $1.5 per 1,000 results.

#### Main Use Cases

- **Depop price monitoring** — track how vintage and streetwear prices move across US, UK, AU, EU and more.
- **Vintage clothing & fashion trend research** — brands, conditions, colours and like counts for demand analysis.
- **Cross-marketplace arbitrage** — compare the same brand/size across Depop, Vinted and eBay for buy-low / sell-high deals.
- **Sold-item pricing research** — diff `isSold` over scheduled runs to learn what actually sells.
- **Reseller lead intelligence** — seller verified flags, countries and shop slugs per listing.
- **Depop market sizing** — pull a normalized dataset per regional marketplace for resale benchmarks.

### How It Works

![Depop Scraper workflow: from keyword searches and listing URLs to fashion resale records with prices, brands, conditions and seller context](https://api.apify.com/v2/key-value-stores/oeuA0kLOyhbRM4fzt/records/how-it-works-depop-scraper.webp)

Looking for a **Depop scraper** or a practical **fashion resale data alternative**? Search by keyword or paste Depop search and product URLs, then filter by country, price, condition, brand, size or colour. Each row includes product ID, title, price and original price, currency, brand, size, condition, category, colours, sold and boosted flags, seller details, photos and listing URL.

Use the dataset for resale price monitoring, sold-item research, catalog building and fashion market analysis across 11 Depop marketplaces. Export as JSON, CSV or Excel, or pull results through the Apify API. Pay from $1.50 per 1,000 listings.

### Build Resale Databases and Track Fashion Prices

Every dataset row is a normalized listing: price with strike-through original price, currency, brand, condition, colours, category hierarchy, like count, photos and listing URL — plus `isSold` / `onSale` / `isBoosted` status flags that distinguish live from sold and paid listings. Seller fields (username, id, verified, country) ride along on every row, so you can build a resale research database without a single detail-page visit.

### Input

| Field | Type | Required | Default | Notes |
|---|---|---|---|---|
| `searchQueries` | array of string | source | — | Free-text keywords, one search per entry, e.g. `["carhartt detroit jacket", "vintage levis 501"]`. |
| `searchUrls` | array of URL | source | — | Full `depop.com/search` URLs; filters in the URL (price, sort, brand, colour) parse automatically. |
| `productUrls` | array of URL | source | — | Individual listing URLs fetched with full detail — returns the real seller username, id, verification flag and generated title. |
| `shopUsernames` | array of string | no | — | Accepted for forward compatibility only — **not supported**: Depop gates full shop inventory behind login. Use search or product URLs instead. |
| `maxItems` | integer | no | `100` | Hard cap on total rows (min 1, max 2000). |
| `maxItemsPerQuery` | integer | no | `48` | Cap per individual search query (max 2000). |
| `country` | string (enum) | no | `us` | Marketplace: `us`, `gb`, `au`, `ca`, `nz`, `ie`, `de`, `fr`, `it`, `nl`, `es`. Determines currency of returned prices. |
| `sortBy` | string (enum) | no | `relevance` | `relevance`, `newest`, `price_low_to_high`, `price_high_to_low`, `most_popular`, `biggest_saves`. |
| `priceMin` | integer | no | — | Only return listings at or above this price. |
| `priceMax` | integer | no | — | Only return listings at or below this price. |
| `condition` | string (enum) | no | `any` | `any`, `brand_new`, `used_like_new`, `used_excellent`, `used_good`, `used_fair`. |
| `brands` | array of string | no | — | Brand filter (Depop slugs or names as shown in listing URLs). |
| `sizes` | array of string | no | — | Size filter, e.g. `["M", "L"]`. See note on `size` in Output. |
| `colours` | array of string | no | — | Colour filter, e.g. `["black", "brown"]`. |
| `proxy` | object | no | UNBLOCKER | **Leave default.** `UNBLOCKER` (default) is the only group verified to reach Depop; `RESIDENTIAL`, `DATACENTER`, `SHADER`, `MOBILE`, `ISP`, `GOOGLE_SERP` are refused. Set `useApifyProxy: false` + `proxyUrls` to use your own proxy. |

### Output: One Dataset Row per Depop Listing

| Field | Description |
|---|---|
| `title` / `description` | Product title and seller description. |
| `price` / `originalPrice` / `currency` | Current price, strike-through price, currency. |
| `onSale` / `isSold` / `isBoosted` | Status flags: live vs. sold, and paid "boosted" listings. |
| `brand`, `condition`, `colours`, `gender`, `isKids` | Product attributes (populated). |
| `size`, `sizes` | Usually empty — Depop does not expose size variants on its APIs; use `sizeFilterMatched` only as a filter signal, not a parsed attribute. |
| `likeCount`, `photos`, `mainPhoto` | Engagement and images. |
| `category`, `categoryGroup`, `categoryType`, `categoryPath` | Category hierarchy. |
| `sellerId`, `sellerUsername`, `sellerVerified`, `sellerCountry`, `location` | Seller / shop info. In search results `sellerUsername` is the shop slug and `sellerId` is empty; paste listings into `productUrls` to get the real username, id and verification flag. |
| `listingUrl` | Public link to the listing. |
| `source`, `scrapedAt` | Provenance (e.g. `search:carhartt`) and scrape timestamp. |

Example row (trimmed):

```json
{
  "title": "Carhartt Men's Black Hat",
  "description": "Carhartt black beanie #workwear #winter",
  "price": 14,
  "originalPrice": 14,
  "currency": "USD",
  "onSale": true,
  "isSold": false,
  "isBoosted": true,
  "brand": "Carhartt",
  "size": null,
  "sizes": [],
  "condition": "Brand new",
  "colours": ["black"],
  "category": "Hats",
  "categoryGroup": "Accessories",
  "categoryType": "Hat",
  "likeCount": null,
  "photos": ["https://media-photos.depop.com/.../P0.jpg"],
  "listingUrl": "https://www.depop.com/products/dongf_1a7-carhartt-black-beanie-workwear-winter-b7e8/",
  "sellerId": 467323726,
  "sellerUsername": "dongf_157",
  "sellerVerified": false,
  "sellerCountry": "US",
  "location": "Osijek, Croatia",
  "source": "search:carhartt",
  "scrapedAt": "2026-09-27T08:27:08.346Z"
}
```

### Example Input

```json
{
  "searchQueries": ["carhartt detroit jacket", "vintage levis 501"],
  "country": "gb",
  "sortBy": "newest",
  "priceMin": 20,
  "priceMax": 200,
  "condition": "used_good",
  "maxItems": 200,
  "maxItemsPerQuery": 48
}
```

### Example Input — Product URLs (detail mode)

```json
{
  "productUrls": ["https://www.depop.com/products/dongf_1a7-carhartt-black-beanie-workwear-winter-b7e8/"],
  "country": "us"
}
```

### Pricing & Cost Estimation

This Actor is HTTP/JSON only — it runs on 256 MB and never starts a browser, making it one of the cheapest kinds of scraper on Apify.

- **Start:** $0.00005 per run
- **Result:** **$0.0015 — $1.50 per 1,000 listings** (same price on free and bronze tiers; $0.0013–0.0014 on silver and above)
- **Free tier:** 25-item preview cap so nobody's bill spikes by accident.
- **Proxy:** UNBLOCKER is billed per request (a fraction of a cent) — the only ongoing cost besides compute; included in paid plans.

Because a search run costs roughly one request per 48 listings, a few hundred listings stays a small fraction of a compute unit.

### Integrations & Automation

Runs on the Apify platform with **REST API access, webhooks, scheduled runs, dataset exports (JSON, CSV, Excel) and Zapier/Make integrations** out of the box. Recommended schedules:

- **Sold monitoring:** `sortBy: newest` every 30–60 minutes; diff `isSold` later to see what sold.
- **Arbitrage research:** same queries across two `country` values, weekly, comparing price + currency per brand/size.
- **Trend tracking:** branded queries on a daily schedule into a spreadsheet for fashion demand signals.

### Related Actors

- [**Vinted Smart Scraper — Cross-Country Arbitrage Scanner**](https://apify.com/kazkn/vinted-smart-scraper) — Vinted price-gap arbitrage across 26 markets; the adjacent secondhand-fashion cluster.
- [**Vinted Search Scraper**](https://apify.com/epicscrapers/vinted-search-scraper) — Vinted product listings, prices and seller data for price monitoring.
- [**Vinted Cross-Country Arbitrage Scraper**](https://apify.com/ahmed_jasarevic/vinted-cross-country-arbitrage-scraper) — by the same developer; the arbitrage partner this Actor's README references.
- [**eBay Sold Items Scraper**](https://apify.com/ahmed_jasarevic/ebay-scraper) — by the same developer; final sold prices for sell-through research (eBay acquired Depop in 2026).
- [**Vinted Scraper**](https://apify.com/automation-lab/vinted-scraper) — Vinted fashion listings across 16 European markets.

### FAQ

#### Is there an official Depop API — why use this Actor instead?

Depop has no official public API. The Actor uses the public JSON presentation API that Depop's own web client calls, plus the server-rendered RSC payload on product pages — the same data path the SPA renders, without running a browser. Note: seller shops and detailed stats are gated behind login (`shopUsernames` is accepted but cannot be scraped anonymously).

#### What are alternatives to this Depop scraper?

Manual browsing on depop.com, or other Store actors such as `abotapi/depop-scraper`, `b2b_leads/Depop-Real-Time-Data`, or `crawlerbros/mercari-poshmark-depop-scraper`. Most cover fewer of the 11 marketplaces; none bundles sold & boosted flags with a verified UNBLOCKER proxy default like this one.

#### Why do I get 403s?

You should not — the default proxy is the **UNBLOCKER** group, the only one verified to reach Depop (Cloudflare + Fastly WAF deny by IP). If you overrode the proxy input and see 403s, set it back to `UNBLOCKER` or supply your own proxy via `proxyUrls`.

#### Is Depop being acquired — what changed?

Depop was acquired by **eBay for $1.2 billion** (announced February 2026, closing expected Q2 2026), with roughly 7 million active buyers and ~$1 billion in gross merchandise sales in 2025 — a strong signal for resale and vintage-fashion data demand. The Actor's public data paths are unchanged.

#### Are full shop inventories available?

No. Depop gates a seller's complete shop inventory and detailed stats behind login, and the public shop page server-renders no listings. This Actor captures seller fields on the listings themselves. To get the real seller identity behind a search result, paste specific listings into **Product URLs**.

#### Why are `size` / `sizes` empty?

Depop does not expose the size variant on either endpoint. Use `sizeFilterMatched` only as a signal that a listing matched your `sizes` filter, not as a parsed attribute.

### For AI Agents & LLM Apps

**Purpose:** returns one dataset row per Depop listing (price, brand, condition, sold/boosted flags, seller fields) across 11 regional marketplaces.

Minimal working input:

```json
{ "searchQueries": ["carhartt jacket"], "country": "us", "maxItems": 50 }
```

Variants:

- Marketplace + filters: `{ "searchQueries": ["vintage levis"], "country": "gb", "condition": "used_like_new", "priceMax": 150, "maxItems": 100 }`
- Exact listings (detail mode, real seller identity): `{ "productUrls": ["https://www.depop.com/products/USER-SLUG-PRODUCT-ID/"], "country": "us" }`

Output field list (common): `title`, `description`, `price`, `originalPrice`, `currency`, `onSale`, `isSold`, `isBoosted`, `brand`, `condition`, `colours`, `gender`, `isKids`, `size`, `sizes`, `likeCount`, `photos`, `mainPhoto`, `category`, `categoryGroup`, `categoryType`, `categoryPath`, `sellerId`, `sellerUsername`, `sellerVerified`, `sellerCountry`, `location`, `listingUrl`, `source`, `scrapedAt`.

Behaviors an agent should know:

- **At least one source is required**: `searchQueries`, `searchUrls` or `productUrls` — otherwise the run returns no rows.
- **A 403 means blocked IP, not bad input** — run through the UNBLOCKER proxy group (the default); residential/datacenter are refused by Depop's WAF. Never "fix" 403s by retrying without proxy.
- **Search results expose only the shop slug**, not the real seller — for seller id/verification use `productUrls` on specific listings.
- **`size`/`sizes` are usually empty** — don't filter your pipeline on parsed sizes.
- **`maxItems` (default 100, max 2000)** is the only run-size cap; per-query cap `maxItemsPerQuery` defaults to 48.

**Billing:** pay-per-result — start $0.00005, then $0.0015 per listing ($1.50 per 1K results); free tier caps at 25 listings.

### Legal & Compliance Disclaimer

This Actor is an independent tool and is **not affiliated with, endorsed by, or sponsored by Depop** (depop.com). It reads only data Depop serves publicly to anonymous browsers via its own web-client endpoints — no login bypass, no CAPTCHA solving, no private/seller-only data. You are responsible for complying with Depop's Terms of Service and `robots.txt`, and with data-protection law where the output contains seller-derived personal data such as usernames or locations. Do not use extracted contact-like or seller data for unsolicited outreach in violation of applicable law (e.g. GDPR, CAN-SPAM). This information is not legal advice.

### SEO Keywords

depop scraper, depop data extraction, depop price monitoring, secondhand fashion data, vintage clothing prices, resale market research, depop sold listings, depop boosted listings, fashion resale scraper, depop seller data, cross-marketplace arbitrage, fashion trend analysis, depop us marketplace, depop uk marketplace, depop europe, vintage streetwear prices, carhartt price tracker, levis vintage pricing, depop listing api, depop product details, circular fashion analytics, resale market data, depop country sites

# Actor input Schema

## `searchQueries` (type: `array`):

Free-text keywords to search on Depop, one per entry - e.g. "carhartt detroit jacket", "vintage levis 501". Each query is scraped up to "Max items per query".

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

Full depop.com search URLs copied from your browser. Any filters in the URL (price, sort, brand, colour) are parsed and applied automatically. Example: https://www.depop.com/search/?q=nike+dunk\&priceMax=80\&sort=newlyListed

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

Individual listing URLs to fetch with full detail - e.g. https://www.depop.com/products/username-vintage-nike-hoodie-abc123/. Always returns the complete record including the real seller username and id.

## `shopUsernames` (type: `array`):

Accepted for forward compatibility only. Depop requires a login for full shop inventory and seller stats, and the public shop page server-renders no listings, so this input cannot be scraped anonymously. Use search queries or product URLs to capture seller data instead.

## `maxItems` (type: `integer`):

Hard cap on the total number of rows pushed to the dataset. The run stops as soon as this many unique listings have been saved.

## `maxItemsPerQuery` (type: `integer`):

Cap per individual search query, so one broad query cannot consume the whole budget.

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

Depop marketplace to search. Also determines the currency of returned prices.

## `sortBy` (type: `string`):

Result order. "newest" is ideal for monitoring freshly listed items.

## `priceMin` (type: `integer`):

Only return listings priced at or above this value.

## `priceMax` (type: `integer`):

Only return listings priced at or below this value.

## `condition` (type: `string`):

Filter by item condition.

## `brands` (type: `array`):

Optional brand filter. Accepts Depop brand slugs or names as shown in listing URLs.

## `sizes` (type: `array`):

Optional size filter, e.g. \["M", "L"].

## `colours` (type: `array`):

Optional colour filter, e.g. \["black", "brown"].

## `proxy` (type: `object`):

Depop answers requests from blocked IP ranges with a hard 403 (a branded "Forbidden - Depop" page, not a solvable Cloudflare challenge), so a proxy is required in practice. **UNBLOCKER is the recommended group** and the default: it is purpose-built for sites behind anti-bot protection and is the only group verified to reach Depop. RESIDENTIAL and ordinary datacenter IPs are refused. The exit IP country follows the "Marketplace" setting.

## Actor input object example

```json
{
  "maxItems": 100,
  "maxItemsPerQuery": 48,
  "country": "us",
  "sortBy": "relevance",
  "condition": "any",
  "proxy": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "UNBLOCKER"
    ]
  }
}
```

# Actor output Schema

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

No description

# 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 = {
    "proxy": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "UNBLOCKER"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("ahmed_jasarevic/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 = { "proxy": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["UNBLOCKER"],
    } }

# Run the Actor and wait for it to finish
run = client.actor("ahmed_jasarevic/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 '{
  "proxy": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "UNBLOCKER"
    ]
  }
}' |
apify call ahmed_jasarevic/depop-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,ahmed_jasarevic/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/ZUJAU7bY5gVygUE2m/builds/FOQEt7QHfuYpIBnba/openapi.json
