SNKRDUNK Scraper icon

SNKRDUNK Scraper - Sneakers, Prices & Sales History

Scrape SNKRDUNK (snkrdunk.com), Japan's sneaker and streetwear resale marketplace: JP and EN names, brand, style code, JPY price stats, listing and offer counts, favourites, sizes, used prices, MSRP, sales history. Keyword search with brand or category filters, or paste product and sitemap URLs.

Open actor on Apify ↗Need a custom scraper?Telegram @abotapi ↗

SNKRDUNK Scraper at a glance

SNKRDUNK Scraper is a ready-to-run Apify actor from abotapi for collecting web data. Its output documents 51 fields, including style code, name, brand, category and discovery price, which you can export as JSON, CSV or Excel or read through the Apify API. It costs $2.00 per 1,000 results on the Apify Free plan and from $1.20 on paid plans, with smaller per-run or optional feature charges listed on Apify.

Runs on
Apify cloud: console, API, schedules and integrations
Data type
Web data
Pricing
$2.00 per 1,000 results (Free plan), from $1.20 on paid plans
Output
51 documented fields · JSON, CSV, Excel
Inputs
19 options

What SNKRDUNK Scraper can do

  • Two ways in. Keyword search with the site's own brand and category filters and sort, or paste product links and sitemaps (one sitemap link streams in thousands of products). No URL building by hand.
  • Deep product records. Every product carries 60+ fields: identity in Japanese and English, brand and model, price statistics, sizes, release info and more.
  • Price statistics and sales history. Lowest, highest and average listing prices in JPY, used listing counts, offers, favourites, plus the most recent recorded sales with sizes and dates.
  • Local prices and names. Japanese and English names and brands side by side, list price in JPY and localized MSRP, so cross-market comparisons need no extra lookups.
  • Built for schedules. Incremental mode tags every product NEW, UPDATED, UNCHANGED, REAPPEARED or EXPIRED on recurring runs, and returns only what changed, so a daily monitor bills pennies instead of re-scraping everything.
  • Fails loudly, never silently. If every connection is refused the run stops with a clear message, so "nothing found" is never confused with "could not read the site".

Choose what to collect

These inputs let you configure SNKRDUNK Scraper - Sneakers, Prices & Sales History. Open the actor on Apify to enter your values and review the current options.

Supported input fields
InputWhat it controls
modestring · requiredPick how to start: 'search' discovers products by keyword and filters, 'url' takes product page links (or sitemap links) that you paste yourself.

Choices: search, url

keywordsarrayOne or more search phrases, e.g. 'air force 1', 'jordan 4', 'yohji yamamoto'. Every result page holds up to 100 products and the actor walks forward automatically.
brandIdsarrayLimit results to one or more brands using the site's own brand values, e.g. 'nike', 'adidas', 'air-jordan', 'new-balance'. You can read the value off any brand-filter link on the site's search page. Leave empty for all brands.
categoryIdsarrayLimit results to one or more categories using the site's own category values, e.g. '1' (sneakers), '2/18/99' (short sleeve), '10/56' (sandals). Leave empty for all categories.
sortDirectionstringOrder results by listing date, newest first (default) or oldest first.

Choices: desc, asc

