Reebok Price Tracker & Product Scraper (US) avatar

Reebok Price Tracker & Product Scraper (US)

Pricing

from $0.70 / 1,000 product scrapeds

Go to Apify Store
Reebok Price Tracker & Product Scraper (US)

Reebok Price Tracker & Product Scraper (US)

Reebok scraper for www.reebok.com (US): the whole catalogue or any collection, one row per product with USD price range, price before markdown, discount percent, per-size stock and SKU, tags, photo and publish date. For sneaker price, markdown and restock watching.

Pricing

from $0.70 / 1,000 product scrapeds

Rating

0.0

(0)

Developer

Superslow Sloth

Superslow Sloth

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Share

A Reebok scraper and Reebok price tracker for www.reebok.com, the US Reebok shop. Read the whole US catalogue or any collection (sale, mens-shoes) and get one flat row per product: the current price and its range in USD, the price before markdown, the largest discount in percent, whether it is in stock and how many sizes are, and every size or colour variant with its own SKU, price and stock flag. Run it on a schedule and diff the dataset to get a sneaker price, markdown and restock watch: which Club C or Nano went on sale since yesterday, by how much, and which sizes came back.

No account, no API key, no login, no browser. One request returns 250 products; the whole catalogue (about 1,400 products) is six requests.

Input

FieldNotes
collectionsReebok collections to read instead of the whole catalogue, one per line: the name from the address bar (sale, mens-shoes) or the link (https://www.reebok.com/collections/sale). Each is read in the order Reebok shows it. A product found by two collections is returned once, under the first. Leave empty to read the whole catalogue, newest first. A collection name Reebok does not have fails at no charge.
maxItemsProducts to return per collection, or for the whole catalogue (default 250, up to 25,000). 250 per page.
onlyOnSaleReturn only products where at least one variant is priced below its price before markdown (on_sale). Others are read, not returned and not charged, and do not count toward maxItems.
proxyConfigurationApify datacenter proxy by default.

Example input, every reduced product in the sale collection:

{
"collections": ["sale"],
"maxItems": 5000,
"onlyOnSale": true
}

Example input, the whole catalogue:

{
"maxItems": 2000
}

Output

Prices are numbers in US dollars; currency is USD (the shop's own /meta.json says so). A field the shop did not send is null, never 0 or "".

FieldNotes
query, positionThe shop URL (whole catalogue) or collection URL that first found the product, and its place in that list (1 is first, 250 per page). The whole catalogue is newest-published first.
storewww.reebok.com.
product_id, handle, urlShopify's product id (a string), its URL handle, and the product link. One product is one colourway of a style, with its sizes as variants.
title, vendor, product_typeAs the shop sends them (Men's Club C 85 Shoes, Reebok, Shoes). Null when empty.
tagsThe shop's own merchandising tags (promotions, colours, categories), as sent. Not a standard vocabulary.
price, price_maxThe lowest and highest current variant price. Equal for the many products with one price; a gift card spans its amounts.
original_price, original_price_maxThe lowest and highest price before markdown: per variant its compare_at_price when that is above its price, otherwise its price. Equal to the current price when nothing is reduced.
on_saleTrue when at least one variant's compare_at_price is above its price.
discount_percentThe largest reduction of any variant, (1 - price / compare_at_price) * 100, one decimal place. Worked out from the prices, not sent. Null when nothing is reduced, never 0.
available, variant_count, available_variant_countWhether any variant can be bought now, how many variants there are, and how many can be bought: the restock signal.
option_namesThe product's options, e.g. ["Color", "Size"].
variantsEvery variant: variant_id, title (Black / M), sku, price, compare_at_price (null when the shop sends none), available, and options (the variant's values in option_names order).
created_at, published_at, updated_atISO 8601 times with the shop's offset. published_at is when the product went live. Reebok rewrites updated_at in bulk, so it is not a price-change time.
image_url, image_countThe first photo on cdn.shopify.com, as sent (null when there is none), and how many photos there are.

Example row (real values, 2026-10-17; tags and variants shortened here to two and one entries):

{
"query": "https://www.reebok.com",
"position": 1,
"store": "www.reebok.com",
"product_id": "9930589438256",
"title": "Men's Sleeveless Tech Training T-Shirt",
"handle": "reebok-mens-train-sleeveless-tech-tee-black-144909",
"url": "https://www.reebok.com/products/reebok-mens-train-sleeveless-tech-tee-black-144909",
"vendor": "Reebok",
"product_type": "T-Shirts",
"tags": ["category-sale", "color-black"],
"created_at": "2025-08-14T12:04:09-04:00",
"published_at": "2025-08-16T10:54:11-04:00",
"updated_at": "2026-10-17T01:09:43-04:00",
"image_url": "https://cdn.shopify.com/s/files/1/0862/7834/0912/files/100243158_F_Model_eCom_87214249-129b-45fd-8a50-dbd59f9a018a.jpg?v=1764595727",
"image_count": 5,
"currency": "USD",
"price": 14.99,
"price_max": 14.99,
"original_price": 20.0,
"original_price_max": 20.0,
"on_sale": true,
"discount_percent": 25.0,
"available": true,
"variant_count": 6,
"available_variant_count": 5,
"option_names": ["Color", "Size"],
"variants": [
{
"variant_id": "50056742437168",
"title": "Black / S",
"sku": "100243158-S",
"price": 14.99,
"compare_at_price": 20.0,
"available": true,
"options": ["Black", "S"]
}
]
}

Honest nulls

  • No ratings, reviews or stock counts. The catalogue feed carries none. available says a variant can be bought, nothing more.
  • discount_percent is null when nothing is reduced. A compare_at_price equal to or below the price is not a reduction.

Pricing

Pay per event:

  • $0.002 per run (actor-start), charged only after your input is validated, so a run that fails on bad input costs nothing.
  • $0.0007 per product row written (product-scraped), i.e. $0.70 per 1,000 products. A row that is not written is not charged: rows filtered by onlyOnSale, and repeats of a product another collection already returned, are free.

How it fetches

It reads /products.json, the public catalogue feed every Shopify shop serves (and /collections/<name>/products.json for a collection). Measured 2026-10-17: HTTP 200 JSON, about 4 MB per 250 products, no key or cookie needed; 40 pages in a row in 8 seconds without a refusal. A refusal (403, 429, 430, 5xx), a 200 that is not the feed, or a dropped connection is treated as the address being blocked, and the actor rotates to a fresh one and retries.

Things worth knowing, all measured:

  • 250 per page is the ceiling. A larger limit is silently capped at 250.
  • The end is an empty page. A page past the last is HTTP 200 with {"products":[]}; the actor stops there.
  • At most 25,000 rows per list. Shopify refuses any page beyond page * 250 = 25,000 with HTTP 400. Reebok is far below that; a list that reaches it is logged as capped.
  • Filters on the feed are ignored. ?vendor=, ?product_type=, ?q=, ?order= all return the same page as sending nothing, so the actor does not offer them. Collections do filter (sale held only reduced products), which is why they are the input.
  • An unknown collection looks empty. The feed answers an unknown name with an empty list; the actor asks the collection's own record, and a name that does not exist fails instead of being reported as empty.

If Reebok changes its feed, the run fails with a message instead of returning empty rows.