Scheduled price and stock change monitoring for eMAG Romania. Diff mode emits only products whose price or stock status changed since the last run, for search keywords or category URLs.
- Changed rows only: Diff mode returns just the products whose price or stock moved since your last run, not the whole catalog again
- Full price context: Every row includes the current price, the previous tracked price, and the exact change
- Romanian and English search: Type keywords however you already browse eMAG
- Stock alerts: Know the moment a watched item comes back in stock
- Scheduling friendly: Built to run on a recurring schedule so you never check prices by hand
- Add search keywords such as "iphone" or "aspirator robot", or paste eMAG search or category URLs directly
- Keep diff mode on and set a daily or hourly schedule in Apify Console
- Click Start: The actor collects every matching product and writes one flat row per item
- Download your results: Export as Excel, CSV, JSON, or HTML from the Output tab
| Field | Type | Required | Description |
|---|---|---|---|
searchTerms |
array of text | No | Keywords to monitor, such as "iphone" or "playstation 5". A search is built for each term. |
startUrls |
array of URLs | No | eMAG search or category URLs to monitor directly. |
onlyChanged |
boolean | No | When enabled, only products whose price or stock changed since the last run are returned. Disable for a full snapshot every run. |
maxPagesPerQuery |
integer | No | How many result pages to scan per search term or URL (60 products per page). |
maxItems |
integer | No | Hard cap on total rows returned across all queries. 0 means unlimited. |
proxyConfiguration |
object | No | Proxy settings. Datacenter is the default and works reliably for eMAG. |
Each row in your dataset is one product, with pricing, discount, and change details. All fields are flat with no nested data, so the file opens cleanly in any spreadsheet program.
{
"query": "iphone",
"productId": "273691815",
"productCode": "D89ZX6",
"name": "Telefon mobil Apple iPhone 17 Pro, 256GB, 5G, Silver",
"price": 6699.99,
"oldPrice": 7299.99,
"discountPct": 8,
"hasDiscount": true,
"inStock": true,
"currency": "Lei",
"productUrl": "https://www.emag.ro/telefon-mobil-apple-iphone-17-pro-256gb-5g-silver-mg8g4zd-a/pd/D89ZX6/",
"imageUrl": "https://s13emagst.akamaized.net/products/12345/12345678/images/res_1.jpg",
"changeType": "PRICE_DROP",
"oldTrackedPrice": 6999.99,
"priceDelta": -300,
"priceDeltaPct": -4.3,
"oldInStock": true,
"isChanged": true,
"scrapedAt": "2026-07-06T00:02:24.004Z"
}| Field | Type | Description |
|---|---|---|
query |
string | The search term or start URL that produced this row. |
productId |
string | eMAG product or offer ID. |
productCode |
string | Alternate stable product code taken from the product URL. |
name |
string | Product name. |
price |
number | Current price. |
oldPrice |
number | Original list price before discount, when eMAG shows one. |
discountPct |
number | Discount percentage off the list price. |
hasDiscount |
boolean | Whether a discount is currently active. |
inStock |
boolean | Whether the product is currently in stock. |
currency |
string | Currency of the price, typically Lei (RON). |
productUrl |
string | Link to the product page. |
imageUrl |
string | Main product image URL. |
changeType |
string | Type of change detected, such as a price drop, price rise, or back in stock. |
oldTrackedPrice |
number | Price recorded on the previous run. |
priceDelta |
number | Difference between current and previous price. |
priceDeltaPct |
number | Percentage change between current and previous price. |
oldInStock |
boolean | Stock status recorded on the previous run. |
isChanged |
boolean | Whether this row changed since the last run. |
scrapedAt |
string | ISO timestamp of when the row was collected. |
$0.00088 per dataset item ("Price change"), about $0.88 per 1,000 results. No monthly subscriptions and no minimum commits. New Apify accounts include $5 of free usage, so you can try it before you pay.
You only pay for the rows the actor actually returns. A run where nothing changed since the last check costs nothing.
Create a .env file from .env.example, add your Apify API token, and run:
npm install
npm startThe script uses the Apify API client to start the eMAG Price Monitor actor and fetch results.
- Capture a baseline first: On your first run, turn diff mode off once to record a full snapshot, then switch it back on
- Watch a whole category: Paste its eMAG URL instead of a single keyword to track every product in it at once
- Pair with Apify Schedules: Build a running price history without touching a spreadsheet
- Search in either language: Romanian or English keywords both work
How do I monitor price changes on eMAG? Add your product or category as a search term or URL, keep diff mode on, and set a daily schedule in Apify Console. You will only see rows when a price or stock status actually moves.
Does it get blocked? The actor uses reliable request settings confirmed to work against eMAG. Residential proxies are available in the input if you ever notice blocks at high volume.
How fresh is the data? Every run reads live prices and stock directly from eMAG at the moment it executes. Freshness depends entirely on how often you schedule runs.
Do I need an eMAG account? No. The actor reads only public product and search pages. No login, cookies, or account required.
Does it work in Romanian and English? Yes. Search terms can be typed in either language, and category or search URLs from the live site work exactly as pasted.
Is it legal to monitor eMAG prices? This actor collects publicly available product and pricing data that eMAG already displays on its own pages. You are responsible for following eMAG's terms of service and any applicable data protection laws in your jurisdiction.
For bug reports, missing fields, or feature requests, open an issue under the Issues tab, or visit the eMAG Price Monitor actor page.
