Grailed Resale Listings Scraper
Pricing
Pay per event
Grailed Resale Listings Scraper
Scrape Grailed designer and streetwear resale listings — active and SOLD — via the Algolia search API. Returns full listing data including sold price, seller score, original price, and arbitrage-ready comparables.
Pricing
Pay per event
Rating
0.0
(0)
Developer
BowTiedRaccoon
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 days ago
Last modified
Categories
Share
Scrape Grailed designer and streetwear resale listings — both active and SOLD — via the Algolia search API. Returns full listing data including sold price, seller score, original retail price, and arbitrage-ready comparables.
What it does
This actor queries Grailed's Algolia search index directly, giving you fast and complete listing data without relying on rendered HTML. Each run:
- Fetches live Algolia credentials from the Grailed page (the search key rotates — hardcoded keys don't work)
- Pages through active listings in the
Listing_productionAlgolia index - Optionally pages through sold listings in the
Listing_sold_productionindex - Returns structured records with all fields needed for resale comps and arbitrage analysis
Use cases
- Resale comps: filter by designer and category to see what items actually sold for vs. asking price
- Brand arbitrage: track original retail price vs. resale price across brands and categories
- Inventory research: survey active listings for a designer or category to understand market depth and pricing
- Seller intelligence: combine seller score and total transactions to identify top-rated sellers
Input
| Field | Type | Required | Description |
|---|---|---|---|
category | string | one of these | Grailed category slug (e.g. outerwear, tops, bottoms, footwear, accessories) |
designer | string | one of these | Designer / brand name (e.g. Supreme, Rick Owens, Comme des Garcons) |
includeSold | boolean | no | Include SOLD listings (default: true) |
maxItems | integer | no | Max total listings to return. 0 = no limit (default: 0) |
Either category or designer (or both) must be provided.
Example — sold Supreme outerwear comps:
{"category": "outerwear","designer": "Supreme","includeSold": true,"maxItems": 500}
Example — all active outerwear listings:
{"category": "outerwear","includeSold": false}
Output
Each record contains:
| Field | Description |
|---|---|
listing_id | Grailed listing ID |
title | Listing title |
designer | Brand or designer name |
department | menswear or womenswear |
category | Top-level category (e.g. outerwear) |
sub_category | Sub-category (e.g. parkas) |
size | Item size |
condition | Condition string (e.g. is_gently_used) |
price | Asking price in USD |
original_price | Original retail price in USD |
sold | true if the listing has sold |
sold_price | Final sold price in USD (sold listings only) |
sold_at | ISO-8601 timestamp when sold |
seller_username | Grailed username of the seller |
seller_score | Seller rating average (0–5) |
location | Seller's country |
listing_url | Full URL to the listing on Grailed |
photo_url | Primary listing photo URL |
created_at | When the listing was created |
updated_at | When the listing was last updated |
scrapedAt | ISO-8601 scrape timestamp |
Performance and limits
- Speed: ~1000 listings/page, ~200ms between pages — expect ~5-10k listings/minute
- Memory: 256 MB (no browser, pure JSON API)
- Algolia limits: Max 500 pages x 1000 hits = 500k results per query. For categories with more than 500k listings, use designer + category filters together to scope queries under that limit.
- Proxy: No proxy required — direct HTTP + impit TLS fingerprint works. DataImpulse residential 403s on Grailed.
Notes
- Grailed's Algolia search key rotates. The actor extracts the live key from the page on each run — do not attempt to hardcode credentials.
- Sold listings data is only available for items sold through the Grailed platform.
- The
original_pricefield is populated only when the seller entered it manually.