The Entire Iherb Supplements Catalog, Captured End-to-End in 3 Days
Scraping supplement products from iHerb.com with full details, including descriptions and packaging variations.
Learn More
We build the crawler, run it on your schedule and hand over the result. Output is CSV, JSON, XLSX or an API endpoint, with the schema agreed before the first run.
Scope usually takes one of three shapes: a fixed list of style ids, a set of /browse/ or /brands/ paths, or a full sweep driven by the product sitemaps. Because the style id is the stable key and the slug is not, we key every record on the number, which keeps runs joinable even when Nordstrom rewrites a slug.
Rack can run in the same job. The shared id space means a full-price row and an off-price row line up without fuzzy matching on titles.
Product pages render from a JavaScript object named __INITIAL_CONFIG__ embedded in the HTML. Styles hang off a stylesById map keyed by the same number that ends the URL. The only JSON-LD on the page is a BreadcrumbList, so price and stock have to be read from that object rather than from schema.org markup.
The Anniversary Sale is not an end-of-season clearance. It discounts incoming autumn stock for a few weeks in midsummer and then returns it to full price, which inverts the usual assumption that a discount decays. Nordstrom models the event in its own fields. Each style carries eventFlags.anniversaryPhase, which reads "NONE" outside the event, alongside isAnniversaryStyle and isAnniversaryPreorder, and there is a site-wide anniversaryPeriod feature flag. The label to capture is "After Sale:", the price the item returns to once the event closes. The site's own copy calls the event #NSale.
Access is staged by loyalty tier before the sale opens to everyone, so what is visible during the early window is not what the public sees. A run that ignores anniversaryPhase will record event pricing as though it were the standing price.
Store-level fulfilment is exposed as well. Styles carry isPickUpStoreEligible, and the pickup dialog asks for a ZIP code and answers with "Free Pickup at" a named store, "Curbside Pickup", or "Not available for pickup near you". Pickup availability is resolved per size and per width, not per style, so it has to be captured at SKU level or not at all.
Nordstrom runs a full-price department store at nordstrom.com and an off-price banner at nordstromrack.com. Both serve product pages from the same address shape, /s/{slug}/{style-id}, where the trailing number is the real key and the slug is cosmetic. Ask for a product with the wrong slug and the site answers 301 with the canonical slug for that id, so a crawler can address any style by number alone.
The two banners share one identifier space. A style id taken from a Rack sitemap resolves to the same product on nordstrom.com, and an id taken from the full-price sitemap resolves on nordstromrack.com. That makes it practical to follow a single style across both and see when it moves from full price into off-price.
Category pages sit under /browse/ with lowercase hyphenated segments and accept filters such as filterByBrand, filterByColor and filterByDiscount. Brand pages join a brand slug to a numeric brand id with a double hyphen, as in /brands/other-stories--81009160. Rack clearance is different again, keeping capitalised and URL-encoded category names in the path, as in /clearance/Women/Accessories/Scarves.
Nordstrom Canada and nordstrom.ca closed in 2023, and what remains is a United States operation. The product record reflects that: styles carry an isStyleRestrictedFromIntlShipping flag, and the site prints "You'll need to ship this to a U.S. address."
Get a QuoteDevelopers
Customers worldwide
Pages extracted
Hours saved for our clients
€199 / one-time
setup fee - included
€169 / mo
setup fee €499
€229 / mo
setup fee €499
€349 / mo
setup fee €499
€549 / mo
setup fee €799
Nordstrom carries designer and mainstream labels side by side, which makes it a reference point for how a brand is priced and presented in the United States. Brands watch their own products on it; retailers watch the ones they compete against.
Markdown tracking is the common request, and the price ladder is explicit enough to reconstruct. "Now:" set against "Was:" or "Orig:" gives the working discount, and the style record carries an isUmap flag, which matters to anyone policing minimum advertised price.
Assortment work is the other half. Because colour, size and width are separate axes, one style expands into a long list of purchasable rows, and the useful signal is usually which rows have gone. A style can look healthy on the page while every size above a certain point has moved into soldOutSkus, and the page will say "Only 1 left" long before it says "SOLD OUT".
Buyers also track entry and exit: new style ids appearing in the product sitemaps, ids that turn up in Rack clearance after a spell at full price, and styles that stop resolving altogether. Because the product sitemaps are partitioned at ten thousand URLs per file and each entry carries a lastmod date, a scheduled sweep can find what moved without refetching the whole catalogue.
Scraping supplement products from iHerb.com with full details, including descriptions and packaging variations.
Learn More
Daily scraping of lowest prices for 150K products on Allegro.pl to support marketplace pricing and margin optimization.
Learn More
Regular monitoring of Ralph Lauren clothing, footwear, and accessories sold across Amazon subdomains: AE, DE, ES, FR, IT, NL, PL, UK.
Learn MoreLearn how to use web scraping to solve data problems for your organization
If you sell online, run a marketplace, or advise e-commerce clients, you already know why eBay matters: it’s one of the few places where big retailers compete side by side with thousands of small merchants and private sellers.
E-commerce teams do not just need “some” competitor data anymore. They need a continuous stream of real prices, discounts, stock levels, reviews, and seller behavior from the platforms that actually shape their markets.
Amazon provides valuable information gathered in one place: products, reviews, ratings, exclusive offers, news, etc. So scraping data from Amazon will help solve the problems of the time-consuming process of extracting data from e-commerce.
ScrapeIt is a managed scraping agency. We write the crawlers, host them, monitor them and repair them when a site changes, so you receive data rather than code.
Nordstrom shifts both its page structure and its promotional calendar through the year, so the maintenance is the service. Tell us which fields you need and how often, and we will confirm what is available before any work begins.
It is the style id, and it is the canonical key for the product. The slug in front of it is cosmetic: request /s/x/8344252 and Nordstrom answers 301 with /s/massage-oil-candle-small/8344252. The same number is the key in the stylesById map inside the page's __INITIAL_CONFIG__ object. It is not the same value as the "Item #" printed under the "Details & care" heading, which is a separate number carried as styleNumber, so the two should never be merged into one column.
Yes, and in the same job. Rack uses the same /s/{slug}/{style-id} address shape, and the two sites share one identifier space: a style id taken from a Rack sitemap resolves to the same product on nordstrom.com, and the reverse holds as well. Rack also publishes its own clearance and promo sitemaps, and its clearance paths keep capitalised, URL-encoded category names such as /clearance/Men/Accessories/Designer. That shared key is what lets you watch a style cross from full price into off-price without matching on titles.
A Nordstrom style is not one row. Colour, size and width are three separate filter axes, so a single style expands into every purchasable combination, and width matters more than people expect once footwear is in scope. We deliver one row per SKU with the style id repeated, plus a parent style record. Combinations that have sold out are held in a separate soldOutSkus map rather than being deleted, which is what makes size-level and width-level stock tracking possible.
Nordstrom publishes no public API and maintains no developer portal for catalogue data. Access exists only for approved partners: Mirakl credentials for brands accepted onto the invite-only marketplace, and Rithum integration for drop-ship suppliers. So the published pages are the read path, and they are defended. A plain HTTP client does not receive product data. The request returns HTTP 200 with a large obfuscated JavaScript page that stores a payload in the browser and re-issues the request with computed headers, so that response contains no __INITIAL_CONFIG__ and no price. Rendering therefore needs a real browser engine rather than a simple fetch. robots.txt also disallows keyword search under /sr and most of /api/. We collect at a modest rate and work within those constraints; we do not offer anti-bot circumvention.
Price and stock move fastest, and size-level availability changes faster than the style list does. On a recent crawl the product sitemaps carried a lastmod date matching the day of the request, so new and changed styles surface there quickly. Markdown activity steps up around the Anniversary Sale in midsummer and again at end of season, when the After Sale price takes effect. Most clients run price and stock daily and a full catalogue sweep weekly.
Step 1 - Make a Request
You share your needs, expectations, and desired timeframe. We’ll suggest the best solution based on your request and budget.
Step 2 - Configuring Custom Web Crawlers
Our specialists configure the crawlers and extract a sample dataset for your review before proceeding with the full-scale extraction.
Step 3 - Collect and Deliver
Once you approve the sample, we launch the project and start full data collection. We gather, filter, and structure the data for easy use, delivering it on time in your preferred format.
Step 4 - Maintain and Support
Our team manages ongoing processes, monitors website changes, and supports all data extraction cycles. We can also help integrate data into your systems or create dashboards to simplify analysis.
Scrapeit Sp. z o.o.
10/208 Legionowa str., 15-099, Bialystok, Poland
NIP: 5423457175
REGON: 523384582