~/ecommerce/stockx-scraper
StockX Scraper——球鞋价格、出价、要价与成交记录
StockX 上每个尺码的最低要价、最高出价与要价数量,按配送速度划分的库存、最近一笔成交,以及 90 天与 12 个月的价格统计——需要时还可获取每一笔成交记录和完整订单簿。每件商品都附带目录数据、条形码与图片。
转售市场
TypeScript
美国
分类ecommerce / 转售市场
语言TypeScript
技术栈TypeScript
市场美国
输出干净、RAG 就绪的 JSON
核心特性
每个尺码的最低要价、最高出价与要价数量都在同一条记录里,而不只是商品层面的一个总价
按配送速度划分的库存——标准、加急或次日达——以及最低要价的商品是否已在 StockX 的仓库中
最近一笔成交及其涨跌,以及最近 90 天和 12 个月的价格:均价、区间与成交笔数
按需提供单笔成交记录:成交时间、价格、尺码,以及标准或加急,最新的排在最前
按需提供订单簿:要价和出价各自所处的每个价位,按尺码列出,并附该价位上的数量
每件商品都附带目录数据:标题、品牌、款号、配色、发售日期、零售价、条形码、图片以及 360° 视图
支持任意形式的商品页,也支持搜索页、品牌页或分类页,并按 StockX 自己的排序读取
应用场景
- 为转售库存定价:每个尺码现在的成交价,以及有多少卖家在该价位竞争
- 逐次运行追踪某款发售品相对零售价的溢价
- 覆盖球鞋、服饰、配饰、电子产品、收藏品和交易卡的市场调研
- StockX 与零售商店或其他市场之间的套利
- 按今天的市场价值评估一批收藏或一家店铺的库存
- 通过 Apify 的 MCP 服务器,为 AI Agent 提供实时的球鞋市场数据
输入参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
startUrls | array | 必填 | StockX 商品页,或搜索页、品牌页、分类页 |
maxProducts | number | 可选 | 存储这么多件商品后停止(0 = 不限) |
maxProductsPerListing | number | 可选 | 每个搜索页、品牌页或分类页最多读取的商品数(默认 100,最多 1,000) |
includeSales | boolean | 可选 | 添加最新的单笔成交记录(默认关闭) |
maxSalesPerProduct | number | 可选 | 每件商品添加多少条成交记录(默认 50) |
includeOrderBook | boolean | 可选 | 添加订单簿(默认关闭) |
maxOrderBookLevels | number | 可选 | 每一侧(要价和出价)的价位档数(默认 100) |
maxConcurrency | number | 可选 | 同时读取的商品数(默认 3) |
proxyConfiguration | object | 可选 | 请求使用的代理(默认:Apify 数据中心代理) |
输出示例
一件商品,已精简为一个尺码、一笔成交,以及每一侧各一个价位。金额以美分为单位:6300 即 63 美元。
1{
2 "source": {
3 "id": "de258c04-2f2a-4806-9d8c-9c84e17d45ea",
4 "canonicalUrl": "https://stockx.com/adidas-campus-00s-core-black",
5 "retailer": "stockx",
6 "currency": "USD"
7 },
8 "title": "adidas Campus 00s Core Black",
9 "brand": "adidas",
10 "details": { "brandStyleID": "HQ8708" },
11 "variants": [
12 {
13 "title": "US M 10",
14 "options": ["10"],
15 "price": { "current": 6300, "currentFormatted": "$63", "original": 11000, "stockStatus": "InStock", "stockCount": 42 },
16 "extraInfo": {
17 "gtins": [{ "type": "UPC", "identifier": "195747807682" }],
18 "lowestAsk": 6300,
19 "highestBid": 3700,
20 "askCount": 42
21 }
22 }
23 ],
24 "price": { "current": 3300, "currentFormatted": "$33", "original": 11000, "stockStatus": "InStock", "stockCount": 630 },
25 "extraInfo": {
26 "retailPrice": 11000,
27 "releaseDate": "2023-02-17",
28 "market": {
29 "lowestAsk": 3300,
30 "lowestAskSize": "US M 4.5",
31 "highestBid": 6600,
32 "highestBidSize": "US M 6",
33 "lastSale": { "amount": 10000, "changeValue": 7100 },
34 "last90Days": { "averagePrice": 6300, "rangeLow": 2000, "rangeHigh": 20000, "salesCount": 633 }
35 },
36 "sales": [
37 { "soldAt": "2026-10-12T01:40:57.622Z", "amount": 10000, "size": "US M 10", "orderType": "STANDARD" }
38 ],
39 "orderBook": {
40 "asks": [{ "size": "US M 4.5", "amount": 3300, "count": 34 }],
41 "bids": [{ "size": "US M 6", "amount": 6600, "count": 1 }]
42 }
43 }
44}
该记录的结构与 Farfetch Scraper 相同,因此 StockX 的转售价格和零售价格可以汇入同一张表。仅当最低要价低于零售价时,price.original 才是零售价,就像打折商品显示折前价那样。
使用建议
- 仅在需要时才开启成交记录和订单簿。 二者都是附加项,只对找到内容的商品计费。
maxProductsPerListing可以让列表保持小规模。 StockX 对任何一个搜索、品牌或分类最多列出 1,000 件商品;想快速看看什么在热销,读取前 20 件即可。- 商品页可以是任意形式。 带语言前缀的页面、带尺码的页面、买入或卖出页面,或某位卖家的商品页,都指向各自的商品,每次运行中每件商品只存储一次。
常见问题
数据有多新?
运行过程中逐件商品实时读取:要价、出价和成交记录都是 StockX 在那一刻的数据。
为什么某个尺码的最低要价比商品的最低要价高?
商品的最低要价和最高出价,是其所有尺码中最便宜的要价和最高的出价,往往来自两个不同的尺码;`lowestAskSize` 和 `highestBidSize` 会告诉你分别是哪个尺码。
它能读取其他市场或币种吗?
暂时不能:它读取美国市场,价格以美元计。所有金额都是以美分为单位的整数。
抓取 StockX 是否被允许?
该 Actor 读取的是 StockX 向任何访客展示的商品数据。StockX 的使用条款限制自动化访问及其数据的使用;你需要自行对所采集数据的用途负责。