KREAM Korea Scraper | Sneakers, Fashion & Price History
Pricing
from $1.20 / 1,000 product results
KREAM Korea Scraper | Sneakers, Fashion & Price History
Scrape KREAM (kream.co.kr) sneaker and fashion resale data by keyword search, filters, sorts, or product URLs. Extract 34+ fields, including lowest ask, highest bid, market price, premium, retail price, style code, sizes, and optional price history.
Pricing
from $1.20 / 1,000 product results
Rating
0.0
(0)
Developer
Abot API
Maintained by CommunityActor stats
0
Bookmarked
8
Total users
2
Monthly active users
24 minutes ago
Last modified
Categories
Share
KREAM Scraper — Sneaker & Fashion Resale Prices
Scrape KREAM (kream.co.kr), Korea's #1 sneaker and fashion resale marketplace, for live resale prices and product data. Search by keyword with full sorts and filters, or paste product URLs. Returns 45+ fields per product — lowest ask, highest bid, market price, last sale, premium, sales count, retail price, style code, release date, colorway, every size, wish/review counts and the full image set — without needing a separate detail fetch.
Why this scraper
| This actor | Typical KREAM scrapers | |
|---|---|---|
| Fields per product | 45+ | ~8 (listing) / ~14 with detail |
| Market data (ask/bid/premium/sales) | ✅ on every item | ❌ |
| Style code, release date, retail, sizes | ✅ in base listing | detail-only (extra charge) |
| Sort options | 11 | up to 9 |
| Filters | quick delivery, below retail, sold-out, category, gender | up to 3 |
| Modes | keyword search + product URLs | search only |
| Speed & memory | Fast, low memory | Slower, memory-heavy |
| Detail enrichment | $0.0008/item | up to $0.005/item |
The base listing already includes the data most scrapers charge a detail fetch for, so you get more for the per-result price.
Input
| Field | Description |
|---|---|
mode | search (keyword) or url (paste KREAM URLs). Only the keyword source differs: the sort and filter fields below apply in both modes. |
keywords | Search terms, e.g. ["nike dunk", "jordan 1"]. Search mode only; in URL mode the keyword is read out of each pasted search URL instead. |
sort (both modes) | popularity, lowest_ask, highest_bid, wish, style_tags (most reviewed), date_released, discount_rate, premium_high, premium_low, male_popularity, female_popularity. |
quickDelivery (both modes) | Only products with KREAM Quick Delivery (express) stock. |
belowRetail (both modes) | Only products whose lowest ask is below brand retail. |
excludeSoldOut (both modes) | Drop products with no live ask. |
category (both modes) | Optional KREAM category slug (e.g. sneakers). |
gender (both modes) | men, women, kids or any. |
urls | KREAM product URLs (/products/<id>) or search URLs (URL mode). The sort and filter fields marked (both modes) are not ignored here: each pasted search URL is re-run through KREAM's search with them applied. A pasted product URL is the one exception, returning that single product in full. |
fetchDetails | Add price history (5 spans), per-size ask/bid, and recent sales/asks/bids. |
maxItems | The cap. Stop after this many products (default 20; 0 = unlimited). |
maxPages | Page-walk safety bound. Leave empty (0) for no page limit — the run stops at Max items, not here. |
resumeFromRunId | Paste a previous run ID or dataset ID to continue a large crawl without returning/charging for products already collected there. Continues ONE specific interrupted run. |
incrementalMode | Turn on for daily/weekly recurring monitoring of the same search. First run: everything is NEW. Later runs: only NEW/UPDATED/REAPPEARED products by default. State is kept per search/URL/sort/filter setup (see below). |
stateKey | Optional. Name an incremental-mode monitoring campaign, or share state deliberately across differently-configured runs. Leave empty to derive a key automatically from the search scope. |
emitUnchanged | Incremental mode only. Off by default — also return (and bill) products marked UNCHANGED. |
emitExpired | Incremental mode only. Off by default — also return (and bill) products marked EXPIRED (present before, not found this run). Only produced after a run that fully scanned the tracked search (not capped, not blocked, not a Resume). |
proxy | Apify Residential recommended. |
mcpConnectors | Optionally pipe results into Notion / Linear / Airtable / Apify via MCP. Never changes the dataset. |
Output (per product)
productId, url, productName, productNameKo, brand, brandId, category, categoryName, styleCode, colorway, gender, releaseDate, retailPrice, retailPriceFormatted, currency, imageUrl, imageUrls, lowestAsk, highestBid, marketPrice, lastSalePrice, totalSales, changeValue, changePercentage, premium, premiumPercentage, hasImmediateDelivery, wishCount, reviewCount, haveCount, isActive, isTradable, sizes, sizeOptions.
With fetchDetails: priceHistory (1m/3m/6m/1y/all series), inventoryBySize (per-size lowest ask / highest bid), recentSales, recentAsks, recentBids.
With incrementalMode: changeType (NEW/UPDATED/UNCHANGED/REAPPEARED/EXPIRED), changedFields (which fields moved since last run), firstSeenAt, lastSeenAt.
Prices are in KRW.
Resume & recurring updates
Two different tools for two different jobs:
- Resume (
resumeFromRunId) continues ONE specific interrupted or capped run — paste a run ID or dataset ID and this run skips everyproductIdalready collected there. - Incremental mode (
incrementalMode) is for scheduling this same search again and again (e.g. daily) and getting only what changed. The actor keeps its own baseline in a key-value store, keyed on a hash of the search/URL scope, sort, filters andfetchDetails(maxItems/maxPagesare output caps, not scope, and are excluded — a 5-item run and a 50-item run of the same search share one baseline). SetstateKeyto name or share a campaign explicitly. - Identity key:
productId(the same field already used for in-run dedup). - A field only counts as changed when both old and new values are present and differ () — a value that goes missing then comes back is not itself a "change".changed(a,b) := a != b and a is not None and b is not None
- Prices and
wishCountare real signal on a resale marketplace, not noise — an ask/bid/wish move IS reported asUPDATED, never normalized away. EXPIREDis only ever emitted after a run that reached the natural end of every tracked keyword/URL (not capped by Max items, not a Resume, not blocked) — a partial scan can't tell "gone" from "not reached yet".
Connection & reliability
KREAM gates its API by request headers, not by IP geography — so any residential country works (no Korea pin needed). Use Apify Residential for the best success rate.
⚠️ Datacenter / free-tier: these connections are more likely to be refused, lowering the success rate and possibly returning zero items. Switch the Proxy setting to Apify Residential if you see repeated refusals.
Pricing (pay-per-event)
| Event | Price |
|---|---|
| Actor start | $0.08 |
| Product result | $0.003 |
Detail enrichment (only when fetchDetails is on) | $0.0008 |
Notes
- Korean product names are kept in
productNameKo; the romanised/English name isproductName. - This is an unofficial scraper; respect KREAM's terms and applicable law.