Streetwear and designer resale-price research
Mit Grailed-Endpunkten verwandelst du streetwear and designer resale-price research in wiederholbare API-Requests mit dokumentierten Inputs und JSON-Antworten.
Turn Grailed's public peer-to-peer menswear and womenswear resale marketplace into structured JSON — keyword and facet search across active listings, a separate sold-listing index for sale-price history, full listing detail with measurements and seller profile, a seller's shop view, the 7,363-designer directory, and the full department/category/condition/color/size facet taxonomy. Credential-free.
Search Grailed's active and sold listings, get listing and seller detail, and browse the designer and facet taxonomy as structured JSON.
Endpunkt-Familien
6
Dokumentierte Parameter
48
Beispiele
11
Live-Katalog-Snapshot
Aktive Endpunkte
11
Methoden
GET
Pflichtparameter
17
Schema-Referenzen
11
{
"platform": "Grailed",
"endpoint": "grailed-search",
"method": "GET",
"path": "/grailed/search",
"auth": "apiKey"
}Use Cases
Search Grailed's active and sold listings, get listing and seller detail, and browse the designer and facet taxonomy as structured JSON.
Mit Grailed-Endpunkten verwandelst du streetwear and designer resale-price research in wiederholbare API-Requests mit dokumentierten Inputs und JSON-Antworten.
Mit Grailed-Endpunkten verwandelst du sale-price history and comparable-sales lookups in wiederholbare API-Requests mit dokumentierten Inputs und JSON-Antworten.
Mit Grailed-Endpunkten verwandelst du seller and designer demand tracking in wiederholbare API-Requests mit dokumentierten Inputs und JSON-Antworten.
Managed Execution
Jede Zahl unten stammt direkt aus dem Live-Grailed-Endpunktkatalog — 11 Endpunkte, 48 dokumentierte Request-Parameter und 11 veröffentlichte Response-Schemas — demselben Katalog, gegen den auch Docs und Playground laufen.
11 documented Grailed endpoints, grouped into 11 request families — Categories, Collection and Collections, plus 8 more.
48 request parameters are documented across those Grailed endpoints, 17 of them required — the full input contract is public before you write any integration code.
11 of the 11 Grailed endpoints ship a recorded example response, and 11 carry a documented response schema — you can code against the real JSON before the first request.
Grailed endpoints document their error responses (400, 404, 429 and 503) alongside the success schema, so a block, a rate limit, or a missing record comes back as a typed error rather than silently empty data.
11 hosted MCP tools back the Grailed endpoints, so an agent can call the same routes with the same parameters and the same JSON contract, with no custom glue.
Abdeckungskarte
Diese Karten werden aus dem aktiven Endpunktkatalog generiert, damit die Landingpage dieselbe API-Oberfläche widerspiegelt, die auch Docs und Playground nutzen.
/grailed/categories
/grailed/collection
/grailed/collections
/grailed/designers
/grailed/listing
/grailed/search
Endpunktkatalog
/grailed/searchSearches or browses Grailed's (grailed.com) peer-to-peer resale marketplace for currently-active listings. q, designer, department, category, size, color, condition, min_price, and max_price are all optional and combine as an AND -- a free-text q can be combined with any of the facet filters in the same request, or every field can be omitted to browse the full active catalog by Grailed's own "heat" relevance ranking. designer accepts one of the values grailed-designers' own designers[].name field returns; department, category, size, and color accept values from grailed-categories' own departments[].value/categories[].value/sizes[].value/colors[].value fields. condition and sort are fixed, closed enums (listed below). Keyword search is Algolia's own typo-tolerant relevance ranking, not a guaranteed exact match. A query with genuinely zero matches returns a well-formed empty result rather than an error.
Hinweise zur Response
- Keyword search is Algolia's own typo-tolerant relevance ranking, not a guaranteed exact match. - A query with genuinely zero matches returns a well-formed empty result (`count: 0`, `listings: []`) rather than an error. - Every listing is currency `USD` and `sold: false` -- this endpoint only ever returns currently-active listings. See `grailed-sold-listings` for sale price history. - Each listing's `id` is the value `grailed-listing`'s own `id` parameter expects for full listing detail. Example response: ```json { "code": 200, "msg": "OK", "data": { "query": "gucci", "sort": "heat", "page": 1, "limit": 24, "count": 1, "total_results": 250601, "total_pages": 10442, "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, "condition": "is_gently_used", "size": "m", "department": "menswear", "category": "tops", "category_path": "tops.short_sleeve_shirts", "color": "black", "location": "United States", "cover_photo_url": "https://media-assets.grailed.com/prd/listing/temp/dc6e1242b28a48bba80b5a353bb8c869", "photo_count": 7, "follower_count": 712, "buy_now": true, "make_offer": true, "seller": { "id": 10332947, "username": "woodlandstepps", "total_bought_and_sold": 52, "trusted_seller": false, "rating_average": 4.78, "rating_count": 9 } } ] } } ```
MCP-Tool grailed_search
/grailed/sold-listingsSearches Grailed's SOLD-listing index -- a separate dataset from active listings, carrying each item's final sale price and sale date. Same filter shape as grailed-search (q, designer, department, category, size, color, condition), but min_price/max_price filter the SOLD price, not the original asking price. Useful for sale-price-history/comparable-sales lookups (e.g. "what did this designer/category actually sell for recently"). A query with genuinely zero matches returns a well-formed empty result rather than an error.
Hinweise zur Response
- A query with genuinely zero matches returns a well-formed empty result (`count: 0`, `listings: []`) rather than an error. - Every listing is currency `USD` and `sold: true`, with `sold_price` and `sold_at` populated -- `price` on a sold listing is the original asking price, kept for reference. - Each listing's `id` is the value `grailed-listing`'s own `id` parameter expects for full listing detail. Example response: ```json { "code": 200, "msg": "OK", "data": { "query": "gucci", "sort": "recent", "page": 1, "limit": 24, "count": 1, "total_results": 4865190, "total_pages": 202716, "listings": [ { "id": 99128590, "title": "Gucci Flame Sneakers", "url": "https://www.grailed.com/listings/99128590", "designers": ["Gucci"], "price": 267, "currency": "USD", "sold": true, "sold_price": 200, "sold_at": "2026-09-09T15:25:46.880Z", "condition": "is_used", "size": "9", "department": "menswear", "category": "footwear", "category_path": "footwear.low_top_sneakers", "color": "white", "seller": { "id": 555, "username": "sneakerhead", "total_bought_and_sold": 11, "trusted_seller": true, "rating_average": 5.0, "rating_count": 4 } } ] } } ```
MCP-Tool grailed_sold_listings
/grailed/listingReturns full normalized listing-detail data for one Grailed listing: description, every photo, measurements, designers, and the seller's full profile -- richer than the flattened summary grailed-search/grailed-sold-listings return per listing. id is the listing's numeric id, from a search or sold-listings result's own listings[].id field.
Hinweise zur Response
- An unknown or deleted listing id returns a `404`. - `currency` is always `USD`. - `sold_price`/`sold_at`/`sold_shipping_price` are only populated when `sold` is `true`. - `measurements[].measurement_type_id`/`department_mapping_id` are Grailed's own internal ids (no public lookup table); `inches` is the directly usable value. Example response: ```json { "code": 200, "msg": "OK", "data": { "id": 105379689, "title": "Chateau Marmont Gucci Tshirt Red Japan Exclusive", "url": "https://www.grailed.com/listings/105379689", "description": "Gucci Chateau shirt red Japan Exclusive\nLabeled size XS truly fits accurately to a M\nVery rare", "price": 400, "currency": "USD", "sold": false, "condition": "is_gently_used", "size": "m", "pretty_size": "US M / EU 48-50 / 2", "department": "menswear", "category": "tops", "subcategory": "Short Sleeve T-Shirts", "category_path": "tops.short_sleeve_shirts", "designers": [ {"id": 79, "name": "Gucci", "slug": "gucci", "departments": ["menswear", "womenswear"]} ], "styles": ["luxury"], "traits": {"color": "black", "country_of_origin": "IT"}, "photos": [ "https://media-assets.grailed.com/prd/listing/temp/dc6e1242b28a48bba80b5a353bb8c869" ], "measurements": [ {"inches": 17, "measurement_type_id": 1, "department_mapping_id": 100} ], "follower_count": 712, "buy_now": true, "make_offer": true, "created_at": "2026-09-08T23:44:57.833Z", "seller": { "id": 10332947, "username": "woodlandstepps", "location": "United States", "total_bought_and_sold": 52, "listings_for_sale_count": 4, "follower_count": 13, "confirmed": true, "speedy_shipper": true, "sold_count": 22, "rating_average": 4.8, "rating_count": 9, "tag_list": ["fast-shipper", "quick-replies", "item-as-described"] } } } ```
MCP-Tool grailed_listing
/grailed/sellerReturns 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.
Hinweise zur Response
- An unknown username returns a `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). Example response: ```json { "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 } ] } } ```
MCP-Tool grailed_seller
/grailed/designersReturns a page of Grailed's full designer/brand taxonomy (7,363 designers as of 2026-09-09) -- the value space grailed-search/grailed-sold-listings' own designer parameter accepts (by name). q is an optional free-text filter (typo-tolerant, e.g. a partial name for typeahead-style lookup); an empty q lists the full taxonomy ordered by Grailed's own default ranking (most-listed designers first).
Hinweise zur Response
- `designers[].name` is exactly the value `grailed-search`/`grailed-sold-listings`'s own `designer` parameter expects. - `listings_count` is that designer's own live count of listings on Grailed (active and sold combined). - `departments` lists which of `menswear`/`womenswear` the designer has listings in. Example response: ```json { "code": 200, "msg": "OK", "data": { "query": "gucci", "page": 1, "limit": 24, "count": 1, "total_results": 7363, "total_pages": 307, "designers": [ { "id": 79, "name": "Gucci", "slug": "gucci", "listings_count": 250601, "departments": ["menswear", "womenswear"], "logo_url": "https://media-assets.grailed.com/prd/detail-page/gucci-logo" } ] } } ```
MCP-Tool grailed_designers
/grailed/categoriesReturns Grailed's full facet taxonomy for the enum-like parameters grailed-search/grailed-sold-listings accept: department, category, category_path (a more granular subcategory slug), condition, color, and size, each with its own live listing count. department and condition are exhaustive closed sets (2 and 5 values respectively); category/category_path/color/size are the full, exhaustive value space as of the request. Designer is NOT included here (7,363 values, far too large for a facet-count response) -- see grailed-designers for that discovery endpoint.
Hinweise zur Response
- `departments[].value` is one of `menswear`, `womenswear` (the full, exhaustive set). - `conditions[].value` is one of `is_new`, `is_gently_used`, `is_used`, `is_worn`, `is_not_specified` (the full, exhaustive set). - `categories[].value`, `category_paths[].value`, `colors[].value`, and `sizes[].value` are the full, exhaustive value space as of the request (confirmed exhaustive live: 14/128/15/85 values respectively as of 2026-09-09) -- exactly what `grailed-search`/`grailed-sold-listings` accept as their own `category`/`color`/`size` parameters (`category_path` is a more granular subcategory slug, e.g. `tops.short_sleeve_shirts`, for callers who want finer-grained filtering than the flat `category` facet -- not itself a `grailed-search` parameter). - `sizes` spans every category Grailed sells across (apparel letter sizes, numeric shoe/waist sizes, "one size", and more) since it is one index-wide facet -- sort by count (the default) to see the most common values first. - Designer is NOT included here (7,363 values, far too large for a facet-count response) -- see `grailed-designers` for that discovery endpoint. - Every list is sorted by count descending, then value ascending. Example response: ```json { "code": 200, "msg": "OK", "data": { "departments": [ {"value": "menswear", "count": 7567001}, {"value": "womenswear", "count": 3213103} ], "categories": [ {"value": "tops", "count": 3585831}, {"value": "bottoms", "count": 1441533}, {"value": "footwear", "count": 495891} ], "category_paths": [ {"value": "tops.short_sleeve_shirts", "count": 200000}, {"value": "footwear.low_top_sneakers", "count": 100000} ], "conditions": [ {"value": "is_used", "count": 4516431}, {"value": "is_gently_used", "count": 3552087}, {"value": "is_new", "count": 2642253}, {"value": "is_worn", "count": 68671}, {"value": "is_not_specified", "count": 1802} ], "colors": [ {"value": "black", "count": 3000000}, {"value": "white", "count": 1500000} ], "sizes": [ {"value": "m", "count": 900000}, {"value": "l", "count": 800000} ] } } ```
MCP-Tool grailed_categories
/grailed/suggestReturns Grailed's own search-box typeahead suggestions for a partial query -- a flat list of suggested search phrases with a popularity score and live active-listing match count, no listing data. Pass a suggestion straight through to grailed-search/grailed-sold-listings' own q parameter. A query with no genuine matches returns a well-formed empty result rather than an error.
Hinweise zur Response
- `suggestions[].query` is directly usable as `grailed-search`/`grailed-sold-listings`'s own `q` parameter. - `suggestions[].total_results` is that suggested query's own live active-listing match count on Grailed. - A query with no genuine matches returns a well-formed empty result (`suggestions: []`) rather than an error. Example response: ```json { "code": 200, "msg": "OK", "data": { "query": "guc", "suggestions": [ {"query": "gucci", "popularity": 89, "total_results": 259659}, {"query": "gucci hat", "popularity": 40, "total_results": 4200} ] } } ```
MCP-Tool grailed_suggest
/grailed/collectionReturns one Grailed curated homepage collection's full listing set. id is the collection's numeric id, from grailed-collections' own collections[].id field. An unknown id returns a typed not-found error.
Hinweise zur Response
- An unknown id returns a `404`. - Listings here use `CollectionListing`, a different, upstream-native field set from `grailed-search`'s `Listing` -- the member listings are already fully enriched by the upstream, so the seller is identified only by a numeric `seller_id` and an optional aggregate `seller_rating`, not a username/avatar. - Deleted or hidden member listings are filtered out. Example response: ```json { "code": 200, "msg": "OK", "data": { "id": 20, "title": "Dark Luxury", "external_id": "20240731-022", "last_refreshed_at": "2026-09-09T05:26:45.572Z", "count": 1, "listings": [ { "id": 104155968, "title": "Rick Owens DRKSHDW Detroit Cut Waxed Dirty Blue jeans pants", "url": "https://www.grailed.com/listings/104155968", "designers": ["Rick Owens"], "price": 335, "currency": "USD", "sold": false, "condition": "is_used", "size": "30", "department": "menswear", "category_path": "bottoms.denim", "seller_id": 7914629 } ] } } ```
MCP-Tool grailed_collection
/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. Each collection's numeric id is the value grailed-collection's own id parameter accepts.
Hinweise zur Response
- `collections[].id` is the value `grailed-collection`'s own `id` parameter accepts, per this repo's enum-discovery rule -- this is a closed, upstream-curated 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. Example response: ```json { "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" ] } ] } } ```
MCP-Tool grailed_collections
/grailed/seller-reviewsReturns a page of a Grailed seller's individual buyer feedback entries (rating, note, feedback tags, and the listing each review was left for) -- reputation detail grailed-seller does not carry (grailed-seller only exposes the aggregate rating_average/rating_count). username is the seller's Grailed username, from a listing's own seller.username field or grailed.com/{username}. An unknown username returns a typed not-found error.
Hinweise zur Response
- An unknown username returns a `404`. - `has_more` reflects whether Grailed advertised a further page, not a total review count -- Grailed's own pagination here is cursor-style, with no total-pages field. - `reviews[].listing` is omitted when the review is not associated with a listing. Example response: ```json { "code": 200, "msg": "OK", "data": { "username": "woodlandstepps", "user_id": 7914629, "page": 1, "count": 2, "has_more": true, "reviews": [ { "id": 7333988, "rating": 5, "tags": ["item-as-described", "quick-replies", "fast-shipper"], "created_at": "2026-08-22T16:42:17.194Z", "listing": { "id": 99233636, "title": "L.G.B. Wild Flowers", "url": "https://www.grailed.com/listings/99233636-le-grande-bleu-l-g-b-l-g-b-wild-flowers", "price": 180, "sold": true } } ] } } ```
MCP-Tool grailed_seller_reviews
/grailed/similar-listingsReturns the listings Grailed's own product page recommends as "similar" to one listing -- the same related-items shelf shown on grailed.com's own listing-detail page. id is the listing's numeric id, from a search, sold-listings, or collection result's own id field. An id for a listing that does not exist (deleted, sold and removed, or never valid) returns a typed not-found error.
Hinweise zur Response
- An `id` for a listing that does not exist (deleted, sold and removed, or never valid) returns a `404`. - Each returned listing uses the same normalized shape as `grailed-search`/`grailed-sold-listings`. Example response: ```json { "code": 200, "msg": "OK", "data": { "id": 104155968, "limit": 30, "count": 2, "listings": [ { "id": 102856918, "title": "Rick Owens Drkshdw - FW16 - Dirty Blue Detroit Cut Jeans", "url": "https://www.grailed.com/listings/102856918", "designers": ["Rick Owens"], "price": 491, "currency": "USD", "sold": false, "condition": "is_gently_used", "size": "31" } ] } } ```
MCP-Tool grailed_similar_listings
Verwandte APIs
Marketplaces & Retail
Collect marketplace product signals from Amazon without building brittle storefront scrapers.
Marketplaces & Retail
Build resale, pricing, and marketplace workflows from structured eBay data.
Marketplaces & Retail
Turn public Shop.app product and merchant pages into structured JSON for e-commerce product intelligence, price research, shop monitoring, and marketplace discovery workflows.
So scrapst du Grailed
Crawlora's seven Grailed endpoints return active-listing search, sold-listing history, listing and seller detail, designer lookup, and facet taxonomy as normalized JSON with one API key — active and sold listings are two separate indexes, so a comparable-sales lookup needs the dedicated sold endpoint, not a filter on search.
Call /grailed/categories for the full department/category/category_path/condition/color/size facet taxonomy with live counts (departments and conditions are small closed sets; sizes and colors are index-wide). Use /grailed/designers separately — its 7,363-value space is too large for a facet response — with an optional q for typo-tolerant typeahead lookup.
Send q, designer, department, category, size, color, condition, min_price, and/or max_price to /grailed/search — all optional and combined as an AND, or omit everything to browse the full active catalog by Grailed's own "heat" relevance ranking. sort also accepts newest, price_asc, price_desc, followers, and quality.
Send the same filter shape to /grailed/sold-listings for Grailed's separate SOLD-listing index, where min_price/max_price filter the final sold_price rather than the original asking price — useful for comparable-sales research on a designer or category.
Pass a listing's id from any search result to /grailed/listing for its full description, measurements, and seller profile. Pass a username to /grailed/seller for that seller's public profile and current active listings (sold listings are not filterable by seller — use /grailed/sold-listings with a designer or q filter instead).
FAQ
Pass designer (from /grailed/designers' own name field), category, size, or color (from /grailed/categories' own facet values) and condition (one of is_new, is_gently_used, is_used, is_worn, is_not_specified) to /grailed/search — every filter is optional and combines as an AND with any keyword q.
Yes — /grailed/sold-listings is a separate SOLD-listing index carrying each item's final sold_price and sold_at date, with the same filter shape as /grailed/search. Every listing there has sold: true; price is kept as the original asking price for reference.
7,363 as of the last verified count. /grailed/designers pages through the full taxonomy (24 per page by default, up to 100), each with its own live listings_count and which departments (menswear, womenswear) it has listings in.
Yes — page (1-500) and limit (default 24, max 100) paginate both /grailed/search and /grailed/sold-listings, and the response's total_pages reflects the true match count for the current filters.
No — only your Crawlora API key. Grailed's search, listing, seller, designer, and facet data are collected from its public, credential-free marketplace surface.