KREAM Scraper - Sneakers, Prices, Bids & Market Data avatar

KREAM Scraper - Sneakers, Prices, Bids & Market Data

Pricing

from $1.50 / 1,000 product results

Go to Apify Store
KREAM Scraper - Sneakers, Prices, Bids & Market Data

KREAM Scraper - Sneakers, Prices, Bids & Market Data

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.50 / 1,000 product results

Rating

0.0

(0)

Developer

Abot API

Abot API

Maintained by Community

Actor stats

0

Bookmarked

24

Total users

4

Monthly active users

13 days ago

Last modified

Share

KREAM Scraper: Sneaker & Streetwear Resale Prices

KREAM Scraper turns KREAM (kream.co.kr), Korea's sneaker and streetwear resale marketplace, into a clean pricing data feed. Search by keyword or paste product and search links to get lowest ask, highest bid, market price, premium, retail price, style code, release date, sizes and wish counts for every result, then export to JSON, CSV or Excel, or pull the results straight into your app through the API.

Why This Scraper?

  • Two ways to find products. Search by keyword, or paste KREAM product and search links directly.
  • Market data on every result. Lowest ask, highest bid, market price, last sale, premium and total sales come back with the base listing, no separate detail fetch needed.
  • Full listing detail out of the box. Style code, colorway, release date, retail price, every size and the full image set are already included.
  • Optional deep detail. Turn on Fetch full details for price history, per-size ask/bid inventory and recent sales, asks and bids, plus up to 100 reviews per product nested on the row.
  • Eleven sort orders and five filters. Order by popularity, price, premium, wish count or release date, and narrow by quick delivery, below-retail, sold-out status, category or gender, in either mode.
  • Built for schedules. Incremental mode returns only new and changed products on recurring runs, and a refused run ends with a clear BLOCKED status message, so it is never mistaken for a search with no matches.
  • Resume large crawls. Continue an interrupted or capped run without paying twice for products already collected.

Use Cases

  • Resale price tracking and arbitrage: watch lowest ask, highest bid and premium across sneakers and streetwear to spot mispriced listings.
  • Market research and trend analysis: build historical datasets of prices, wish counts and sales volume by brand or category.
  • Drop and release monitoring: track new releases and price movement in the period after launch.
  • Inventory and pricing tools: feed live ask/bid data into a reseller's own pricing or listing tool.
  • Fashion and sneaker media: source current market prices and premiums for articles and price guides.

Data You Get

Sample shape: values are illustrative placeholders, not from a live record.

FieldExample
productId30001
urlKREAM link to the product
productName / productNameKo"Nike Dunk Low Retro Black" / "나이키 덩크로우 레트로 블랙"
brand / brandId"Nike" / 1
category / categoryName"sneakers" / "스니커즈"
styleCode"DD1391-100"
colorway / gender"BLACK/WHITE" / "men"
releaseDate"2024-01-20"
retailPrice / retailPriceFormatted109000 / "109,000원"
productNameEn / productUrl / modelNumber / releasePrice / priceAlias names for drop-in use: same values as productName / url / styleCode / retailPrice / lowestAsk
currency"KRW"
imageUrl / imageUrlsmain product photo / the full image set
lowestAsk / highestBid135000 / 128000
marketPrice / lastSalePrice132000 / 130000
totalSales842
changeValue / changePercentage2000 / 1.5
premium / premiumPercentage26000 / 23.9
hasImmediateDeliverytrue
wishCount / reviewCount / haveCount5210 / 312 / 890
isActive / isTradabletrue / true
sizes / sizeOptions["250","260","270","280"] / per-size id, key and display name
priceHistory / inventoryBySizeprice series by time span and per-size ask/bid (when Fetch full details is on, and always for pasted product URLs)
recentSales / recentAsks / recentBidsmost recent trade rows (when Fetch full details is on, and always for pasted product URLs)
reviewsnested review rows, each with reviewId, reviewer, reviewerId, rating, purchasedSize, wearerInfo, fitSurvey, reviewDate, helpfulCount (and text when a review carries free text). Added when Fetch full details is on and Reviews per product is above 0. KREAM reviews are a rating plus a size and fit survey, so most carry no free-text body and none carry seller replies
changeType / changedFields / firstSeenAt / lastSeenAt"NEW" / [] / run timestamps (incremental mode only)

Prices are in KRW. A product marked EXPIRED (incremental mode only) carries the same fields as its last successful scrape, unchanged, plus the changeType and timestamp fields above.

Output views

The Output tab offers four tables: Products (overview), Detail (price history, per-size ask/bid and recent sales, asks and bids; filled when detail mode is on), Reviews (the nested reviews; filled when detail mode is on and Reviews per product is above 0) and Changes (change type, changed fields, first and last seen; filled in incremental mode).

