# Changelog of eMAG Product Scraper (`extractify-labs/emag-scraper`) Actor

- **URL**: https://apify.com/extractify-labs/emag-scraper/changelog.md
- **Full Actor documentation**: https://apify.com/extractify-labs/emag-scraper.md

## Changelog

### \[2.1] - 2026-09-21

#### Changed

- **The proxy default is now Apify Proxy with a `RESIDENTIAL` group (country `RO`).** eMAG refuses Apify's datacenter egress, so the previous `No proxy` default returned nothing when run on the platform. Measured against the same category input: `No proxy` returned 0 products on 4 of 4 runs — including a direct `/pd/` URL, which skips discovery entirely — and Apify *datacenter* proxy returned 0 as well; `RESIDENTIAL` returned items on every run. Clicking **Start** without changing anything now returns data.
- Proxy traffic is charged to your own Apify account, so this default has a running cost beyond compute. Switch `proxyType` to `No proxy` if you run this Actor outside Apify from an ordinary connection.
- The copy-paste input examples now carry the same Residential configuration.

#### Fixed

- Pinned every load-bearing dependency (`apify`, `crawlee`, `scrapy`, `scrapy-impersonate`, `curl_cffi`). They had no version constraints, so a rebuild re-resolved the tree and picked up a `crawlee` release that made `import apify.scrapy` raise on start — every run failed in seconds until the pin landed.

### \[2.0] - 2026-09-21

**Breaking: this Actor now covers Romania (emag.ro) only.**

#### Removed

- **Bulgaria (emag.bg) and Hungary (emag.hu) are no longer supported.** Both country crawlers have been removed. If your saved task or API call targets either site, the run now stops immediately with a message telling you to switch to Romania.

#### Changed

- `country` still accepts `"bg"` and `"hu"` so that existing saved tasks fail with an explanation rather than an input-validation error. Both are labelled *no longer supported* in the Actor input, and selecting either stops the run. Set it to `"ro"`.
- A run that mixes emag.ro URLs with emag.bg or emag.hu URLs still scrapes the Romanian ones normally; the others are skipped with a clear log message. Only a run with *no* Romanian work left stops.
- `country=bg|hu` combined with emag.ro URLs now runs as Romanian — the URL hostname wins, so a stale country setting on an otherwise-valid task no longer blocks it.
- \~~The proxy guidance is simpler: no proxy is needed for any input path.~~ **This was wrong when written** and is corrected in 2.1: eMAG refuses Apify's datacenter egress, so on the platform a `RESIDENTIAL` proxy is required, not optional.
- Zero-result and skipped-URL messages no longer point at the retired sites.

#### Notes

- **No output column was removed or renamed.** `priceBgnTransition`, `currencyBgnTransition`, and `breadcrumbUrls` only ever populated on emag.bg and are now always empty; they stay in the dataset schema so existing exports that select them keep working. Every other column continues to populate exactly as before.
- `country` is now always `"ro"` on new rows.

### \[1.2] - 2026-06-19

#### Added

- New eMAG mobile catalog channel returns the full structured product in a single call — richer and faster than the previous HTML path.
- New product fields: `ean`, `specifications`, `manufacturer`, `mpn`, marketplace offers (`offersCount`, `minPriceOffers`), `priceNet`, `lowestPrice30Days` (EU 30-day price-history disclosure), and `familyVariants`.
- Bulgaria euro-transition pricing: `priceBgnTransition` and `currencyBgnTransition` carry a parallel BGN price alongside the new EUR price.
- New `proxyType` input (**No proxy** / **Apify Proxy**) plus a `proxyConfiguration` option, so you can route through Apify Proxy (charged to your own account) when datacenter access is blocked.

#### Improved

- Direct product (`/pd/`) URLs now return all fields — `brand`, `originalPrice`, `discountPercentage`, `recommendationRate`, `offerId`, `fulfilledByEmag`, and `badges` — that were previously `null` on the HTML path.
- Richer, more uniform data across eMAG.ro, eMAG.bg, and eMAG.hu.

#### Changed

- Bulgaria currency is now EUR (euro adoption), with a BGN transition twin retained for reference.
- A single run now targets one country. URLs for other countries in the same run are skipped with a clear log message — run one country per job.
- The `reviews` field may now include a few channel-provided reviews by default; set `includeReviewTexts` to fetch the full review set.

#### Notes

- Fully backwards-compatible: all 23 existing output columns keep the same names and types. Every new field is additive — nothing was removed or renamed.

### \[1.1] - 2026-05-21

#### Changed

- Switched listing data source from cookie-dependent `sapi.emag.ro` to cookieless `www.emag.{tld}/search-by-url`. eMAG.ro and eMAG.hu now scrape reliably from Apify with no proxy.
- `currency` is now read from the live response for listing-path items — Bulgaria's 2025 BGN→EUR switch is reflected automatically.

#### Improved

- When emag's WAF blocks the listing request (HTTP 202 / 511 / 403 etc.) the run now FAILS with a clear `statusMessage` pointing at Apify residential proxy. Previously the run silent-SUCCEEDED with 0 items.

#### Removed

- Homepage init and session-cookie machinery (no longer needed by the new endpoint).
- Legacy `recommend_percent` data source — the new endpoint does not expose it, so `recommendationRate` is always null on listing-path items.

#### Notes

- `brand` is null on listing-path items (the new endpoint does not carry brand metadata). Direct `/pd/` product URLs still populate `brand` via JSON-LD parsing.
- **eMAG.bg from datacenter IPs:** Akamai may challenge with HTTP 202/511. Most Apify runs succeed; runs that don't return immediately fail with an actionable message. Enable Apify residential proxy (or run on a residential IP) for guaranteed BG coverage.

### \[1.0] - 2026-05-05

#### Added

- Initial release of eMAG product scraper
- Support for eMAG.ro, eMAG.bg, and eMAG.hu
- Scrape product listings from search pages, category pages, and direct product URLs
- Extract 23 product fields: ID, title, URL, pricing, ratings, stock status, images, and more
- Optional full customer review text extraction
- Multi-domain support with automatic country detection from URL hostname
- Global maxItems cap across all searches and URLs