urlsarrayOne or more snkrdunk.com links, in any of these shapes: Japanese product pages (/products/CODE), English product pages (/en/sneakers/CODE), single used-listing links (/products/CODE/used/ID), sitemap index files (.xml) and child sitemap files (.xml.gz), with or without tracking query strings. Search-mode fields are ignored; each product link yields one full record and sitemaps stream in thousands of product URLs. Example: https://snkrdunk.com/products/CW2288-111
fetchDetailsbooleanRead every product's full record: Japanese and English names, brand and model, Japanese price statistics (min/max/average, listing, used and offer counts, favourites), release info, sizes, MSRP, and the recent sales history. Turn off for a lighter run with just the search-result fields. URL mode always reads the full record.
Show 12 more inputs
More input fields
InputWhat it controls
fetchUsedPricesbooleanAlso read the per-size used listing prices and counts for each product (one extra read per product). Default off.
maxPagesintegerHow many result pages to walk per keyword (100 products per page). This does NOT cap the run: leave empty or 0 and the actor walks as far as Max items requires. Setting it stops paging after that many pages. Note the site itself serves at most 100 pages per search; deeper coverage comes from more keywords or from URL mode with sitemaps.
maxItemsintegerStop after this many products across all keywords and URLs. 0 = unlimited (still bounded by Max pages per search).
resumeFromRunIdstringPaste a previous run ID or dataset ID to continue ONE interrupted full walk across separate runs. Products already collected there (matched by style code) are skipped, so this run only saves the new ones. Leave empty for a normal fresh run. Distinct from 'Incremental mode' below, which tracks the SAME recurring scope across many scheduled runs by itself.
incrementalModebooleanWhen ON, the actor remembers its products from the previous run of the SAME scope (see 'State key' below) and tags every product with a changeType: NEW, UPDATED, UNCHANGED, REAPPEARED, or EXPIRED. Use with the Apify Scheduler to monitor searches or sitemap scopes over time instead of re-scraping everything. Default OFF.
stateKeystringA name for this monitor's saved state, e.g. 'af1-watch'. The stored baseline is also scoped to your exact keywords, filters, sort, URLs and detail toggles, so changing the scope starts fresh under the same key. Set distinct keys to run several independent monitors from one actor.
emitUnchangedbooleanWhen ON, products with no detected change are still pushed to the dataset (tagged changeType=UNCHANGED) instead of being skipped. This returns, and bills, one extra row per unchanged product every run. Default OFF: only NEW/UPDATED/REAPPEARED/EXPIRED products are pushed.
emitExpiredbooleanWhen ON, products tracked in a previous run but no longer found after a complete, uncapped scan are pushed once more tagged changeType=EXPIRED. This returns, and bills, one extra row per expired product. Only fires on a run that scans its whole scope (no resumeFromRunId, no Max items cap hit). Default OFF.
ignoreFieldsForChangesarrayOutput field names that should NOT make a product count as UPDATED. The scrape timestamp, search rank, search keyword and favourite count are always ignored, because they change without the product changing. Add fields such as averagePriceJpy or salesTrackedCount here if changes to them are not relevant to you. Ignored fields are still returned in the output.
mcpConnectorsarrayOptionally send the results into the apps you already use, via Model Context Protocol (MCP) connectors. Authorize a connector once under Apify → Settings → Integrations, then select it here. The connector receives a condensed, human-readable summary per product (title + key fields), not the full JSON; the complete record stays in the dataset. Leave empty to skip. Supported: Notion (https://mcp.notion.com/mcp), Linear (https://mcp.linear.app/sse), Airtable (https://mcp.airtable.com/mcp), Apify (https://mcp.apify.com).
notionParentPageUrlstringURL (or id) of the Notion page under which product pages are created. Required to enable the Notion export; ignored by other connectors.
maxNotifyListingsintegerCap on items written to each connector per run. Does not affect the dataset.

Fields in the output

The documented dataset includes the fields below. Availability can depend on the source page and selected mode.

styleCodeStyle code (text)
nameName (text)
brandBrand (text)
categoryCategory (text)
priceDiscovery price (number)
priceCurrencyCurrency (text)
conditionCondition (text)
isNewNew (boolean)
isUsedUsed (boolean)
isSoldSold (boolean)
productTypeProduct type (text)
releaseDateRelease date (date)
Show 39 more fields
regularPriceJpyList price (JPY) (number)
minPriceJpyLowest listing (JPY) (number)
maxPriceJpyHighest listing (JPY) (number)
averagePriceJpyAverage listing (JPY) (number)
lastSalePriceLast sale (JPY) (number)
lastSaleAtLast sale at (date)
salesTrackedCountRecent sales tracked (number)
listingCountJpListings (number)
favoriteCountFavourites (number)
imageImage (image)
urlURL (link)
changeTypeChange type (incremental mode) (text)
productIdProduct ID (text)
productCatalogIdCatalog ID (text)
nameJaName (JA) (text)
nameEnName (EN) (text)
brandNameBrand (JA) (text)
brandNameLocalBrand (EN) (text)
modelNameModel (text)
modelIdModel ID (text)
highestSoldPriceJpyTop sale (JPY) (number)
usedMinPriceJpyLowest used (JPY) (number)
usedListingCountUsed listings (number)
offerCountOffers (number)
listingCountEnListings (EN) (number)
msrpValueMSRP (number)
msrpCurrencyMSRP currency (text)
minSizeSmallest size (text)
maxSizeLargest size (text)
availableSizeCountSizes listed (number)
availableSizesSizes (text)
msrpReleaseDateMSRP release date (date)
isUnderRetailUnder retail (boolean)
tradingHistorySales history (text)
usedPricesUsed prices per size (text)
usedPriceSizeCountUsed price sizes (number)
changedFieldsChanged fields (text)
firstSeenAtFirst seen (date)
lastSeenAtLast seen (date)

Example output

An example from this actor’s documentation. Values are illustrative; this is not a fresh live result.

{
  "styleCode": "XX1234-100",
  "productId": "20000001",
  "productCatalogId": "20000002",
  "name": "Sample Runner Low \"White/Grey\"",
  "nameJa": "サンプルランナー ロー",
  "nameEn": "Sample Runner Low \"White/Grey\"",
  "brand": "sample-brand",
  "brandName": "Sample Brand",
  "modelName": "Sample Runner",
  "category": "1",
  "price": 12800,
  "priceCurrency": "JPY",
  "priceCurrencySymbol": "JP ¥",
  "condition": "S",
  "isNew": true,
  "isUsed": false,
  "isSold": false,
  "productType": "secondHandCatalog",
  "releaseDate": "2024-03-15T00:00:00Z",
  "regularPriceJpy": 15400,
  "minPriceJpy": 12900,
  "maxPriceJpy": 24000,
  "averagePriceJpy": 15600,
  "highestSoldPriceJpy": 39800,
  "usedMinPriceJpy": 8900,
  "usedListingCount": 12,
  "offerCount": 5,
  "favoriteCount": 4200,
  "listingCountJp": 276,
  "msrpValue": 154.2,
  "msrpCurrency": "USD",
  "minSize": "22cm",
  "maxSize": "32cm",
  "availableSizes": [
    "22.5cm",
    "25cm",
    "26cm",
    "27cm"
  ],
  "lastSalePrice": 13500,
  "lastSaleAt": "2026-01-20T05:12:00Z",
  "salesTrackedCount": 2,
  "tradingHistory": [
    {
      "price": 13500,
      "soldAt": "2026-01-20T05:12:00Z",
      "size": "26.5cm",
      "condition": "new"
    },
    {
      "price": 12800,
      "soldAt": "2026-01-19T10:02:00Z",
      "size": "26cm",
      "condition": "used"
    }
  ],
  "image": "https://cdn.snkrdunk.com/sample/sample.webp",
  "url": "https://snkrdunk.com/en/sneakers/XX1234-100",
  "searchKeyword": "sample runner",
  "searchRank": 1
}

Ways to use this data

  • Sneaker resellers and boutiques: track lowest listings, average prices and last sale sizes to price your inventory and spot under-retail picks.
  • Analysts and data teams: build price-history datasets across brands and categories, from single models to whole sitemap scopes.
  • Collectors and enthusiasts: monitor favourite models and get only the new, changed or expired listings on each scheduled run.
  • E-commerce and dropshipping tools: feed product names, images, prices and availability into catalogs and alerting bots.
  • Market researchers: measure brand and category depth, listing counts and engagement (favourites) across the Japanese resale market.

Before you run

Start with a small input and check the resulting records against your expected fields. Source content and actor options can change; the current Apify listing is the reference for availability and pricing.

Questions about this actor

What data does SNKRDUNK Scraper return?

SNKRDUNK Scraper returns 51 documented fields, including style code, name, brand, category, discovery price, currency, condition and new. Availability of each field depends on the source page and the selected mode.

How much does SNKRDUNK Scraper cost?

It costs $2.00 per 1,000 results on the Apify Free plan and from $1.20 on paid plans, with smaller per-run or optional feature charges listed on Apify. The Apify listing shows the current rate for every plan.

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

Yes. Schedule the actor from the Schedules tab, keep the keywords, filters and URLs the same, and turn on Incremental mode. Each run then returns only new and updated products; unchanged ones are neither returned nor billed, and emitExpired can flag products that disappeared.

Why did my run fail instead of returning an empty dataset?

If every page read was refused, the run stops with a clear message so a connection problem is never mistaken for "no matches". Run it again in a few minutes, or switch the connection country under Connection. A search that genuinely matched nothing finishes with a zero-results status instead.

Why do I see at most 100 pages per keyword?

The site serves at most 100 result pages per search. Split deep crawls across more keywords, brand or category filters, or use URL mode with product sitemaps, which cover the catalog directly.

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.