Ozon Scraper — Products, Prices, Specs, Reviews & Sellers avatar

Ozon Scraper — Products, Prices, Specs, Reviews & Sellers

Pricing

from $1.50 / 1,000 results

Go to Apify Store
Ozon Scraper — Products, Prices, Specs, Reviews & Sellers

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

Logiover

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Share

Ozon Scraper — Products, Prices, Discounts, Ratings & Reviews (No API Key)

Apify Actor No API key Pay per result Category Export

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, discountPercent and cardPrice as real numbers · rating + reviewCount on 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 pricingprice, originalPrice (strike-through), discountPercent and the special Ozon-Card cardPrice, all stored as real numbers in rubles (RUB).
  • Ratings & reviewsrating (e.g. 4.9) and reviewCount on every product tile that has them.
  • 🖼️ Media & badges — every product's image gallery (images[]), plus seller/quality badges[] such as “Оригинal” (Original), and a human-readable stockText and deliveryDate.
  • 🧭 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-ETC cookie handshake and rotates a fresh Russian residential IP per request to survive the ozon-antibot challenge.
  • No browser, no key — pure HTTP against Ozon's widget API; every item carries _mode and scrapedAt (ISO 8601).

The 3 modes

ModeWhat it returns
searchProducts matching a keyword, paginated (highest volume, default)
categoryEvery product in an Ozon category, paginated by slug/URL
productFull detail for one or more product URLs/IDs (best-effort — see FAQ)

🚀 Quick start (3 steps)

  1. Pick a Mode — start with search and a keyword to build a product dataset, or use category with a category slug to crawl a whole section.
  2. Fill the fields that mode needs — a query for search (e.g. iphone), or a category slug like smartfony-15502. Leave everything blank to browse a popular default.
  3. 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
}
FieldTypeUsed byDefaultDescription
modestringallsearchsearch, category or product.
querystringsearchiphoneFree-text keyword (Russian or English). Empty → popular default.
sortstringsearchrelevancerelevance, price_asc, price_desc, rating, new, discount.
categorystringcategoryOzon category slug (smartfony-15502), path or full URL.
productUrlsarrayproduct[]Ozon product URLs or numeric IDs (batch).
maxResultsintegerall500Row cap; drives pagination for search & category.
proxyCountrystringallRUResidential 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 rating and reviewCount as 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:

  1. ETC handshake — the first request returns 307 + a __Secure-ETC cookie; the Actor follows the redirect (&__rr=1) keeping a per-request cookie jar until it reaches the 200 JSON payload.
  2. Search → category resolution — a keyword search self-redirects (302) into the matching category page, carrying a search_page_state token that unlocks pagination.
  3. Widget parsing — the response's widgetStates map 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).
  4. Deep pagination — it walks the infiniteVirtualPaginator by incrementing page / layout_page_index and re-calling the composer with page_changed=true, using a small concurrency pool and de-duplicating by productId.
  5. 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-antibot challenge; 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 category for volume. Category crawls have hundreds of pages; a single keyword search resolves to a narrower slice.
  • Raise maxResults for 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 ApifyClient
client = 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.

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.

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).

Building a marketplace or e-commerce dataset? Pair Ozon with the rest of the suite:

ActorWhat it does
Wildberries ScraperProducts, prices and ratings from Wildberries (RU)
Mercari Japan ScraperListings and prices from Mercari Japan
Lazada ScraperProducts and prices from Lazada (SEA)
Amazon Product ScraperProduct 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, category and best-effort product modes over Ozon's public widget API — no key, no browser. Deep, de-duplicated pagination behind a Russian residential proxy with automatic anti-bot handling.