# Depop Product Scraper 🛍️ (`shahidirfan/depop-product-scraper`) Actor

Extract Depop product listings at scale with titles, prices, descriptions, brands, sizes, conditions, seller details, images, likes, and product URLs. Ideal for fashion market research, price tracking, resale analysis, competitor monitoring, and e-commerce datasets.

- **URL**: https://apify.com/shahidirfan/depop-product-scraper.md
- **Developed by:** [Shahid Irfan](https://apify.com/shahidirfan) (community)
- **Categories:** E-commerce, Automation, Developer tools
- **Stats:** 2 total users, 1 monthly users, 75.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.00 / 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.

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

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

### What does Depop Product Scraper do?

Depop Product Scraper collects structured public product listings from Depop search pages. Provide a Depop URL or a keyword such as `jersey`, choose a sort order, and receive clean listing records with titles, prices, brands, conditions, sizes, images, seller names, shipping details, and canonical product links.

It is useful for fashion market research, resale sourcing, competitor monitoring, price comparisons, catalog analysis, and product trend tracking. Search URLs can include supported Depop filters, and the scraper follows additional result pages using Depop's continuation data.

### Why use Depop Product Scraper?

- **Search by URL or keyword** - Use an existing Depop search URL or start with a simple search phrase.
- **Rich product records** - Capture product details, pricing, images, attributes, stock quantities, likes, shipping, and seller information in one dataset.
- **Flexible sorting** - Collect the most relevant, newest, most popular, lowest-priced, or highest-priced listings.
- **Clean output** - Empty and null fields are omitted from every record, making exports easier to analyze.
- **Controlled runs** - Set the result limit and maximum page count for quick checks or larger collections.
- **Automation ready** - Export the dataset to JSON, CSV, Excel, XML, or connect it to downstream workflows through Apify.

### What data can you extract from Depop?

| Field                                     | Description                             |
| ----------------------------------------- | --------------------------------------- |
| `product_id`                              | Depop product identifier                |
| `title`                                   | Listing title                           |
| `description`                             | Full listing description when published |
| `url`                                     | Canonical Depop product URL             |
| `brand`, `brand_id`                       | Brand name and identifier               |
| `category`, `product_type`                | Depop category and product type         |
| `price`, `original_price`, `currency`     | Current and original price details      |
| `discount_percentage`, `is_on_sale`       | Sale information when available         |
| `condition`, `colours`, `style`, `source` | Listing attributes                      |
| `sizes`, `listed_quantity`                | Available variants and quantity         |
| `primary_image`, `image_urls`             | Product image URLs                      |
| `location`, `country`                     | Seller listing location                 |
| `seller_username`                         | Seller username                         |
| `like_count`                              | Listing likes                           |
| `shipping`                                | Shipping method and parcel information  |
| `pricing`                                 | Detailed pricing breakdown              |

### How to use Depop Product Scraper

1. Open the Actor in Apify Console.
2. Add a Depop search URL or a keyword.
3. Choose sorting, result count, and page limit.
4. Add proxy settings when your region or request volume requires them.
5. Run the Actor and download or connect the dataset.

### Input Parameters

| Parameter            | Type    | Required | Default                     | Description                                                                                |
| -------------------- | ------- | -------- | --------------------------- | ------------------------------------------------------------------------------------------ |
| `url`                | String  | No\*      | Depop jersey search example | Depop search, localized search, category, or filtered search URL.                          |
| `keyword`            | String  | No\*      | `jersey`                    | Search phrase used when `url` is empty.                                                    |
| `sort`               | String  | No       | `relevance`                 | `relevance`, `newest`, `priceAscending`, `priceDescending`, or `popularity`.               |
| `results_wanted`     | Integer | No       | `20`                        | Maximum number of records to save.                                                         |
| `max_pages`          | Integer | No       | `10`                        | Maximum number of result pages to request.                                                 |
| `country`            | String  | No       | `us`                        | Storefront: `us`, `uk`, `au`, `eu`, `de`, `fr`, or `it`. A locale in `url` takes priority. |
| `proxyConfiguration` | Object  | No       | Not set                     | Optional Apify Proxy configuration.                                                        |

\* Provide either `url` or `keyword`. If both are provided, the URL is used and its filters are preserved.

### Usage Examples

#### Search by keyword

Collect 20 relevant listings for a simple keyword search:

```json
{
    "keyword": "vintage football jersey",
    "sort": "relevance",
    "results_wanted": 20,
    "max_pages": 3
}
```

#### Use a filtered Depop URL

Reuse a search URL with its query filters and collect the newest results:

```json
{
    "url": "https://www.depop.com/search/?q=jersey&sort=newest",
    "sort": "newest",
    "results_wanted": 48,
    "max_pages": 3,
    "country": "us"
}
```

#### Collect a localized storefront

Collect UK-priced results from a localized search page:

```json
{
    "url": "https://www.depop.com/uk/search/?q=nike+hoodie",
    "sort": "priceAscending",
    "results_wanted": 50,
    "max_pages": 5,
    "country": "uk"
}
```

### Sample Output

```json
{
    "product_id": 877834945,
    "title": "Argentina Lionel Messi #10 Jersey",
    "description": "Argentina Lionel Messi #10 Jersey\n\nPremium quality Argentina jersey featuring Lionel Messi 10.",
    "url": "https://www.depop.com/products/mvshortswear-argentina-lionel-messi-10-jersey-5417/",
    "slug": "mvshortswear-argentina-lionel-messi-10-jersey-5417",
    "status": "STATUS_ONSALE",
    "active_status": "active",
    "category": "Jerseys",
    "brand": "Adidas",
    "brand_id": 151,
    "price": "22.99",
    "original_price": "35.00",
    "currency": "USD",
    "discount_percentage": 34,
    "is_on_sale": true,
    "primary_image": "https://media-photos.depop.com/r1/202416940/4505658533/P0.jpg",
    "image_urls": ["https://media-photos.depop.com/r1/202416940/4505658533/P0.jpg"],
    "location": "Grand Prairie, United States",
    "country": "US",
    "condition": "brand_new",
    "colours": ["white", "multi"],
    "gender": "male",
    "is_kids": false,
    "product_type": "jerseys",
    "seller_username": "mvshortswear",
    "sizes": [{ "name": "XL", "quantity": 7, "status": "STATUS_ONSALE" }],
    "listed_quantity": 7,
    "like_count": 0,
    "shipping": { "shipping_id": "USPS", "parcel_size": "medium", "payer": "buyer" },
    "pricing": { "currency_name": "USD", "is_reduced": true }
}
```

### Tips for best results

- Use a complete public Depop search URL when you need URL filters or a localized storefront.
- Start with `results_wanted: 20` while checking a new keyword or filter combination.
- Use `sort: newest` for new-listing monitoring and `priceAscending` for sourcing workflows.
- Set `max_pages` high enough to cover the requested result count. Each page can contain up to 24 listings.
- Use a suitable Apify Proxy configuration if Depop challenges requests from your region.
- Some fields are only published for certain listings. Missing fields are omitted from the record instead of being saved as null.

### Integrations and export formats

- **Google Sheets** - Export product rows for sourcing and price analysis.
- **Airtable** - Build a searchable resale catalog.
- **Webhooks** - Trigger downstream processing after a run finishes.
- **Make or Zapier** - Send new product data to no-code workflows.
- **Apify API** - Read datasets from applications, schedules, and monitoring jobs.

Datasets can be downloaded as JSON, CSV, Excel, XML, and other formats supported by Apify.

### Frequently Asked Questions

#### Can I use a Depop URL instead of a keyword?

Yes. Add a public Depop search, localized search, category, or filtered URL in `url`. When both inputs are present, the URL takes priority.

#### Does the scraper support pagination?

Yes. It follows Depop's continuation cursor until it reaches `results_wanted`, `max_pages`, or the end of the result set.

#### Why is a field missing from one listing?

Depop does not publish every attribute for every listing. The dataset omits unavailable values, so missing fields reflect the source listing rather than a placeholder null.

#### Can I export Depop data to CSV or Excel?

Yes. Apify datasets can be downloaded as CSV, Excel, JSON, XML, and other supported formats.

#### Can I schedule recurring Depop searches?

Yes. Create an Apify schedule to repeat a search hourly, daily, weekly, or at another interval supported by your workflow.

#### Is collecting Depop data legal?

Public data collection may be permitted in some situations, but you are responsible for complying with Depop's terms, applicable laws, privacy obligations, and reasonable request limits.

### Related Actors

- [Shein Product Scraper](https://apify.com/shahidirfan/shein-product-scraper) - Collect fashion product data for market research and price comparisons.
- [Nike Product Scraper](https://apify.com/shahidirfan/nike-product-scraper) - Collect Nike product prices, sizes, colors, and availability.
- [Target Product Scraper](https://apify.com/shahidirfan/target-product-scraper) - Collect marketplace product data for catalog and price analysis.

### Support

For issues, feature requests, or custom Actor work, use the Issues tab on the Actor page or contact the developer through Apify.

### Legal Notice

This Actor is intended for legitimate collection of publicly available product information. Users are responsible for using the output responsibly and complying with applicable laws, platform terms, privacy requirements, and intellectual property rights.

# Actor input Schema

## `url` (type: `string`):

A Depop search, localized search, category, or filtered search URL. When provided, URL filters are preserved and the URL takes priority over keyword.

## `keyword` (type: `string`):

Search phrase used when URL is empty, for example jersey, vintage Nike, or leather bag.

## `sort` (type: `string`):

Sort order for matching listings.

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

Optional storefront country. A country in a localized URL takes priority when this field is empty.

## `results_wanted` (type: `integer`):

Maximum number of listing records to save.

## `max_pages` (type: `integer`):

Maximum number of API pages to request. Each page contains up to 24 listings.

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

Optional Apify Proxy configuration. Residential routing is recommended for protected storefronts.

## Actor input object example

```json
{
  "url": "https://www.depop.com/search/?q=jersey",
  "keyword": "jersey",
  "sort": "relevance",
  "country": "us",
  "results_wanted": 20,
  "max_pages": 3,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# Actor output Schema

## `overview` (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 = {
    "url": "https://www.depop.com/search/?q=jersey",
    "keyword": "jersey",
    "sort": "relevance",
    "country": "us",
    "results_wanted": 20,
    "max_pages": 3
};

// Run the Actor and wait for it to finish
const run = await client.actor("shahidirfan/depop-product-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 = {
    "url": "https://www.depop.com/search/?q=jersey",
    "keyword": "jersey",
    "sort": "relevance",
    "country": "us",
    "results_wanted": 20,
    "max_pages": 3,
}

# Run the Actor and wait for it to finish
run = client.actor("shahidirfan/depop-product-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 '{
  "url": "https://www.depop.com/search/?q=jersey",
  "keyword": "jersey",
  "sort": "relevance",
  "country": "us",
  "results_wanted": 20,
  "max_pages": 3
}' |
apify call shahidirfan/depop-product-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,shahidirfan/depop-product-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/5QqZB4l37zyHVH3WA/builds/hYBf7uB3NAGTsE0kg/openapi.json
