Grailed Listings & Price Scraper avatar

Grailed Listings & Price Scraper

Pricing

Pay per event

Go to Apify Store
Grailed Listings & Price Scraper

Grailed Listings & Price Scraper

Search Grailed's menswear and streetwear resale marketplace by keyword. One row per active listing with price, brand, size, condition, seller, and photo - built for resale-arbitrage comps. No login required; we handle the retries.

Pricing

Pay per event

Rating

0.0

(0)

Developer

DevilScrapes

DevilScrapes

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

8 hours ago

Last modified

Categories

Share


🎯 What this scrapes

Grailed is the go-to resale marketplace for menswear and streetwear - archive fashion, hyped drops, and everyday brands alike. This Actor runs your keyword searches against the same JSON search index Grailed's own /shop page calls to render its results grid, so we're never scraping brittle HTML/CSS selectors - just structured listing data, mapped into one clean row per active listing: price, brand, size, condition, seller, and photo.

🔥 What we handle for you

  • 🔁 Retries with exponential backoff on 408 / 429 / 5xx and network errors - up to 5 attempts per page, Retry-After honoured.
  • 🔄 Browser fingerprint rotation - curl-cffi impersonates Chrome and Firefox TLS handshakes on every retry, defense-in-depth even though live recon found no fingerprint sensitivity on Grailed's search page.
  • 🌐 Apify Proxy wired in from the start - shared datacenter pool by default, one click to switch to residential if you ever need it.
  • 🧱 Fault-isolated pages - one malformed listing never takes down the rest of the page; a query that matches nothing still succeeds with zero rows.
  • 🧊 Clean, typed dataset rows - Pydantic-validated, ISO-8601 timestamps, stable IDs, JSON / CSV / Excel export straight from the Apify Console.
  • 💰 Pay-Per-Event pricing - you only pay for results that hit your dataset. No data, no charge.

💡 Use cases

  • Resale-arbitrage comps - price streetwear/menswear stock against live Grailed asks.
  • Streetwear reselling - track new listings for a designer or drop across searches.
  • Market research - monitor pricing trends for archive fashion and hyped brands.
  • Inventory sourcing - surface underpriced listings matching a keyword watchlist.

⚙️ How to use it

  1. Click Try for free at the top of the page.
  2. Fill in the input form — most fields have sensible defaults.
  3. Click Start. Output streams into the run's dataset.
  4. Export from Storage → Dataset as JSON, CSV, or Excel — or fetch via the API.

📥 Input

FieldTypeRequiredDefaultNotes
queriesarrayyes['jacket', 'carhartt']One or more free-text Grailed shop searches, e.g. "jacket", "carhartt", "raf simons". Each query runs its own paginated…
maxPagesPerQueryintegerno2How many /shop pages to fetch per query before moving to the next query. A page that yields zero listings stops that…
categorystringno'—'Optional free-text category filter, folded into the search query (e.g. "outerwear"). Leave blank to search every…
proxyConfigurationobjectno{'useApifyProxy': True}Apify Proxy configuration. Defaults to Apify's shared datacenter pool - live recon found no anti-bot fingerprinting on…

Example input

{
"queries": [
"jacket",
"carhartt"
],
"maxPagesPerQuery": 2,
"proxyConfiguration": {
"useApifyProxy": true
}
}

📤 Output

Every row is one dataset item.

FieldTypeNotes
listing_idstringGrailed's own listing ID.
titlestringListing title.
brandstringDesigner/brand tag, when set by the seller.
pricestringAsking price, normalised to dollars as a decimal string, e.g. "480.00".
currencystringISO 4217 currency code ("USD" unless the listing exposes another explicitly).
sizestringSize tag, when set by the seller.
conditionstringCondition label, e.g. "Gently Used".
seller_usernamestringSeller's Grailed username, when present.
listing_urlstringCanonical Grailed listing URL.
image_urlstringPrimary listing photo URL, when present.
query_usedstringThe search query that produced this row.
pageintegerThe /shop page number that produced this row.
scraped_atstringISO-8601 UTC timestamp when this row was recorded.

Example output

{
"listing_id": "58421093",
"title": "Raf Simons AW03 Consumed Bomber",
"brand": "Raf Simons",
"price": "480.00",
"currency": "USD",
"size": "M",
"condition": "Gently Used",
"seller_username": "archive_dealer",
"listing_url": "https://www.grailed.com/listings/58421093-raf-simons-aw03-consumed-bomber",
"image_url": "https://media.grailed.com/photos/58421093/full.jpg",
"query_used": "raf simons",
"page": 1,
"scraped_at": "2026-09-14T12:00:00.000Z"
}

💰 Pricing

Pay-Per-Event — you pay only when these events fire:

EventUSDWhat it is
actor-start$0.2One-off warm-up charge per run
item-result$0.0048Per unique dataset item

Example: 1 000 results at the rates above ≈ $5.00. No subscription, no minimum, no card to start — Apify gives every new account $5 of free credit.

🚧 Limitations

  • Active listings only - this Actor scrapes the public /shop search, not sold/completed-sale history.
  • No per-listing detail-page enrichment beyond what the search results page already carries.
  • No structured facet filters (size/designer as distinct params) - category folds into the free-text query string.
  • USD/.com storefront only - no other Grailed region variants in v1.
  • No authenticated views - saved searches, offers, and the sold tab require a login this Actor doesn't use.

❓ FAQ

Is this legal?

We only fetch what Grailed's public shop-search page already serves to any visitor. Respect Grailed's Terms of Service before using the output commercially.

How do I search multiple brands or terms at once?

Add each term as its own entry in the queries list - the Actor runs one paginated search per entry and merges the results into a single dataset.

Why did a query return zero rows?

Either nothing on Grailed matched that search, or the search genuinely has no results. The run still succeeds - an empty match isn't treated as a failure.

Can I get sold/completed listings instead of active ones?

Not in v1 - this Actor covers Grailed's public active-listing search only. Open an Issue if you need sold-comp data and we'll scope it.

💬 Your feedback

Spotted a bug, hit a weird edge case, or need a new field? Open an issue on the Actor's Issues tab on Apify Console — we ship fixes weekly and we read every report.