Ozon Category Scraper — Full Listing Export
Pricing
from $2.13 / 1,000 results
Ozon Category Scraper — Full Listing Export
Point it at any Ozon category link and export the whole listing, not just the first page. Each product carries its price, discount, star rating and review count as numbers. Enrichment adds the seller, the non-card price, the spec table and every image, per product.
Pricing
from $2.13 / 1,000 results
Rating
0.0
(0)
Developer
The Netaji
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
Ozon Category Scraper
The Actor takes an Ozon category link and exports the products in that listing as structured rows:
sku, title, url, image_url, price, original_price, currency, on_sale,
percent_discount, rating, review_count and is_adult.
It walks the listing rather than reading a single page. Ozon serves its grid eight products at a
time, and the Actor keeps requesting pages until maxItems is reached or the listing ends, up to a
ceiling of 300 pages — 2,400 products from one category.
Prices arrive as numbers. Ozon renders them for a Russian storefront — 194 632 ₽, with a no-break
space between the thousands and a currency glyph rather than a code — and those strings are parsed
before they reach the dataset, so price is 194632 and currency is RUB.
Accepted input
category is required and accepts an Ozon category link, for example
https://www.ozon.ru/category/smartfony-15502/. A path such as /category/smartfony-15502/ is
accepted as well. maxItems caps how many products are saved and defaults to 100; setting it to 0
removes the cap and lets the run continue to the end of the listing or the 300-page ceiling,
whichever comes first.
{"category": "https://www.ozon.ru/category/smartfony-15502/","maxItems": 100}
Category links are visible in the address bar while browsing Ozon. Running Ozon Search Scraper also prints the category a keyword resolved to, which can be pasted here directly.
Response fields
{"sku": 3755501937,"title": "Apple Смартфон iPhone 17 Pro Max Global 12/1 ТБ, темно-синий","url": "https://www.ozon.ru/product/apple-smartfon-iphone-17-pro-max-3755501937/","image_url": "https://ir.ozone.ru/s3/multimedia-1-4/8542532020.jpg","price": 194632,"original_price": 1083750,"currency": "RUB","on_sale": true,"percent_discount": 82,"rating": 4.7,"review_count": 128,"is_adult": false}
Fields absent from the listing are returned as null rather than omitted, so every row has the same
shape. percent_discount is published as a positive number: a product cut by 82% returns 82, and
original_price alongside it is the pre-discount price Ozon struck through.
sku is Ozon's own product identifier. url has Ozon's per-response tracking token removed, so the
same product produces the same link on every run — which is what makes a category snapshot
comparable against the same category a week later.
Behaviour while walking a listing
Progress through the listing is driven by what the previous page reports, not by counting rows. A
page returning fewer products than requested does not end the run; only the end of the listing does.
This matters for a run whose last page happens to land exactly on maxItems, which a count-based
walk would treat as the end of a category that in fact continues.
Neighbouring pages sometimes overlap, repeating a handful of products. Duplicates are removed within a run by product URL, so a run's row count can be lower than the number of pages requested times eight.
Questions
Why did the run save fewer products than the category shows on the website? Two limits apply. The listing itself ends, and the Actor stops there. Above that, 300 pages — 2,400 products — is the ceiling, so a category larger than that is truncated rather than continuing. Duplicate products removed across overlapping pages also reduce the total slightly.
Does the order match what the website shows? The products are returned in Ozon's own listing order for that category. Filters and sort options applied in a browser are part of the category link, so a link copied with them applied is honoured; a bare category link returns Ozon's default ordering.
Are sponsored products included? The Actor returns the product tiles from the category grid. Banners, filter rails, menus and the other widgets that surround the grid on the website are not products and are not returned.
What happens when Ozon interrupts a run? Ozon challenges a minority of new sessions. A challenged request is retried on a fresh session, and a run that still cannot get past it ends with the products already collected rather than failing — the dataset is short, not empty. The page it stopped at is where a rerun resumes from.
Why is price lower than the price Ozon shows me?
It is not — it is the price Ozon shows by default, which assumes payment with an
Ozon card. The standard price is higher and lives only on a product's own page,
so it arrives as list_price when enrichment is on.
Can several categories be exported in one run? No. One run takes one category link. Multiple categories are separate runs, which also keeps their datasets separable for comparison.
Enriching with product details
enrichProductDetails opens each product's own page and merges what a listing
cannot show onto its row. It is off by default, costs one extra request per
product, and is billed per product enriched — only after the lookup succeeds.
Eleven fields are added: seller_name, seller_url, seller_id,
list_price, brand, description, in_stock, images, characteristics,
category_path and variants.
The seller is the reason most runs turn it on. Ozon is a marketplace, several shops sell the same product, and a listing tile names none of them — so a listing export alone cannot answer who is selling what.
list_price is the other reason, and it is easy to miss. Ozon quotes two
live prices: the discounted price for paying with an Ozon card, and the standard
price everyone else pays. Search and category listings show only the first, so
price on an unenriched row understates what most buyers are charged.
list_price is the standard price, and price is left untouched so the two can
be compared rather than one silently replacing the other.
rating and review_count are taken from the product page when it has them.
A listing tile rounds the review count and frequently omits it, so the product
page is the better source for the same two fields.
A product whose page cannot be reached, or that has been delisted, keeps its listing row unchanged and is not billed for the enrichment.
Related Actors
Ozon Search Scraper starts from a keyword instead and prints the category it resolved to. It is the better starting point when the category is not yet known.