Tony Wang6 min readHow to Scrape Depop in 2026 (API & Python)
Scrape Depop in 2026 — listing search, item detail, seller shops, and categories as structured JSON — DIY, no-code, or a structured API.
The fastest way to scrape Depop in 2026 is to call a structured API that returns normalized JSON for listing search, item detail, seller shops, and the category taxonomy — instead of parsing Depop's pages yourself. Depop doesn't offer a general-purpose public API for outside read access, so this guide covers the DIY, no-code, and structured-API options, what each returns, and where the legal lines actually sit.
Why scrape Depop?
Depop, owned by Etsy since 2021, is a Gen-Z-skewing secondhand fashion marketplace built around individual sellers curating their own shop — closer to Poshmark's social-selling model than to a Nike- or Zara-style retailer with one unified catalog. That shapes what's worth collecting:
- Resale-price research — see what a brand, item type, or style actually sells for peer-to-peer, as a comp against retail or another resale marketplace.
- Trend and style tracking — pull listing volume and pricing by keyword or category to see what's circulating on a platform that skews toward vintage and Y2K resale.
- Seller/shop monitoring — watch a specific shop's catalog and pricing over time for competitive or sourcing research.
- Category and taxonomy mapping — use the full department/category/subcategory tree to size a niche or build a matching pipeline.
- AI pipelines and agents — feed normalized listing and shop data into a pricing or sourcing agent instead of screen-scraping HTML.
Is it legal to scrape Depop?
Option 1: DIY in Python (and why it breaks)
A naive scraper fetches a search or item page and parses listing cards out of the rendered markup:
import requests
from bs4 import BeautifulSoup
resp = requests.get(
"https://www.depop.com/search/?q=vintage+levis",
headers={"User-Agent": "Mozilla/5.0 (compatible; research-bot/1.0)"},
)
soup = BeautifulSoup(resp.text, "html.parser")
# Listing cards and item detail render from client-side app state, so a
# plain HTML parse often returns a shell — you end up reverse-engineering
# the app's internal endpoints instead
It demos once, then breaks:
- The ToS is explicit. Depop's Terms of Service name "mining data, scraping or crawling" and "bots or other third party software" directly, and the separate API Access Service Terms close the same door around Depop's own official API.
- Anti-bot defenses. Depop fronts its site with bot detection; automated requests without realistic headers and browsing behavior get challenged or blocked quickly, especially on search.
- Client-rendered markup. Search results and item pages hydrate from JavaScript app state rather than stable server HTML — a layout or bundle change silently breaks hand-written CSS selectors.
- No general read API. Depop's own Partner API is allowlisted for verified sellers managing their own listings, not for outside search or research access — there's no sanctioned bulk-read alternative.
Option 2: No-code tools
Browser extensions and point-and-click scrapers can export a single search page or a shop snapshot, but tracking resale prices by brand or watching a shop's catalog over time means re-pulling the same pages on a schedule — a job for a stable, versioned endpoint with stored history, not a one-off manual export.
Option 3: A structured Depop API
For a repeatable workflow, Crawlora's Depop API returns normalized JSON for search, item detail, seller shops, and categories — no page parsing or bot-defense upkeep. Search by keyword, with optional price, condition, colour, and category filters:
curl "https://api.crawlora.net/api/v1/depop/search?query=vintage+levis" \
-H "x-api-key: $CRAWLORA_API_KEY"
Then take an item slug from a search result and pull full detail, a seller's shop, and the category tree in Python:
import requests
h = {"x-api-key": "YOUR_API_KEY"}
base = "https://api.crawlora.net/api/v1/depop"
hits = requests.get(f"{base}/search", headers=h, params={"query": "vintage levis"}).json()["data"]["items"]
slug = hits[0]["slug"]
item = requests.get(f"{base}/item/{slug}", headers=h).json()["data"]
shop = requests.get(f"{base}/shop/{item['seller']['username']}", headers=h).json()["data"]
categories = requests.get(f"{base}/categories", headers=h).json()["data"]
An item-detail response is normalized JSON with photos and seller info (confirm the exact fields in the docs):
{
"code": 200,
"msg": "OK",
"data": {
"slug": "vintage-levis-501-jeans-w32-l32",
"title": "Vintage Levi's 501 Jeans W32 L32",
"price": 45,
"brand": "Levi's",
"condition": "Good",
"colour": "Blue",
"description": "Classic 501s, light wash, some fading on the knees.",
"photos": [
"https://media-photos.depop.com/b1/12345678/1_original.jpg",
"https://media-photos.depop.com/b1/12345678/2_original.jpg"
],
"seller": {
"username": "vintagefinds99",
"shop_name": "Vintage Finds",
"location": "London, UK",
"url": "https://www.depop.com/vintagefinds99/"
},
"source_url": "https://www.depop.com/products/vintage-levis-501-jeans-w32-l32/"
}
}
Store one row per item per pull, keyed by slug, and re-run on a schedule — resale prices and listing status change often on a peer-to-peer marketplace.
What you can collect
Public listing and shop data: search results filtered by price, condition, colour, and category (title, price, brand, condition, colour, photos); full item detail (description, full photo set, seller username and shop info); a seller's shop catalog by username; and the full department/category/subcategory taxonomy for browsing or matching. Public listing and shop-page data only — not private messages, offers, or account/order/payment information.
Limitations and common challenges
- No general read API. Depop's official Partner API is scoped to verified sellers managing their own inventory — it isn't a research or bulk-read API, so broad access still means scraping.
- Terms restrict scraping on two levels. The general Terms of Service ban scraping and bots directly, and the API Access Service Terms separately prohibit automated access to Depop's own API without written authorization — treat both as real constraints, not boilerplate.
- Every listing has an individual seller. Unlike a retailer catalog, Depop's inventory is one-off items from independent shops — prices, condition, and availability are a snapshot that changes as sellers relist, reprice, or sell out.
- Client-side rendering and bot defenses. Search and item pages hydrate from JavaScript app state and sit behind bot detection, so plain HTTP requests are unreliable without headers, rendering, and retry handling.
- Public data only. This is what a search result, item page, and shop page already show publicly — not a way around a login or into account-level data.
Where this gets used
- Resale and sourcing research — compare a brand or item type's Depop asking prices against retail or another resale marketplace.
- Shop and competitor monitoring — track a seller's catalog and pricing over time.
- Trend and category sizing — measure listing volume and pricing by keyword or category taxonomy.
Sources
Start collecting
Try it first, free: run any public URL through the Free Web Scraper, or check whether a site blocks bots with the Anti-Bot Checker — no signup.
Test the search, item, and shop endpoints in the Playground, check the request and response schema in the API docs, and review credit costs on the pricing page. Depop sits alongside other resale-fashion marketplaces we cover — see how to scrape Poshmark for the closest social-selling equivalent, how to scrape Vinted for the European counterpart, how to scrape Mercari for the general secondhand-marketplace version of the same model, and how to scrape Whatnot for the live-auction side of resale commerce. See also how to choose a web scraping API and is web scraping legal.
Part of our how-to-scrape guide series — every platform we cover, in one index.
Frequently asked questions
How do I search Depop listings with an API?
Send a keyword to Crawlora's /depop/search endpoint and get normalized listing cards — title, price, brand, condition, photos — as structured JSON.
Does the Depop API require an account or login?
No Depop account or login is required from the caller — only your Crawlora API key.
Can I get a Depop seller's full shop catalog?
Yes — /depop/shop/{username} returns a seller's shop listing catalog as structured JSON.