How to Use

  1. Pick a mode: search (by keyword) or url (paste KREAM product or search links).
  2. Fill in keywords or URLs, and set the sort and filters you want; they apply in both modes.
  3. Turn on Fetch full details if you need price history and per-size inventory, and set Max items to control run size and cost.
  4. Click Start, then download the dataset as JSON, CSV or Excel, or read it through the API.

URL mode behaviour change: the urls field now ships with one example of every supported link type below, so a URL-mode run started with the field untouched scrapes one example of each (7 sources) instead of a single product. Clear the field and paste your own links to scrape only those.

Link typeExampleWhat you get
Keyword searchhttps://kream.co.kr/search?keyword=nikeMatching products, paged automatically
Korean keyword (percent-encoded or plain)https://kream.co.kr/search?keyword=%EB%82%98%EC%9D%B4%ED%82%A4Matching products
Search with categoryhttps://kream.co.kr/search?keyword=nike&category_id=1Products narrowed to that KREAM category id
Search with sort and tabhttps://kream.co.kr/search?keyword=nike&sort=date_released&tab=productsProducts in the sort written in the link (gender works the same way)
Product pagehttps://kream.co.kr/products/23879One product in full detail
Product page with size (not in the default list)https://kream.co.kr/products/23879?size=270The same product in full detail; the size query is ignored and the log says so
Search on the www hosthttps://www.kream.co.kr/search?keyword=jordan&tab=productsMatching products (the www host is treated like kream.co.kr)
Brand pagehttps://kream.co.kr/brands/nikeThe brand's products, paged automatically

A sort, category id or gender written inside a link applies to that link only and wins over the matching input field; the other sort and filter fields still apply. A page=N (or cursor=N) in a search link starts at that page, and because earlier pages are not scanned it is not a full scan, so it never produces EXPIRED rows; a shop_category_id in a search link is ignored and the log says so (use category_id or the Category input). Links to other KREAM pages (the home page, exhibitions, old category paths) are skipped and the log says so. A run where any link was skipped or could not be resolved (an unsupported page, or a brand link whose brand is not found in KREAM's brand list) is not a full scan, so it never produces EXPIRED rows either.

Basic keyword search:

{
"mode": "search",
"keywords": ["nike dunk", "jordan 1"],
"maxItems": 20
}

Filtered search: below retail, in stock, quick delivery:

{
"mode": "search",
"keywords": ["stussy"],
"belowRetail": true,
"excludeSoldOut": true,
"quickDelivery": true,
"sort": "premium_low",
"maxItems": 30
}

Paste KREAM product and search links:

{
"mode": "url",
"urls": [
"https://kream.co.kr/products/23879",
"https://kream.co.kr/search?keyword=asics"
],
"maxItems": 40
}

Daily incremental monitoring with full detail:

{
"mode": "search",
"keywords": ["yeezy"],
"fetchDetails": true,
"incrementalMode": true,
"stateKey": "yeezy-daily",
"maxItems": 100
}

Run it from your code

Python:

from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("abotapi/kream-scraper").call(run_input={"mode": "search", "keywords": ["nike dunk"], "maxItems": 20})
for product in client.dataset(run["defaultDatasetId"]).iterate_items():
print(product["productName"], product["lowestAsk"])

JavaScript:

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });
const run = await client.actor('abotapi/kream-scraper').call({ mode: 'search', keywords: ['nike dunk'], maxItems: 20 });
const { items } = await client.dataset(run.defaultDatasetId).listItems();

Or connect it to Make, Zapier, n8n, Google Sheets or webhooks from the Integrations tab.

