eMAG Scraper
Pricing
Pay per event
eMAG Scraper
Pricing
Pay per event
Rating
0.0
(0)
Developer
SR
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
9 hours ago
Last modified
Categories
Share
Search eMAG and get the results back as rows: full product title, price in the market's own currency, rating, review count, stock wording, and the category eMAG files it under. Works on Romania, Bulgaria and Hungary.
No login, no cookie, no API key. It reads the ordinary listing page from an exit inside the market's own country, so the prices are the ones local shoppers see.
What you get
- Three markets from one actor.
emag.ro,emag.bgandemag.hurun on the same platform, and each is fetched through an exit in its own country with its own currency: RON, EUR and HUF - The complete product title, read from the card's own data attribute instead of the visible text, which eMAG truncates with an ellipsis. On eMAG a title carries the CPU, the RAM, the SSD and the screen, so the truncated version loses the specification
offer_idnext toproduct_id. The product id is stable; the offer id is the specific seller's offer currently winning the listing. When that changes, someone else won the sale. No other eMAG actor returns it- Category, category id and the full category trail on every row, so a run can be pivoted by category without a second lookup
- Rating and review count where the product has reviews, parsed apart rather than left as one string
- Stock wording plus eMAG's own numeric availability code, so you can filter on either the words or the code
- Prices parsed for three locales. The dot is a thousands separator in all of them, so
4.719,00 Leiis 4719 and the Hungarian66.412 Ftis 66412 with no decimals at all
Why eMAG
eMAG is not "a Romanian shop", it is the marketplace that most of Romanian e-commerce runs through, and it operates Bulgaria and Hungary as well. For anyone selling into those markets it is the price reference, the way Amazon is in Germany or bol.com is in the Netherlands. If you want to know what something costs in Bucharest, this is the answer.
Because it is a marketplace rather than a single retailer, a listing has a winning seller, and that is what offer_id exposes. A product whose offer_id changed between two runs is a listing that changed hands, usually because somebody repriced. That signal is invisible in a plain price scrape and it is the one that tells you the market moved rather than a single shop having a sale.
Input
| Field | Type | Required | Default | What it does |
|---|---|---|---|---|
query | string | one of the two | laptop | What to search for. Use the market's own language |
market | select | no | ro | ro, bg or hu. Sets the site, exit country and currency |
url | string | one of the two | – | An eMAG search or category URL. Takes precedence |
limit | integer | no | 60 | Products to return, 1 to 1000. A page carries about 60 |
retries | integer | no | 3 | Retry attempts per page |
Output
{"position": 1,"product_id": "81659936","offer_id": "220966421","url": "https://www.emag.ro/laptop-lenovo-v15-g4-abp/pd/...","title": "Laptop Lenovo V15 G4 ABP cu procesor AMD Ryzen 7 7730U pana la 4.5GHz, 15.6\" Full HD, IPS, 16GB DDR4, 512GB SSD, No OS, Business Black","price": 4719.0,"price_text": "4.719 , 00 Lei","currency": "RON","category": "Laptop / Notebook","category_id": "91","category_trail": "Laptop, Tablete & Telefoane/Laptopuri","rating": 5.0,"reviews_count": 11,"availability": "în stoc","availability_id": "3","badges": ["Top Favorite"],"image": "https://s13emagst.akamaized.net/...","site_position": 1,"market": "ro","query": "laptop"}
Use cases
Pricing into Romania, Bulgaria or Hungary. Run the same product term in all three markets and you have the local price in the local currency, from a local IP, without maintaining three scrapers. The gap between them is usually larger than people expect.
Watching who wins a listing. Schedule a category and diff offer_id per product_id. A changed offer id is a seller change on that listing, and the accompanying price tells you what it cost them to take it.
Category-level price tracking. category_id and category_trail are on every row, so a single broad run can be grouped into category medians rather than needing one run per category.
Finding what is actually in stock. availability and availability_id separate live listings from placeholders, which matters on a marketplace where discontinued products keep their pages.
Review mining targets. reviews_count on the listing page tells you which products are worth opening for reviews, before you spend anything opening them.
How it compares
| this actor | extractify-labs/emag-scraper | gio21/emag-ro-scraper | |
|---|---|---|---|
| Per 1.000 products | $1,00 | $1,00 | $3,00 |
| Actor-start fee | $0,001 | $0,00005 | none |
| Markets | RO, BG, HU | RO | RO |
| Full untruncated title | yes | not stated | not stated |
offer_id (who currently wins the listing) | yes | no | no |
| Category id and trail | yes | no | no |
| Monthly users | new | 12 | 1 |
Honest about the other side: extractify-labs has twelve monthly users and this actor has none, which is the only column in that table that favours them and it is not a small one. Their start fee is also lower, so on a run of a handful of rows they come out slightly cheaper. On the row price the two are identical.
Pricing
Two events. run_start costs $0,0010 per run. product costs $0,0010 per product written to the dataset, which is $1,00 per 1.000. Pages that stay blocked never reach the dataset and are never billed. All pricing is pay-per-event, with no per-compute-unit charges.
Limits and gotchas
- There is no was/now price on eMAG listing pages. Four categories were checked across all three markets and eMAG renders no struck-through price at all on search results. Rather than ship a column that is null on every row of every run, this actor does not return one. Where a discount exists it is on the product page, which this actor does not open.
- Pagination is a path segment, in two different places. A search URL takes it on the end (
/search/laptop/p2); a category URL ends in/cand takes it before that (/laptopuri/p2/c), which is what eMAG's own next-page link uses./laptopuri/c/p2is a hard 404. The actor handles both, so paste the plain URL and let it page. site_positionis notposition. The first is the rank eMAG gave the card on its own page, the second is the rank in your merged, deduplicated result set. They diverge as soon as more than one page is fetched.- Sponsored placements are not separated. eMAG mixes promoted cards into the grid and does not mark them in a way that survives to the listing markup, so they arrive as ordinary rows.
badgesis the closest signal. - Ratings only exist where reviews do. Roughly three quarters of rows carry one; the rest are new or low-traffic listings, and they come back as null rather than zero.
- Use the market's own language. Searching
laptopworks everywhere because it is a loanword, but a Romanian term onemag.hureturns little. The site does not translate for you.
FAQ
Can I scrape eMAG without an API key? Yes. The listing page is served to anonymous visitors and that is what this actor reads.
Does it cover Bulgaria and Hungary?
Yes, through the market field. Each is fetched from an exit in its own country and returns its own currency.
Why is there no discount or old price? Because eMAG does not show one on listing pages. Returning an always-empty column would suggest the data exists somewhere in this output, and it does not.
What is the difference between product_id and offer_id?
The product id identifies the product and is stable. The offer id identifies the seller's offer currently winning that listing, so a change means the listing changed hands.
How many products can I get in one run? Up to 1000, which is about 17 pages.
Are the prices what a local shopper sees? Yes. Prices and stock come back for the market you select, because eMAG varies them by country.
Related Actors
- Beslist.nl Scraper — Dutch price comparison with EAN barcodes
- Amazon Buy Box Monitor — who currently wins an Amazon listing, across 15 marketplaces
- Google Shopping Scraper — offers from every merchant for an EAN or SKU