Depop API endpoint
Returns Depop's full department, category, and subcategory taxonomy -- every value usable with /depop/search's and /depop/shop/{username}'s category/subcategory filters. Tries a live refresh from Depop's own category-filter API first and falls back to a static snapshot on any failure, so this never errors.
/depop/categoriesRequires the x-api-key header. No query or path parameters.
Notable response behavior:
departments has exactly 4 entries: womenswear (gender female),
menswear (gender male), kidswear (is_kids: true, no gender), and
everything-else (no gender, not kids-scoped — items outside clothing,
e.g. beauty, home, art).categories[].slug is the value to pass as
/depop/search's or /depop/shop/{username}'s category query
parameter. Most category slugs are shared across departments (e.g.
tops exists under both womenswear and menswear) — pair a category
slug with the matching department's gender/is_kids when you also want
to scope by department.subcategories[].slug is the value to pass as
subcategory (comma-separated for multiple), scoped to that category —
a subcategory slug from one category is not guaranteed valid under a
different category.Example response (truncated):
{
"code": 200,
"msg": "OK",
"data": {
"departments": [
{
"id": "womenswear",
"name": "Women",
"gender": "female",
"categories": [
{
"slug": "tops",
"name": "Tops",
"subcategories": [
{ "slug": "tshirts", "name": "T-shirts" },
{ "slug": "hoodies", "name": "Hoodies" }
]
}
]
},
{
"id": "kidswear",
"name": "Kids",
"is_kids": true,
"categories": [
{
"slug": "bundles",
"name": "Clothing bundles",
"subcategories": [
{ "slug": "bundles", "name": "Clothing bundles" }
]
}
]
},
{
"id": "everything-else",
"name": "Everything else",
"categories": [
{
"slug": "beauty",
"name": "Beauty",
"subcategories": [
{ "slug": "makeup", "name": "Makeup" },
{ "slug": "skincare", "name": "Skincare" }
]
}
]
}
]
}
}
| Field | Filled in, of 4 checked | Values in the sample |
|---|---|---|
| id | 4 | |
| name | 4 | “Women” and 3 other values |
| gender | 2 | |
| categories | 4 | median 12 entries |
| is_kids | 1 | true in 1 of 1 |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/depop/categories" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"departments": [
{
"id": "womenswear",
"name": "Women",
"gender": "female",
"categories": [
{
"slug": "tops",
"name": "Tops",
"subcategories": [
{
"slug": "tshirts",
"name": "T-shirts"
},
{
"slug": "hoodies",
"name": "Hoodies"
}
]
}
]
},
{
"id": "kidswear",
"name": "Kids",
"is_kids": true,
"categories": [
{
"slug": "bundles",
"name": "Clothing bundles",
"subcategories": [
{
"slug": "bundles",
"name": "Clothing bundles"
}
]
}
]
},
{
"id": "everything-else",
"name": "Everything else",
"categories": [
{
"slug": "beauty",
"name": "Beauty",
"subcategories": [
{
"slug": "makeup",
"name": "Makeup"
},
{
"slug": "skincare",
"name": "Skincare"
}
]
}
]
}
]
}
}Request schema
No body schema
Response schema
#/definitions/depop.categoriesResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | depop.CategoriesResponse | No | ||||
| data.departments | array | No | ||||
| data.departments[].categories | array | No | ||||
| data.departments[].categories[].name | string | No | ||||
| data.departments[].categories[].slug | string | No | maps to Search/Shop's category filter (-> groups=) | |||
| data.departments[].categories[].subcategories | array | No | ||||
| data.departments[].categories[].subcategories[].name | string | No | ||||
| data.departments[].categories[].subcategories[].slug | string | No | maps to Search's subcategory / Shop's subcategory filter | |||
| data.departments[].gender | string | No | female, male -- empty for kidswear and everything-else | |||
| data.departments[].id | string | No | womenswear, menswear, kidswear, everything-else | |||
| data.departments[].is_kids | boolean | No | true for kidswear | |||
| data.departments[].name | string | No | ||||
| msg | string | No | OK |
| Status | Description | Schema |
|---|---|---|
| 500 | Internal Server Error | #/definitions/app.Response |
Use environment variables for secrets and keep Crawlora API keys server-side.
curl -X GET "https://api.crawlora.net/api/v1/depop/categories" \
-H "x-api-key: $CRAWLORA_API_KEY"