├── .gitignore
├── README.md
├── python
├── stockx_api_sample.py
└── stockx_support_list.py
└── res
└── stockx.jpg
/.gitignore:
--------------------------------------------------------------------------------
1 | # Byte-compiled / optimized / DLL files
2 | __pycache__/
3 | *.py[cod]
4 | *$py.class
5 |
6 | # C extensions
7 | *.so
8 |
9 | # Distribution / packaging
10 | .Python
11 | build/
12 | develop-eggs/
13 | dist/
14 | downloads/
15 | eggs/
16 | .eggs/
17 | lib/
18 | lib64/
19 | parts/
20 | sdist/
21 | var/
22 | wheels/
23 | share/python-wheels/
24 | *.egg-info/
25 | .installed.cfg
26 | *.egg
27 | MANIFEST
28 |
29 | # PyInstaller
30 | # Usually these files are written by a python script from a template
31 | # before PyInstaller builds the exe, so as to inject date/other infos into it.
32 | *.manifest
33 | *.spec
34 |
35 | # Installer logs
36 | pip-log.txt
37 | pip-delete-this-directory.txt
38 |
39 | # Unit test / coverage reports
40 | htmlcov/
41 | .tox/
42 | .nox/
43 | .coverage
44 | .coverage.*
45 | .cache
46 | nosetests.xml
47 | coverage.xml
48 | *.cover
49 | *.py,cover
50 | .hypothesis/
51 | .pytest_cache/
52 | cover/
53 |
54 | # Translations
55 | *.mo
56 | *.pot
57 |
58 | # Django stuff:
59 | *.log
60 | local_settings.py
61 | db.sqlite3
62 | db.sqlite3-journal
63 |
64 | # Flask stuff:
65 | instance/
66 | .webassets-cache
67 |
68 | # Scrapy stuff:
69 | .scrapy
70 |
71 | # Sphinx documentation
72 | docs/_build/
73 |
74 | # PyBuilder
75 | .pybuilder/
76 | target/
77 |
78 | # Jupyter Notebook
79 | .ipynb_checkpoints
80 |
81 | # IPython
82 | profile_default/
83 | ipython_config.py
84 |
85 | # pyenv
86 | # For a library or package, you might want to ignore these files since the code is
87 | # intended to run in multiple environments; otherwise, check them in:
88 | # .python-version
89 |
90 | # pipenv
91 | # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
92 | # However, in case of collaboration, if having platform-specific dependencies or dependencies
93 | # having no cross-platform support, pipenv may install dependencies that don't work, or not
94 | # install all needed dependencies.
95 | #Pipfile.lock
96 |
97 | # poetry
98 | # Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
99 | # This is especially recommended for binary packages to ensure reproducibility, and is more
100 | # commonly ignored for libraries.
101 | # https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
102 | #poetry.lock
103 |
104 | # pdm
105 | # Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
106 | #pdm.lock
107 | # pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it
108 | # in version control.
109 | # https://pdm.fming.dev/#use-with-ide
110 | .pdm.toml
111 |
112 | # PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
113 | __pypackages__/
114 |
115 | # Celery stuff
116 | celerybeat-schedule
117 | celerybeat.pid
118 |
119 | # SageMath parsed files
120 | *.sage.py
121 |
122 | # Environments
123 | .env
124 | .venv
125 | env/
126 | venv/
127 | ENV/
128 | env.bak/
129 | venv.bak/
130 |
131 | # Spyder project settings
132 | .spyderproject
133 | .spyproject
134 |
135 | # Rope project settings
136 | .ropeproject
137 |
138 | # mkdocs documentation
139 | /site
140 |
141 | # mypy
142 | .mypy_cache/
143 | .dmypy.json
144 | dmypy.json
145 |
146 | # Pyre type checker
147 | .pyre/
148 |
149 | # pytype static type analyzer
150 | .pytype/
151 |
152 | # Cython debug symbols
153 | cython_debug/
154 |
155 | # PyCharm
156 | # JetBrains specific template is maintained in a separate JetBrains.gitignore that can
157 | # be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
158 | # and can be added to the global gitignore or merged into this file. For a more nuclear
159 | # option (not recommended) you can uncomment the following to ignore the entire idea folder.
160 | .idea/
161 | .DS_Store
162 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # CommercialStockXAPI
2 |
3 | **(The project has been under long-term maintenance since 2022, stable and reliable**. We look forward to your cooperation)
4 |
5 | CommercialStockXAPI is a project that provides remote HTTP access to the StockX API. It supports all interfaces of this platforms and serves as a global sneaker seller's tool, assisting in automating processes such as selling sneakers. The interfaces are actively maintained to ensure long-term availability.
6 |
7 | For detailed information about the interfaces, please refer to the following guides:
8 | - [StockX API documentation 1(Online testing interface)](https://stockxapi.dataspiderhub.com/docs) or [StockX API documentation 2(Online testing interface)](https://stockxapi.dataspiderhub.com/redoc)
9 |
10 | Python sample code can be found in the `python` directory.
11 |
12 | ## Supported Platform
13 | 
14 |
15 | If you also need Goat/Alias API, please refer to [CommercialGoatAPI](https://github.com/Sting-Lee/CommercialGoatAPI/)
16 |
17 | ## Supported Interfaces
18 |
19 | CommercialStockXAPI supports the following interfaces for StockX:
20 |
21 | - Init DeviceID
22 | - Search for products (with all params)
23 | - Search for products by GTIN(GTIN is the barcode number on the shoebox)
24 | - Get historical sales records of specified products
25 | - Get ask price of specified products
26 | - Get bid price of specified products
27 | - Get product details of specified products
28 | - Get product size and price information
29 | - Get product sales official suggested price
30 | - Get market data for products, including the highest price, lowest price, trading range, price fluctuation, sales volume, average price
31 | - Get product historical price
32 | - Login
33 | - Get User self information
34 | - Get User seller information
35 | - Update access_token
36 | - Query the listing. Return the product list.
37 | - Query the sold. Return the product list.
38 | - Query the history sold. Return the product list.
39 | - Query the order detail. Return the order detail.
40 | - Enable vacation mode
41 | - Get the shipping label pdf
42 | - Create shipment
43 | - Get shipment list
44 | - Get shipment details(include shipping label url)
45 | - Request shipping extension
46 | - Cancel order
47 | - Cancel product listing
48 | - Modify/Update product price (individual/batch)
49 | - List products for sale (individual/batch)
50 | - BID product
51 |
52 | - Other interfaces:
53 | - Support additional interfaces as per your requirements
54 |
55 | ## How to Access
56 |
57 | For access and inquiries, please reach out to:
58 |
59 | - Discord: sting_lee
60 | - E-Mail: mocca_lee@outlook.com
61 | - Skype: mocca_lee@outlook.com (Name:Sting | ID: live:.cid.c7e659cd5c4c98e8)
62 | - Website: https://profile.dataspiderhub.com
63 |
64 | Contact us to request a trial period (one week). If you have additional requirements or need further assistance, feel free to discuss them with us.
65 |
66 | ## Quotation
67 |
68 | The fee is based on the total monthly call volume and is paid on a monthly basis.
69 |
70 | | MonthlyCalls | Cost(USD) | unit-price(USD/Req) |
71 | | -------------------- | --------------------------------------- | --------------------- |
72 | | <300,000 | $400 | 0.0013/req |
73 | | 300,000~2,000,000 | $800 | 0.0004/req |
74 | | 2,000,000~10,000,000 | $1600 | 0.00016/req |
75 | | >10,000,000 | Pending(Exclusive deployment resources) | <0.00016/req |
76 |
77 | Contact us to request a trial period (one week) and get a discount.
78 | If you have additional requirements or need further assistance, feel free to discuss them with us.
79 |
--------------------------------------------------------------------------------
/python/stockx_api_sample.py:
--------------------------------------------------------------------------------
1 |
2 | import requests
3 |
4 | base_url = "https://stockxapi.dataspiderhub.com"
5 | # Token needs to be applied for from the author and can be tested this week. Online testing can be seen at https://stockxapi.dataspiderhub.com/docs
6 | # Contact the author Email: mocca_lee@outlook.com Discord: sting_lee
7 | TOKEN = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
8 |
9 |
10 | def ping():
11 | """
12 | @description: 测试接口是否可用 Test whether the interface is available
13 | @return:
14 | """
15 | url = f"{base_url}/ping"
16 | response = requests.get(url)
17 | return response.json()
18 |
19 |
20 | def init_auth():
21 | """
22 | @description: 初始化auth,初始化一个设备ID,后面所有接口都要用到。该接口较慢。
23 | Initialize auth, initialize a device ID, and all subsequent interfaces will be used. This interface is slower.
24 | @return:
25 | """
26 | url = f"{base_url}/api/stockx/init_auth"
27 | params = {
28 | "token": TOKEN
29 | }
30 | response = requests.get(url, params=params)
31 | return response.json()
32 |
33 |
34 | def search_product(auth, keyword, page):
35 | """
36 | @description: 搜索商品 Search for goods
37 | @param auth: 初始化auth接口返回的auth参数 auth parameter returned by the init_auth interface
38 | @param keyword: 搜索关键词 Search keywords
39 | @param page: 页码 Page number
40 | @return:
41 | """
42 | url = f"{base_url}/api/stockx/search_product"
43 | params = {
44 | "token": TOKEN,
45 | "auth": auth,
46 | "keyword": keyword,
47 | "page": page
48 | }
49 | response = requests.get(url, params=params)
50 | return response.json()
51 |
52 |
53 | def product_activity(auth, product_uuid):
54 | """
55 | @description: 商品活动信息(历史销售记录) Product activity information(historical sales records)
56 | @param auth: 初始化auth接口返回的auth参数 auth parameter returned by the init_auth interface
57 | @param product_uuid: 商品ID Product ID
58 | @return:
59 | """
60 | url = f"{base_url}/api/stockx/product_activity"
61 | params = {
62 | "token": TOKEN,
63 | "auth": auth,
64 | "product_uuid": product_uuid
65 | }
66 | response = requests.get(url, params=params)
67 | return response.json()
68 |
69 |
70 | def product_detail(auth, product_uuid):
71 | """
72 | @description: 商品详情 Product details
73 | @param auth: 初始化auth接口返回的auth参数 auth parameter returned by the init_auth interface
74 | @param product_uuid: 商品ID Product ID
75 | @return:
76 | """
77 | url = f"{base_url}/api/stockx/product_detail"
78 | params = {
79 | "token": TOKEN,
80 | "auth": auth,
81 | "product_uuid": product_uuid
82 | }
83 | response = requests.get(url, params=params)
84 | return response.json()
85 |
86 |
87 | def product_size_price(auth, product_id):
88 | """
89 | @description: 商品尺码价格 Product size price
90 | @param auth: 初始化auth接口返回的auth参数 auth parameter returned by the init_auth interface
91 | @param product_id: 商品ID(精确到尺码的ID) Product ID(ID to size)
92 | @return:
93 | """
94 | url = f"{base_url}/api/stockx/product_size_price"
95 | params = {
96 | "token": TOKEN,
97 | "auth": auth,
98 | "product_id": product_id,
99 | }
100 | response = requests.get(url, params=params)
101 | return response.json()
102 |
103 |
104 | def self_info(auth, access_token):
105 | """
106 | @description: 用户信息 User information
107 | @param auth: 初始化auth接口返回的auth参数 auth parameter returned by the init_auth interface
108 | @param access_token: 用户登录后的access_token参数 access_token parameter after user login
109 | @return:
110 | """
111 | url = f"{base_url}/api/stockx/self_info"
112 | params = {
113 | "token": TOKEN,
114 | "auth": auth,
115 | "access_token": access_token
116 | }
117 | response = requests.get(url, params=params)
118 | return response.json()
119 |
120 |
121 | def seller_info(auth, access_token):
122 | """
123 | @description: 卖家信息 Seller information
124 | @param auth: 初始化auth接口返回的auth参数 auth parameter returned by the init_auth interface
125 | @param access_token: 用户登录后的access_token参数 access_token parameter after user login
126 | @return:
127 | """
128 | url = f"{base_url}/api/stockx/seller_info"
129 | params = {
130 | "token": TOKEN,
131 | "auth": auth,
132 | "access_token": access_token
133 | }
134 | response = requests.get(url, params=params)
135 | return response.json()
136 |
137 |
138 | def update_access_token(auth, refresh_token, client_id, auth0_client):
139 | """
140 | @description: 更新access_token Update access_token
141 | @param auth: 初始化auth接口返回的auth参数 auth parameter returned by the init_auth interface
142 | @param refresh_token: 用户登录后的refresh_token参数 refresh_token parameter after user login
143 | @param client_id:
144 | @param auth0_client:
145 | @return:
146 | """
147 | url = f"{base_url}/api/stockx/update_access_token"
148 | params = {
149 | "token": TOKEN,
150 | "auth": auth,
151 | "refresh_token": refresh_token,
152 | "client_id": client_id,
153 | "auth0_client": auth0_client,
154 | }
155 | response = requests.get(url, params=params)
156 | return response.json()
157 |
158 |
159 | def get_selling_products(auth, access_token, cursor="", query=""):
160 | """
161 | @description: 获取正在出售中的商品 Get products on sale
162 | @param auth: 初始化auth接口返回的auth参数 auth parameter returned by the init_auth interface
163 | @param access_token: 用户登录后的access_token参数 access_token parameter after user login
164 | @param cursor:
165 | @param query: 查询关键词,可为空 Query keywords, can be empty
166 | @return:
167 | """
168 | url = f"{base_url}/api/stockx/get_selling_products"
169 | params = {
170 | "token": TOKEN,
171 | "auth": auth,
172 | "access_token": access_token,
173 | "cursor": cursor,
174 | "query": query,
175 | }
176 | response = requests.get(url, params=params)
177 | return response.json()
178 |
179 |
180 | def get_sold_products(auth, access_token, cursor="", query=""):
181 | """
182 | @description: 获取已售出的商品 Get sold products
183 | @param auth: 初始化auth接口返回的auth参数 auth parameter returned by the init_auth interface
184 | @param access_token: 用户登录后的access_token参数 access_token parameter after user login
185 | @param cursor:
186 | @param query: 查询关键词,可为空 Query keywords, can be empty
187 | @return:
188 | """
189 | url = f"{base_url}/api/stockx/get_sold_products"
190 | params = {
191 | "token": TOKEN,
192 | "auth": auth,
193 | "access_token": access_token,
194 | "cursor": cursor,
195 | "query": query,
196 | }
197 | response = requests.get(url, params=params)
198 | return response.json()
199 |
200 |
201 | def get_history_products(auth, access_token, cursor="", query=""):
202 | """
203 | @description: 获取历史已售商品 Get historical sold products
204 | @param auth: 初始化auth接口返回的auth参数 auth parameter returned by the init_auth interface
205 | @param access_token: 用户登录后的access_token参数 access_token parameter after user login
206 | @param cursor:
207 | @param query: 查询关键词,可为空 Query keywords, can be empty
208 | @return:
209 | """
210 | url = f"{base_url}/api/stockx/get_history_products"
211 | params = {
212 | "token": TOKEN,
213 | "auth": auth,
214 | "access_token": access_token,
215 | "cursor": cursor,
216 | "query": query,
217 | }
218 | response = requests.get(url, params=params)
219 | return response.json()
220 |
221 |
222 | def get_order_detail(auth, access_token, chain_id):
223 | """
224 | @description: 获取订单详情 Get order details
225 | @param auth: 初始化auth接口返回的auth参数 auth parameter returned by the init_auth interface
226 | @param access_token: 用户登录后的access_token参数 access_token parameter after user login
227 | @param chain_id: chain_id
228 | @return:
229 | """
230 | url = f"{base_url}/api/stockx/get_order_detail"
231 | params = {
232 | "token": TOKEN,
233 | "auth": auth,
234 | "access_token": access_token,
235 | "chain_id": chain_id,
236 | }
237 | response = requests.get(url, params=params)
238 | return response.json()
239 |
240 |
241 | def vacation_mode(auth, access_token, customer_id, switch_to):
242 | """
243 | @description: 设置假期模式 Set vacation mode
244 | @param auth: 初始化auth接口返回的auth参数 auth parameter returned by the init_auth interface
245 | @param access_token: 用户登录后的access_token参数 access_token parameter after user login
246 | @param customer_id: customer_id
247 | @param switch_to: OFF:关闭假期模式 ON:开启假期模式 OFF: Turn off vacation mode ON: Turn on vacation mode
248 | @return:
249 | """
250 | url = f"{base_url}/api/stockx/vacation_mode"
251 | params = {
252 | "token": TOKEN,
253 | "auth": auth,
254 | "access_token": access_token,
255 | "customer_id": customer_id,
256 | "switch_to": switch_to,
257 | }
258 | response = requests.get(url, params=params)
259 | return response.json()
260 |
261 |
262 | def cancel_product(auth, access_token, chain_id):
263 | """
264 | @description: 下架商品 Cancel product
265 | @param auth: 初始化auth接口返回的auth参数 auth parameter returned by the init_auth interface
266 | @param access_token: 用户登录后的access_token参数 access_token parameter after user login
267 | @param chain_id: chain_id
268 | @return:
269 | """
270 | url = f"{base_url}/api/stockx/cancel_product"
271 | params = {
272 | "token": TOKEN,
273 | "auth": auth,
274 | "access_token": access_token,
275 | "chain_id": chain_id,
276 | }
277 | response = requests.get(url, params=params)
278 | return response.json()
279 |
280 |
281 | # sold_product_list={"products": [{"chain_id": "", "sku": ""}]}
282 | def create_shipment(auth, access_token, sold_product_list):
283 | """
284 | @description: 创建发货单 Create shipment
285 | @param auth: 初始化auth接口返回的auth参数 auth parameter returned by the init_auth interface
286 | @param access_token: 用户登录后的access_token参数 access_token parameter after user login
287 | @param sold_product_list: 已售出的商品列表 Sold product list
288 | @return:
289 | """
290 | url = f"{base_url}/api/stockx/create_shipment"
291 | params = {
292 | "token": TOKEN,
293 | "auth": auth,
294 | "access_token": access_token,
295 | }
296 | response = requests.post(url, params=params, json=sold_product_list)
297 | return response.json()
298 |
299 |
300 | # chain_id_price_dict={
301 | # "chain_id": "",
302 | # "price": "",
303 | # "user_id": "",
304 | # "expires_second": 3600,
305 | # }
306 | def update_price_single(auth, access_token, chain_id_price_dict):
307 | """
308 | @description: 单个修改价格 Single price modification
309 | @param auth: 初始化auth接口返回的auth参数 auth parameter returned by the init_auth interface
310 | @param access_token: 用户登录后的access_token参数 access_token parameter after user login
311 | @param chain_id_price_dict:
312 | @return:
313 | """
314 | url = f"{base_url}/api/stockx/create_shipment"
315 | params = {
316 | "token": TOKEN,
317 | "auth": auth,
318 | "access_token": access_token,
319 | }
320 | response = requests.post(url, params=params, json=chain_id_price_dict)
321 | return response.json()
322 |
323 |
324 | # chain_id_price_dict = {
325 | # "products": [{
326 | # "chain_id": "",
327 | # "price": "",
328 | # "user_id": "",
329 | # "expires_second": 3600,
330 | # }]
331 | # }
332 | def update_price_multi(auth, access_token, chain_id_price_dict):
333 | """
334 | @description: 批量修改价格 Batch modification of price
335 | @param auth: 初始化auth接口返回的auth参数 auth parameter returned by the init_auth interface
336 | @param access_token: 用户登录后的access_token参数 access_token parameter after user login
337 | @param chain_id_price_dict:
338 | @return:
339 | """
340 | url = f"{base_url}/api/stockx/create_shipment"
341 | params = {
342 | "token": TOKEN,
343 | "auth": auth,
344 | "access_token": access_token,
345 | }
346 | response = requests.post(url, params=params, json=chain_id_price_dict)
347 | return response.json()
348 |
349 |
350 | # product_info = {
351 | # "product_uuid": "",
352 | # "price": "",
353 | # "expires_second": 3600,
354 | # }
355 | def listing_product_single(auth, access_token, product_info):
356 | """
357 | @description: 单个上架商品 Single listing product
358 | @param auth: 初始化auth接口返回的auth参数 auth parameter returned by the init_auth interface
359 | @param access_token: 用户登录后的access_token参数 access_token parameter after user login
360 | @param product_info:
361 | @return:
362 | """
363 | url = f"{base_url}/api/stockx/listing_product_single"
364 | params = {
365 | "token": TOKEN,
366 | "auth": auth,
367 | "access_token": access_token,
368 | }
369 | response = requests.post(url, params=params, json=product_info)
370 | return response.json()
371 |
372 |
373 | # product_info = {
374 | # "products": [{
375 | # "product_uuid": "",
376 | # "price": "",
377 | # "expires_second": 3600,
378 | # }]
379 | # }
380 | def listing_product_multi(auth, access_token, product_info):
381 | """
382 | @description: 批量上架商品 Batch listing product
383 | @param auth: 初始化auth接口返回的auth参数 auth parameter returned by the init_auth interface
384 | @param access_token: 用户登录后的access_token参数 access_token parameter after user login
385 | @param product_info_list:
386 | @return:
387 | """
388 | url = f"{base_url}/api/stockx/listing_product_multi"
389 | params = {
390 | "token": TOKEN,
391 | "auth": auth,
392 | "access_token": access_token,
393 | }
394 | response = requests.post(url, params=params, json=product_info)
395 | return response.json()
396 |
397 |
398 | def get_product_size_info_by_sku(auth, sku):
399 | """
400 | @description: 获取商品尺码信息(内部缓存数据) Get product size information(internal cache data)
401 | @param auth: 初始化auth接口返回的auth参数 auth parameter returned by the init_auth interface
402 | @param access_token: 用户登录后的access_token参数 access_token parameter after user login
403 | @param sku: sku
404 | @return:
405 | """
406 | url = f"{base_url}/api/stockx/get_product_size_info_by_sku"
407 | params = {
408 | "token": TOKEN,
409 | "auth": auth,
410 | "sku": sku,
411 | }
412 | response = requests.get(url, params=params)
413 | return response.json()
414 |
415 |
416 | if __name__ == '__main__':
417 | print(ping())
418 | print(init_auth())
419 |
--------------------------------------------------------------------------------
/python/stockx_support_list.py:
--------------------------------------------------------------------------------
1 | """
2 | support interface list for stockx as below:
3 | https://collector-px16ud0kof.cl6.perimeterx.net/api/v1/collector/mobile
4 | https://collector-px16ud0kof.cl6.perimeterx.net/api/v1/collector/mobile
5 | https://gateway.stockx.com/api/v3/browse?page={}&_search={}&dataType=product¤cy=USD&country=HK
6 | https://gateway.stockx.com/api/v2/products/{product_uuid}/activity?
7 | https://gateway.stockx.com/api/v3/rowse?page={}&sort={}&order=DESC&browseVerticals=sneakers&dataType=product¤cy=USD&country=HK&filterVersion=2
8 | https://gateway.stockx.com/api/v3/rowse?page={}&shoeSize={}&_tags={}&gender={}&market.lowestAsk={}&year={}&productCategory=SNEAKERS¤cy=USD&country=HK
9 | https://gateway.stockx.com/api/graphql
10 | https://gateway.stockx.com/api/graphql
11 | https://gateway.stockx.com/api/v1/users/me?meta=include
12 | https://gateway.stockx.com/api/v2/portfolioItems/{}?includes=payment,payout,pricing,shipping,product,meta,market&country=HK
13 | https://accounts.stockx.com/oauth/token
14 | https://gateway.stockx.com/api/graphql
15 | https://gateway.stockx.com/api/graphql
16 | https://gateway.stockx.com/api/graphql
17 | https://gateway.stockx.com/api/graphql
18 | https://gateway.stockx.com/api/v1/portfolio/multi?a=ask
19 | https://gateway.stockx.com/api/v1/portfolio?a=ask
20 | https://gateway.stockx.com/api/v1/portfolio/multi?a=ask
21 | https://gateway.stockx.com/api/graphql
22 | https://gateway.stockx.com/api/graphql
23 | https://gateway.stockx.com/api/graphql
24 | https://gateway.stockx.com/api/v1/portfolio?a=ask
25 | https://gateway.stockx.com/api/v1/customers/{customer_id}
26 | https://gateway.stockx.com/api/v1/portfolio/{chain_id}
27 | https://gateway.stockx.com/api/graphql
28 | """
--------------------------------------------------------------------------------
/res/stockx.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Sting-Lee/CommercialStockXAPI/34c7f57d03cbb1051c72b1332b3faa58ff982b96/res/stockx.jpg
--------------------------------------------------------------------------------