Resume and recurring updates

  • Resume (resumeFromRunId) continues one interrupted or capped run: paste its run or dataset ID and the actor skips every product already collected there, so you don't pay twice.
  • Incremental mode (incrementalMode) is for scheduled runs over the same search or URLs. Each product is classified NEW, UPDATED (with changedFields), UNCHANGED (suppressed and not billed unless emitUnchanged is on), REAPPEARED or EXPIRED. A product only becomes REAPPEARED if an earlier run had already marked it EXPIRED; EXPIRED itself is only produced after a run that reached the natural end of the tracked search, with emitExpired on, not capped by Max items, not a Resume, not blocked, with every link starting at page 1, and with every link scanned (none skipped or unresolved). UPDATED compares every output field with the previous run (price, ask, bid and wish-count moves are real signal; the alias fields productNameEn, productUrl, modelNumber, releasePrice and price are not compared on their own because they mirror productName, url, styleCode, retailPrice and lowestAsk, which are compared; nothing else is excluded by default) and changedFields lists what moved. ignoreFieldsForChanges excludes noisy fields (top-level names or dotted paths for nested ones) from that comparison while keeping them in the output; editing it never causes a one-time wave of UPDATED rows. stateKey names or shares the stored state; leave it empty to derive one automatically from the search scope (keywords or URLs, sort, filters and Fetch full details; Max items and Max pages are output caps and don't affect the key). Nested reviews are compared like any other field (add reviews to ignoreFieldsForChanges to keep review churn from marking a product UPDATED); the first run that starts delivering reviews for products already tracked does not report them as UPDATED. With incremental mode off, output is exactly as before.

Send results into your apps (MCP connectors)

Optionally pipe the scraped results into the apps you already use, via Model Context Protocol (MCP) connectors. This is an extra delivery step after the scrape: the Apify dataset is never changed.

What gets written to the connector: a condensed, human-readable summary of each product, not the full JSON record. For Notion, each item becomes its own page with its name, brand, style code, lowest ask, highest bid, retail price, premium, release date, wish count and URL. Other connectors receive one combined digest of up to 25 items. The complete record always stays in the Apify dataset.

  1. Authorize a connector once under Apify → Settings → Integrations (Notion, Linear, Airtable, or Apify).
  2. Select it in the "Pipe results into your apps" input field. (If the picker is empty, you haven't authorized a connector yet.)
  3. For Notion, also set notionParentPageUrl to the page where items should be created.

The connection is mediated by Apify's MCP proxy, so this actor never sees your third-party credentials. Leave the field empty to skip.

Input Parameters

ParameterTypeDefaultDescription
modestringsearchsearch (keyword) or url (paste KREAM URLs).
keywordsarray["nike"]Search terms. Search mode only; in URL mode the keyword is read from each pasted search URL instead.
urlsarrayone example of each supported link type (see the URL mode table)KREAM product, search or brand links (url mode).
sortstringpopularityOrder results: popularity, lowest_ask, highest_bid, wish, style_tags (most reviewed), date_released, discount_rate, premium_high, premium_low, male_popularity, female_popularity. Applies in both search mode and URL mode.
quickDeliverybooleanfalseOnly products with KREAM Quick Delivery stock. Applies in both search mode and URL mode.
belowRetailbooleanfalseOnly products whose lowest ask is below retail. Applies in both search mode and URL mode.
excludeSoldOutbooleanfalseDrop products with no live ask. Applies in both search mode and URL mode.
categorystringnoneOptional KREAM category slug (e.g. sneakers). Applies in both search mode and URL mode.
genderstringnone (Any)men, women, kids, or leave empty for any. Applies in both search mode and URL mode.
fetchDetailsbooleanfalseAdd price history, per-size ask/bid inventory and recent sales/asks/bids.
maxReviewsPerProductinteger20Only with fetchDetails. Reviews nested on each product row under reviews; 0 skips reviews; clamped to a maximum of 100 (20 are served per request, so the default costs one extra request per product).
maxItemsinteger20Stop after this many products across all keywords/URLs. 0 = unlimited; the schema accepts up to 100000.
maxPagesinteger0Safety bound on result pages walked per keyword. 0 = no page limit; the run still stops at Max items.
resumeFromRunIdstringnoneContinue one interrupted or capped run without re-collecting products already returned there.
incrementalModebooleanfalseReturn only new and changed products on recurring runs of the same search.
stateKeystringnoneName or share an incremental-mode monitoring campaign. Leave empty to derive one from the search scope.
emitUnchangedbooleanfalseIncremental mode only. Also return (and bill) products marked UNCHANGED.
emitExpiredbooleanfalseIncremental mode only. Also return (and bill) products marked EXPIRED, only after a run that fully scanned the tracked search.
ignoreFieldsForChangesarray[]Incremental mode only. Field names, or dotted paths for nested fields, to exclude from UPDATED detection and changedFields. The field stays in the output.
proxyobjectApify ResidentialConnection settings.
mcpConnectorsarraynoneOptional: send a summary of each product to apps you authorized under Integrations.
notionParentPageUrlstringnoneNotion connector only: page under which items are created.
maxNotifyListingsinteger50Cap on items written to each connector per run (non-Notion digests are further limited to 25).

Output Example

Sample shape: values are illustrative placeholders, not from a live record.

{
"productId": 30001,
"url": "https://kream.co.kr/products/30001",
"productName": "Nike Dunk Low Retro Black",
"productNameKo": "나이키 덩크로우 레트로 블랙",
"brand": "Nike",
"brandId": 1,
"category": "sneakers",
"categoryName": "스니커즈",
"styleCode": "DD1391-100",
"colorway": "BLACK/WHITE",
"gender": "men",
"releaseDate": "2024-01-20",
"retailPrice": 109000,
"retailPriceFormatted": "109,000원",
"currency": "KRW",
"imageUrl": "https://image.kream.co.kr/products/30001/main.jpg",
"imageUrls": ["https://image.kream.co.kr/products/30001/main.jpg"],
"lowestAsk": 135000,
"highestBid": 128000,
"marketPrice": 132000,
"lastSalePrice": 130000,
"totalSales": 842,
"changeValue": 2000,
"changePercentage": 1.5,
"premium": 26000,
"premiumPercentage": 23.9,
"hasImmediateDelivery": true,
"wishCount": 5210,
"reviewCount": 312,
"haveCount": 890,
"isActive": true,
"isTradable": true,
"sizes": ["250", "260", "270", "280"],
"sizeOptions": [
{ "id": 1, "key": "270", "name": "270", "displayName": "270" }
]
}

Plan Requirement

KREAM gates its product API by request headers rather than by country, so no Korea pin is needed. Both datacenter and residential connections load most pages, so no particular proxy plan is required to try the actor. Apify Residential is optional and is still the default, because it is the most consistent; a few requests (for example some sorted or filtered result pages) can stall on a datacenter connection.

If the selected connection is unavailable to your run (for example Apify free plans, which do not include residential proxies), the run continues on a backup connection and the log says so:

  • The selected connection is unavailable to this run. followed by Continuing on a backup connection; some pages may still be unavailable.
  • Served over the backup connection (the default connection was unavailable). once a page loads that way.

If no page can be loaded at all, the run ends as failed with one of these messages instead of finishing with an empty dataset:

  • The proxy connection was refused for this account, so no page could be read. Your Apify plan does not include proxy access; a paid plan is required.
  • No results: residential proxies are unavailable on this run (Apify free plans do not include them), and the backup connection could not load the requested KREAM pages.
  • Could not load any results page (the requests failed), so nothing was collected. This is a connection problem, not an empty search. Please try again later.

You can also choose another connection or your own proxy URLs under Proxy configuration.

FAQ

How much does it cost?

You pay per product returned, plus a small per-run start fee. Detail enrichment is billed when Fetch full details is on, and for every pasted product URL, which always returns full detail. Reviews are billed on that same detail-enrichment event: one extra unit for every full or partial block of 10 reviews actually delivered on a returned product row (20 reviews = 2 extra units), counted only after the row is returned, never for a product that incremental mode suppresses as unchanged and never for reviews that were not delivered; set Reviews per product to 0 to turn reviews off. The Pricing tab on the actor page shows the current rates. Use Max items to cap the cost of any run.

This actor collects only publicly available marketplace data. You are responsible for how you use it: follow KREAM's terms and the laws that apply to you, and get legal advice before any commercial redistribution. Prices and stock levels reflect the moment the run was made, not a live feed.

Can I get only new or changed prices on a schedule?

Yes. Schedule the actor from the Schedules tab and turn on Incremental mode. Each run then returns only new, updated and reappeared products, since a price, ask, bid or wish-count move is real signal on a resale marketplace, not noise, and unchanged products are not billed unless you turn on Emit unchanged.

Yes. sort, quickDelivery, belowRetail, excludeSoldOut, category and gender all apply in both search mode and URL mode: a pasted KREAM search URL is re-run through KREAM's search with them applied. The one exception is a pasted product URL, which always returns that single product in full, unfiltered.

How do I tell a blocked run from a search with no matches?

If KREAM keeps refusing requests, the run stops early and its status message reads 0 listings (BLOCKED), while a genuine empty search reads 0 listings (ZERO_RESULTS). Products collected before a block are kept. Switch the connection to Apify Residential and run it again.

Can I use it with AI agents or MCP?

Yes. Call it from any Apify integration or MCP client, and use the connector field to push results into Notion, Linear or Airtable.

🔗 Want more fashion data?

Pair this actor with these related scrapers from the same team:

👗 GOAT Scraper
Scrape GOAT (goat.com), the sneaker and streetwear resale marketplace. Search or paste...
👗 StockX Scraper
Scrape StockX market data by keyword, category or URL. Every row carries lowest ask...
👗 SNKRDUNK Scraper
Scrape SNKRDUNK (snkrdunk.com), Japan's sneaker and streetwear resale marketplace: JP and...
👗 KLEKT Sneaker & Apparel Resale Scraper
Scrape sneaker and streetwear listings from KLEKT (klekt.com). Browse the catalog with...
🏷️ Curtsy Fashion Resale Scraper
Scrape Curtsy, the US secondhand fashion marketplace: listings with brand, size, list vs...
👗 Showpo Scraper
Scrape Showpo women's fashion by keyword, collection or URL. Extract product prices...

👉 Browse all abotapi scrapers

💬 Support

  • 🐞 Found a bug or a missing field? Open a ticket on the Issues tab. We usually reply within hours.
  • 🛠️ Need another site, extra fields or a private build? Email contact@abotapi.com.
  • ⭐ Enjoying it? A quick review on the actor page helps other users find it.