# Ozon.ru Product Scraper - Prices, Sellers, Specs & Reviews (`scrapersdelight/ozon-scraper`) Actor

Scrape Ozon.ru products from searches, category, seller and brand pages, product links or SKUs: price, Ozon Card price, discount, rating, reviews, stock, delivery date, sponsored flag. Add the product card, full specs, seller legal profile, other sellers and review rows. Monitor mode. No login.

- **URL**: https://apify.com/scrapersdelight/ozon-scraper.md
- **Developed by:** [Scrapers Delight](https://apify.com/scrapersdelight) (community)
- **Categories:** E-commerce, Lead generation, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.80 / 1,000 product rows

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

### What does Ozon.ru Product Scraper do?

**Ozon.ru Product Scraper** turns Ozon searches, category, seller and brand pages, product links and SKUs into clean product rows: SKU, title, price and Ozon Card price, struck-through price and discount, rating, review count, stock line, delivery date and images. Switch on the extra data you need — the product card (seller, variants, key specs, description), the full characteristics table, the seller's legal profile, every competing seller, and review rows. Built for price monitoring, marketplace sellers, brand teams and market researchers working Russia's largest marketplace.

Ozon scraper · Ozon parser · Парсер Озон · ozon.ru price and seller scraper

- **Every way into Ozon:** keywords, any ozon.ru listing link (category, search, seller store, brand), product links and raw SKUs — mixed in one run, each product delivered once.
- **Ozon's own filters:** sort, price range, delivery time, sale, discounted, verified brand, official brand stores, installment — applied by Ozon and checked on the page before any row is delivered.
- **Sponsored placements marked:** every row says `isSponsored`; Ozon fills the first places of a listing with paid placements (7 of the 8 first-page tiles in our category capture).
- **Seller legal data and the buybox:** legal name, registration number (OGRN), orders and years on Ozon, plus every other seller of the same product with its price.
- **Monitor mode:** on a schedule, deliver only products that are new or whose price moved, with the previous price.
- **No login, no cookies, no Ozon account:** unblocking is built in.
- **Export anywhere:** JSON, CSV, Excel, XML; schedules, webhooks, Make, Zapier, n8n, Google Sheets; API and MCP.

### What data can you get from Ozon?

<table>
<tr>
<td>🆔 SKU (`sku`) and product link</td>
<td>📝 Title and brand</td>
<td>💳 Ozon Card price (`cardPrice`)</td>
</tr>
<tr>
<td>💰 Price without the card (`priceWithoutCard`)</td>
<td>🏷️ Struck-through price and discount %</td>
<td>⭐ Rating and review count</td>
</tr>
<tr>
<td>📦 Units left (`stockLeft`) and stock quantity</td>
<td>🚚 Delivery date and Ozon Express flag</td>
<td>📣 Sponsored placement flag</td>
</tr>
<tr>
<td>✅ "Бренд проверен" and other labels</td>
<td>🖼️ Images and full gallery</td>
<td>🗂️ Category id, name and path</td>
</tr>
<tr>
<td>🏪 Seller name, id, rating, store link</td>
<td>⚖️ Seller legal name, OGRN, address, orders</td>
<td>🔁 Other sellers with their prices</td>
</tr>
<tr>
<td>🎨 Variants with SKU, price and availability</td>
<td>📋 Full characteristics table</td>
<td>📄 Description, rich description, hashtags</td>
</tr>
<tr>
<td>❓ Question count</td>
<td>💬 Review rows: text, photos, videos, aspect ratings</td>
<td>🕒 Monitor: change type and previous price</td>
</tr>
</table>

### How to scrape Ozon with Ozon.ru Product Scraper

1. [Create a free Apify account](https://console.apify.com/sign-up) — the free plan's monthly credit covers thousands of product rows.
2. Open [Ozon.ru Product Scraper](https://apify.com/scrapersdelight/ozon-scraper) and click **Try for free**.
3. Type keywords into **Search keywords**, paste Ozon links into **Ozon links**, or list SKUs.
4. Pick filters and the extra data you need, and set **Max products**.
5. Click **Start**. A 20-product search took 109 seconds in testing.
6. Download the dataset as JSON, CSV or Excel, or read it through the API.

### ⬇️ Input

| Parameter | Type | Description |
|---|---|---|
| `searchQueries` | array | Keywords as typed into Ozon's search box, Russian or English. Prefill `["наушники"]`. |
| `startUrls` | array | Any ozon.ru link: category, search, seller store, brand page, product page. Filters already in a link are kept. |
| `productIds` | array | Ozon SKUs (артикул), e.g. `1183657260`. Each opens the product card. |
| `sort` | select | `score` (Ozon's default), `new`, `price`, `price_desc`, `rating`, `discount`. Default `score`. |
| `minPrice` / `maxPrice` | integer | Ozon's price filter in roubles (Ozon applies it to the Ozon Card price). |
| `deliverySpeed` | select | `any`, `express`, `today`, `tomorrow`, `within3Days`, `within7Days`. Default `any`. |
| `onSale`, `discountedOnly`, `brandVerifiedOnly`, `officialBrandStoreOnly`, `installmentOnly` | boolean | Ozon's own filters. Default off. |
| `minDiscount`, `minRating`, `minReviews` | number | Checked on each row after Ozon returns it. |
| `excludeSponsored` | boolean | Drop paid placements. Default off. |
| `includeDetails` | boolean | Product card: seller, both prices, variants, gallery, key specs, category path, stock, description. Default off. |
| `includeSpecs` | boolean | Full characteristics table, rich description, hashtags. Default off. |
| `includeSellerInfo` | boolean | Seller legal profile (opens the card too). Default off. |
| `includeOtherSellers` | boolean | Every other seller of the same product. Default off. |
| `includeReviews` / `maxReviewsPerProduct` | boolean / integer | Review rows, up to N per product (Ozon serves 30 per page). Default off / 30. |
| `monitorMode` / `monitorKey` | boolean / string | Only new or re-priced products since the last run; optional memory name. |
| `maxItems` | integer | Most product rows per run, all searches together. Default 100; 0 = no cap. |
| `maxItemsPerTarget` | integer | Cap per keyword or link. Default 0 (none). |
| `compact` | boolean | Core fields only, for AI tools and spreadsheets. |
| `maxConcurrency` | integer | Ozon pages fetched at once, 1-16. Default 8. |

#### Input JSON

```json
{
    "searchQueries": ["наушники"],
    "startUrls": ["https://www.ozon.ru/category/smartfony-15502/"],
    "sort": "rating",
    "minPrice": 1000,
    "maxPrice": 5000,
    "deliverySpeed": "tomorrow",
    "includeDetails": true,
    "maxItems": 100
}
```

#### Mix keywords, links and SKUs

All three inputs run in one go. A product that turns up under two keywords, or on two pages, is delivered and charged once. Ozon answers a keyword search with its own predicted category (for "наушники" it searched inside Электроника), exactly as the site does for a shopper.

#### Filters are Ozon's own

Sort, price, delivery time and the yes/no filters are sent to Ozon in the page address. The actor then reads Ozon's list of active filters on the returned page; if Ozon did not apply one of them, that search is stopped and listed in the run summary instead of returning unfiltered rows. In testing, price 1,000-5,000 ₽ + delivery tomorrow + verified brand + sort by rating were all confirmed on every page.

#### Switch on only the extra data you need

Every extra-data switch opens one more Ozon page per product, so it costs time and is charged per product that gets it. For a price list, leave them all off: the listing row already carries the price, Ozon Card flag, discount, rating, reviews, stock line and delivery date. Turn on **Product details** for the seller and both prices, **Full characteristics** for the spec table, **Seller profile** for legal data (charged once per seller), **Other sellers** for the buybox.

#### Monitor a listing on a schedule

With **Only new products and price changes** on, the actor remembers what it delivered (in a named store, per search set or per **Monitor name**) and re-reads the same scope every run: the first **Max products** positions of each listing. New products come back with `changeType: "new"`, re-priced ones with `priceDrop` or `priceRise` and `previousPrice`; unchanged ones are skipped and not charged. In testing, a second run over the same seller page delivered 0 rows and reported 8 unchanged.

### ⬆️ Output

A listing row from a real run (category Смартфоны, 2026-10-14), image list trimmed:

```json
{
  "type": "product",
  "sku": "4125946328",
  "url": "https://www.ozon.ru/product/huawei-smartfon-nova-15-12-256-gb-nano-sim-chernyy-4125946328/",
  "title": "HUAWEI Смартфон Nova 15 12/256 ГБ, Nano-SIM, черный",
  "price": 29644,
  "priceType": "ozonCard",
  "cardPrice": 29644,
  "rating": 5,
  "reviewCount": 125,
  "deliveryDate": "17 октября",
  "labels": ["Бренд проверен"],
  "isBrandVerified": true,
  "isSponsored": false,
  "isAvailable": true,
  "position": 11,
  "page": 2,
  "categoryPath": ["Электроника", "Телефоны и смарт-часы", "Смартфоны"]
}
```

With **Product details**, **Seller profile** and **Other sellers** on (SKU 3555507925, trimmed):

```json
{
  "sku": "3555507925",
  "brand": "Samsung",
  "cardPrice": 63389,
  "priceWithoutCard": 67714,
  "sellerName": "AE Dubai Freezone O...",
  "sellerId": "2831883",
  "stockQuantity": 31,
  "questionCount": 885,
  "characteristicsCount": 47,
  "seller": { "legalName": "EKMOBAIL FZCO", "ordersText": "165 K", "badges": ["Premium магазин"] },
  "otherSellersCount": 2
}
```

A review row: `{"type": "review", "productSku": "1183657260", "rating": 5, "text": "Долго выбирала, остановилась на этой…", "authorName": "Виктория С.", "publishedAt": "2025-12-13T12:19:05.000Z", "usefulCount": 55, "variant": "Размеры, мм: 500*500*180; …", "photos": ["https://ir-20.ozone.ru/s3/rp-photo-15/…jpeg"]}`.

#### Fields

Fill measured on a 100-product category run (listing fields) and on the add-on test (2 products, 60 reviews):

| Field | Meaning | Filled |
|---|---|---|
| `sku`, `url`, `title`, `price`, `priceType`, `currency`, `images` | Identity and the price Ozon shows first | 100% |
| `rating`, `reviewCount` | Score and reviews (new products have none) | 100% |
| `deliveryDate` | Ozon's estimate for Moscow | 100% |
| `originalPrice`, `discountPercent` | Struck-through price and discount | 75% |
| `labels` / `isBrandVerified` | Tile labels / "Бренд проверен" | 57% |
| `brand` | Only when Ozon prints it on the tile | 18% (100% with Product details) |
| `stockLeft` | Low-stock line, e.g. "Осталось 5 шт" | 6% |
| `isSponsored` | Paid placement | 7 of 100 true |
| `sellerName`, `sellerId`, `cardPrice`, `priceWithoutCard`, `variants`, `description` | Product details | 2 of 2 |
| `characteristics` | Full characteristics | 15 and 47 rows |
| `seller.legalName` / `seller.registrationNumber` | Seller profile: an ИП with its 15-digit OGRNIP, a UAE company with its own number and address | 2 of 2 |
| `otherSellers` | Competing offers | 0 and 2 sellers |
| Review `text`, `authorName`, `photos`, `videos` | Review rows | 60, 57, 39, 7 of 60 |

### How can I use Ozon data?

- 📉 **Price monitoring:** schedule a category or a keyword in monitor mode and get only price drops and new listings.
- 🛒 **Marketplace sellers:** see who sells the same SKU, at what Ozon Card price, and with what delivery date.
- 🏷️ **Brand protection:** search your brand, keep `isBrandVerified` false rows, and pull the seller's legal name and OGRN.
- 📊 **Market research:** price bands, discounts, ratings and review volume across a category.
- 🧾 **Catalogue building:** variants, characteristics and descriptions for product content.
- 💬 **Review analysis:** review text, photos and Ozon's per-aspect answers for sentiment work.

### How much does it cost to scrape Ozon?

Ozon.ru Product Scraper is pay-per-event with no start fee. **$1.80 per 1,000 product rows**; extra data is charged only on rows that got it:

| What | Price |
|---|---:|
| Product row | $0.0018 |
| + Product details (per product) | $0.003 |
| + Full characteristics (per product) | $0.002 |
| + Seller profile (per seller, once per run) | $0.0045 |
| + Other sellers (per product that has any) | $0.0045 |
| Review row | $0.0018 |

| Products (listing rows only) | Cost |
|---:|---:|
| 20 | $0.036 |
| 100 | $0.18 |
| 1,000 | $1.80 |

Duplicates, filtered rows, unchanged rows in monitor mode, unavailable product links and pages Ozon would not serve are never charged. Set a maximum charge for the run and the actor stops cleanly at it (tested: the run delivered exactly as many products as the limit paid for, and charged for exactly those).

### Integrations, API, scheduling & MCP

- **Schedules:** run a search every morning in monitor mode and get only what changed.
- **Webhooks and no-code:** Make, Zapier, n8n, Google Sheets, Airtable and Slack through [Apify integrations](https://docs.apify.com/integrations).
- **API:** call it from Python or Node.js with `apify-client` — code on the [API tab](https://apify.com/scrapersdelight/ozon-scraper/api/python).
- **MCP / AI agents:** connect Claude, Cursor or any MCP client through the [MCP tab](https://apify.com/scrapersdelight/ozon-scraper/api/mcp); `compact: true` keeps rows short.

### More e-commerce scrapers

<table>
<tr>
<td>🛍️ <a href="https://apify.com/scrapersdelight/aliexpress-products-scraper">AliExpress Products Scraper</a> — prices, sellers, SKUs and stock</td>
<td>📦 <a href="https://apify.com/scrapersdelight/amazon-product-scraper">Amazon Product Scraper</a> — search, price, rating and reviews</td>
<td>⭐ <a href="https://apify.com/scrapersdelight/amazon-reviews-scraper">Amazon Reviews Scraper</a> — ratings histogram and review rows</td>
</tr>
<tr>
<td>🧾 <a href="https://apify.com/scrapersdelight/amazon-seller-leads-scraper">Amazon Seller Leads</a> — seller business details</td>
<td>🏬 <a href="https://apify.com/scrapersdelight/shopify-products-scraper">Shopify Products Scraper</a> — barcodes, variants and prices</td>
<td>👤 <a href="https://apify.com/scrapersdelight">All our scrapers</a></td>
</tr>
</table>

### Limits & empty runs

- **Page size and speed:** Ozon serves 8 products per listing page on most listings (36 on one filtered search we captured). Each page takes 40-90 seconds to come back through the unblocking service, and pages are fetched 8 at a time: 100 products took 211 seconds, 20 took 109 seconds.
- **Extra data adds pages:** each switch is one more page per product; two products with every switch and 30 reviews each took about 6 minutes.
- **Retries:** some page requests fail on the first try (about 1 in 6 in testing) and are retried up to 3 times; a page that still fails is listed in the run summary as unreachable, never treated as "no results".
- **Moscow defaults, Russian text:** prices, delivery dates, titles and specs come back in roubles and Russian, as Ozon serves them by default. City-by-city prices and the language/currency switch are not offered.
- **Product card prices:** a product card shows the Ozon Card price and the price without the card; the struck-through price comes from listing rows.
- **Brand on tiles:** Ozon prints the brand on only some tiles (18 of 100 in our run); Product details fills it from the card.
- **Out of stock:** listings can include "Нет в наличии" tiles with no price (`isAvailable: false`); a product link or SKU that is out of stock or gone is listed in the run summary and not charged.
- **Not included:** question-and-answer text (the question count is in Product details); reviews have no separate pros/cons fields on Ozon's current review pages (0 of 60 in testing) — Ozon's per-aspect answers come in `aspectRatings`.
- **Empty dataset:** your filters removed everything (the run summary counts each), every product was unchanged in monitor mode, or Ozon could not be reached for a while — nothing is charged; run it again.

### FAQ

#### How many products can Ozon.ru Product Scraper return in one run?

As many as the listing holds: set **Max products** (default 100, 0 = no cap). Most listings come 8 products to a page and pages arrive 8 at a time: 100 products took 211 seconds in testing.

#### Can Ozon.ru Product Scraper track Ozon prices automatically?

Yes. Turn on monitor mode and schedule the run. Each run re-reads the same scope and delivers only new products and price changes, with the previous price.

#### Does Ozon.ru Product Scraper show the Ozon Card price?

Yes. `priceType: "ozonCard"` means the price on the tile is Ozon's bank-card price (`cardPrice`). With Product details on you get both the card price and the price without the card.

#### Can I get the seller's legal name and OGRN from Ozon?

Yes, with **Seller profile**: legal name, registration number (OGRN or OGRNIP for Russian sellers; foreign sellers show their own number or none), address when shown, orders, years on Ozon, rating and verified brands.

#### Can I scrape Ozon seller and brand pages?

Yes. Paste the seller's store link (`https://www.ozon.ru/seller/…/`) or a brand or category link into **Ozon links**; tested on a seller store page.

#### Can I use Ozon.ru Product Scraper with the Apify API?

Yes. Start runs and read datasets from any language with `apify-client`; examples are on the API tab.

#### Can I use Ozon.ru Product Scraper through an MCP server?

Yes. Add it to Claude, Cursor or another MCP client from the MCP tab; use `compact: true` for shorter rows.

#### Do I need an Ozon account, cookies or a proxy?

No. The actor reads Ozon's public pages without a login; unblocking is built in.

#### Why did my Ozon.ru Product Scraper run return no products?

Your filters may have removed every row, Ozon may not have applied a filter (the run stops that search rather than return unfiltered rows), monitor mode found nothing new, or Ozon could not be reached for a while. The run summary says which, and nothing is charged.

#### Is Ozon.ru Product Scraper an official Ozon tool?

No. It is an independent tool and is not affiliated with or endorsed by Ozon.

#### Your feedback

Missing a field or a filter? Open an issue on the [Issues tab](https://apify.com/scrapersdelight/ozon-scraper/issues/open) and we will look at it.

# Actor input Schema

## `searchQueries` (type: `array`):

Words exactly as you would type them into Ozon's search box, Russian or English, e.g. "наушники", "iphone 17", "робот-пылесос".

## `startUrls` (type: `array`):

Any ozon.ru link: a category (https://www.ozon.ru/category/smartfony-15502/), a search, a seller or brand page, a product page, or a short ozon.ru/t/… link. Filters already in a link are kept.

## `productIds` (type: `array`):

Ozon SKUs (артикул), one per line, e.g. 1183657260. Each opens the product card, so it comes back with Product details.

## `sort` (type: `string`):

The order Ozon sorts results in. With a small Max products this decides which products you get.

## `minPrice` (type: `integer`):

Ozon's own price filter, in roubles. Ozon applies it to the Ozon Card price.

## `maxPrice` (type: `integer`):

Ozon's own price filter, in roubles. Ozon applies it to the Ozon Card price.

## `deliverySpeed` (type: `string`):

Only products Ozon says it can deliver this fast (Ozon's estimate for Moscow).

## `onSale` (type: `boolean`):

Ozon's "Распродажа" filter.

## `discountedOnly` (type: `boolean`):

Ozon's "Товары со скидкой" filter.

## `brandVerifiedOnly` (type: `boolean`):

Ozon's "Бренд проверен" filter: the seller guarantees original goods of the brand.

## `officialBrandStoreOnly` (type: `boolean`):

Ozon's "Официальные магазины бренда" filter.

## `installmentOnly` (type: `boolean`):

Ozon's "Рассрочка" filter.

## `minDiscount` (type: `integer`):

Keep products discounted by at least this percentage off the struck-through price, e.g. 30.

## `minRating` (type: `number`):

Keep products rated at least this (0-5), e.g. 4.5. Unrated products are dropped when this is set.

## `minReviews` (type: `integer`):

Keep products with at least this many reviews, e.g. 50.

## `excludeSponsored` (type: `boolean`):

Drop the paid placements Ozon mixes into the first places of a listing (every row says isSponsored either way).

## `includeDetails` (type: `boolean`):

Open the product card: seller name/id/rating, Ozon Card price and price without the card, variants with their SKUs and prices, full gallery, key specs, category path, stock, question count, description.

## `includeSpecs` (type: `boolean`):

The full characteristics table, the rich description and hashtags (one more page per product).

## `includeSellerInfo` (type: `boolean`):

The seller's legal name, registration number (OGRN), orders, years on Ozon, rating and badges. Needs the product card, so Product details is opened too. Charged once per seller.

## `includeOtherSellers` (type: `boolean`):

Every other seller offering the same product: seller, legal name, Ozon Card price, delivery date. Not charged when nobody else sells it.

## `includeReviews` (type: `boolean`):

Add review rows (type "review") for every product: rating, text, pros, cons, photos, videos, usefulness, variant. Charged per review row.

## `maxReviewsPerProduct` (type: `integer`):

Ozon serves 30 reviews per page, most useful first.

## `monitorMode` (type: `boolean`):

Deliver only products this monitor has not delivered before, or whose price moved since (changeType new / priceDrop / priceRise with previousPrice). Unchanged products are skipped and not charged.

## `monitorKey` (type: `string`):

Optional name for the monitor's memory, e.g. "headphones-daily". Empty = derived from your searches, links and filters.

## `maxItems` (type: `integer`):

The most product rows the run delivers, across all searches and links. 0 = no cap (each listing still ends where Ozon ends it).

## `maxItemsPerTarget` (type: `integer`):

Cap per keyword or listing link, so one big search does not use the whole run. 0 = no per-search cap.

## `compact` (type: `boolean`):

Core fields only (no image lists, labels or empty fields) - smaller rows for AI tools, spreadsheets and MCP. Extra data you switched on is kept.

## `maxConcurrency` (type: `integer`):

How many Ozon pages are fetched at once. Each page takes 40-90 s to come back.

## Actor input object example

```json
{
  "searchQueries": [
    "наушники"
  ],
  "sort": "score",
  "deliverySpeed": "any",
  "onSale": false,
  "discountedOnly": false,
  "brandVerifiedOnly": false,
  "officialBrandStoreOnly": false,
  "installmentOnly": false,
  "excludeSponsored": false,
  "includeDetails": false,
  "includeSpecs": false,
  "includeSellerInfo": false,
  "includeOtherSellers": false,
  "includeReviews": false,
  "maxReviewsPerProduct": 30,
  "monitorMode": false,
  "maxItems": 20,
  "maxItemsPerTarget": 0,
  "compact": false,
  "maxConcurrency": 8
}
```

# Actor output Schema

## `products` (type: `string`):

One row per product (type "product"), plus review rows (type "review") when Reviews is on.

## `summary` (type: `string`):

Delivered and charged counts, duplicates, filtered rows by reason, filters Ozon did not apply, products not found or unavailable, unreachable pages and the Ozon request count.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "searchQueries": [
        "наушники"
    ],
    "maxItems": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapersdelight/ozon-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "searchQueries": ["наушники"],
    "maxItems": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("scrapersdelight/ozon-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "searchQueries": [
    "наушники"
  ],
  "maxItems": 20
}' |
apify call scrapersdelight/ozon-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,scrapersdelight/ozon-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/4Jnxpfd36DYoXclee/builds/mjPDYk6IA53mwtc3G/openapi.json
