Grailed API endpoint
Returns a Grailed seller's public profile plus a page of their current active listings (Grailed's own "shop" view of a seller). username is the seller's Grailed username, from a listing's own seller.username field or grailed.com/{username}. Listings only ever contains that seller's ACTIVE listings; use grailed-sold-listings with a designer/query filter for a broader sales-history lookup, since sold listings are not filterable by seller through this endpoint. An unknown username returns a typed not-found error.
/grailed/sellerpage is optional, a one-based page number for the seller's listings, defaults to 1.
limit is optional, listings per page, defaults to 24, maximum 100.
Notable response behavior:
404.listings only ever contains that seller's ACTIVE listings; use grailed-sold-listings with a designer/q filter for a broader sales-history lookup, since sold listings are not filterable by seller through this endpoint.active_listings_count is the seller's total active-listing count (not just the page returned).| Field | Filled in, of 6 checked | Values in the sample |
|---|---|---|
| id | 6 | |
| title | 6 | |
| url | 6 | grailed.com |
| designers | 6 | median 1 entry |
| price | 6 | 145 to 800, median 249 |
| currency | 6 | |
| sold | 6 | true in 0 of 6 |
| condition | 6 | |
| size | 6 | |
| department | 6 | |
| category | 6 | |
| category_path | 6 | |
| color | 6 | |
| location | 6 | |
| cover_photo_url | 6 | media-assets.grailed.com |
| photo_count | 6 | 5 to 9, median 5 |
| follower_count | 6 | 26 to 1,880, median 39 |
| buy_now | 6 | true in 5 of 6 |
| make_offer | 6 | true in 5 of 6 |
| created_at | 6 | 2026-03-12 to 2026-10-09 |
| bumped_at | 6 | 2026-03-12 to 2026-10-09 |
| seller | 6 |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| username | string | Yes | Grailed username | woodlandstepps | |
| page | integer | No | 1 | One-based page number for the seller's listings, defaults to 1 | 1 |
| limit | integer | No | 24 | Listings per page, defaults to 24, maximum 100 | 24 |
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/grailed/seller?username=woodlandstepps&page=1&limit=10" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"username": "woodlandstepps",
"page": 1,
"limit": 24,
"count": 4,
"active_listings_count": 4,
"total_pages": 1,
"profile": {
"id": 10332947,
"username": "woodlandstepps",
"avatar_url": "https://media-assets.grailed.com/prd/avatar/10332947/aa7027d479124825958991dc6ba83678",
"total_bought_and_sold": 52,
"trusted_seller": false,
"rating_average": 4.78,
"rating_count": 9,
"confirmed": true,
"banned": false
},
"listings": [
{
"id": 105379689,
"title": "Chateau Marmont Gucci Tshirt Red Japan Exclusive",
"url": "https://www.grailed.com/listings/105379689",
"designers": [
"Gucci"
],
"price": 400,
"currency": "USD",
"sold": false
}
]
}
}Request schema
No body schema
Response schema
#/definitions/grailed.sellerResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | grailed.SellerResponse | No | ||||
| data.active_listings_count | integer | No | ||||
| data.count | integer | No | ||||
| data.fetched_at | string | No | ||||
| data.limit | integer | No | ||||
| data.listings | array | No | Listing record, 31 fields: bumped_at, buy_now, category, category_path, color, condition, cover_photo_url, created_at, currency, department, designers, follower_count and 12 more. Described under Grailed Listing Search API. | |||
| data.page | integer | No | ||||
| data.profile | grailed.SellerProfile | No | ||||
| data.profile.avatar_url | string | No | ||||
| data.profile.banned | boolean | No | ||||
| data.profile.confirmed | boolean | No | ||||
| data.profile.created_at | string | No | ||||
| data.profile.follower_count | integer | No | ||||
| data.profile.following_count | integer | No | ||||
| data.profile.id | integer | No | ||||
| data.profile.listings_for_sale_count | integer | No | ||||
| data.profile.location | string | No | ||||
| data.profile.quick_responder | boolean | No | ||||
| data.profile.rating_average | number | No | ||||
| data.profile.rating_count | integer | No | ||||
| data.profile.sold_count | integer | No | ||||
| data.profile.speedy_shipper | boolean | No | ||||
| data.profile.tag_list | array | No | ||||
| data.profile.total_bought_and_sold | integer | No | ||||
| data.profile.trusted_seller | boolean | No | ||||
| data.profile.username | string | No | ||||
| data.profile.verified | boolean | No | ||||
| data.source_url | string | No | ||||
| data.total_pages | integer | No | ||||
| data.username | string | No | ||||
| msg | string | No | OK |
| Status | Description | Schema |
|---|---|---|
| 400 | Bad Request | #/definitions/app.Response |
| 404 | Not Found | #/definitions/app.Response |
| 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/seller?username=woodlandstepps&page=1&limit=10" \
-H "x-api-key: $CRAWLORA_API_KEY"