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
You tell us the storefronts, the lines and the categories. We build the crawler, run it on the schedule you pick, and deliver CSV, JSON, XLSX or an API endpoint. Fields are named to your schema, not ours, and the reference, colour and size keys are kept intact so your rows join to later runs.
We watch the site for structural change, because it moves. Every page carries a version meta tag naming the front-end build, which gives us a cheap early signal that field names or markup may have shifted. When something does shift, we repair the parser before the next delivery rather than handing you a file with silent gaps in it. Mango sets Crawl-delay 0.2 in robots.txt and disallows its search and faceted paths; we pace and route requests to stay inside that.
One garment is a reference: an eight digit number that the product page publishes as schema.org mpn, not as sku and not as gtin. That reference is a design, not something you can buy. It expands into colours, each colour expands into sizes, and both price and stock hang off the colour rather than off the reference.
Flattened, that produces one row per reference, colour and size. Size ids are numeric codes that stay constant across languages, so 20, 21 and 22 remain the same rows whether the label reads S, M and L or something else.
Mango publishes product detail that most fashion sites keep internal, all inside the same streamed payload.
Listing pages add their own keys. Under an English category URL the payload still names the catalogue in Spanish, with a catalogId such as "prendas_she.vestidos_she", meaning garments, women, dresses. That string is stable and joins better than a translated breadcrumb.
Every image, homeware included, sits under the same media path segment, punto, so asset URLs rebuild from ids alone.
Mango is a Spanish fashion company founded in Barcelona in 1984, with its design centre and head office at Palau-solità i Plegamans just north of the city. Selling runs through shop.mango.com, and every country storefront is served by the same application from the same catalogue. The site sits behind an Akamai edge tier: a client that identifies itself as curl or as python-requests is answered with a 403 Access Denied page, and the sitemap.xml named in robots.txt returns 403 as well.
The site is a Next.js application using the React server component streaming format. Product and listing data travel inside that stream as escaped JSON, so the values a shopper sees are already in the first server response. Beside it the product page emits schema.org microdata: a Product node, a BreadcrumbList, and two separate Offer nodes, one for the struck-through original price and one for the current price. Listing pages emit ItemList instead. No availability property appears in that microdata, so stock has to come from the streamed payload.
Lines are modelled as brand ids inside the country configuration: she, he, teen, kids and home. Teen splits into teenA and teenO, kids into nina, nino, babyNina, babyNino and newBorn. All of them share one catalogue, one URL grammar and one reference space. Violeta, the former plus-size line, no longer has a home path of its own; what survives of it is a plusSize boolean on individual size rows inside the womenswear catalogue.
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
Mango prices the same reference differently in each country, and the difference is not only currency. The country block carries a currency object with iso, symbol, decimals and a format string that fixes symbol placement, so US$ sits before the number while the euro sign sits after it. Discount rate and promotionName are set per storefront too: one market can be running a campaign labelled PROMO OUTLET while another runs COMPARTIDO OUTLET on the identical reference, at a different percentage off.
Price history is regional in the same way. Where the country config sets hasPriceHistory, the payload adds a lowestPrices block holding the thirty day lowest price required by European pricing rules, and a price_omnibus_countries feature flag decides how it is shown. Storefronts without that flag simply omit it, so a comparison table built across markets has to treat the field as optional rather than missing.
Measurement units move as well. The same garment reports its back length in inches on the US storefront and in centimetres on the Spanish one, driven by a measurementUnits object with sizeInInches and distanceInMiles booleans. Model height is stored once as a number and rendered in feet or centimetres depending on the same setting.
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 web scraping agency. We write the crawlers, run the infrastructure, monitor the targets and repair breakages, and you receive clean data on a schedule in the format you asked for. We collect what a site publishes and we keep to its stated crawl limits.
There is no library to install and no dashboard to learn. Tell us the storefronts, the lines and the fields, agree a cadence, and the files or the API endpoint arrive. Fashion retail catalogues are a large part of what we run day to day.
The eight digit reference, published on the product page as schema.org mpn. On its own it identifies a design, not a buyable item. The full key is reference plus colorId plus size id. Listing pages already use a composite tile id in exactly that shape, written as productId:colorId or productId:colorId:lookId.
One warning: the canonical tag is not a colour key. It normalises the look segment to 00, and on some references it points at the default colour rather than the colour you requested. Take colorId from the request path or from the payload.
Yes. Product URLs follow /(country)/(language)/p/(line)/(family)/(subfamily)/(slug)/(productId)/(colorId)/(lookId), and only the last three segments carry meaning. Request a reference with the wrong slug and the site answers 308 with the correct localised path, so we can crawl by reference alone and let Mango tell us the local name, category wording and canonical URL.
What differs per country is price, discount rate, promotion name, currency formatting, measurement units, warehouse ids and whether thirty day price history is present at all.
Not as counts. Mango exposes a boolean available per size, a lastUnits boolean that drives the visible "Últimas unidades" label, meaning last few items, on Spanish storefronts, an isDelayed flag, and a warehouses array of ids such as 400 or 001. Those ids are country specific, so they only mean something read against the storefront's own warehouse configuration.
Physical store stock is not published in the page payload, so we do not offer it. What we can do is sample the same size rows repeatedly and give you a sell-out timeline from the transitions.
Category URLs are /(country)/(language)/c/(line)/(slug)/(id), where the id is eight hex characters. The slug is not unique - the same word can appear under two different ids - so the hex id is the key we store.
The first server response carries 100 product tiles plus a pagination object with currentPage, totalPages, totalItems and hasNextPage. Everything after tile 100 loads client side. Faceted and sorted variants are disallowed in robots.txt, so we enumerate through category and subcategory ids instead of through filters.
Mango publishes no product or price API for outside teams, so the storefront itself is the read path: product and listing values arrive as escaped JSON inside the first server response, and that is what we extract. How often to re-read it depends which field you care about. Size availability turns over fastest, since a single size selling out flips one boolean and nothing else on the page changes. Price and discountRate move on campaign boundaries and during the Spanish sale seasons, which the country config marks with an isDiscountSeason flag. Assortment rotates on a slower cycle as collections drop and older references stop being sellable. Daily suits pricing and stock work, weekly is usually enough for catalogue and assortment tracking, and we set the cadence per field group rather than crawling everything at the fastest rate.
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