Rozetka Products Scraper avatar

Rozetka Products Scraper

Pricing

from $0.56 / 1,000 results

Go to Apify Store
Rozetka Products Scraper

Rozetka Products Scraper

Product listings from Rozetka, Ukraine's largest online retailer: title, brand, price in UAH with its validity date, stock status, rating and review count. Reads the category page's own structured data, so recommendation rails are excluded rather than scraped as results.

Pricing

from $0.56 / 1,000 results

Rating

0.0

(0)

Developer

Ibnu Adzim

Ibnu Adzim

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

Categories

Share

Rozetka Products Scraper (Ukraine)

Product listings from Rozetka, Ukraine's largest online retailer — as structured rows: title, brand, price in UAH with its validity date, stock status, rating and review count.


The two things that quietly break a Rozetka crawl

Past page 100 it re-serves, it does not stop. Measured by comparing each page's product ids against the page before it:

PageResult
98, 99, 10060 products, all new
101, 105, 120, 20060 products, identical to page 100

No 404, no empty page, no flag. A crawler that treats "a full page means there is more" will run to whatever maxPages it was given, collect the same 60 products over and over, and report a large successful run. This Actor caps at page 100 and deduplicates by product id, so a page that adds nothing new ends the run with stoppedReason: no_new_products.

The page links to more products than it lists. A category page carries 60 structured ItemList entries but 73–95 distinct /p<id>/ links, and the surplus changes from page to page. Those extras are cross-sell and recommendation rails carrying products from other categories entirely. Sweeping links would contaminate a category dataset by a varying amount per page. Rows come from the structured list only.


What you get

One CATEGORY_SUMMARY row per category, then one PRODUCT row per item.

GroupFields
IdentityproductId, productUrl, title, description, brand
Priceprice, currency, priceValidUntil
Availabilityavailability, inStock
ReceptionratingValue, reviewCount
MediaimageUrls
Provenance_input, _source, _scrapedAt, pageFound, positionInPage, raw

priceValidUntil is Rozetka's own published price-validity date, which is genuinely useful when comparing one run against a later one.

The summary row reports upstreamCategoryTotal beside reachableCeiling. The notebooks category announces 211,766 products; paging reaches 6,000 of them. The count is not a lie about the catalogue — it is a lie about what you can retrieve, by a factor of about 35. To get more, narrow to a sub-category or a producer rather than paging deeper.


Example input

{
"categoryUrls": [
"https://rozetka.com.ua/notebooks/c80004/",
"https://rozetka.com.ua/mobile-phones/c80003/"
],
"maxPages": 50
}

Paste category URLs straight from the site. Producer-filtered category URLs work too, because Rozetka expresses those as path segments.


Why there is no keyword search or sort input

That is a policy decision, not an omission. Rozetka's robots.txt says:

Disallow: /*?* any URL with a query string
Disallow: */search/ keyword search
Disallow: /*sort=* re-sorting
Allow: /api/*/*

So keyword search and sorting are closed, and nothing may carry a query string. Category browsing works because Rozetka paginates and filters through path segments (/notebooks/c80004/page=2/, /producer=asus/), which are allowed. Any URL you pass carrying a query string, a /search/ path or a sort= segment is refused before a request is made rather than sent and regretted.


How it works

HTTP-only. No browser, no login, no API key.

Category pages are server-rendered with their results published as schema.org JSON-LD, which is where every field above comes from.

The TLS profile pool is an allowlist, not a preference: on the same URL in the same minute, five fingerprints receive a 1.45 MB page and edge101 receives a 5 KB 403. Only verified-passing profiles are in the rotation, so a retry can never rotate into a guaranteed block.