Grailed API endpoint
Returns Grailed's own curated homepage merchandising collections (e.g. "Trending: Apparel", "Dark Luxury", "Chromed Out") -- editorial/trending shelves distinct from a plain search or facet browse. Each collection's numeric id is the value grailed-collection's own id parameter accepts.
/grailed/collectionsReturns Grailed's own curated homepage merchandising collections (e.g. "Trending: Apparel", "Dark Luxury", "Chromed Out") -- editorial/trending shelves distinct from a plain search or facet browse. This endpoint takes no parameters.
Notable response behavior:
collections[].id is the value grailed-collection's own id parameter accepts -- this is a closed id space with no other public listing.collections[].top_designers is a short sample (up to 3) of the designers most represented in that collection, not the full designer breakdown.collections[].preview_photos is a short sample (up to 5) of cover photos from listings in the collection.| Field | Filled in, of 10 checked | Values in the sample |
|---|---|---|
| id | 10 | |
| title | 10 | “Trending: Apparel” and 9 other values |
| external_id | 10 | |
| last_refreshed_at | 10 | 2026-10-12 |
| top_designers | 10 | median 3 entries |
| preview_photos | 10 | median 5 entries |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/grailed/collections" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"count": 2,
"collections": [
{
"id": 20,
"title": "Dark Luxury",
"external_id": "20240731-022",
"last_refreshed_at": "2026-09-09T05:26:45.572Z",
"top_designers": [
"Rick Owens",
"Rick Owens Drkshdw",
"Gucci"
],
"preview_photos": [
"https://media-assets.grailed.com/prd/listing/temp/39de9bbf0ae6498cbc5d8e82a68ea600"
]
}
]
}
}Request schema
No body schema
Response schema
#/definitions/grailed.collectionsResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | grailed.CollectionsResponse | No | ||||
| data.collections | array | No | ||||
| data.collections[].external_id | string | No | ||||
| data.collections[].id | integer | No | ||||
| data.collections[].last_refreshed_at | string | No | ||||
| data.collections[].preview_photos | array | No | ||||
| data.collections[].title | string | No | ||||
| data.collections[].top_designers | array | No | ||||
| data.count | integer | No | ||||
| data.fetched_at | string | No | ||||
| data.source_url | string | No | ||||
| msg | string | No | OK |
| Status | Description | Schema |
|---|---|---|
| 429 | Too Many Requests | #/definitions/app.Response |
| 503 | Service Unavailable | #/definitions/app.Response |
Use environment variables for secrets and keep Crawlora API keys server-side.
curl -X GET "https://api.crawlora.net/api/v1/grailed/collections" \
-H "x-api-key: $CRAWLORA_API_KEY"