# Domclick Scraper — Russia Property Data & API (`sian.agency/domclick-property-scraper`) Actor

Domclick (ДомКлик) scraper & real estate data API for Russia's Sberbank property portal. Sale & rent listings in every city: price, price/m², rooms, area, floor, build year, address, metro, GPS, photos, seller — clean JSON/CSV. Fast overview or full detail. No-code.

- **URL**: https://apify.com/sian.agency/domclick-property-scraper.md
- **Developed by:** [SIÁN OÜ](https://apify.com/sian.agency) (community)
- **Categories:** Real estate, Automation, Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $4.00 / 1,000 overview listings

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

## Domclick Scraper — Russia Property Data & API 🇷🇺🏠

[![SIÁN Agency Store](https://img.shields.io/badge/Store-SI%C3%81N%20Agency-1AE392)](https://apify.com/sian.agency?fpr=sian) [![Immobiliare.it Scraper](https://img.shields.io/badge/Store-Immobiliare.it%20Scraper-1AA683)](https://apify.com/sian.agency/immobiliare-property-scraper?fpr=sian) [![Smart Idealista Scraper](https://img.shields.io/badge/Store-Smart%20Idealista%20Scraper-E60023)](https://apify.com/sian.agency/smart-idealista-scraper?fpr=sian) [![Dubai Real Estate Scraper](https://img.shields.io/badge/Store-Dubai%20Real%20Estate-93D500)](https://apify.com/sian.agency/bayut-property-scraper?fpr=sian)

#### 🎉 The fast, no-code Domclick data API — scrape sale & rent listings across Russia, no Domclick account or API key required
##### Built for property investors, agents, proptech teams, and market researchers who need clean Russian real-estate data — for sale (продажа) and for rent (аренда) — in Moscow, Saint Petersburg and every city.

### 📋 Overview

**Pull listings from Domclick (ДомКлик) — Sberbank's nationwide Russian property portal — as clean JSON or CSV.** For sale and for rent, across Москва, Санкт-Петербург and every region. Pick the depth that fits the job: a fast, low-cost overview scan for sizing a market, or the full per-property record.

**Why investors and agents choose us:**
- ⚡ **Two depths, one actor**: a fast Overview scan for whole-market sweeps, or full Detail records when you need everything
- 🔁 **Detail = Overview + more**: every overview field is on a Detail row too, with deeper data added on top — never less
- 💰 **Pay-per-result pricing**: Overview from **$5 per 1,000 listings** — only charged for listings actually extracted
- 📐 **Analysis-ready**: price, **price-per-m²**, rooms, area, floor, build year, metro distance and **GPS coordinates** on every row
- 🎯 **Three ways to search**: by city name, by a pasted Domclick search URL (your filters honored), or by specific listing URLs
- ✅ **Trust signals built in**: a `is_rosreestr_approved` flag (ownership verified against the state property registry) on every row
- 💎 **No API key, no code**: no Domclick access needed — point, click, export a real-estate data feed
- 🆓 **Free to try**: up to 25 listings per run, no credit card

### ✨ Features

- 🧭 **Overview mode**: every listing card on the search results — price, specs, location, metro, seller, photo gallery — ideal for fast market sweeps
- 🔍 **Detail mode**: full per-listing record — living/kitchen area and the complete description on top of every Overview field
- 🗺️ **By city / search URL / listing URL**: type a city + sale/rent, paste a Domclick search link, or drop in specific listings
- 🎚️ **Filters**: deal type (sale/rent), property type (flat, new-build, room, house, townhouse), room count, price range, area range, sort order
- 📐 **Price-per-m² + thumbnail** computed on every row for instant comparison
- 📍 **GPS + full address + nearest metro** (with minutes to station) on every listing for mapping and territory analysis
- 👤 **Seller built in**: owner / agent / agency type, agent name, agency name and id on every listing — instant lead lists
- 🧾 **Self-documenting datasets**: every row carries a `metadata` object recording the exact search settings that produced it
- 📤 **Clean exports**: JSON, CSV, Excel, or the full REST API

### 🎬 Quick Start

Pick a scrape depth, choose how to search, set filters, and run. Results stream to the Apify dataset as clean JSON/CSV.

```bash
curl -X POST "https://api.apify.com/v2/acts/sian.agency~domclick-property-scraper/runs?token=[YOUR_TOKEN]" \
-H 'Content-Type: application/json' \
-d '{"scrapeMode":"overview","searchMode":"byCity","cities":["Москва"],"dealType":"sale","maxResults":50}'
````

### 🚀 Getting Started (3 Simple Steps)

#### Step 1: Pick your scrape depth

**Overview** for a fast price + spec scan, or **Detail** for the full per-property record.

#### Step 2: Choose how to search

**By city** (type a city like `Москва` or `spb` + sale/rent), **By search URL** (paste a Domclick search link — filters honored), or **By listing URL** (detail mode — drop in specific listings).

#### Step 3: Set filters & run

Property type, room count, price range, area range, sort, Max results — then hit **Start**.

**That's it! In under a minute, you'll have:**

- A clean dataset of Russian property listings (JSON / CSV / Excel)
- Price, price-per-m², rooms, area, floor, metro, GPS and seller on every row
- A repeatable, no-code real-estate data feed

### 📥 Input Configuration

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| scrapeMode | string | No | `overview` (fast & cheap) or `detail` (full fields). Default `overview`. |
| searchMode | string | No | `byCity`, `bySearchUrl`, or `byListingUrl` (detail only). |
| cities | array | No | City names, e.g. `["Москва","spb"]` (byCity). |
| dealType | string | No | `sale` (продажа) or `rent` (аренда). Default `sale`. |
| offerType | string | No | `flat`, `layout`, `complex` (new-build), `room`, `house`, `townhouse`. Default `flat`. |
| rooms | array | No | Room counts: `st` (studio), `1`, `2`, `3`, `4+`. Repeatable. |
| searchUrls | array | No | Domclick search URLs (bySearchUrl) — on-page filters honored. |
| listingUrls | array | No | Listing card URLs (detail / byListingUrl). |
| maxResults | integer | No | Max listings this run. FREE tier capped at 25. |
| priceFrom / priceTo | integer | No | Price range filter (₽). |
| areaFrom / areaTo | integer | No | Total-area range filter (m²). |
| sort | string | No | Sort order: newest, recently updated, price, price/m², quality index. |

**Example — by city:**

```json
{
  "scrapeMode": "overview",
  "searchMode": "byCity",
  "cities": ["Москва"],
  "dealType": "sale",
  "offerType": "flat",
  "rooms": ["1", "2"],
  "priceTo": 15000000,
  "maxResults": 200
}
```

**Example — by search URL:**

```json
{
  "scrapeMode": "overview",
  "searchMode": "bySearchUrl",
  "searchUrls": ["https://domclick.ru/search?deal_type=sale&category=living&offer_type=flat&aids=2299"],
  "maxResults": 100
}
```

### 📤 Output

Results are saved to the Apify dataset with **40+ fields** including:

| Field | Type | Description |
|-------|------|-------------|
| url | string | Listing URL |
| deal\_type | string | `sale` or `rent` |
| offer\_type | string | `flat`, `room`, `house`, new-build (`layout`/`complex`)… |
| price | integer | Asking price (₽) |
| price\_per\_sqm / price\_per\_sqm\_rub | integer | Price per m² (reported + computed) |
| monthly\_payment | integer | Estimated monthly mortgage payment (₽) |
| rooms | integer | Room count (0 = studio) |
| area\_total / area\_living / area\_kitchen | number | Areas (m²) |
| floor / floors\_total | integer | Floor + building height |
| build\_year / is\_new\_building | integer / bool | Construction year + new-build flag |
| city / region\_name / district | string | Location rollup |
| address / latitude / longitude | string / number | Address + GPS |
| metro / metro\_time / metro\_kind | string / int | Nearest station, minutes, on-foot vs transport |
| seller\_type / seller\_name / agency\_name / agency\_id | string / int | Seller (owner/agent/agency) |
| is\_rosreestr\_approved | bool | Ownership verified against the state property registry |
| description | string | *(detail)* full listing description |
| photos / photo\_count / thumbnail | array / int / string | Photo gallery |
| published\_date / updated\_date | string | Listing dates |

**Example:**

```json
{
  "id": 2077202486,
  "url": "https://domclick.ru/card/sale__flat__2077202486",
  "deal_type": "sale",
  "offer_type": "flat",
  "price": 11750000,
  "price_per_sqm": 323691,
  "price_per_sqm_rub": 323691,
  "rooms": 1,
  "area_total": 36.3,
  "floor": 12,
  "floors_total": 24,
  "city": "Москва",
  "district": "Люберецкие Поля м-н",
  "address": "Москва, ул. Покровская",
  "metro": "Некрасовка",
  "metro_time": 8,
  "latitude": 55.704888,
  "longitude": 37.91,
  "seller_type": "agency",
  "agency_name": "Этажи",
  "is_rosreestr_approved": true,
  "photo_count": 18
}
```

### 💼 Use Cases & Examples

#### 1. Market research & price benchmarking

**Analysts sizing a city or district market.**
**Input:** `byCity` Москва, sale, all flats. **Output:** thousands of listings with price-per-m². **Use:** build a live price index per district.

#### 2. Investment sourcing

**Investors hunting undervalued stock.**
**Input:** `byCity` + `priceTo` + `areaFrom`. **Output:** filtered listings with ₽/m² and GPS. **Use:** rank deals by price-per-m² vs district median.

#### 3. Lead generation for agents

**Agents building a private-seller / agency contact list.**
**Input:** Overview scan of a target area. **Output:** `seller_type` + `agency_name` on every row. **Use:** prospecting and competitive coverage.

#### 4. Proptech & valuation data feeds

**Proptech teams powering AVMs and dashboards.**
**Input:** scheduled `bySearchUrl` runs. **Output:** a clean, repeatable Russian real-estate data feed. **Use:** feed models without a Domclick API.

#### 5. Relocation & buyer search

**Relocation services shortlisting homes for clients.**
**Input:** `byCity` + filters + Detail mode. **Output:** full records with photos, description, metro distance. **Use:** curated client shortlists.

#### 6. Rental-yield & mortgage modelling

**Analysts modelling yields and affordability.**
**Input:** `byCity` rent + sale runs. **Output:** price, monthly\_payment, area, metro. **Use:** rent-vs-buy and yield maps per district.

### 🔗 Integration Examples

#### JavaScript/Node.js

```javascript
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_TOKEN' });

const run = await client.actor('sian.agency/domclick-property-scraper').call({
  scrapeMode: 'overview', searchMode: 'byCity', cities: ['Москва'], dealType: 'sale', maxResults: 50,
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items[0]);
```

#### Python

```python
from apify_client import ApifyClient
client = ApifyClient('YOUR_TOKEN')

run = client.actor('sian.agency/domclick-property-scraper').call(
    run_input={'scrapeMode': 'overview', 'searchMode': 'byCity', 'cities': ['Москва'], 'dealType': 'sale', 'maxResults': 50}
)

for item in client.dataset(run['defaultDatasetId']).iterate_items():
    print(item)
```

#### cURL

```bash
curl -X POST 'https://api.apify.com/v2/acts/sian.agency~domclick-property-scraper/runs?token=YOUR_TOKEN' \
-H 'Content-Type: application/json' \
-d '{"scrapeMode":"overview","searchMode":"byCity","cities":["Москва"],"dealType":"sale","maxResults":50}'
```

#### Automation Workflows (N8N / Zapier / Make)

1. **Trigger**: Schedule (e.g. daily) or webhook
2. **HTTP Request**: Call the actor API
3. **Process**: Handle the JSON results
4. **Action**: Save to a sheet/DB, notify, or transform

### 📊 Performance & Pricing

#### FREE Tier (Try It Now)

- **25 listings** per run — full feature access, same quality
- No credit card required
- Perfect for testing and small projects

#### PAID Tier (Production Ready)

- **Unlimited** listings per run
- Pay-per-result: only charged for listings actually extracted
- Overview and Detail priced separately so you only pay for the depth you use

💰 **Overview from $5 per 1,000 listings** — Detail priced separately for the full per-property record.

🔗 [View current pricing](https://apify.com/sian.agency/domclick-property-scraper?fpr=sian)

### ❓ Frequently Asked Questions

**Q: How many listings can I extract?**
A: FREE tier: 25 per run. PAID tier: unlimited.

**Q: Do I need a Domclick API key or account?**
A: No. There's no setup and no Domclick account or API key required.

**Q: What's the difference between Overview and Detail?**
A: Overview is a fast, low-cost scan covering the listing card's full field set. Detail adds living/kitchen area and the complete description — and includes everything Overview returns.

**Q: Can I use my own Domclick search filters?**
A: Yes — paste your search URL in `bySearchUrl` mode and the on-page filters (deal type, price, rooms, etc.) are honored. Make sure the URL includes the numeric area id (`aids=`) Domclick adds when you pick a city.

**Q: Which cities work by name?**
A: Any Russian city. Moscow and Saint Petersburg resolve instantly; others are resolved automatically from the city name you type (`Москва`, `Санкт-Петербург`, `Казань`, …).

**Q: What output formats are available?**
A: JSON, CSV, Excel — export directly from the Apify dataset.

**Q: Does it work for both sale and rent?**
A: Yes — set `dealType` to `sale` (продажа) or `rent` (аренда).

**Q: Is this legal?**
A: We only extract publicly available data. See the legal note below.

### 🐛 Troubleshooting

**No results returned**

- Check the city name spelling (try Cyrillic, e.g. `Москва`), or paste a working Domclick search URL instead.
- Loosen filters — an overly tight price/area range can return zero listings.

**Pasted search URL returns nothing**

- The URL must include the numeric area id (`aids=`). Build the search on Domclick (pick the city), then copy the full URL from the address bar.

**Fewer results than expected**

- FREE tier is capped at 25 listings per run. Upgrade to PAID for unlimited, or raise `maxResults`.

### ⚖️ Is it legal to scrape data?

Our actors are ethical and do not extract any private user data, such as email addresses, gender, or location. They only extract what the user has chosen to share publicly. We therefore believe that our actors, when used for ethical purposes by Apify users, are safe.

However, you should be aware that your results could contain personal data. Personal data is protected by the **GDPR** in the European Union and by other regulations around the world. You should not scrape personal data unless you have a legitimate reason to do so. If you're unsure whether your reason is legitimate, consult your lawyers.

You can also read Apify's blog post on the [legality of web scraping](https://blog.apify.com/is-web-scraping-legal/).

*This is an independent tool and is not affiliated with, endorsed by, or sponsored by Domclick (ДомКлик), Sberbank, or their affiliates. "Domclick" and "ДомКлик" are trademarks of their respective owners.*

### 🤝 Support

[![Telegram Support](https://img.shields.io/badge/Telegram-Support%20Group-0088cc?logo=telegram)](https://t.me/+vyh1sRE08sAxMGRi)

**Join our active support community**

- For issues or questions, open an issue from the actor page
- Check the [SIÁN Agency Store](https://apify.com/sian.agency?fpr=sian) for more automation tools
- 📧 <apify@sian-agency.online>

***

**Built by [SIÁN Agency](https://www.sian-agency.online)** | **[More Tools](https://apify.com/sian.agency?fpr=sian)**

# Actor input Schema

## `scrapeMode` (type: `string`):

⚡ **OVERVIEW** — fast. Pulls every listing card on the search results (price, price/m², rooms, area, floor, address, metro, GPS, photos, seller).

🔍 **DETAIL** — full single-card fields per listing (living/kitchen area, full description). Slower and priced higher per result.

**TIP:** Start with Overview — upgrade to Detail only when you need the extra fields.

## `searchMode` (type: `string`):

🧭 How to tell the scraper what to fetch:

- **By city** — type one or more city names (e.g. "Москва", "spb"). Combine with the filters below.
- **By search URL** — paste a Domclick search-results URL; every on-page filter in the URL is honored.
- **By listing URL** — Detail mode only: paste listing card URLs to fetch specific properties.

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

📍 City names, e.g. "Москва", "Санкт-Петербург", "spb". Used when **Search by = By city**.

**TIP:** Add several at once — each city is searched in turn until **Max results** is reached.

## `dealType` (type: `string`):

🏷️ **Sale** or **Rent**. Applies to By city searches.

## `offerType` (type: `string`):

🏠 Property type for By city searches. **Flat** = secondary market; **New-build (layout/complex)** = primary market from developers.

## `rooms` (type: `array`):

🚪 Optional. Filter By city searches by room count. Accepts "st" (studio), "1", "2", "3", "4+". Repeatable — add several to widen the search.

## `searchUrls` (type: `array`):

🔗 Domclick search-results URLs to scrape. Used when **Search by = By search URL**.

**TIP:** Build any search on Domclick (set your filters, sort order), then copy the URL from the address bar — every on-page filter is honored. The URL must include the numeric area id (`aids=`).

**BULK EDIT:** Click "Bulk edit" to paste many URLs, one per line.

## `listingUrls` (type: `array`):

🆔 **Detail mode only.** Domclick listing card URLs (e.g. https://domclick.ru/card/sale\_\_flat\_\_123456789).

**BULK EDIT:** Click "Bulk edit" to paste many URLs, one per line.

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

↕️ Optional sort order for By city searches. Leave on **Default (relevance)** for Domclick's own ranking.

## `maxResults` (type: `integer`):

🔢 Maximum listings to extract this run.

- **FREE tier:** capped at 25 listings per run.
- **PAID tier:** unlimited — set as high as you need.

## `priceFrom` (type: `integer`):

💰 Optional. Minimum price filter in rubles (By city mode).

## `priceTo` (type: `integer`):

💰 Optional. Maximum price filter in rubles (By city mode).

## `areaFrom` (type: `integer`):

📐 Optional. Minimum total area in m² (By city mode).

## `areaTo` (type: `integer`):

📐 Optional. Maximum total area in m² (By city mode).

## Actor input object example

```json
{
  "scrapeMode": "overview",
  "searchMode": "byCity",
  "cities": [
    "Москва",
    "Санкт-Петербург"
  ],
  "dealType": "sale",
  "offerType": "flat",
  "rooms": [
    "1",
    "2"
  ],
  "searchUrls": [
    "https://domclick.ru/search?deal_type=sale&category=living&offer_type=flat&aids=2299"
  ],
  "listingUrls": [
    "https://domclick.ru/card/sale__flat__2076903571"
  ],
  "sort": "",
  "maxResults": 100
}
```

# Actor output Schema

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

Scraped Domclick listings (JSON/CSV/Excel).

# 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 = {
    "cities": [
        "Москва"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("sian.agency/domclick-property-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 = { "cities": ["Москва"] }

# Run the Actor and wait for it to finish
run = client.actor("sian.agency/domclick-property-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 '{
  "cities": [
    "Москва"
  ]
}' |
apify call sian.agency/domclick-property-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Domclick Scraper — Russia Property Data & API",
        "description": "Domclick (ДомКлик) scraper & real estate data API for Russia's Sberbank property portal. Sale & rent listings in every city: price, price/m², rooms, area, floor, build year, address, metro, GPS, photos, seller — clean JSON/CSV. Fast overview or full detail. No-code.",
        "version": "1.0",
        "x-build-id": "zbGbtnaFIt8jSen08"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/sian.agency~domclick-property-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-sian.agency-domclick-property-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/sian.agency~domclick-property-scraper/runs": {
            "post": {
                "operationId": "runs-sync-sian.agency-domclick-property-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/sian.agency~domclick-property-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-sian.agency-domclick-property-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": {
                    "scrapeMode": {
                        "title": "⚡ Scrape mode",
                        "enum": [
                            "overview",
                            "detail"
                        ],
                        "type": "string",
                        "description": "⚡ **OVERVIEW** — fast. Pulls every listing card on the search results (price, price/m², rooms, area, floor, address, metro, GPS, photos, seller).\n\n🔍 **DETAIL** — full single-card fields per listing (living/kitchen area, full description). Slower and priced higher per result.\n\n**TIP:** Start with Overview — upgrade to Detail only when you need the extra fields.",
                        "default": "overview"
                    },
                    "searchMode": {
                        "title": "🧭 Search by",
                        "enum": [
                            "byCity",
                            "bySearchUrl",
                            "byListingUrl"
                        ],
                        "type": "string",
                        "description": "🧭 How to tell the scraper what to fetch:\n\n- **By city** — type one or more city names (e.g. \"Москва\", \"spb\"). Combine with the filters below.\n- **By search URL** — paste a Domclick search-results URL; every on-page filter in the URL is honored.\n- **By listing URL** — Detail mode only: paste listing card URLs to fetch specific properties.",
                        "default": "byCity"
                    },
                    "cities": {
                        "title": "📍 Cities",
                        "type": "array",
                        "description": "📍 City names, e.g. \"Москва\", \"Санкт-Петербург\", \"spb\". Used when **Search by = By city**.\n\n**TIP:** Add several at once — each city is searched in turn until **Max results** is reached.",
                        "default": [
                            "Москва"
                        ],
                        "items": {
                            "type": "string"
                        }
                    },
                    "dealType": {
                        "title": "🏷️ Deal type",
                        "enum": [
                            "sale",
                            "rent"
                        ],
                        "type": "string",
                        "description": "🏷️ **Sale** or **Rent**. Applies to By city searches.",
                        "default": "sale"
                    },
                    "offerType": {
                        "title": "🏠 Property type",
                        "enum": [
                            "flat",
                            "layout",
                            "complex",
                            "room",
                            "house",
                            "townhouse"
                        ],
                        "type": "string",
                        "description": "🏠 Property type for By city searches. **Flat** = secondary market; **New-build (layout/complex)** = primary market from developers.",
                        "default": "flat"
                    },
                    "rooms": {
                        "title": "🚪 Rooms (optional)",
                        "type": "array",
                        "description": "🚪 Optional. Filter By city searches by room count. Accepts \"st\" (studio), \"1\", \"2\", \"3\", \"4+\". Repeatable — add several to widen the search.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "searchUrls": {
                        "title": "🔗 Search URLs",
                        "type": "array",
                        "description": "🔗 Domclick search-results URLs to scrape. Used when **Search by = By search URL**.\n\n**TIP:** Build any search on Domclick (set your filters, sort order), then copy the URL from the address bar — every on-page filter is honored. The URL must include the numeric area id (`aids=`).\n\n**BULK EDIT:** Click \"Bulk edit\" to paste many URLs, one per line.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "listingUrls": {
                        "title": "🆔 Listing URLs",
                        "type": "array",
                        "description": "🆔 **Detail mode only.** Domclick listing card URLs (e.g. https://domclick.ru/card/sale__flat__123456789).\n\n**BULK EDIT:** Click \"Bulk edit\" to paste many URLs, one per line.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "sort": {
                        "title": "↕️ Sort order (optional)",
                        "enum": [
                            "",
                            "qi",
                            "published",
                            "updated",
                            "price",
                            "square_price"
                        ],
                        "type": "string",
                        "description": "↕️ Optional sort order for By city searches. Leave on **Default (relevance)** for Domclick's own ranking.",
                        "default": ""
                    },
                    "maxResults": {
                        "title": "🔢 Max results",
                        "minimum": 1,
                        "type": "integer",
                        "description": "🔢 Maximum listings to extract this run.\n\n- **FREE tier:** capped at 25 listings per run.\n- **PAID tier:** unlimited — set as high as you need.",
                        "default": 100
                    },
                    "priceFrom": {
                        "title": "💰 Min price (₽)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "💰 Optional. Minimum price filter in rubles (By city mode)."
                    },
                    "priceTo": {
                        "title": "💰 Max price (₽)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "💰 Optional. Maximum price filter in rubles (By city mode)."
                    },
                    "areaFrom": {
                        "title": "📐 Min area (m²)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "📐 Optional. Minimum total area in m² (By city mode)."
                    },
                    "areaTo": {
                        "title": "📐 Max area (m²)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "📐 Optional. Maximum total area in m² (By city mode)."
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
