# Avi.kz Scraper — Kazakhstan Classifieds & Prices (`yugenox/avi-kz-scraper`) Actor

Scrape avi.kz (avito.kz redirects there), a Kazakhstan classifieds board: listings by category, city or keyword with price in tenge, negotiable flag, category, city, posted date, photos and car specs. Optional full description, attributes and views. Item data only, no seller data. No login.

- **URL**: https://apify.com/yugenox/avi-kz-scraper.md
- **Developed by:** [Yugenox Corp](https://apify.com/yugenox) (community)
- **Categories:** E-commerce, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.00 / 1,000 listings

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

## Avi.kz Scraper: Kazakhstan classifieds and prices

Scrape **avi.kz**, a Kazakhstan classifieds board (**avito.kz** redirects there), by category, city or search words. Every listing comes with the **title, price in tenge, the "negotiable" flag, category, city, posted and updated dates, photos and the listing URL**. Car listings also get **year, mileage, engine size, gearbox, drive and fuel**. Turn on **Include full details** to add the **full description, every photo, all attributes** (condition, model, body type, colour…), the **category path, the view count, the date first added and the seller type** (private or business). No login, no cookies, no avi.kz account.

**Item data only.** The scraper never collects who is selling: no seller names, profiles, phone numbers, WhatsApp numbers, addresses or map pins. Phone numbers, e-mails and messenger handles that sellers type into titles or descriptions are masked. Massage and intimate-services ads are never collected.

### What you get

| | |
|---|---|
| **Listing** | Title, URL, listing number, category, promoted ("топ") and urgent flags |
| **Price** | Price in tenge as a number, the price as shown, and whether it is negotiable ("Торг возможен", "Договорная") |
| **Place** | City, and whether the ad is shipped from another city ("доставка из г.…") |
| **Dates** | Date posted (or re-posted) and date last refreshed |
| **Photos** | Large photo URLs and the photo count |
| **Cars** | Year, mileage (km), engine (litres), gearbox, drive, fuel — straight from the results list |
| **Full details** (optional) | Full description, all photos, attributes (e.g. Состояние: Б/у; for cars Модель, Тип кузова, Руль, Цвет…), category path, views, date first added, seller type |

### How to use it

1. Pick one or more **categories**, e.g. `elektronika`, `transport/legkovye-avtomobili`, `mobilnye-telefony`, or just type a name such as `Электроника`, `Cars` or `Недвижимость`. You can also add **search words** such as `iphone` or `Toyota Camry`.
2. Choose a **city or region**: `Алматы`, `Astana`, `Шымкент`, `Караганда`, `Алматинская область`… Leave it empty for all of Kazakhstan.
3. Set **Max listings**, an optional price range and sort order, then run.

Each search word is searched in each category and each city. **Max listings** is the total for the run, shared fairly between your searches. You can also paste avi.kz URLs (category, city, search or listing pages) into **avi.kz URLs**. avito.kz links work too.

#### Input examples

Electronics in Almaty, newest first:

```json
{
  "categories": ["elektronika"],
  "location": "Алматы",
  "maxItems": 100
}
```

Used cars in Astana between 2 and 6 million tenge, cheapest first, only cars located in Astana, with every attribute:

```json
{
  "categories": ["cars"],
  "location": "Astana",
  "minPrice": 2000000,
  "maxPrice": 6000000,
  "sort": "price-asc",
  "localOnly": true,
  "includeDetails": true,
  "maxItems": 50
}
```

iPhones across Kazakhstan's three biggest cities:

```json
{
  "searchQueries": ["iphone 15", "iphone 16"],
  "categories": ["mobilnye-telefony"],
  "location": "Алматы",
  "locations": ["Астана", "Шымкент"],
  "maxItems": 300
}
```

### Output example

```json
{
  "itemId": "972916",
  "title": "Mercedes S серия, 2012",
  "url": "https://avi.kz/almaty/mercedes-s-serija-2012-972916.html",
  "price": 15000000,
  "currency": "KZT",
  "priceText": "15 000 000 тг",
  "negotiable": false,
  "category": "Mercedes",
  "categoryPath": ["Транспорт", "Легковые автомобили", "Mercedes"],
  "location": "Алматы",
  "city": "Алматы",
  "isDelivery": false,
  "isPromoted": false,
  "isUrgent": false,
  "sellerType": "private",
  "postedDate": "2026-09-19",
  "updatedDate": "2026-09-30",
  "createdDate": "2024-03-03",
  "views": 415,
  "imageUrl": "https://avi.kz/files/images/items/972/972916zdfb76426.jpg",
  "images": ["https://avi.kz/files/images/items/972/972916zdfb76426.jpg", "https://avi.kz/files/images/items/972/972916z52e3b89e.jpg"],
  "photoCount": 8,
  "snippet": "Объем 3.5 л, КПП автомат, полный привод, бензин, пробег 170000 км",
  "description": "Меняю на Недвижимость любая подойдет, домики, дачи, общежития, квартиры, дома, продаю Mercedes-Benz S 350 2012 г. Лонг, 4 матик …",
  "attributes": {
    "Модель": "S серия",
    "Тип кузова": "седан",
    "Год выпуска": "2012 г",
    "Коробка передач": "автомат",
    "Руль": "левый",
    "Привод": "полный",
    "Пробег": "170000 км",
    "Объём двигателя": "3.5 л",
    "Вид топлива": "бензин",
    "Состояние машины": "хорошее",
    "Цвет": "черный"
  },
  "year": 2012,
  "mileageKm": 170000,
  "engineVolumeL": 3.5,
  "transmission": "автомат",
  "drive": "полный",
  "fuel": "бензин",
  "searchQuery": null,
  "searchCategory": "transport/legkovye-avtomobili",
  "searchLocation": "Алматы",
  "searchUrl": "https://avi.kz/almaty/transport/legkovye-avtomobili/",
  "position": 2,
  "detailsFetched": true,
  "scrapedAt": "2026-10-01T23:30:00.000Z"
}
```

`description`, `attributes`, `categoryPath`, `views`, `createdDate` and `sellerType` are filled when **Include full details** is on. Every row has the same columns. A value the listing doesn't state is `null`.

### Use cases

- **Price research**: see what used cars, phones, laptops or equipment sell for in Almaty, Astana or anywhere in Kazakhstan.
- **Car market data**: compare asking prices by make, year and mileage, city by city.
- **Market monitoring**: schedule a daily run sorted by newest to catch fresh listings in a category.
- **Supplier and stock discovery**: find equipment, materials and goods offered by Kazakh businesses.
- **Aggregation**: feed avi.kz listings into your own price tracker or comparison site.

### FAQ

**Do I need an avi.kz account, cookies or a login?** No. The scraper reads the same public pages any visitor sees. It never logs in and needs nothing from you except what to search.

**Is this Avito?** No. avito.kz redirects to avi.kz, a separate Kazakh classifieds board. This scraper covers avi.kz. It has around 50,000 live listings, most of them cars, services, business goods, home and garden, electronics and real estate.

**Which cities and regions can I use?** Any city or region avi.kz has: Алматы, Астана, Шымкент, Караганда, Актобе, Костанай, Усть-Каменогорск, Павлодар, Уральск, Атырау, Петропавловск, Актау, Кокшетау, Тараз, Семей and more, plus all 14 regions (e.g. "Алматинская область", "Karaganda Region"). Russian and English names both work, and so does avi.kz's own city key from the URL, e.g. `ekibastuz`. If a place isn't recognised, that search is skipped, isn't charged, and the status message says so.

**Why do I see ads from other cities in my city's results?** avi.kz shows ads shipped from other cities ("доставка из г.Костанай") in a city's results. Turn on **Only listings located in the city** to leave them out.

**Why are some ads missing?** Massage and intimate-services ads are never collected, nor are ads about people (lost and found, sport partners, travel companions). They are skipped before anything is charged, and the status message says how many were left out.

**How fast is it?** Each results page holds 30 listings and takes about a second, so 1,000 listings take under a minute. **Include full details** opens every listing's page, which adds about a second per listing.

**Which proxy should I use?** Keep the default (Apify Proxy, datacenter). It comes with every Apify plan, including the free one. If avi.kz refuses datacenter IPs for a while, the run switches to residential proxies when your account has them, and carries on without them when it doesn't.

**What does a run cost?** You pay per listing saved, per search, and a small fee per run. Full details are a separate, optional charge per listing. See the Pricing tab. Listings that are filtered out or skipped are never charged.

**Is it legal to scrape avi.kz?** This Actor only collects publicly available data: listings that anyone can see on avi.kz without an account, such as titles, prices, categories, cities, dates, photos and descriptions. Collecting publicly available data is generally legal, but you're responsible for how you use it. avi.kz is a board of private individuals, so the scraper never collects seller names, profiles, phone numbers, addresses or locations on a map, and it masks phone numbers, e-mails and messenger handles that sellers type into their ads. You must follow privacy laws such as Kazakhstan's Law on Personal Data and its Protection, GDPR, PIPEDA and CCPA, as well as avi.kz's terms. If you're unsure, check with a lawyer. More on this: [Is web scraping legal?](https://blog.apify.com/is-web-scraping-legal/)

**Does it access any private data?** No. Everything comes from pages avi.kz shows to any visitor without logging in. It never uses a login, never opens seller profiles or contact details, and follows the site's robots.txt.

*This Actor is not affiliated with, endorsed by or sponsored by avi.kz or Avito. All trademarks belong to their owners.*

# Actor input Schema

## `categories` (type: `array`):

avi.kz categories: a category key from the URL ("elektronika", "transport/legkovye-avtomobili", "mobilnye-telefony", "noutbuki", "nedvizhimost/prodazha-nedvizhimosti/prodazha-kvartir"), a name ("Электроника", "Cars", "Недвижимость", "Работа") or a category URL. Top categories: nedvizhimost, transport, elektronika, dom-i-sad, biznes, uslugi, rabota, moda-i-stil, hobbi-otdyh-i-sport, detskiy-mir, zhivotnye. Leave empty to search every category.

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

Words to search for, e.g. "iphone", "Toyota Camry", "диван". Each one is searched separately (in each category and city you choose).

## `location` (type: `string`):

A city or region of Kazakhstan, in Russian or English: "Алматы", "Astana", "Шымкент", "Караганда", "Актобе", "Atyrau", "Алматинская область"… or an avi.kz city key such as "ekibastuz". Leave empty for all of Kazakhstan.

## `locations` (type: `array`):

Run the same search in several places, e.g. "Astana", "Шымкент".

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

Optional: avi.kz (or avito.kz) category, city or search URLs — the sort and price filters in the URL are kept — and listing URLs (they end in -<number>.html).

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

Maximum number of listings for the whole run, shared fairly between your searches (a search that finds fewer leaves its share to the others). 0 = everything.

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

Also open every listing's own page for the full description, all photos, the attributes (condition; for cars: model, year, mileage, body, gearbox, colour…), the full category path, the view count, the date it was first added and the seller type (private or business). One extra request per listing.

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

Order of the results.

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

Only listings priced at least this much, in tenge.

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

Only listings priced at most this much, in tenge.

## `withPhotosOnly` (type: `boolean`):

Only listings that have at least one photo.

## `localOnly` (type: `boolean`):

avi.kz also shows ads shipped from other cities ("доставка из г.…") in a city's results. Turn this on to keep only ads from the city you chose. Has no effect for regions or all of Kazakhstan.

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

Listing pages opened at the same time when "Include full details" is on. The default is gentle on the site and fast enough.

## `proxyConfiguration` (type: `object`):

Apify Proxy (datacenter) is the default and comes with every Apify plan. If avi.kz refuses datacenter IPs, the run switches to residential proxies when your account has them.

## Actor input object example

```json
{
  "categories": [
    "elektronika"
  ],
  "location": "Алматы",
  "maxItems": 20,
  "includeDetails": false,
  "sort": "new",
  "withPhotosOnly": false,
  "localOnly": false,
  "maxConcurrency": 2,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `results` (type: `string`):

All scraped listings.

## `run` (type: `string`):

Status and statistics for this run.

## `report` (type: `string`):

RUN_REPORT: how the run ended, counts, requests, filtered ads and proxy use.

# 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 = {
    "categories": [
        "elektronika"
    ],
    "location": "Алматы",
    "maxItems": 20,
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("yugenox/avi-kz-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 = {
    "categories": ["elektronika"],
    "location": "Алматы",
    "maxItems": 20,
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("yugenox/avi-kz-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 '{
  "categories": [
    "elektronika"
  ],
  "location": "Алматы",
  "maxItems": 20,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call yugenox/avi-kz-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,yugenox/avi-kz-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/XkjbEodmzDWVzioAi/builds/AA9hKsEYG7eyWuyEH/openapi.json
