# Bazaraki Scraper — Cyprus Classifieds (`logiover/bazaraki-scraper`) Actor

Scrape Bazaraki.com ads without login — cars, real estate, electronics. Unofficial API alternative with CSV/JSON data export.

- **URL**: https://apify.com/logiover/bazaraki-scraper.md
- **Developed by:** [Logiover](https://apify.com/logiover) (community)
- **Categories:** Real estate, E-commerce
- **Stats:** 20 total users, 2 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.99 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## Bazaraki Classifieds Scraper

Extract classified ads from **[Bazaraki.com](https://www.bazaraki.com)** — Cyprus's #1 classifieds site. Scrape cars, real estate, electronics, jobs and more by keyword, category, city and price range. Returns listing-card data plus full detail-page enrichment (description, attribute map, coordinates, seller info).

[![Apify Actor](https://img.shields.io/badge/Apify-Actor-blue)](https://apify.com)
[![No Browser](https://img.shields.io/badge/Engine-HTML%20Parse-green)]()

---

### How It Works

Bazaraki renders its search and detail pages server-side with rich, schema.org-annotated HTML. This actor fetches the HTML directly via `got-scraping` and parses it with `cheerio` — no browser needed.
GET https://www.bazaraki.com/search/?q=tesla&page=1
GET https://www.bazaraki.com/<category>/?q=tesla&page=2&price_min=5000&price_max=50000
GET https://www.bazaraki.com/adv/<id>_<slug>/            ← detail enrichment

Listing pages return 60 cards each. Bazaraki caps results at page 500 (max ~30k ads per filter set).

---

### Input

```json
{
  "searchQueries": ["tesla"],
  "categoryPaths": ["car-motorbikes-boats-and-parts/cars-trucks-and-vans"],
  "cities": ["limassol"],
  "priceMin": 5000,
  "priceMax": 50000,
  "language": "en",
  "scrapeDetails": true,
  "maxListings": 200,
  "maxPagesPerQuery": 20,
  "requestDelay": 500,
  "maxConcurrency": 3
}
````

#### Parameters

| Parameter | Type | Default | Description |
|---|---|---|---|
| `searchQueries` | array | `["tesla"]` | Keywords — each is a separate task. Empty = browse categories/cities only |
| `categoryPaths` | array | `[]` | Bazaraki category slugs (see list below). Empty = all categories |
| `cities` | array | `[]` | `nicosia`, `limassol`, `larnaca`, `paphos`, `famagusta`. Empty = all cities |
| `priceMin` | integer | `0` | Min price in EUR (0 = no min) |
| `priceMax` | integer | `0` | Max price in EUR (0 = no max) |
| `language` | string | `en` | `en` / `el` / `ru` |
| `scrapeDetails` | boolean | `true` | Enrich each listing with detail-page data (~1 extra request/ad) |
| `maxListings` | integer | `200` | Total listings cap (0 = unlimited) |
| `maxPagesPerQuery` | integer | `20` | Pages per task (max 500) |
| `requestDelay` | integer (ms) | `500` | Per-worker delay |
| `maxConcurrency` | integer | `3` | Parallel detail-page workers |

***

### City Slugs

| Input value | Mapped slug |
|---|---|
| `nicosia` / `lefkosia` | `lefkosia-district` |
| `limassol` / `lemesos` | `lemesos-district` |
| `larnaca` / `larnaka` | `larnaka-district` |
| `paphos` / `pafos` | `pafos-district` |
| `famagusta` / `ammochostos` | `ammochostos-district` |

***

### Common Category Paths

#### Motors

- `car-motorbikes-boats-and-parts/cars-trucks-and-vans`
- `car-motorbikes-boats-and-parts/motorbikes`
- `car-motorbikes-boats-and-parts/boats`
- `car-motorbikes-boats-and-parts/parts-and-accessories`

#### Real Estate

- `real-estate-for-sale`
- `real-estate-for-sale/apartments-flats-for-sale`
- `real-estate-for-sale/houses-for-sale`
- `real-estate-for-sale/land-for-sale`
- `real-estate-for-rent`
- `real-estate-for-rent/apartments-flats-for-rent`
- `real-estate-for-rent/houses-for-rent`

#### Electronics

- `electronics/mobile-phones-and-accessories/mobile-phones`
- `electronics/computers-and-tablets/laptops`
- `electronics/computers-and-tablets/desktop-pcs`
- `electronics/tv-and-audio/tvs`
- `electronics/cameras-and-photo-equipment`

#### Home & Garden

- `home-and-garden/furniture`
- `home-and-garden/appliances`
- `home-and-garden/garden-and-outdoor`

#### Jobs

- `jobs-cv`
- `jobs-cv/vacancies`

#### Services

- `services/repairs-and-construction`
- `services/transport-and-logistics`

(For the full category tree, browse Bazaraki directly and copy the slug portion of any category URL.)

***

### Output

Example record:

```json
{
  "adId": "6353040",
  "detailUrl": "https://www.bazaraki.com/adv/6353040_mini-cooper-1-6l-2009/",
  "title": "Mini Cooper 1,6L 2009",
  "price": 8000,
  "priceText": "€8.000",
  "currency": "EUR",
  "isNegotiable": true,
  "isVip": false,
  "isTop": false,
  "location": "Nicosia, Egkomi",
  "city": "Nicosia",
  "area": "Egkomi",
  "latitude": 35.16687140000001,
  "longitude": 33.32500820000004,
  "postedDate": "Today 07:36",
  "viewCount": 12,
  "description": "Mini Cooper R56 JCW – 2009 | Cyprus Car ... 193,000 km ...",
  "attributes": {
    "Year": "2009",
    "Doors": "2 - 3 doors",
    "Drive": "Front (FWD)",
    "Power": "211 hp",
    "Seats": "5",
    "Colour": "White",
    "Extras": "Alloy wheels, Cruise control, Keyless start, Start/stop, Leather seats, Parking Sensors",
    "Gearbox": "Manual",
    "Mileage (in km)": "193000 km",
    "MOT till": "12/2028",
    "Body type": "Hatchback",
    "Fuel type": "Petrol",
    "Engine size": "1,6L",
    "Availability": "In stock"
  },
  "carFeatures": ["193000 km", "Manual", "Petrol"],
  "images": [
    "https://cdn1.bazaraki.com/media/cache1/44/24/4424cb24b19afb6bf45ae7f7061c4ecb.webp",
    "https://cdn1.bazaraki.com/media/cache1/4d/f7/4df79e56b7eb27b779cb671b464c1789.webp"
  ],
  "imageCount": 10,
  "categoryPath": ["Motors", "Cars", "Mini", "Cooper"],
  "category": "Cooper",
  "sellerName": "EvoStar Motors Ltd",
  "sellerProfileUrl": "https://www.bazaraki.com/c/evostarmotors/",
  "sellerRegisteredSince": "feb, 2017",
  "sellerIsVerified": true,
  "sellerIsBusiness": true,
  "searchQuery": "mini cooper",
  "searchCategory": "car-motorbikes-boats-and-parts/cars-trucks-and-vans",
  "searchCity": "nicosia",
  "scrapedAt": "2026-04-21T12:00:00.000Z"
}
```

#### Notes

- **`attributes`** is a **catch-all map** — keys depend on category. Cars have `Year/Mileage/Gearbox/...`, real estate has `Bedrooms/Area/Floor/...`, phones have `Brand/Model/Storage/...`. Same shape, different keys.
- **`price`** is `null` for "POA", free, or missing prices. Raw text is in `priceText`.
- **Phone numbers are not extracted** — Bazaraki masks them behind a login-gated `/phone_check/` endpoint.
- **`scrapeDetails: false`** gives you ~⅓ the fields but is ~60× faster (listing-only).
- The site caps pagination at **page 500** regardless of how many results match. Narrow your filter for full coverage.

***

### Use Cases

- **Market research** — car prices by model/year, apartment rents by district
- **Lead generation** — find active sellers in a category/city
- **Price tracking** — re-run periodically and diff prices over time
- **Inventory feeds** — pull your competitors' listings
- **Real estate analytics** — geo-cluster listings with latitude/longitude
- **Dealership monitoring** — filter by `sellerIsBusiness: true`

***

### Cost & Performance

- **Listing-only** (`scrapeDetails: false`): ~0.002 CU per 100 ads (≈1 request per 60 ads).
- **Full enrichment** (`scrapeDetails: true`): ~0.012 CU per 100 ads (≈61 requests per 60 ads).
- Concurrency 3 + 500ms delay = ~15-25s per 100 enriched ads.

Residential proxy is optional; datacenter proxy is typically enough.

***

### FAQ

#### Is this a Bazaraki API alternative?

Bazaraki.com has no official public API. This actor is an unofficial Bazaraki API alternative — it fetches and parses the site's server-rendered HTML so you get the same listing data programmatically as structured JSON.

#### Can I scrape Bazaraki without login?

Yes. The actor reads public search and detail pages directly with `got-scraping`, so no Bazaraki account or login is required. (Phone numbers stay masked because Bazaraki gates them behind a login-only endpoint.)

#### How do I export Bazaraki listings to CSV or JSON?

Every run writes to an Apify dataset that you can download or export as CSV, JSON, Excel or XML, or pull through the dataset API — making it a simple Bazaraki data export pipeline.

#### Can I scrape Bazaraki car listings and real estate data?

Yes. Use `categoryPaths` for cars, motorbikes, apartments, houses, land and more, or `searchQueries` for keywords — ideal for Bazaraki car listings scraping and real estate data extraction across any Cyprus district.

### Changelog

#### 2026-06-15

- Reliability pass: re-verified end-to-end on live data with real-world inputs. Routine maintenance build.

#### 2026-06-07

- Docs: added coverage for Bazaraki API alternative usage, scraping without login, and exporting car/real estate listings to CSV/JSON.

#### 2026-06-05

- 🛡️ Reliability fix: results are no longer dropped by strict output validation — runs now complete cleanly even at high volume (thousands of results).
- ⚡ Stability & performance hardening; fresh rebuild.

| Version | Date | Notes |
|---|---|---|
| 1.0.0 | 2026-04-21 | Initial release — HTML parse (cheerio), keyword × category × city tasks, detail enrichment with catch-all attribute map |

### 📝 Changelog

#### 2026-06-04

- Verified live & refreshed build — reliability/maintenance pass.

# Actor input Schema

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

Keywords to search for — each keyword runs as a separate task. Examples: 'tesla', 'iphone 15', 'bmw x5', 'apartment'. Leave empty to browse categories/cities without a keyword filter.

## `categoryPaths` (type: `array`):

Bazaraki category slug paths to restrict the search. Must match the site's URL structure exactly (no leading/trailing slashes). Examples: 'car-motorbikes-boats-and-parts/cars-trucks-and-vans', 'real-estate-for-sale', 'electronics/mobile-phones-and-accessories/mobile-phones', 'jobs-cv'. Leave empty to search across all categories. See README for common slugs.

## `cities` (type: `array`):

Cyprus city/district filter. Accepted values: 'nicosia', 'limassol', 'larnaca', 'paphos', 'famagusta'. Each value becomes its own task (crossed with queries/categories).

## `priceMin` (type: `integer`):

Minimum price filter in EUR. Set 0 or omit for no minimum.

## `priceMax` (type: `integer`):

Maximum price filter in EUR. Set 0 or omit for no maximum.

## `language` (type: `string`):

Site language. 'en' = English, 'el' = Greek, 'ru' = Russian. Affects URL prefix and parsed text labels.

## `scrapeDetails` (type: `boolean`):

If enabled, visits each ad's detail page to extract description, full attribute map, coordinates, seller info and view count. Adds ~1 request per listing. Disable for a fast listing-only scrape.

## `maxListings` (type: `integer`):

Maximum total listings to scrape across all tasks. Set 0 for unlimited (capped at maxPagesPerQuery).

## `maxPagesPerQuery` (type: `integer`):

Maximum listing pages per task combination. Each page returns up to 60 ads. Bazaraki caps results at page 500.

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

Optional proxy settings. Apify Proxy recommended if you hit rate limits.

## `requestDelay` (type: `integer`):

Delay between sequential requests per worker, in milliseconds. Higher = gentler on the site.

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

Parallel detail-page workers. Keep low (2-5) to avoid rate limits.

## Actor input object example

```json
{
  "searchQueries": [
    "tesla"
  ],
  "categoryPaths": [],
  "cities": [],
  "priceMin": 0,
  "priceMax": 0,
  "language": "en",
  "scrapeDetails": true,
  "maxListings": 200,
  "maxPagesPerQuery": 20,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": []
  },
  "requestDelay": 500,
  "maxConcurrency": 3
}
```

# Actor output Schema

## `adId` (type: `string`):

Bazaraki numeric ad ID

## `detailUrl` (type: `string`):

Full URL to the ad page

## `title` (type: `string`):

Ad title (h1)

## `price` (type: `string`):

Numeric price (null if POA/free)

## `priceText` (type: `string`):

Price text as shown on page

## `currency` (type: `string`):

Currency code, typically EUR

## `isNegotiable` (type: `string`):

True if listing shows 'Negotiable'

## `isVip` (type: `string`):

VIP sticker on listing card

## `isTop` (type: `string`):

Top sticker on listing card

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

Full location string (City, Area)

## `city` (type: `string`):

Parsed city

## `area` (type: `string`):

Parsed neighborhood/area

## `latitude` (type: `string`):

Geo latitude (WGS84)

## `longitude` (type: `string`):

Geo longitude (WGS84)

## `postedDate` (type: `string`):

Posted date as shown on page

## `postedAt` (type: `string`):

Normalized posted timestamp

## `viewCount` (type: `string`):

View count from detail page

## `description` (type: `string`):

Plain-text ad description

## `descriptionHtml` (type: `string`):

Raw HTML description

## `attributes` (type: `string`):

Catch-all map of key/value attributes

## `carFeatures` (type: `string`):

Quick features shown on listing card (cars)

## `images` (type: `string`):

Image URLs (full-size)

## `imageCount` (type: `string`):

Number of images

## `categoryPath` (type: `string`):

Breadcrumb category hierarchy

## `category` (type: `string`):

Most specific category name

## `sellerName` (type: `string`):

Seller display name

## `sellerProfileUrl` (type: `string`):

Seller profile URL

## `sellerRegisteredSince` (type: `string`):

Seller registration month/year

## `sellerIsVerified` (type: `string`):

Seller verified badge

## `sellerIsBusiness` (type: `string`):

Seller is a business (has company slug)

## `searchQuery` (type: `string`):

Keyword used to find this ad

## `searchCategory` (type: `string`):

Category path used to find this ad

## `searchCity` (type: `string`):

City filter used to find this ad

## `scrapedAt` (type: `string`):

ISO timestamp when scraped

# 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": [
        "tesla"
    ],
    "categoryPaths": [],
    "cities": [],
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": []
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("logiover/bazaraki-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": ["tesla"],
    "categoryPaths": [],
    "cities": [],
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": [],
    },
}

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

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).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": [
    "tesla"
  ],
  "categoryPaths": [],
  "cities": [],
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": []
  }
}' |
apify call logiover/bazaraki-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=logiover/bazaraki-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Bazaraki Scraper — Cyprus Classifieds",
        "description": "Scrape Bazaraki.com ads without login — cars, real estate, electronics. Unofficial API alternative with CSV/JSON data export.",
        "version": "0.0",
        "x-build-id": "8sNiMBg23o2CRciWB"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/logiover~bazaraki-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-logiover-bazaraki-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/logiover~bazaraki-scraper/runs": {
            "post": {
                "operationId": "runs-sync-logiover-bazaraki-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/logiover~bazaraki-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-logiover-bazaraki-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "searchQueries": {
                        "title": "Search Queries (keywords)",
                        "type": "array",
                        "description": "Keywords to search for — each keyword runs as a separate task. Examples: 'tesla', 'iphone 15', 'bmw x5', 'apartment'. Leave empty to browse categories/cities without a keyword filter.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "categoryPaths": {
                        "title": "Category Paths (optional)",
                        "type": "array",
                        "description": "Bazaraki category slug paths to restrict the search. Must match the site's URL structure exactly (no leading/trailing slashes). Examples: 'car-motorbikes-boats-and-parts/cars-trucks-and-vans', 'real-estate-for-sale', 'electronics/mobile-phones-and-accessories/mobile-phones', 'jobs-cv'. Leave empty to search across all categories. See README for common slugs.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "cities": {
                        "title": "Cities (optional)",
                        "type": "array",
                        "description": "Cyprus city/district filter. Accepted values: 'nicosia', 'limassol', 'larnaca', 'paphos', 'famagusta'. Each value becomes its own task (crossed with queries/categories).",
                        "items": {
                            "type": "string"
                        }
                    },
                    "priceMin": {
                        "title": "Minimum Price (EUR)",
                        "minimum": 0,
                        "maximum": 10000000,
                        "type": "integer",
                        "description": "Minimum price filter in EUR. Set 0 or omit for no minimum.",
                        "default": 0
                    },
                    "priceMax": {
                        "title": "Maximum Price (EUR)",
                        "minimum": 0,
                        "maximum": 10000000,
                        "type": "integer",
                        "description": "Maximum price filter in EUR. Set 0 or omit for no maximum.",
                        "default": 0
                    },
                    "language": {
                        "title": "Language",
                        "enum": [
                            "en",
                            "el",
                            "ru"
                        ],
                        "type": "string",
                        "description": "Site language. 'en' = English, 'el' = Greek, 'ru' = Russian. Affects URL prefix and parsed text labels.",
                        "default": "en"
                    },
                    "scrapeDetails": {
                        "title": "Scrape Detail Pages",
                        "type": "boolean",
                        "description": "If enabled, visits each ad's detail page to extract description, full attribute map, coordinates, seller info and view count. Adds ~1 request per listing. Disable for a fast listing-only scrape.",
                        "default": true
                    },
                    "maxListings": {
                        "title": "Max Listings",
                        "minimum": 0,
                        "maximum": 1000000,
                        "type": "integer",
                        "description": "Maximum total listings to scrape across all tasks. Set 0 for unlimited (capped at maxPagesPerQuery).",
                        "default": 200
                    },
                    "maxPagesPerQuery": {
                        "title": "Max Pages per Query",
                        "minimum": 1,
                        "maximum": 500,
                        "type": "integer",
                        "description": "Maximum listing pages per task combination. Each page returns up to 60 ads. Bazaraki caps results at page 500.",
                        "default": 20
                    },
                    "proxyConfiguration": {
                        "title": "Proxy Configuration",
                        "type": "object",
                        "description": "Optional proxy settings. Apify Proxy recommended if you hit rate limits."
                    },
                    "requestDelay": {
                        "title": "Request Delay (ms)",
                        "minimum": 0,
                        "maximum": 10000,
                        "type": "integer",
                        "description": "Delay between sequential requests per worker, in milliseconds. Higher = gentler on the site.",
                        "default": 500
                    },
                    "maxConcurrency": {
                        "title": "Max Concurrency",
                        "minimum": 1,
                        "maximum": 10,
                        "type": "integer",
                        "description": "Parallel detail-page workers. Keep low (2-5) to avoid rate limits.",
                        "default": 3
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
