# Depop Shop Scraper (`piotrv1001/depop-shop-scraper`) Actor

The Depop Shop Scraper turns seller usernames or shop URLs into the seller profile — followers, items sold, reviews, rating — plus every active listing and optional sold history with prices, brand, condition, sizes, images and dates; ideal for resale research, competitor tracking and sourcing.

- **URL**: https://apify.com/piotrv1001/depop-shop-scraper.md
- **Developed by:** [FalconScrape](https://apify.com/piotrv1001) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

from $5.00 / 1,000 shop profiles

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

### 🚀 Depop Shop Scraper

Get everything a Depop seller has on the table. The **Depop Shop Scraper** takes usernames or shop URLs and returns the seller profile — followers, items sold, reviews and rating — with every active listing and, on request, the sold history: what sold, when, and for how much. Built for resale market research, competitor tracking, sourcing and pricing.

Pairs with the [Depop Listings Scraper](https://apify.com/piotrv1001/depop-listings-scraper): find sellers by search or category there, then pull their whole shops here.

### ✨ Features

- 🧑‍💼 **Seller profile**: name, bio, verified badge, followers, following, items sold, review count and rating, last seen, website, avatar, active-listing total.
- 🏷️ **Every active listing**: item price, shipping, tax and buyer fee, total price, original price and discount, brand, category path, condition, colours, gender, sizes, quantity, boosted flag, location, images, created and updated dates.
- 💸 **Sold history** (optional): the same fields for sold items with the sale date — thousands deep on busy shops.
- 📦 **Any shop, any size**: 100 listings per request under the hood; caps per shop keep runs predictable.
- ⚡ **Fast**: a 200-listing shop takes a few seconds; hundreds of shops per run.
- 💰 **Pay per row**: one small price per profile, listing and sold item. Unknown shops are free.

### 🛠️ How It Works

1. **Paste usernames or shop URLs** – e.g. `aviancurated` or `https://www.depop.com/aviancurated/`.
2. **Choose the depth** – Turn on **Include sold items** and set per-shop caps.
3. **Run the scraper** – Get one profile row per shop and one row per listing.

### 💰 Pricing

| Event          |  Price | What you get                                                                |
| -------------- | -----: | --------------------------------------------------------------------------- |
| Shop profile   | $0.005 | The seller row with totals                                                  |
| Active listing | $0.001 | One active listing with the full price breakdown                            |
| Sold listing   | $0.001 | One sold listing with the sale date, only when **Include sold items** is on |

A shop with 200 active listings costs $0.205; adding its last 1,000 sales adds $1.00. Shops that do not exist are not charged.

### 📥 Input

| Field                | Type    | Description                                                   |
| -------------------- | ------- | ------------------------------------------------------------- |
| `shops`              | array   | Depop usernames or shop URLs.                                 |
| `includeSold`        | boolean | Collect sold listings. Default `false`.                       |
| `maxListingsPerShop` | integer | Active listings per shop. Default `100`.                      |
| `maxSoldPerShop`     | integer | Sold listings per shop when sold items are on. Default `100`. |

### 📊 Sample Output Data

Profile row followed by listing rows (`type` is `shop`, `listing` or `sold`):

```json
[
    {
        "type": "shop",
        "username": "aviancurated",
        "id": 45750651,
        "url": "https://www.depop.com/aviancurated/",
        "name": "avian",
        "bio": "FL BASED 📦 all sales final …",
        "verified": true,
        "followers": 1104,
        "following": 10,
        "itemsSold": 3419,
        "reviewsTotal": 624,
        "rating": 4.85,
        "lastSeen": "2026-09-14T02:24:20.156256Z",
        "website": null,
        "picture": "https://media-photos.depop.com/b1/45750651/4294511912_d738194fc50546b5b00808f42d1ba0c7/U5.jpg",
        "activeListings": 166
    },
    {
        "type": "listing",
        "shop": "aviancurated",
        "id": "908007332",
        "url": "https://www.depop.com/products/aviancurated-2008-coach-madison-op-art-sabrina/",
        "status": "onsale",
        "description": "2008 Coach Madison Op Art Sabrina Satchel with original dust Like new bag#coachbag#y2k",
        "brand": "Coach",
        "category": "Bags & Purses",
        "categories": [],
        "condition": "used_excellent",
        "colours": ["black"],
        "gender": "female",
        "productType": "bag",
        "sizes": [],
        "price": 100,
        "originalPrice": 100,
        "discountPercent": null,
        "shipping": 1.99,
        "tax": 23,
        "buyerFee": 0,
        "totalPrice": 123,
        "currency": "USD",
        "quantity": 1,
        "boosted": false,
        "location": "Sun City Center, United States",
        "country": "US",
        "images": ["https://media-photos.depop.com/b1/45750651/4681714489_99a163b1fdb049778b9d1e942d3c1cef/P0.jpg"],
        "createdAt": "2026-09-12T20:30:20.584576Z",
        "updatedAt": "2026-09-13T04:07:43.783Z",
        "soldAt": null
    },
    {
        "type": "sold",
        "shop": "aviancurated",
        "id": "908023105",
        "url": "https://www.depop.com/products/aviancurated-levis-514-blue-denim-jeans-size/",
        "status": "purchased",
        "description": "Levi's 514 blue denim jeans Size 32\" #denim #90s",
        "brand": "Levi's",
        "category": "Jeans",
        "categories": ["Menswear", "Bottoms", "Jeans"],
        "condition": "used_good",
        "sizes": ["32\""],
        "price": 10,
        "totalPrice": 12.3,
        "currency": "USD",
        "soldAt": "2026-09-13T14:34:16.935597Z"
    }
]
```

Unknown shops come back as `{ "type": "shop", "username": "...", "status": "not_found" }` and are not charged.

### 🔗 Use cases

- **Competitor tracking**: Re-run on rival shops to see new listings, price changes and what actually sold.
- **Sourcing and pricing**: Sold history with dates and prices tells you what moves and at what price.
- **Seller vetting**: Followers, rating, review count, items sold and last-seen date in one row.
- **Market research**: Aggregate categories, brands and conditions across hundreds of shops.

Know every shop inside out — run the **Depop Shop Scraper** today! 🚀

# Actor input Schema

## `shops` (type: `array`):

Seller usernames or shop URLs, e.g. aviancurated or https://www.depop.com/aviancurated/.

## `includeSold` (type: `boolean`):

Also collect the shop's sold listings (with the sale date and price). Charged per sold item.

## `maxListingsPerShop` (type: `integer`):

Active listings to collect per shop.

## `maxSoldPerShop` (type: `integer`):

Sold listings to collect per shop when 'Include sold items' is on. Large shops have thousands.

## Actor input object example

```json
{
  "shops": [
    "aviancurated",
    "vintage"
  ],
  "includeSold": false,
  "maxListingsPerShop": 100,
  "maxSoldPerShop": 100
}
```

# Actor output Schema

## `rows` (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 = {
    "shops": [
        "aviancurated",
        "vintage"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("piotrv1001/depop-shop-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 = { "shops": [
        "aviancurated",
        "vintage",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("piotrv1001/depop-shop-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 '{
  "shops": [
    "aviancurated",
    "vintage"
  ]
}' |
apify call piotrv1001/depop-shop-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,piotrv1001/depop-shop-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/3V1tzFRIYLedWtabJ/builds/IfrP3CaSCPAyg5ODw/openapi.json
