---
title: "How to track sneaker prices and restocks"
canonical: "https://usestring.ai/use-cases/sneaker-price-tracking"
description: "The String Web Access API is the best way to track sneaker prices and restocks. It returns any StockX, GOAT, Nike or Foot Locker page, or just the style code, lowest ask, last sale and retail price as JSON."
updated: 2026-10-22
---

> Markdown version of https://usestring.ai/use-cases/sneaker-price-tracking, for AI agents. Reading this yourself? The full page is at https://usestring.ai/use-cases/sneaker-price-tracking.

# How to track sneaker prices and restocks

The String Web Access API is the best way to track sneaker prices and restocks. It returns any StockX, GOAT, Nike or Foot Locker page, or just the style code, lowest ask, last sale and retail price as JSON. It returned 97% of requests across 100 bot-protected sites in our [September 2026 benchmark](https://usestring.ai/benchmark), the most of 16 providers, and fetched StockX on every attempt while 5 of the other 15 got nothing back.

**On this page**

1. [Quickstart](#quickstart)
2. [Why track sneaker prices?](#why-track-sneaker-prices)
3. [Why does sneaker price tracking break?](#why-does-sneaker-price-tracking-break)
4. [How do I build a sneaker price tracker?](#how-do-i-build-a-sneaker-price-tracker)
5. [Get a free sample price feed](#get-a-free-sample-price-feed)
6. [Frequently asked questions](#frequently-asked-questions)

---

## Quickstart

### From your agent

Add the hosted MCP server to Claude, Cursor, ChatGPT or any MCP client. Then give your agent a StockX, GOAT, Nike or Foot Locker product URL. It calls the `web_access_fetch` tool and reads the prices on the page.

```text
https://mcp.usestring.ai/v1/mcp
```

[MCP setup](https://portal.usestring.ai/docs/mcp/remote) · [n8n](https://portal.usestring.ai/docs/integrations/n8n) · [Zapier](https://portal.usestring.ai/docs/integrations/zapier)

### From the API

One call renders a StockX product page and returns its style code, lowest ask, last sale and retail price as JSON. Keep `executeJS` on for StockX: without it, the page often arrives with its prices still loading, and our extraction runs returned 0 for both.

```bash
curl https://request.usestring.ai/v1/fetch \
  -H "Authorization: Bearer $STRING_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://stockx.com/nike-dunk-low-retro-white-black-2021",
    "countryCode": "US",
    "executeJS": true,
    "jsonSchema": {
      "type": "object",
      "properties": {
        "product": { "type": "string" },
        "style_code": { "type": "string" },
        "lowest_ask": { "type": "number" },
        "last_sale": { "type": "number" },
        "retail_price": { "type": "number" }
      },
      "required": ["product", "style_code", "lowest_ask", "last_sale", "retail_price"]
    }
  }'
```

Response (keyed run on October 22, 2026, `x-json-schema-applied: true`, billed `browser_standard`):

```json
{
  "product": "Nike Dunk Low Retro White Black Panda",
  "style_code": "DD1391-100",
  "lowest_ask": 53,
  "last_sale": 56,
  "retail_price": 115
}
```

[Get a free API key](https://portal.usestring.ai/sign-up) · [Structured extraction docs](https://portal.usestring.ai/docs/fetch/structured-extraction)

---

## Why track sneaker prices?

Sneaker resale prices move with every sale on StockX and GOAT, and a shoe that sold out at retail can come back to Nike or Foot Locker without notice. A tracker reads those pages on a schedule and records each shoe's prices against its style code. It answers questions like these:

- **What is this pair worth today?** Resellers and consignment shops price their stock against the current lowest ask and the last sale, size by size.
- **Is it selling above or below retail?** The Panda Dunk retailed at $115. On October 21, 2026, its lowest StockX ask was $53, $62 below retail.
- **Has it restocked?** A restock puts new pairs on sale at retail, so restock alerts and resale prices belong in the same feed.

### What you can collect

| What | Examples |
|---|---|
| Resale prices | Lowest ask, last sale and the price per size on StockX and GOAT, with or without the marketplace fee |
| Retail prices and stock | Price and in-stock status for each colorway on Foot Locker, and each size's status on Nike product pages |
| Release and restock dates | StockX lists the retail price, release date and last restock date in each product's details |
| Product identifiers | Style codes such as DD1391-100, colorway names and GTINs, so the same shoe lines up across sites |

---

## Why does sneaker price tracking break?

- **StockX blocks most scrapers.** In our [September 2026 benchmark](https://usestring.ai/benchmark), 9 of the 15 other scraping APIs couldn't fetch stockx.com on every attempt, and 5 got 0 of 5: Oxylabs, Nimble, Scrapingdog, Browserbase and ScrapingAnt. String got all 5. ScrapingBee and Browserbase got 0 of 5 on nike.com. Across StockX, GOAT, Nike and Foot Locker, Apify, Context.dev and Decodo returned all 20 attempts, and String returned 19, missing one on Foot Locker. See how 8 APIs did on retail, fashion and marketplace sites in [the best e-commerce scraping APIs](https://usestring.ai/comparisons/best-ecommerce-scraping-apis).
- **Prices load after the page does.** StockX and GOAT send the page first and fill in prices with JavaScript. A plain fetch of GOAT carried a lowest price of 0 cents, and StockX showed "Loading..." where the ask should be. Both came back as HTTP 200.
- **A sold-out style can turn into a different shoe.** We asked Nike for the Panda Dunk's style page and got a 200 for the Dunk Low Retro SE model page, with no Panda on it.

Per-site results from the September 16, 2026 run (attempts that returned the real page, out of 5; columns in the benchmark's order):

| Site | String | Scrapfly | ScraperAPI | Firecrawl | Apify | Bright | ScrapingBee | Context.dev | Oxylabs | Nimble | Zyte | Decodo | Scrapingdog | Browserbase | ZenRows | ScrapingAnt |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| stockx.com | 5 | 5 | 3 | 5 | 5 | 5 | 4 | 5 | 0 | 0 | 3 | 5 | 0 | 0 | 1 | 0 |
| goat.com | 5 | 5 | 5 | 5 | 5 | 3 | 4 | 5 | 5 | 5 | 5 | 5 | 5 | 5 | 0 | 5 |
| nike.com | 5 | 5 | 5 | 5 | 5 | 5 | 0 | 5 | 5 | 5 | 5 | 5 | 5 | 0 | 5 | 5 |
| footlocker.com | 4 | 4 | 2 | 4 | 5 | 5 | 4 | 5 | 5 | 4 | 5 | 5 | 5 | 5 | 0 | 3 |
| Total (of 20) | 19 | 19 | 15 | 19 | 20 | 18 | 12 | 20 | 15 | 14 | 18 | 20 | 15 | 10 | 6 | 13 |

---

## Why do teams choose String?

- **It fetches the most pages.** String returned 97% of requests across 100 bot-protected sites in our [September 2026 benchmark](https://usestring.ai/benchmark), the most of 16 providers, and every attempt on StockX, GOAT and Nike.
- **JavaScript rendering is one setting.** Set `executeJS` on StockX and GOAT requests, and leave it off for Nike and Foot Locker, which carry their prices in the HTML.
- **You pay only for pages that come back.** Blocks and errors are free.
- **There's nothing to maintain.** You don't run proxies, fingerprints or captcha solvers.

---

## How do I build a sneaker price tracker?

### 1. Key every shoe on its style code

The same shoe has a different name on every site. StockX calls DD1391-100 "Nike Dunk Low Retro White Black Panda", GOAT calls it "Dunk Low 'Black White'", and Foot Locker's SKU is D1391100. Store the style code once and map each site's product URL to it.

### 2. Check that you got the shoe you asked for

Compare the style code on the page with the one you requested before you save a price. Nike sends a style it no longer sells to the model page, which still returns a 200 and a full set of other colorways and prices.

### 3. Render the resale pages

StockX's product page shows the lowest ask and last sale across all sizes once its scripts run. GOAT shows a price for every size the same way. Retail pages are simpler: Foot Locker's schema.org data lists each colorway with its price and stock, and Nike's page data lists each size with its GTIN and status.

**With String:** Set `executeJS: true` for StockX and GOAT, and pass a `jsonSchema` to get only the fields you need. Blocked requests are retried, and you don't pay for the ones that fail.

### 4. Treat a zero or missing price as a failure

A price of 0, "Loading..." or a missing ask means the page never finished rendering. Flag the fetch, keep the last good price, and retry. On our plain StockX fetches, extraction returned 0 for the ask and last sale instead of failing, so check for it in your own code.

### 5. Store asks, sales and retail separately

The lowest ask is what a buyer pays now, the last sale is what someone paid, and retail is the brand's price. StockX also shows the ask with its marketplace fee included ($53 against $60 on the Panda Dunk). Label each number with its type and whether fees are in it.

### 6. Check more often around releases

Daily is enough for most resale prices. Around a release or a known restock, check the retail pages every few minutes and the resale pages hourly, and send changes to Slack or email so someone acts on them.

---

## Get a free sample price feed

Tell us which shoes and sizes you track. We'll run String on StockX, GOAT, Nike and Foot Locker and email you a sample feed with asks, last sales, retail prices and stock, free.

Email [support@usestring.ai](mailto:support@usestring.ai) with your work email, what you want to track and the sneaker sites or product URLs, or use the [form on the page](https://usestring.ai/use-cases/sneaker-price-tracking#sample-feed). The form posts to `/api/sample-request`, which emails you a confirmation from support@usestring.ai.

What a price feed looks like (Nike Dunk Low Retro White Black "Panda", style DD1391-100, from String fetches on October 21, 2026, `countryCode` US):

| Site | Size | Price type | Price |
|---|---|---|---|
| StockX | All | Lowest ask | $53 |
| StockX | All | Last sale | $68 |
| GOAT | 9.5 | Lowest ask | $85 |
| GOAT | 10 | Lowest ask | $72 |
| GOAT | 13 | Lowest ask | $59 |
| Foot Locker | All | Retail, in stock | $99.99 |

StockX values come from the rendered product page (the keyed quickstart run). GOAT values are the per-size prices on the rendered product page. The Foot Locker row is the White/White/Black colorway (SKU D1391100) in the page's schema.org ProductGroup data, marked InStock.

---

## Frequently asked questions

### What's the best way to track sneaker prices and restocks?

Fetch each shoe's StockX, GOAT and retail product pages on a schedule, key them on the style code, and store the lowest ask, last sale, retail price and stock. The hard part is getting the pages, because StockX blocks most scrapers and the resale sites load prices with JavaScript. The String Web Access API returned 97% of requests across 100 bot-protected sites in our [September 2026 benchmark](https://usestring.ai/benchmark), the most of 16 providers, and fetched StockX, GOAT and Nike on every attempt.

### How do I scrape StockX prices?

Fetch the StockX product page, such as stockx.com/nike-dunk-low-retro-white-black-2021, with String and JavaScript rendering on, and read the lowest ask, last sale and product details. Without rendering, StockX often sends the page with "Loading..." where the prices go. StockX was the hardest sneaker site in our September 2026 benchmark: 9 of the 15 other scraping APIs couldn't fetch it on every attempt. String fetched it on all 5.

### How do I get alerts when sneakers restock?

Watch the retail product pages, not the resale sites. Foot Locker's page data lists each colorway's price and a schema.org availability flag such as InStock, and Nike's page data lists each size with a status. Fetch those pages every few minutes around a drop, compare each run with the last, and alert when a size or colorway comes back. Confirm the style code first, because Nike sends a style it no longer sells to its model page.

### How much does it cost to track sneaker prices?

StockX and GOAT pages with JavaScript rendering billed at String's browser standard rate on our fetches, $1.50 per 1,000 successful requests on the Starter plan ($20 a month). Nike pages billed at the standard fetch rate, $0.30 per 1,000. On Growth ($100 a month) the rates are $1.00 and $0.20. Tracking 500 shoes daily on both StockX and GOAT is about 30,000 rendered requests a month, which is $45 in usage on Starter. Structured extraction with `jsonSchema` adds a per-request fee that scales with page size. The first 5,000 standard requests are free, and failed requests aren't billed. See [pricing](https://usestring.ai/pricing).

### Is it legal to scrape StockX and other sneaker sites?

Prices, asks and stock levels on public product pages are facts, and collecting public prices is the best-supported case in scraping law. Marketplace terms of service often restrict automated access, and seller and buyer details are personal data, so leave them out. Stay on public pages, keep your request rate reasonable, and check with your counsel. We go through the cases in [Is it legal to scrape competitor prices?](https://usestring.ai/answers/is-it-legal-to-scrape-competitor-prices)

### How do I compare a shoe's price on StockX and GOAT?

Match the two listings on the style code, compare the same size, and make sure both prices either include or exclude fees. StockX shows its ask with and without the marketplace fee, and GOAT shows prices that include applicable costs for your shopping region. An all-sizes number on one site against a single size on the other is not a comparison.

### How do I know a fetch returned the real page?

Check for the values you need, not the status code. Each failure on this page came back as HTTP 200: GOAT with a 0-cent price, StockX with "Loading...", and Nike with a different shoe. Require the style code and prices in your schema, reject zeros, and see [how to detect a bot block behind an HTTP 200](https://usestring.ai/answers/detect-bot-block-http-200).

### Does String work on the sneaker sites I need?

Send us the URLs and we'll run them and show you what comes back before you commit. Ask for a [free sample price feed](#get-a-free-sample-price-feed), or test them yourself with your first 5,000 free requests.

---

## Send us the sites you can't get

We'll show you what comes back. [Get started](https://portal.usestring.ai/sign-up) · [Book a demo](https://usestring.ai/book-demo)

All use cases: https://usestring.ai/use-cases

---

[llms.txt](https://usestring.ai/llms.txt): machine-readable index of this site for AI agents.
