# Etagi Real Estate Scraper: Парсер Этажи (`getascraper/etagi-property-scraper`) Actor

Search Etagi real estate listings across Russian cities. Filter by price, area, rooms, floor, and build year. Get real address, wall material, mortgage rate, and new-build complex name per listing. Парсер Этажи for market research and lead generation.

- **URL**: https://apify.com/getascraper/etagi-property-scraper.md
- **Developed by:** [GetAScraper](https://apify.com/getascraper) (community)
- **Categories:** Real estate, Lead generation, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $19.80 / 1,000 property 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

## 🏘️ Etagi Real Estate Scraper: Парсер Этажи

<table width="100%">
<tr>
<td style="padding:24px 28px;background:#EEF2FF;border:1px solid #C7D2FE;border-top:4px solid #4338CA;border-radius:12px">
<span style="font-size:23px;font-weight:800;color:#1C1917;line-height:1.3">Every Etagi listing, with the address and mortgage math agents don't show you</span><br>
<span style="font-size:15px;color:#57534E;line-height:1.6">Search Etagi.com by city, price, rooms, floor, and build year, and get the real street address, wall material, and mortgage rate on every result.</span>
</td>
</tr>
</table>

<table width="100%">
<tr>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #C7D2FE;border-radius:10px 0 0 10px;vertical-align:top">
<span style="font-size:15px;font-weight:800;color:#4338CA">📍 Real street addresses</span><br>
<span style="font-size:12px;color:#57534E">Not just a district ID, the full address on every listing</span>
</td>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #C7D2FE;border-left:none;vertical-align:top">
<span style="font-size:15px;font-weight:800;color:#4338CA">🏗️ Wall material included</span><br>
<span style="font-size:12px;color:#57534E">Filter out panel builds before wasting a viewing</span>
</td>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #C7D2FE;border-left:none;vertical-align:top">
<span style="font-size:15px;font-weight:800;color:#4338CA">💳 Mortgage rate per listing</span><br>
<span style="font-size:12px;color:#57534E">See financing cost without a separate calculator</span>
</td>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #C7D2FE;border-left:none;border-radius:0 10px 10px 0;vertical-align:top">
<span style="font-size:15px;font-weight:800;color:#4338CA">🏢 New-build complex names</span><br>
<span style="font-size:12px;color:#57534E">Spot the development, not just the address</span>
</td>
</tr>
</table>

Get real estate listings from Etagi across major Russian cities, with prices, square meter costs, coordinates, nearest metro stations, building construction types, and image grids.

---

### 🔍 What does Etagi Scraper do?

This tool helps you extract comprehensive property listings from Etagi, Russia's leading real estate platform. It retrieves properties for sale or rent, including apartments, rooms, houses, land plots, garages, and commercial real estate.

The scraper extracts deep listings including exact property sizes, price historical drops, building construction years, closest metro stations with transit times, coordinates, and full image galleries. It runs fast and securely with automated connection handling, helping you build databases for market analysis or lead generation.

---

### 💼 Why use Etagi Scraper?

Real estate agents, property developers, and market analysts can leverage this data in several ways:

- **Market analysis:** Track real estate prices, square meter costs, and price trends across different Russian regions.
- **Lead generation:** Locate properties for sale or rent to connect with real estate agencies or independent sellers.
- **Transit analysis:** Check property distances to metro stations, public transport access, and neighborhood amenities.
- **Investment research:** Analyze construction state, building completion years, and property attributes to assess valuation.

---

### 🚶 How to use Etagi Scraper

To begin extracting real estate listings, follow these simple steps:

<table width="100%">
<tr>
<td style="padding:16px 14px;width:33%;background:#EEF2FF;border:1px solid #C7D2FE;border-radius:10px 0 0 10px;vertical-align:top">
<span style="font-size:12px;font-weight:800;color:#4338CA;letter-spacing:1px">STEP 1</span><br>
<span style="font-size:14px;font-weight:700;color:#1C1917">Set your filters</span><br>
<span style="font-size:12px;color:#57534E">Choose city, price, rooms, floor, and build year.</span>
</td>
<td style="padding:16px 14px;width:33%;background:#EEF2FF;border:1px solid #C7D2FE;border-left:none;vertical-align:top">
<span style="font-size:12px;font-weight:800;color:#4338CA;letter-spacing:1px">STEP 2</span><br>
<span style="font-size:14px;font-weight:700;color:#1C1917">Run the search</span><br>
<span style="font-size:12px;color:#57534E">Results turn into structured rows in seconds.</span>
</td>
<td style="padding:16px 14px;width:33%;background:#EEF2FF;border:1px solid #C7D2FE;border-left:none;border-radius:0 10px 10px 0;vertical-align:top">
<span style="font-size:12px;font-weight:800;color:#4338CA;letter-spacing:1px">STEP 3</span><br>
<span style="font-size:14px;font-weight:700;color:#1C1917">Get the full picture</span><br>
<span style="font-size:12px;color:#57534E">Address, wall material, mortgage rate, and price history per listing.</span>
</td>
</tr>
</table>

---

### 📥 Input

The tool accepts the following parameters to customize your search:

| Field | Type | Required | Description |
|---|---|---|---|
| `startUrls` | array of URLs | No | Direct Etagi search page links. These override the structured dropdown configurations. |
| `propertyType` | enum | No | Select target property types like apartments, houses, land, or garages. |
| `citySlug` | text | No | The city subdomain prefix. Examples include "msk" for Moscow and "tumen" for Tyumen. |
| `priceMin` | integer | No | Only return listings priced at or above this amount, in Russian rubles. |
| `priceMax` | integer | No | Only return listings priced at or below this amount, in Russian rubles. |
| `areaMin` | integer | No | Only return listings with total area at or above this value, in square meters. |
| `areaMax` | integer | No | Only return listings with total area at or below this value, in square meters. |
| `roomsCount` | array of enums | No | Filter by room count (1, 2, 3, or 4+). Leave empty for all room counts. |
| `floorMin` | integer | No | Only return listings on or above this floor. |
| `floorMax` | integer | No | Only return listings on or below this floor. |
| `buildYearMin` | integer | No | Only return listings in buildings completed in or after this year. |
| `buildYearMax` | integer | No | Only return listings in buildings completed in or before this year. |
| `sortBy` | enum | No | Result order: price, price per m², area, newest first, or recently discounted. |
| `maxItems` | integer | No | Maximum number of property listings to save. |
| `proxyConfiguration` | object | No | Custom proxy settings to ensure seamless connection routing. |

---

### 📤 Output

The dataset items are saved to your storage in real time. You can download the extracted listings in formats such as JSON, Excel, CSV, or HTML.

Here is a simplified JSON sample of the extracted real estate listings:

```json
{
  "objectId": "3612934",
  "ticketId": "10853794",
  "cityId": 10,
  "districtId": 4035,
  "dealType": "sale",
  "propertyType": "flat",
  "price": 5490000,
  "pricePerSquareMeter": 62245,
  "oldPrice": 6400000,
  "mortgageRate": 16.3,
  "latitude": 55.706644,
  "longitude": 37.676304,
  "city": "Москва",
  "district": "Южнопортовый",
  "street": "6-я Кожуховская",
  "address": "6-я Кожуховская, 18к1",
  "nearestMetroName": "станция Дубровка",
  "nearestMetroDistance": 600,
  "nearestMetroTime": 9,
  "wallMaterial": "Кирпичные, монолитно-каркасные",
  "isNewBuilding": false,
  "floor": 1,
  "floorsTotal": 5,
  "area": 88.2,
  "rooms": 3,
  "isStudio": false,
  "balconyType": "no_balcon",
  "isExclusive": false,
  "onlineShowing": true,
  "hasVideos": false,
  "image": "https://cdn.esoft.digital/content/cluster/ecoobjects/da/8d37b026998bda7b2ab918e96c780058e5a8e8da.jpeg",
  "propertyUrl": "https://msk.etagi.com/realty/10853794/",
  "scrapedAt": "2026-07-09T06:46:34.020Z"
}
````

***

### 📋 Data table

Here are the main fields included in each extracted real estate listing:

| Field | Type | Description |
|---|---|---|
| `objectId` | string | Unique property identifier assigned by the platform. |
| `ticketId` | string | Unique listing ticket ID. |
| `dealType` | string | The category of the deal, such as SELL or RENT. |
| `propertyType` | string | The classification of property, like apartments, houses, or land. |
| `price` | number | Absolute listing price in RUB. |
| `pricePerSquareMeter` | number | Price per square meter calculated from price and total area. |
| `oldPrice` | number | Previous price, present only on listings that have had a price drop. |
| `mortgageRate` | number | Estimated mortgage interest rate for the listing, as a percentage. |
| `city` | string | City name. |
| `district` | string | District or neighborhood name. |
| `street` | string | Street name. |
| `address` | string | Full street address. |
| `nearestMetroName` | string | Name of the nearest subway or metro station. |
| `nearestMetroTime` | number | Walking or driving time to the nearest station in minutes. |
| `builtYear` | number | Construction completion year of the building. |
| `wallMaterial` | string | Building wall material, such as brick or monolithic. |
| `newBuildingComplex` | string | Name of the new-build residential complex, present only for new construction. |
| `isNewBuilding` | boolean | True if the listing is a new-construction property. |
| `area` | number | Total property area measured in square meters. |
| `rooms` | number | Total number of rooms in the listing. |
| `isStudio` | boolean | True if the listing is a studio apartment. |
| `balconyType` | string | Balcony or loggia type, when present. |
| `listingTier` | string | Premium placement tier for the listing, when applicable. |
| `propertyUrl` | string | Direct web link to the property page. |

***

### 💰 Pricing

Our pricing model is completely transparent and operates on a pay per event basis. There are no subscription fees or monthly charges. You only pay for the real estate listings successfully extracted and added to your dataset. If a search query yields no results, the run costs nothing.

***

### ⭐ Enjoying Etagi Scraper?

<table width="100%">
<tr>
<td style="padding:20px 24px 14px;background:#EEF2FF;border:1px solid #C7D2FE;border-left:5px solid #4338CA;border-radius:10px 10px 0 0">
<span style="font-size:20px;letter-spacing:4px">⭐ ⭐ ⭐ ⭐ ⭐</span><br>
<span style="font-size:17px;font-weight:800;color:#1C1917">If this saved you from browsing Etagi listings by hand, a rating helps a lot.</span><br>
<span style="font-size:14px;color:#57534E">A 5-star rating takes 10 seconds and helps other real estate researchers and investors find it. Your feedback also tells us what to build next.</span>
</td>
</tr>
<tr>
<td style="padding:0;background:#4338CA;border:1px solid #C7D2FE;border-top:none;border-radius:0 0 10px 10px;text-align:center">
<a href="https://apify.com/getascraper/etagi-property-scraper/reviews" style="display:block;padding:13px 16px;color:#FFFFFF;text-decoration:none;font-weight:800;font-size:15px;letter-spacing:0.3px">★&nbsp;&nbsp;Rate this Actor on Apify</a>
</td>
</tr>
</table>

***

### ❓ FAQ, disclaimers, and support

- **Is Etagi scraping legal?**
  Yes. This tool extracts publicly accessible listings. We advise checking regional data localization and privacy regulations if you process personal names or agent details downstream.
- **Can I filter by specific price ranges?**
  Yes. You can use direct search links in the start URLs parameter to filter by custom boundaries like price, area, building materials, or floor level.
- **How can I get support or report issues?**
  If you have feedback, questions, or custom extraction requirements, open a ticket in the Issues tab of this page and our support team will assist you quickly.

### 🔗 Other actors

- [Yandex Realty Scraper: Яндекс Недвижимость](https://apify.com/getascraper/yandex-realty-scraper) ↗ - extracts Russian real estate listings from Yandex Nedvizhimost.
- [Avito Auto Scraper: Парсер Авито Авто](https://apify.com/getascraper/avito-auto-scraper) ↗ - pulls used car listings from Russia's largest classifieds site.
- [ss.com Latvia Scraper](https://apify.com/getascraper/ss-com-latvia-scraper) ↗ - collects classifieds and property listings from Latvia's ss.com.
- [CommercialRealEstate.com.au scraper: prices, agents, and deal status ready for your spreadsheet](https://apify.com/getascraper/commercialrealestate-au-scraper) ↗ - extracts commercial property listings with agent and pricing details.
- [Property24 scraper: real estate listings, prices, and broker leads](https://apify.com/getascraper/property24-scraper) ↗ - pulls property listings and agent contacts across African markets.

# Actor input Schema

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

Provide direct Etagi search URLs (e.g., https://msk.etagi.com/realty/). These override the structured configurations below.

## `propertyType` (type: `string`):

Select the target property classification and deal format.

## `citySlug` (type: `string`):

The city subdomain prefix. Examples: 'msk' (Moscow), 'tumen' (Tyumen), 'spb' (St. Petersburg), 'ekb' (Yekaterinburg). Leave empty if Start URLs are supplied.

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

Only extract listings priced at or above this value. 0 = no minimum.

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

Only extract listings priced at or below this value. 0 = no limit.

## `areaMin` (type: `integer`):

Only extract listings with total area at or above this value. 0 = no minimum.

## `areaMax` (type: `integer`):

Only extract listings with total area at or below this value. 0 = no limit.

## `roomsCount` (type: `array`):

Filter by number of rooms. Leave empty to include all room counts.

## `floorMin` (type: `integer`):

Only extract listings on this floor or higher. 0 = no minimum.

## `floorMax` (type: `integer`):

Only extract listings on this floor or lower. 0 = no limit.

## `buildYearMin` (type: `integer`):

Only extract listings in buildings constructed in this year or later. 0 = no minimum.

## `buildYearMax` (type: `integer`):

Only extract listings in buildings constructed in this year or earlier. 0 = no limit.

## `sortBy` (type: `string`):

Order in which Etagi returns matching listings.

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

Maximum number of property listing records to extract.

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

Proxy settings. Russian residential proxies are highly recommended to bypass edge-level geo-blocking on etagi.com.

## Actor input object example

```json
{
  "propertyType": "realty",
  "citySlug": "msk",
  "priceMin": 0,
  "priceMax": 0,
  "areaMin": 0,
  "areaMax": 0,
  "roomsCount": [],
  "floorMin": 0,
  "floorMax": 0,
  "buildYearMin": 0,
  "buildYearMax": 0,
  "sortBy": "default",
  "maxItems": 100,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "RU"
  }
}
```

# Actor output Schema

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

No description

# 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 = {
    "propertyType": "realty",
    "citySlug": "msk",
    "priceMin": 0,
    "priceMax": 0,
    "areaMin": 0,
    "areaMax": 0,
    "roomsCount": [],
    "floorMin": 0,
    "floorMax": 0,
    "buildYearMin": 0,
    "buildYearMax": 0,
    "sortBy": "default",
    "maxItems": 100,
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ],
        "apifyProxyCountry": "RU"
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("getascraper/etagi-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 = {
    "propertyType": "realty",
    "citySlug": "msk",
    "priceMin": 0,
    "priceMax": 0,
    "areaMin": 0,
    "areaMax": 0,
    "roomsCount": [],
    "floorMin": 0,
    "floorMax": 0,
    "buildYearMin": 0,
    "buildYearMax": 0,
    "sortBy": "default",
    "maxItems": 100,
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
        "apifyProxyCountry": "RU",
    },
}

# Run the Actor and wait for it to finish
run = client.actor("getascraper/etagi-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 '{
  "propertyType": "realty",
  "citySlug": "msk",
  "priceMin": 0,
  "priceMax": 0,
  "areaMin": 0,
  "areaMax": 0,
  "roomsCount": [],
  "floorMin": 0,
  "floorMax": 0,
  "buildYearMin": 0,
  "buildYearMax": 0,
  "sortBy": "default",
  "maxItems": 100,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "RU"
  }
}' |
apify call getascraper/etagi-property-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Etagi Real Estate Scraper: Парсер Этажи",
        "description": "Search Etagi real estate listings across Russian cities. Filter by price, area, rooms, floor, and build year. Get real address, wall material, mortgage rate, and new-build complex name per listing. Парсер Этажи for market research and lead generation.",
        "version": "0.2",
        "x-build-id": "9zQfxA1vLNPSU3TGE"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/getascraper~etagi-property-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-getascraper-etagi-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/getascraper~etagi-property-scraper/runs": {
            "post": {
                "operationId": "runs-sync-getascraper-etagi-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/getascraper~etagi-property-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-getascraper-etagi-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": {
                    "startUrls": {
                        "title": "Start URLs",
                        "type": "array",
                        "description": "Provide direct Etagi search URLs (e.g., https://msk.etagi.com/realty/). These override the structured configurations below.",
                        "items": {
                            "type": "object",
                            "required": [
                                "url"
                            ],
                            "properties": {
                                "url": {
                                    "type": "string",
                                    "title": "URL of a web page",
                                    "format": "uri"
                                }
                            }
                        }
                    },
                    "propertyType": {
                        "title": "Property Category",
                        "enum": [
                            "realty",
                            "realty_out",
                            "realty_rent",
                            "commerce"
                        ],
                        "type": "string",
                        "description": "Select the target property classification and deal format.",
                        "default": "realty"
                    },
                    "citySlug": {
                        "title": "City Subdomain Slug",
                        "type": "string",
                        "description": "The city subdomain prefix. Examples: 'msk' (Moscow), 'tumen' (Tyumen), 'spb' (St. Petersburg), 'ekb' (Yekaterinburg). Leave empty if Start URLs are supplied.",
                        "default": "msk"
                    },
                    "priceMin": {
                        "title": "Min Price (RUB)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Only extract listings priced at or above this value. 0 = no minimum.",
                        "default": 0
                    },
                    "priceMax": {
                        "title": "Max Price (RUB)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Only extract listings priced at or below this value. 0 = no limit.",
                        "default": 0
                    },
                    "areaMin": {
                        "title": "Min Total Area (m²)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Only extract listings with total area at or above this value. 0 = no minimum.",
                        "default": 0
                    },
                    "areaMax": {
                        "title": "Max Total Area (m²)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Only extract listings with total area at or below this value. 0 = no limit.",
                        "default": 0
                    },
                    "roomsCount": {
                        "title": "Room Count",
                        "type": "array",
                        "description": "Filter by number of rooms. Leave empty to include all room counts.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "studio",
                                "1",
                                "2",
                                "3",
                                "4+"
                            ],
                            "enumTitles": [
                                "Studio",
                                "1 room",
                                "2 rooms",
                                "3 rooms",
                                "4+ rooms"
                            ]
                        },
                        "default": []
                    },
                    "floorMin": {
                        "title": "Min Floor",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Only extract listings on this floor or higher. 0 = no minimum.",
                        "default": 0
                    },
                    "floorMax": {
                        "title": "Max Floor",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Only extract listings on this floor or lower. 0 = no limit.",
                        "default": 0
                    },
                    "buildYearMin": {
                        "title": "Min Building Year",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Only extract listings in buildings constructed in this year or later. 0 = no minimum.",
                        "default": 0
                    },
                    "buildYearMax": {
                        "title": "Max Building Year",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Only extract listings in buildings constructed in this year or earlier. 0 = no limit.",
                        "default": 0
                    },
                    "sortBy": {
                        "title": "Sort Order",
                        "enum": [
                            "default",
                            "priceasc",
                            "pricedesc",
                            "pricedecreased",
                            "datecreatedesc",
                            "pricem2asc",
                            "pricem2desc",
                            "squareasc",
                            "squaredesc"
                        ],
                        "type": "string",
                        "description": "Order in which Etagi returns matching listings.",
                        "default": "default"
                    },
                    "maxItems": {
                        "title": "Max Property Listings",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Maximum number of property listing records to extract.",
                        "default": 100
                    },
                    "proxyConfiguration": {
                        "title": "Proxy Configuration",
                        "type": "object",
                        "description": "Proxy settings. Russian residential proxies are highly recommended to bypass edge-level geo-blocking on etagi.com.",
                        "default": {
                            "useApifyProxy": true,
                            "apifyProxyGroups": [
                                "RESIDENTIAL"
                            ],
                            "apifyProxyCountry": "RU"
                        }
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
