apify-stockx-client
StockX resale market data — lowest ask, highest bid, last sale — by keyword search or category browse.
Python client for the rl1987/stockx-api-scraper Apify Actor. No local scraping, no proxy management, no anti-bot maintenance — the Actor runs on Apify's infrastructure and this package just starts it, waits, and hands you back the dataset as plain Python dicts.
Install · Quickstart · Getting an API token · Input reference · Output fields · Error handling · Pricing · Async / long-running runs · Links
Install
pip install apify-stockx-client
Requires Python 3.9+. Only dependency is requests.
Quickstart
from apify_stockx_client import StockXClient
client = StockXClient(api_token="apify_api_...") # see "Getting an API token" below
items = client.run({"q": "Jordan 1 Retro High", "includeDetails": True, "maxItems": 20})
for item in items:
print(item)
Real output from the example above (trimmed to a few fields):
{"title": "Jordan 1 Retro High OG Chicago Lost and Found", "brandName": "Jordan", "lowestAsk": 154, "highestBid": 286, "productUrl": "https://stockx.com/air-jordan-1-retro-high-og-chicago-reimagined-lost-and-found"}
run() blocks until the Actor finishes (usually a few seconds to ~30s depending on maxItems) and returns a plain list[dict] — the Actor's dataset, one dict per result row.
Getting an API token
-
Sign up for a free account at console.apify.com.
-
Go to Settings → Integrations and copy your Personal API token.
-
Pass it to the client:
StockXClient(api_token="..."), or read it from an environment variable:import os client = StockXClient(api_token=os.environ["APIFY_TOKEN"])
Never hardcode the token in source control — use an environment variable or secrets manager.
Input reference
run() takes a single dict matching the Actor's input schema. Full/authoritative schema: the Input tab on the Actor's Apify page.
| Field | Type | Default | Description |
|---|---|---|---|
q |
str | "" |
Search keyword, e.g. "Jordan 1 Retro High". |
category |
str | — | One of sneakers, streetwear, watches, handbags, electronics, collectibles, trading-cards. Provide q, category, or both. |
includeDetails |
bool | False |
Fetch PDP fields: description, release date, per-size variantSizes. |
maxItems |
int | 100 |
Maximum products to scrape. 0 = no limit. |
Output fields
Each dict in the returned list is one row from the Actor's dataset. Common fields:
title, brandName, model, colorway, styleId, retailPrice, currency, lowestAsk, highestBid, lastSale, productUrl, thumbUrl, images; plus description, releaseDate, variantSizes when includeDetails=True.
Exact field availability can vary by input flags (see table above) — treat unfamiliar/missing keys as optional and use .get() rather than [...] indexing.
Error handling
from apify_stockx_client import StockXClient, ApifyActorError
import requests
client = StockXClient(api_token="...")
try:
items = client.run({"q": "Jordan 1 Retro High", "includeDetails": True, "maxItems": 20})
except ApifyActorError as e:
# The Actor run itself failed, timed out, or was aborted on the Apify side.
print(f"Actor run did not succeed: {e}")
except requests.HTTPError as e:
# Bad token, malformed input, rate limiting, etc. — an HTTP-level error
# calling the Apify API (not the Actor run).
print(f"Apify API request failed: {e}")
ApifyActorError is raised when the run reaches a terminal non-success status (FAILED, TIMED-OUT, ABORTED) or doesn't finish within timeout_secs (default 300s — raise it for run() calls with a large maxItems, e.g. StockXClient(api_token="...", timeout_secs=900)).
Pricing
Pay-per-event: $0.00075/product row, plus $0.00075/product enriched with detail-page data when includeDetails=True. No subscription — see the Actor's pricing tab for current rates. Apify also includes a free monthly usage tier that covers light use.
Advanced: longer timeouts & polling
client = StockXClient(api_token="...", timeout_secs=900) # allow up to 15 min
items = client.run(actor_input, poll_interval_secs=3.0) # poll less aggressively
Links
- StockX API Scraper on Apify — Actor page, input schema, pricing
- PyPI package
- Apify API reference — what this client wraps under the hood
License
MIT
Metadata
Release files for apify-stockx-client 0.1.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| apify_stockx_client-0.1.1.tar.gz | 6.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| apify_stockx_client-0.1.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 14.4 kB
Release files / apify_stockx_client-0.1.1.tar.gz
| Download URL | apify_stockx_client-0.1.1.tar.gz |
|---|---|
| Size | 6.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
153726f3714c2885946dcf396534b0adbc28107ab152c022eb7c51508295bd31
|
|
BLAKE2b-256 checksum How to use checksums |
ae4404a85cd56756cea06ef3a6ded101dccb799894e53d85431de27358fc8eb4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.0
|
Release files / apify_stockx_client-0.1.1-py3-none-any.whl
| Download URL | apify_stockx_client-0.1.1-py3-none-any.whl |
|---|---|
| Size | 7.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
39bacb2eb3691ce2bedd04c4d7d17923133097503065631e82e7b3eb07ef3382
|
|
BLAKE2b-256 checksum How to use checksums |
d5e57744e75f3c52ab2f7607cdeb1da351106cae1e203b53c8d393c8fc61b5bf
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.0
|