Ozon Scraper — Products, Prices, Specs, Reviews & Sellers
Pricing
from $1.50 / 1,000 results
Ozon Scraper — Products, Prices, Specs, Reviews & Sellers
Scrape Ozon.ru by keyword or category. Extract product name, price, discount, rating, review count, images, badges and stock at scale. No API key, no login. For price monitoring, e-commerce analytics and market research.
Pricing
from $1.50 / 1,000 results
Rating
0.0
(0)
Developer
Logiover
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
Ozon Scraper — Products, Prices, Discounts, Ratings & Reviews (No API Key)
An unofficial Ozon scraper and structured Ozon product data API in a single Apify Actor. Search Ozon.ru — Russia's largest online marketplace — by keyword or crawl an entire category, and export clean, flat product data: names, live prices, discounts, Ozon-Card prices, ratings, review counts, images, seller badges and stock. Powered directly by Ozon's own web JSON API — no API key, no login, no headless browser. Just fast HTTP behind a Russian residential proxy, and structured JSON you can pour into CSV, Excel or a database. Every result is tagged with _mode so you can mix keyword and category runs in one dataset and filter later.
🏆 Why this Ozon scraper?
Search or category crawl · hundreds–thousands of products per run via deep pagination · live
price,originalPrice,discountPercentandcardPriceas real numbers ·rating+reviewCounton every tile · product images and badges · export to JSON / CSV / Excel. The unofficial Ozon API alternative for price monitoring, e-commerce analytics, competitor research and market intelligence — with no API key and no browser.
✨ What this Actor does / Key features
- 🔎 Keyword search — search Ozon by any Russian or English term (
iphone,наушники,робот-пылесос) and paginate the full result set into a clean product dataset. - 🗂️ Category crawl — feed an Ozon category slug or URL and walk the whole catalogue page by page for bulk extraction (10k+ products in a single run).
- 💰 Full pricing —
price,originalPrice(strike-through),discountPercentand the special Ozon-CardcardPrice, all stored as real numbers in rubles (RUB). - ⭐ Ratings & reviews —
rating(e.g.4.9) andreviewCounton every product tile that has them. - 🖼️ Media & badges — every product's image gallery (
images[]), plus seller/qualitybadges[]such as “Оригинal” (Original), and a human-readablestockTextanddeliveryDate. - 🧭 Runs with empty input — no field is required; an empty run browses a popular default search bounded by
maxResults. - 🔁 Deep, de-duplicated pagination — rides Ozon's virtual-scroll paginator and de-dupes products across pages so you pay only for unique rows.
- 🛡️ Anti-block engine — solves Ozon's two-step
__Secure-ETCcookie handshake and rotates a fresh Russian residential IP per request to survive theozon-antibotchallenge. - ⚡ No browser, no key — pure HTTP against Ozon's widget API; every item carries
_modeandscrapedAt(ISO 8601).
The 3 modes
| Mode | What it returns |
|---|---|
search | Products matching a keyword, paginated (highest volume, default) |
category | Every product in an Ozon category, paginated by slug/URL |
product | Full detail for one or more product URLs/IDs (best-effort — see FAQ) |
🚀 Quick start (3 steps)
- Pick a Mode — start with
searchand a keyword to build a product dataset, or usecategorywith a category slug to crawl a whole section. - Fill the fields that mode needs — a
queryfor search (e.g.iphone), or acategoryslug likesmartfony-15502. Leave everything blank to browse a popular default. - Run & export — download results as JSON, CSV, Excel, HTML, RSS or JSON Lines, or pull them via the Apify API.
📥 Input
Pick a mode, then fill only the fields that mode needs.
Example — search for iPhones (600 products)
{"mode": "search","query": "iphone","sort": "relevance","maxResults": 600}
Example — crawl the Smartphones category
{"mode": "category","category": "smartfony-15502","maxResults": 2000}
Example — cheapest headphones first
{"mode": "search","query": "наушники","sort": "price_asc","maxResults": 500}
| Field | Type | Used by | Default | Description |
|---|---|---|---|---|
mode | string | all | search | search, category or product. |
query | string | search | iphone | Free-text keyword (Russian or English). Empty → popular default. |
sort | string | search | relevance | relevance, price_asc, price_desc, rating, new, discount. |
category | string | category | — | Ozon category slug (smartfony-15502), path or full URL. |
productUrls | array | product | [] | Ozon product URLs or numeric IDs (batch). |
maxResults | integer | all | 500 | Row cap; drives pagination for search & category. |
proxyCountry | string | all | RU | Residential exit country — must be RU (Ozon is Russia-only). |
📤 Output
Results stream to the dataset; every item carries _mode and scrapedAt. Here is a real product row from a search run:
{"_mode": "search","productId": 1181913217,"sku": "1181913217","name": "Apple Смартфон iPhone 15 128 ГБ, чёрный (Black)","brand": null,"url": "https://www.ozon.ru/product/apple-smartfon-iphone-15-128-gb-chernyy-black-1181913217/","price": 62990,"originalPrice": 89990,"cardPrice": 61200,"discountPercent": 30,"currency": "RUB","rating": 4.9,"reviewCount": 875,"isAvailable": true,"stockText": "1 шт осталось","deliveryDate": "Завтра","badges": ["Apple", "Оригинал"],"images": ["https://ir.ozone.ru/s3/multimedia-1-l/7669840197.jpg","https://ir.ozone.ru/s3/multimedia-1-6/7669840218.jpg"],"isAdult": false,"query": "iphone","scrapedAt": "2026-07-24T09:00:00.000Z"}
💡 Use cases
- Price monitoring & repricing — track competitor prices, discounts and Ozon-Card prices across a category on a schedule, and feed a repricing engine or alerting workflow.
- E-commerce & market analytics — build a product dataset filtered by keyword or category and chart price distributions, discount depth, rating vs. review-count in a BI tool.
- Competitor & assortment research — see who sells what, at what price, with which badges, and how a category's catalogue is structured.
- Catalog enrichment — enrich your own listings with Ozon prices, ratings, images and stock signals for the Russian market.
- Demand & review mining — use
ratingandreviewCountas proxies for popularity and demand, or shortlist high-review products for deeper study. - AI agents & RAG — wrap the Actor as a tool so an LLM can answer “what are the cheapest 4.8★+ robot vacuums on Ozon right now?”
👥 Who uses it
E-commerce and pricing analysts · marketplace sellers benchmarking competitors · market-research and consulting teams · data engineers building product datasets · repricing / monitoring tools · AI-agent builders wiring Ozon as a data source.
💰 Pricing
This Actor runs on a simple pay-per-result model — you pay for the product rows you extract, with no separate Apify platform fees to calculate. Results are de-duplicated, so you don't pay twice for the same product. Try it on the free tier first, then scale up. See the Pricing tab on this page for the current rate.
🛠️ How it works (engine)
Ozon renders its storefront from a widget JSON API (composer-api.bx). This Actor calls that API directly:
- ETC handshake — the first request returns
307+ a__Secure-ETCcookie; the Actor follows the redirect (&__rr=1) keeping a per-request cookie jar until it reaches the200JSON payload. - Search → category resolution — a keyword search self-redirects (
302) into the matching category page, carrying asearch_page_statetoken that unlocks pagination. - Widget parsing — the response's
widgetStatesmap holds double-encoded JSON strings; the Actor parses the product-tile widget (tileGridDesktop/searchResultsV2) and decodes each tile's typed “atoms” (price, name, rating, badges, images). - Deep pagination — it walks the
infiniteVirtualPaginatorby incrementingpage/layout_page_indexand re-calling the composer withpage_changed=true, using a small concurrency pool and de-duplicating byproductId. - Anti-block — every request goes through Apify RESIDENTIAL proxy pinned to country RU (Ozon geo-blocks non-Russian IPs), rotating a fresh IP + fresh session per request to ride out the
ozon-antibotchallenge; a ~4-minute time budget then pushes everything collected and exits successfully.
💡 Tips for best results
- Keep
proxyCountry= RU. Ozon only answers Russian IPs; any other exit country will be blocked. - Use
categoryfor volume. Category crawls have hundreds of pages; a single keyword search resolves to a narrower slice. - Raise
maxResultsfor big pulls and lower it for a fast, cheap sample. The empty-input default is deliberately modest. - Find category slugs in the URL. On any Ozon category page the address bar shows
.../category/<slug>/— paste the slug or the whole URL. - Combine several keyword runs (e.g. schedule
iphone,samsung,xiaomi) to assemble a broad multi-brand dataset. - Prices are numbers, so you can sort, filter and aggregate straight away in Sheets, Excel or SQL.
- Re-run if a run comes back light — Ozon occasionally throttles; the Actor rotates fresh RU IPs automatically, so a repeat run usually fills in.
- Schedule it for daily/weekly price snapshots and diff the datasets to detect price changes.
🔌 Integrations
Connect this Actor to the rest of your stack with a few clicks:
- Google Sheets — push results into a spreadsheet for price dashboards.
- Slack / email — get notified when a run finishes or a price crosses a threshold (via webhooks + Make/Zapier).
- Zapier & Make (Integromat) — no-code automation: trigger on new dataset items and route them anywhere.
- Webhooks — POST run + dataset events to your own endpoint.
- Apify Scheduler — run hourly/daily/weekly to build a price time-series.
- Databases & BI — export CSV/JSON/Excel or pull via API into Postgres, BigQuery, Power BI, etc.
🧩 API usage
Run the Actor and fetch results via the Apify API (get your token from Settings → Integrations).
cURL
curl -X POST "https://api.apify.com/v2/acts/logiover~ozon-scraper/run-sync-get-dataset-items?token=YOUR_TOKEN" \-H "Content-Type: application/json" \-d '{ "mode": "search", "query": "iphone", "maxResults": 500 }'
Node.js (apify-client)
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_TOKEN' });const run = await client.actor('logiover/ozon-scraper').call({mode: 'category',category: 'smartfony-15502',maxResults: 2000,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items.length, 'products');
Python (apify-client)
from apify_client import ApifyClientclient = ApifyClient("YOUR_TOKEN")run = client.actor("logiover/ozon-scraper").call(run_input={"mode": "search","query": "наушники","sort": "price_asc","maxResults": 500,})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item["name"], item["price"])
🤖 Use with AI agents (MCP)
This Actor works great as a tool for LLM agents through the Apify MCP server: expose it to your agent and let the model call it with a keyword or category to fetch live Ozon prices and ratings, then reason over the JSON. Example prompt: “Use the Ozon scraper to get the 20 cheapest robot vacuums rated 4.5★ or higher and summarize the price range.”
❓ Frequently Asked Questions
Do I need an Ozon API key or account?
No. This is an unofficial Ozon scraper that reads publicly available data through Ozon's own web endpoints. You only need an Apify account — no Ozon API key, no login, no cookies to supply.
Why does it need a Russian proxy?
Ozon.ru only serves requests from Russian IP addresses and challenges everything else. The Actor routes traffic through Apify's RESIDENTIAL proxy pinned to RU and handles the anti-bot handshake for you. This is built in — you don't configure anything beyond leaving proxyCountry as RU.
How many products can one run return?
Hundreds to thousands. A keyword search paginates its resolved result set; a category crawl walks the full catalogue (often 100+ pages). Results are de-duplicated by product ID, and pagination stops at your maxResults or a ~4-minute time budget.
How do I scrape a whole Ozon category?
Use mode: "category" and pass the category slug (e.g. smartfony-15502), a path (/category/smartfony-15502/) or the full category URL. You can find the slug in the address bar on any Ozon category page.
Can I scrape Ozon prices and discounts?
Yes — every product row includes price, originalPrice, cardPrice (the Ozon-Card price) and discountPercent, all as real numbers in rubles, so you can monitor and compare prices directly.
Does it get ratings and review counts?
Yes. Product tiles that display them include rating (e.g. 4.9) and reviewCount. Tiles without a rating (some ads/new items) return null for those fields.
Why are some fields null?
Not every tile exposes every attribute — sponsored placements and brand-new listings may lack a rating, review count or stock note. Rows are never all-null; core fields (id, name, url, price) are populated whenever Ozon provides them.
What about full product detail (specs, sellers, price history)?
The product mode targets Ozon's product page, which is strongly anti-bot protected — it may be blocked even with residential IPs and is provided on a best-effort basis. For reliable price/rating/review data at scale, use search or category mode, where the tile data already includes price, discount, rating, review count, images and badges.
How do I export the data to CSV, JSON or Excel?
Run any mode and download the dataset as CSV, JSON, Excel (XLSX), HTML, RSS or JSON Lines from the run page, or pull it via the Apify API. This makes it a simple Ozon data-export and price-dataset tool.
How often is the data updated?
It's live — every run fetches current data straight from Ozon. Schedule the Actor hourly, daily or weekly to build a price and rating time-series.
Is it an Ozon API or an API alternative?
Both, effectively. It works as an unofficial Ozon API and a practical Ozon dataset API alternative: send structured input, get structured JSON back, without any official Ozon data licence.
Is it legal to scrape Ozon?
The Actor collects only publicly available data served by Ozon's own endpoints, for legitimate research, analytics and price-monitoring use. You are responsible for using the data in compliance with Ozon's terms of service and applicable laws.
⚖️ Is it legal?
This Actor extracts only publicly available product data that Ozon serves to any visitor, and is intended for legitimate price monitoring, market research, analytics and dataset-building. It does not access private accounts, personal data or anything behind a login. You are responsible for complying with Ozon's Terms of Service, robots directives and any applicable local laws and data-protection regulations (including how you store and use the collected data).
🔗 Related scrapers by logiover
Building a marketplace or e-commerce dataset? Pair Ozon with the rest of the suite:
| Actor | What it does |
|---|---|
| Wildberries Scraper | Products, prices and ratings from Wildberries (RU) |
| Mercari Japan Scraper | Listings and prices from Mercari Japan |
| Lazada Scraper | Products and prices from Lazada (SEA) |
| Amazon Product Scraper | Product data, prices and reviews from Amazon |
👉 Browse all logiover scrapers on Apify Store — 180+ actors across e-commerce, real estate, jobs, crypto, social media & B2B data.
⭐ Support & feedback
Found a bug or need an extra field or mode? Open an issue on the Issues tab — response is usually fast. If this Actor saves you time, a ★★★★★ review on the Store page genuinely helps and is hugely appreciated. 🙏
📝 Changelog
2026-07-24
- Initial release: Ozon Scraper v1.0 with
search,categoryand best-effortproductmodes over Ozon's public widget API — no key, no browser. Deep, de-duplicated pagination behind a Russian residential proxy with automatic anti-bot handling.