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 run the crawlers, you receive files. Output ships as CSV, JSON, JSONL, XLSX or straight into Google Sheets, and larger projects can be pushed to S3 or a database you control, or read through an API endpoint on our side. Schedules are set per project: hourly for a watchlist of PNKs, daily for price and stock monitoring, weekly or monthly for full catalogue refreshes.
Field list, category scope, brand or vendor filters and file layout are agreed before the first run and stay fixed afterwards, so downstream imports do not break. When eMAG.bg changes its markup we repair the crawler; that maintenance is part of the service, not a change request.
Every record is keyed on part_number_key, so rows stay joinable across runs, across categories and across eMAG country sites. A typical extract carries:
Category crawls alone already yield usable rows. Listing cards expose data-product-id, data-offer-id, data-category-id, data-department-id, data-category-trail, data-name, data-position, data-availability-id and data-url, with an embedded JSON blob carrying pnk, price and currency, so product pages are opened only where specifications, the full offer list or reviews are required.
A single snapshot of eMAG.bg is a price list. Repeated runs turn it into a record of behaviour.
Delisting here is not a 404. A product that stops being sold keeps its permanent /pd/[PNK]/ URL and migrates from the offers-available sitemap into offers-unavailable, so a long-running dataset has to track availability state rather than HTTP status. Scheduled crawls capture that transition directly: when an offer went out of stock, how long it stayed there, whether it returned and at what price. Resealed units under Разопаковани продукти behave the same way, appearing with returns volume and vanishing once sold, so that branch only means anything when it is sampled on a schedule.
Offer-level history is where most of the value sits. Vendors appear and disappear on a PNK, the cheapest seller changes hands, an offer moves in or out of Fulfilment by eMAG, Genius eligibility flips, free delivery is switched on for a season. None of that survives in a one-off export.
Price series also let you read the promotional calendar instead of trusting the badge. Comparing observed prices against lowest_price_30_days through a Black Friday window separates real reductions from movements in the reference price. Every row carries a run timestamp, so the dataset stays a time series rather than being overwritten.
eMAG.bg is the Bulgarian storefront of the eMAG group, and it runs as a marketplace: eMAG sells through its own first-party vendor, id 1, while third-party vendors list against the same catalogue entries. The detail that matters for extraction is the identifier. A product page sits at emag.bg/[latin-slug]/pd/[PNK]/, and the trailing nine-character uppercase part_number_key is the stable key. The slug is a transliteration of the Bulgarian title and can be rewritten; the PNK does not move. It repeats as the JSON-LD sku and as EM.pnk in page JavaScript.
That key is group-wide. Product pages carry rel=alternate hreflang links for ro, bg and hu pointing at emag.ro, emag.bg and emag.hu, different slugs and an identical PNK, so comparing the same item across the three markets is a join on one column instead of fuzzy title matching.
Listing grammar is stable and scriptable: categories end in /c, pagination inserts /pN/, sorting uses paths such as sort-priceasc, sort-pricedesc and sort-discountdesc, brands sit under /brand/, attribute facets under /filter/[name]-f[id],[value]-v[id]/, departments end in /d and /sd, and resealed stock has its own /razopakovani-produkti/c branch for Разопаковани продукти (resealed products). Product HTML is server-rendered rather than a JavaScript shell, so the JSON-LD Product and BreadcrumbList blocks and the EM globals arrive in the first response.
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
Vendors selling on eMAG Marketplace need to see the offer block the way a shopper sees it. The multiple_offers array returns every competing price on a PNK together with the vendor behind it, so repricing is decided against named sellers rather than an anonymous lowest figure. Brands use the same rows for ПЦД and MAP checks, because recommended_retail_price sits next to the live price in a single record and breaches are visible per seller.
Retailers and distributors outside the marketplace use category and brand crawls for assortment work: which items a category actually carries, which brands hold shelf space, where a sub-category is thin. Since the PNK is shared with emag.ro and emag.hu, the same extract supports cross-border pricing - one item, three markets, one join key - which matters when a Bulgarian launch is planned off Romanian demand.
Merchandising and marketing teams pull discount fields and lowest_price_30_days around Черен петък and Fashion Days to see how discount depth actually moved, and reviews (отзиви) with ratings feed product research, warranty analysis and quality tracking.
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 build the crawlers, run them on our own infrastructure, monitor them, repair them when a site changes, and hand over clean data on the schedule you set. Nothing to install, no proxy pool to babysit on your side.
Marketplace work is our routine load, eMAG group sites included, so the awkward parts - PNK-level joins, offer arrays, availability states, EUR reconciliation - are handled by people who have done them before.
We collect only publicly visible pages - the product, category and vendor pages any visitor can open - without logging in or creating accounts, and we honour the disallow rules in emag.bg/robots.txt, which blocks /user/, /cart/, /checkout, /favorites/ and /search/listall while explicitly allowing review paths. Price, availability, seller name and specifications are factual trade data rather than creative content. We are not lawyers, though: if the use case is sensitive, have counsel review it, and we can exclude specific fields such as review text from delivery.
Listings return 60 products per page and pagination is hard-capped at page 100. Requests for /p101/c and beyond still answer HTTP 200, but with no product cards, so any single category, filter or search query exposes at most about 6,000 products. Full coverage comes from splitting the space: sub-departments and sub-categories, brand paths, attribute filters, price bands and sort order, then de-duplicating on part_number_key. We also seed from the sitemap sets - the offers-available index and its child files, plus categories, vendors, brands and resealed sitemaps - which enumerate offer URLs without paging through listings at all.
eMAG.bg sits behind AWS WAF. Once a single address exceeds a modest request rate, every URL including /sitemaps/*.xml answers HTTP 511 Network Authentication Required with a Bulgarian interstitial about unusual traffic and an aws-waf-token challenge. We do not sell a way around protection. We engineer around the constraint: low concurrency per address, distributed egress, honest pacing between requests, back-off and retry when a 511 appears, and monitoring that pauses a job instead of hammering the site. Throughput is therefore planned around a sustainable rate, which is why scope and schedule are agreed before the build.
Since the 1 January 2026 changeover, eMAG.bg structured data and offer JSON carry EUR only: priceCurrency EUR, currency id 4, the euro symbol and a comma decimal separator. The dual BGN figure shown to consumers is not present in the server-rendered price fields. We deliver EUR as scraped and add a BGN column on request, converted at the fixed irrevocable rate of 1 EUR = 1.95583 BGN. Series collected before the changeover are reconciled at the same rate, so one continuous price history is possible.
No account is needed, and one would not help. The official eMAG Marketplace API at marketplace-api.emag.bg/api-3 is seller-only: HTTP Basic Auth, API rights granted by eMAG, IP whitelisting and tight rate limits, and it returns your own offers, orders and stock. It never returns a competitor's catalogue, prices or availability, and it says nothing about vendors you do not control. Market-wide data on eMAG.bg exists only on the public pages, which is why page extraction is the route to it.
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