# Flatinfo.ru Scraper — Moscow Property Data & API (`sian.agency/flatinfo-property-scraper`) Actor

Flatinfo.ru scraper and real estate data API for Moscow and Moscow Oblast. Sale and rent listings: flats, rooms, houses. Price, price/m2, rooms, area, floor, metro, GPS, photos, phone. Clean JSON/CSV.

- **URL**: https://apify.com/sian.agency/flatinfo-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 $1.70 / 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/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — 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

## Flatinfo.ru Scraper — Moscow listings to JSON

[![SIÁN Agency Store](https://img.shields.io/badge/Store-SI%C3%81N%20Agency-1AE392)](https://apify.com/sian.agency?fpr=sian) [![Cian](https://img.shields.io/badge/Store-Cian%20Property-1AE392)](https://apify.com/sian.agency/cian-property-scraper?fpr=sian) [![Avito](https://img.shields.io/badge/Store-Avito%20Property-1AE392)](https://apify.com/sian.agency/avito-property-scraper?fpr=sian) [![Yandex Realty](https://img.shields.io/badge/Store-Yandex%20Realty-1AE392)](https://apify.com/sian.agency/yandex-realty-scraper?fpr=sian)

#### Overview and detail modes for the same Moscow board

##### Sale and rent cards from Flatinfo.ru, with phones, photos and price per m²

### 🔎 What is the Flatinfo Scraper — and when should you use it?

The **Flatinfo Scraper** turns sale and rent listings from the Moscow classifieds board flatinfo.ru into clean, structured rows you can filter, export and feed straight into a spreadsheet, database or AI agent. No account, no portal API key, no browser automation to maintain.

**Use it when you need:** Moscow and Moscow Oblast property rows with price in roubles and price per square metre, rooms, total area, floor, nearest metro, address, cover photo and a contact phone in every row. Detail mode adds all photos, GPS coordinates, deposit and utilities for rent, and house characteristics such as build year and material. Rooms and houses sit next to flats on the same board, which makes it useful for owner-direct outreach in the Moscow region specifically.

**Use something else when:** you want nationwide Russian coverage, or a different Russian portal. Use [Cian Property Scraper](https://apify.com/sian.agency/cian-property-scraper?fpr=sian) for Russia's largest property portal — sale and rent listings nationwide with rich building data. Use [Avito Real Estate Scraper](https://apify.com/sian.agency/avito-property-scraper?fpr=sian) for Avito's Russian classifieds listings, including rooms, houses, commercial space and land. Use [Yandex Realty Scraper](https://apify.com/sian.agency/yandex-realty-scraper?fpr=sian) for Yandex Realty's sale and rent listings for a second Russian price feed. This actor reads flatinfo.ru only, a Moscow and Moscow Oblast board — listings in other regions or on other portals will not show up here.

### 🤖 Use with AI agents

Already connected to the [Apify MCP server](https://mcp.apify.com)? Just ask for this Actor by name: sian.agency/flatinfo-property-scraper

**Your agent can pay for its own runs.** This Actor is eligible for [agentic payments](https://docs.apify.com/platform/actors/publishing/monetize), so an agent can discover it, run it and settle the bill over [x402](https://www.x402.org/) (USDC on Base) or [Skyfire](https://www.skyfire.xyz/) — without an Apify account or API token of its own. Billing is the same either way: per successful row, never for errors.

Otherwise copy this prompt into Claude, ChatGPT, Cursor or any MCP-enabled assistant:

```text
I want Moscow-region property data from Flatinfo using the Apify Actor `sian.agency/flatinfo-property-scraper`.

Use it when I need: Moscow and Moscow Oblast property rows with price in roubles and price per square metre, rooms, total area, floor, nearest metro, address, cover photo and a contact phone in every row. Detail mode adds all photos, GPS coordinates, deposit and utilities for rent, and house characteristics such as build year and material. Rooms and houses sit next to flats on the same board, which makes it useful for owner-direct outreach in the Moscow region specifically.

Don't use it when: you want nationwide Russian coverage, or a different Russian portal — use cian-property-scraper or avito-property-scraper or yandex-realty-scraper instead.

How to call it: set `scrapeMode` — `overview` (core fields straight off the search cards, fast and cheap) or `detail` (fetches each listing page for photos, GPS, deposit, utilities and house characteristics). Then narrow the feed: `dealType` sale or rent, `region` all / moscow / moscow_oblast, plus optional `city`, `offerType` (flat, room, house, studio), `rooms`, price and area bounds, and `newBuild`. Alternatively paste Flatinfo search URLs into `searchUrls` (they override the builders and keep the URL's own filters), or in detail mode give exact listing URLs in `listingUrls`.

Start with this input:
{
  "scrapeMode": "overview",
  "dealType": "sale",
  "region": "moscow",
  "maxItems": 50
}

Ask me sale or rent, and whether the target is Moscow city or the oblast, then run the Actor and summarise the results as a table.
```

**Things you can ask your agent for:**

- *Pull one-room flats for rent inside the Moscow ring and rank districts by median rent per square metre.*
- *Compare new-build asking prices in Химки against resale flats in the same town.*
- *Collect owner-direct phone numbers for houses for sale across Moscow Oblast.*

Machine-readable API, MCP config and OpenAPI definition for this Actor are published at [apify.com/sian.agency/flatinfo-property-scraper.md](https://apify.com/sian.agency/flatinfo-property-scraper.md).

### 📋 Overview

**Flatinfo.ru is a dense Moscow classifieds board.** This actor turns those public cards into structured rows for analysts, agents and investors.

**Why teams run it:**

- ✅ **Same shape as our Cian actor**: union Moscow boards without remapping columns
- ⚡ **Overview is cheap**: 20 cards per listing page, phones already on the card
- 🎯 **Detail adds the rest**: all photos, GPS, deposit, utilities, house year
- 💰 **Pay per delivered row**: failed pages are not billed
- 💎 **Sale and rent**: one input switch
- ✨ **City and room filters**: keep only the slice you asked for

***

### ✨ Features

- 🏠 **Sale and rent**: `/prodaja.asp` and `/arenda.asp` in one actor
- ⚡ **Overview mode**: price, rooms, area, floor, metro, address, phone, cover photo
- 🔍 **Detail mode**: full photo set, GPS, characteristics, deposit, utilities
- 🛏️ **Room multi-select**: keep 1s, 2s, or mix them
- 🏙️ **Moscow / Oblast / all**: plus an optional city string
- 📞 **Phones on the card**: no extra click for overview outreach
- 📷 **Photos as URLs**: cover in overview, gallery in detail
- 📤 **JSON / CSV / Excel**: export from the dataset

***

### 🎬 Quick Start

Pick sale or rent. Set a max. Run. Download the dataset.

```bash
curl -X POST https://api.apify.com/v2/acts/sian.agency~flatinfo-property-scraper/runs?token=YOUR_TOKEN \
  -H 'Content-Type: application/json' \
  -d '{"scrapeMode":"overview","dealType":"rent","region":"moscow","maxItems":20}'
```

***

### 🚀 Getting Started (3 Simple Steps)

#### Step 1: Open the actor

Find [Flatinfo.ru Property Scraper](https://apify.com/sian.agency/flatinfo-property-scraper?fpr=sian) in the Store.

#### Step 2: Set the slice

Choose Overview or Detail, Sale or Rent, and a max row count.

#### Step 3: Run and export

Start the run. Open the dataset. Export JSON, CSV or Excel.

**That's it. In a couple of minutes you'll have:**

- Structured Moscow listings
- Phones and cover photos on overview rows
- A sample you can paste to a client

***

### 📥 Input Configuration

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| scrapeMode | string | No | `overview` or `detail` |
| dealType | string | No | `sale` or `rent` |
| region | string | No | `all`, `moscow`, `moscow_oblast` |
| city | string | No | Optional city string, e.g. Москва |
| offerType | string | No | `any`, `flat`, `room`, `house`, `studio` |
| rooms | array | No | Room counts to keep (1–6, 6 means 6+) |
| minPrice / maxPrice | integer | No | Price bounds in roubles |
| minArea / maxArea | integer | No | Total-area bounds in m² |
| newBuild | boolean | No | Keep new-build offers only |
| maxItems | integer | No | Cap for this run (default 50) |
| searchUrls | array | No | Pasted `/prodaja.asp` or `/arenda.asp` URLs — every URL is crawled, filters in the URL are kept |
| listingUrls | array | No | Detail-only listing URLs |

**Example:**

```json
{
  "scrapeMode": "overview",
  "dealType": "sale",
  "region": "moscow",
  "maxItems": 50
}
```

***

### 📤 Output

Results land in the default dataset. Core fields:

| Field | Type | Description |
|-------|------|-------------|
| propertyTitle | string | Listing headline |
| id | integer | Flatinfo listing id |
| url | string | Canonical listing URL |
| price | integer | Price in roubles |
| price\_per\_sqm | integer | ₽ per m² |
| rooms | integer | Room count |
| area\_total | number | Total area m² |
| floor | integer | Floor |
| city | string | City |
| metro | string | Nearest station |
| phone | string | Primary phone |
| photos | array | Photo URLs |
| lat / lng | number | GPS on detail rows |

***

### 💼 Use Cases & Examples

#### 1. Owner-direct rental outreach

**Agents who want phones on the card, not a second site.**

**Input:** rent + overview + Moscow + max 50
**Output:** rows with phone, metro, price
**Use:** call list for the morning

#### 2. Price-per-m² scan

**Analysts comparing districts.**

**Input:** sale + overview + city filter
**Output:** price, area, price\_per\_sqm
**Use:** a weekly comps sheet

#### 3. Detail pack for a shortlist

**Investors who already have URLs.**

**Input:** detail + listingUrls
**Output:** photos, GPS, house year, deposit
**Use:** IC memo attachments

#### 4. Cian + Flatinfo union

**Teams that already run our Cian actor.**

**Input:** same filters, this actor
**Output:** the same column names
**Use:** one warehouse table

#### 5. New-build watch

**Developers tracking rival ads.**

**Input:** sale + newBuild
**Output:** titles, prices, phones
**Use:** weekly competitor ping

***

### 🔗 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/flatinfo-property-scraper').call({
  scrapeMode: 'overview',
  dealType: 'rent',
  region: 'moscow',
  maxItems: 20,
});

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/flatinfo-property-scraper').call(
    run_input={'scrapeMode': 'overview', 'dealType': 'sale', 'maxItems': 20}
)

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

#### cURL

```bash
curl -X POST 'https://api.apify.com/v2/acts/sian.agency~flatinfo-property-scraper/runs?token=YOUR_TOKEN' \
-H 'Content-Type: application/json' \
-d '{"scrapeMode":"overview","dealType":"rent","maxItems":10}'
```

#### Automation Workflows (Zapier / Make)

1. **Trigger**: Schedule
2. **HTTP Request**: Call the actor
3. **Process**: Map JSON fields
4. **Action**: Sheet, CRM, or notify

***

### 📊 Performance & Pricing

#### FREE Tier (Try It Now)

- **25 listings** per run — full fields, same quality
- No credit card required
- Good for a first sample

#### PAID Tier (Production Ready)

- **Unlimited** listings per run
- Pay-per-result: only delivered rows
- Overview is the cheap headline event

💰 **Priced with our Cian actor** so a Moscow stack has one family of rates.

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

***

### ❓ Frequently Asked Questions

**Q: How many listings can I pull?**
A: FREE tier: 25 per run. PAID tier: set `maxItems` as high as you need.

**Q: Do I need a Flatinfo account?**
A: No. Only public listing pages are read.

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

**Q: Are phones on overview rows?**
A: Yes, when the search card shows them.

**Q: Is this legal?**
A: We only read public pages. See the legal section. You still need a lawful reason to store personal data.

**Q: How long does a run take?**
A: About one second per listing page, plus one second per detail page.

**Q: Cian or Flatinfo?**
A: Cian is Russia-wide. Flatinfo is Moscow and the Oblast, with phones on the card.

***

### 🐛 Troubleshooting

**Empty dataset**

- Broaden region to `all`
- Drop the city filter
- Confirm dealType matches the URLs you pasted

**Some rows missing photos**

- Overview only has the cover. Switch to Detail for the gallery.

**A run stopped early**

- FREE tier stops at 25. Raise `maxItems` on a paid plan.

***

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

Our actors do not extract private user data that the site hides. They only extract what the listing already shows in public. Used for a lawful purpose, that is the same standard Apify documents for Store actors.

Results can still contain personal data (a phone on a card). GDPR and other rules may apply. If you are not sure your purpose is lawful, ask a lawyer.

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

***

### ⚠️ Trademark Disclaimer

Flatinfo and Flatinfo.ru are trademarks of their respective owners. This actor is an independent tool. It is not affiliated with, endorsed by, or sponsored by Flatinfo.ru.

***

### 🤝 Support

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

**Join our support community**

- Open an issue on the actor page
- More tools: [SIÁN Agency Store](https://apify.com/sian.agency?fpr=sian)
- 📧 <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 and cheap. Pulls every core field from Flatinfo search cards (price, rooms, area, floor, metro, address, phone, cover photo).

🔍 **DETAIL** — full fields per listing from the listing page: all photos, house characteristics, deposit, utilities, GPS.

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

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

🤝 Whether to scrape properties **for sale** or **for rent**.

## `region` (type: `string`):

🌍 Market to search. **All** paginates the main listing feed. **Moscow** and **Moscow Oblast** narrow the feed the same way the site's own navigation does.

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

🏙️ Optional free-text city or settlement to keep, e.g. `Москва`, `Химки`, `Шатура`. Applied after the listing card is parsed.

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

🏠 Optional. Restrict to one property kind.

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

🛏️ Optional. Room counts to keep — add one or more (1–6). Use **6** for 6+ rooms. Example: `["1", "2"]` returns 1- and 2-room listings.

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

🔗 Optional Flatinfo search-results URLs (`/prodaja.asp` or `/arenda.asp`). Filters baked into the URL are preserved. When set, these override the region/deal builders.

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

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

🆔 **Detail mode only.** Specific Flatinfo listing URLs (`/prodaja_kvartir.asp?id=` or `/arenda_kvartir.asp?id=`) to fetch as full property pages.

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

## `maxItems` (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.

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

💸 Optional. Minimum price filter in roubles.

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

💰 Optional. Maximum price filter in roubles.

## `minArea` (type: `integer`):

📐 Optional. Minimum total area in square metres.

## `maxArea` (type: `integer`):

📐 Optional. Maximum total area in square metres.

## `newBuild` (type: `boolean`):

🏗️ Restrict to new-build (новостройки) offers when the listing feed supports it.

## Actor input object example

```json
{
  "scrapeMode": "overview",
  "dealType": "sale",
  "region": "all",
  "city": "Москва",
  "offerType": "any",
  "searchUrls": [
    "https://flatinfo.ru/prodaja.asp"
  ],
  "listingUrls": [
    "https://flatinfo.ru/arenda_kvartir.asp?id=17427971"
  ],
  "maxItems": 50
}
```

# Actor output Schema

## `listings` (type: `string`):

Scraped Flatinfo.ru listings (JSON/CSV/Excel).

## `htmlReport` (type: `string`):

HTML run summary with row counts, charges, and any failed listings.

# 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 = {};

// Run the Actor and wait for it to finish
const run = await client.actor("sian.agency/flatinfo-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 = {}

# Run the Actor and wait for it to finish
run = client.actor("sian.agency/flatinfo-property-scraper").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{}' |
apify call sian.agency/flatinfo-property-scraper --silent --output-dataset

```

## MCP server setup

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

```

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

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/t0YfLPJC2DwBPQnfm/builds/HwfWjojG4gG5EIgfb/openapi.json
