Shopify Stockx Price Sync
Pricing
$39.00/month + usage
Shopify Stockx Price Sync
Automatically syncs sneaker prices from StockX to Shopify daily. Features size-specific pricing, configurable markup, proxy support to bypass anti-bot protection, dry-run testing, and scheduled automation. Easy product mapping with safety limits to prevent pricing errors.
Pricing
$39.00/month + usage
Rating
0.0
(0)
Developer

API Sync Studio
Actor stats
1
Bookmarked
1
Total users
0
Monthly active users
11 hours ago
Last modified
Categories
Share
Shopify – StockX Price Synchronization Actor
Automatically retrieve publicly available price information from StockX product pages and sync it to your Shopify store. Ideal for retailers who want their Shopify catalog to reflect current market trends in sneaker and collectible pricing.
Legal Disclaimer This tool retrieves publicly accessible webpage information only. Users are solely responsible for ensuring that their use of this Actor complies with the Terms of Service of StockX, Shopify, Apify, and all applicable laws. This Actor does not circumvent authentication, does not bypass security measures, and does not endorse or encourage violating any website’s terms. Always confirm you have the right to access and use any data you fetch.
🚀 Key Features
- Automated Daily Syncing — Schedule updates to run at your preferred time.
- Flexible Product Mapping — Link Shopify products with StockX product URLs.
- Size-Specific Price Matching — Map individual Shopify variants to StockX sizes.
- Support for Non-Sized Products — Ideal for accessories, collectibles, and other products without size variations.
- Custom Markups — Apply a configurable percentage markup to retrieved prices.
- Price Guardrails — Define minimum and maximum acceptable prices.
- Multi-Strategy Scraping — Uses JSON-LD, Next.js data extraction, and stealth browser fallback.
- Advanced Anti-Bot Bypass — Stealth browser with fingerprint randomization for PerimeterX bypass.
- Optional Proxy Support — Residential proxies recommended for reliable scraping.
- Dry Run Mode — Safely test your configuration before updating Shopify.
- Detailed Logging & Reporting — Review updates, skipped items, and any failed operations.
- Variant-Level Controls — Enable or disable updates per Shopify variant.
- Price Change Protection — Prevents extreme jumps by limiting changes over 50%.
📋 Prerequisites
- A Shopify store with Admin API access
- An Apify account
- Shopify Product IDs and Variant IDs
- StockX product URLs (public product pages)
🔧 Setup Instructions
1. Get Shopify Credentials
-
Open Shopify Admin → Settings → Apps and sales channels
-
Enable custom app development (if needed)
-
Create a new custom app
-
Grant permissions:
read_productswrite_products
-
Copy your Admin API access token
-
Note your shop name (e.g.,
your-storefromyour-store.myshopify.com)
2. Retrieve Product & Variant IDs
Product ID:
- Open Products, click a product, and check the URL for the ID.
Variant ID:
- Scroll to Variants, click a variant, and check the URL for the ID.
3. Configure the Actor Input
{"shopifyShopName": "your-sneaker-store","shopifyAccessToken": "shpat_xxxxxxxxxxxxx","productMappings": [{"shopifyProductId": "1234567890","stockxUrl": "https://stockx.com/air-jordan-1-retro-high-og-chicago","sizeVariants": [{"shopifyVariantId": "9876543210","stockxSize": "10","enabled": true}]}],"priceMarkupPercent": 15,"minPrice": 50,"maxPrice": 5000,"dryRun": false,"useProxy": true,"proxyType": "RESIDENTIAL","proxyCountry": "US","browserOnly": false}
When sizeVariants is omitted, the Actor retrieves the lowest visible ask price from the public StockX product page and updates the default Shopify variant.
📝 Configuration Options
Required Fields
| Field | Description |
|---|---|
shopifyShopName | Your Shopify store name (without .myshopify.com). |
shopifyAccessToken | Admin API token for updating prices. |
productMappings | List of products and how they map to StockX URLs. |
Products With Size Variants
{"shopifyProductId": "1234567890","stockxUrl": "https://stockx.com/product-url","sizeVariants": [{"shopifyVariantId": "9876543210","stockxSize": "10","enabled": true}]}
Products Without Sizes
{"shopifyProductId": "1234567890","stockxUrl": "https://stockx.com/product-url"}
Multiple Products
The Actor processes all products in the productMappings array sequentially. You can add as many products as needed — each will be synced in order with built-in rate limiting.
{"shopifyShopName": "your-store","shopifyAccessToken": "shpat_xxxxxxxxxxxxx","productMappings": [{"shopifyProductId": "1111111111","stockxUrl": "https://stockx.com/air-jordan-1-retro-high-og-chicago","sizeVariants": [{ "shopifyVariantId": "1000000001", "stockxSize": "9", "enabled": true },{ "shopifyVariantId": "1000000002", "stockxSize": "10", "enabled": true },{ "shopifyVariantId": "1000000003", "stockxSize": "11", "enabled": true }]},{"shopifyProductId": "2222222222","stockxUrl": "https://stockx.com/adidas-yeezy-boost-350-v2-zebra","sizeVariants": [{ "shopifyVariantId": "2000000001", "stockxSize": "8", "enabled": true },{ "shopifyVariantId": "2000000002", "stockxSize": "9", "enabled": true }]},{"shopifyProductId": "3333333333","stockxUrl": "https://stockx.com/supreme-box-logo-tee"}],"priceMarkupPercent": 15,"minPrice": 50,"maxPrice": 5000,"dryRun": false,"useProxy": true}
In this example:
- Product 1 — Jordan 1 with 3 size variants
- Product 2 — Yeezy 350 with 2 size variants
- Product 3 — Supreme tee with no sizes (uses lowest ask price)
Optional Settings
| Field | Description | Default |
|---|---|---|
priceMarkupPercent | Add markup to retrieved prices | 15 |
minPrice | Minimum allowed price | 50 |
maxPrice | Maximum allowed price | 5000 |
dryRun | Logs actions without updating Shopify | false |
useProxy | Enable proxy connectivity | false |
proxyType | DATACENTER or RESIDENTIAL | RESIDENTIAL |
proxyCountry | Country code for proxy routing | US |
scrapingStrategies | Order of strategies to try | ["json-ld", "next-data", "browser"] |
browserOnly | Skip HTTP strategies, use browser only | false |
🎯 How the Actor Works
The scraper uses a multi-strategy approach to maximize success rate:
Scraping Strategies (in order)
-
JSON-LD Extraction — Fast, lightweight extraction of SEO schema data embedded in the page. Least detectable but may not have all size-specific pricing.
-
Next.js Data Extraction — Parses the
__NEXT_DATA__hydration payload that StockX uses for their React frontend. Contains comprehensive product and variant data. -
Stealth Browser — Full Playwright browser with anti-detection measures:
- Fingerprint randomization (user agents, screen sizes, languages)
- WebDriver property masking
- Human-like behavior simulation (mouse movement, scrolling)
- Resource blocking for faster loads
- Residential proxy support for PerimeterX bypass
Workflow
- Tries each strategy in configured order
- Falls back to next strategy if blocked or no data found
- Applies markup and price constraints to retrieved prices
- Updates corresponding Shopify product variants
- Produces a structured dataset with results
📊 Example Output
{"totalProducts": 10,"successfulUpdates": 47,"failedUpdates": 2,"skippedUpdates": 1,"errors": [{"productId": "1234567890","variantId": "9876543210","size": "10","error": "Price not found"}]}
🔄 Recommended Workflow
Initial Setup
- Start with
dryRun: true - Review logs for correct mappings
- Switch to live updates when ready
Adding New Products
- Add StockX URL
- Add Shopify Product & Variant IDs
- Test with a dry run
Disabling Updates Temporarily
"enabled": false
🌐 Proxy Configuration
StockX uses HUMAN Security (PerimeterX) for bot protection, which heavily blocks datacenter IPs. For reliable scraping:
Recommended Configuration
{"useProxy": true,"proxyType": "RESIDENTIAL","proxyCountry": "US","browserOnly": true}
Proxy Options
- Residential Proxies — Strongly recommended for StockX. PerimeterX trusts residential IPs significantly more than datacenter IPs.
- Datacenter Proxies — May work occasionally but expect frequent blocks.
Strategy Tips
- If HTTP strategies (
json-ld,next-data) are consistently blocked, enablebrowserOnly: true - Use US proxies for best results (StockX is US-based)
- The stealth browser includes fingerprint rotation to avoid detection patterns
Note: Even with residential proxies, StockX may occasionally block requests. The multi-strategy approach helps maximize success rate.
⚠️ Notes & Best Practices
Working With StockX Pages
- This Actor uses publicly visible data only.
- If StockX changes its layout, selectors may require updating.
Shopify Rate Limits
- Shopify enforces ~2 requests per second.
- This Actor uses safe pacing to respect limits.
Pricing Safeguards
- Min/max thresholds prevent extreme pricing.
- A 50% change cap avoids unexpected spikes.
🐛 Troubleshooting
Blocked by Anti-Bot (403/503)
- Enable
useProxy: truewithproxyType: "RESIDENTIAL" - Try
browserOnly: trueto skip HTTP strategies - StockX's PerimeterX protection is aggressive — residential proxies are essential
Price Not Found
- The size may not be available on StockX
- Check if the product URL is correct
- Enable browser strategy for more reliable extraction
All Strategies Exhausted
- This means JSON-LD, Next.js data, and browser all failed
- Enable residential proxies if not already enabled
- Try running with fewer products to reduce detection risk
Shopify Update Errors
- Check API permissions.
- Verify variant IDs.
- Ensure the product is active.
Timeouts
- Reduce product count per run.
- Increase Actor memory/time allocation.
- Browser strategy takes longer — allow 45-60 seconds per product.
🔐 Security
- Sensitive credentials are stored securely.
- No customer data is logged.
- API tokens never leave Apify’s infrastructure.
📈 Best Practices
- Start with 1–2 products.
- Use
dryRunfor all new configurations. - Review logs periodically.
- Keep product mappings clean and accurate.
- Choose sensible markups and pricing constraints.
📄 License
MIT License — free to use and modify.
🆘 Support
For help with configuration or extending functionality, feel free to reach out on Apify.