Domclick RU Property Scraper - Listings, Prices & Agent Data avatar

Domclick RU Property Scraper - Listings, Prices & Agent Data

Pricing

from $1.50 / 1,000 listing results

Go to Apify Store
Domclick RU Property Scraper - Listings, Prices & Agent Data

Domclick RU Property Scraper - Listings, Prices & Agent Data

Extract property listings from domclick.ru, one of Russia’s largest real estate portals. Search by city or use listing/search URLs. Returns 70+ fields including price, area, rooms, floor, address, GPS, metro info, photos, seller and agency details, developer data, discounts, and mortgage flags.

Pricing

from $1.50 / 1,000 listing results

Rating

0.0

(0)

Developer

Abot API

Abot API

Maintained by Community

Actor stats

2

Bookmarked

13

Total users

1

Monthly active users

3 days ago

Last modified

Share

Domclick Scraper: Russian Property Listings with 70+ Fields

Domclick Scraper turns Domclick, one of the largest property portals in Russia, into structured data. Search any city or region with rich filters, or paste Domclick search and listing links directly. Every listing comes back with price, area, rooms, floor, build year, full address, GPS coordinates, metro stations with walking time, the photo gallery, the seller description, and seller and agency details. Turn on extra details for a market valuation estimate, nearby places, and agent deal stats, then export to JSON, CSV or Excel, or pull the results straight into your app through the API.

Why This Scraper?

  • 70+ fields per listing. Price, price per square meter, area, rooms, floor, build year, full address, GPS, metro stations, photos, seller and agency details, verification badges, and new building and developer info.
  • Two ways to start. Build a search from city, deal type, and filters, or paste Domclick search or listing links directly.
  • All of Russia. Any city or region name is resolved automatically, or paste an address GUID directly.
  • Sale and rent. Residential, commercial, and garage categories, plus secondary market flats and new building layouts.
  • Server side filters. Filter by rooms, price, area, and floor, and sort seven ways, so counts stay accurate.
  • Optional extra details. A market valuation estimate, nearby points of interest, and agent deal history, added on demand.
  • Built for monitoring. Incremental mode returns only new, updated, and delisted listings on a schedule, and a refused run fails loudly instead of returning an empty dataset.

Use Cases

  • Real estate marketplaces and PropTech products: mirror Domclick sale and rent listings across Russian cities into your own search index.
  • Market research and pricing analysis: track price, price per square meter, discounts, and mortgage flags across regions and property types over time.
  • New building and developer tracking: monitor layouts, developer information, and construction end dates for new residential complexes.
  • Lead generation for agents and agencies: build contact lists from seller and company details, filtered by verification and agency badges.
  • Price and inventory monitoring: schedule the actor with incremental mode to catch new, updated, and delisted properties without re-downloading everything each time.

Data You Get

Sample shape: values are illustrative placeholders, not from a live listing.

FieldExample
id"2077927661"
url"https://domclick.ru/card/sale__flat__2077927661"
dealType / offerType"sale" / "flat"
price / squarePrice34999000 / 466653
currency"RUB"
area / rooms75 / 2
floor / totalFloors14 / 17
buildYear2026
isApartmentfalse
address"Москва, набережная Примерная, 1 к1"
latitude / longitude55.0000 / 37.0000
nearestSubway / subwayWalkMinutes"Технопарк" / 12
subways[{ "name": "Технопарк", "walkMinutes": 12, "lineColors": ["#3EA332"] }]
description"Full seller description text appears here."
photoCount / photos11 / ["https://img.dmclk.ru/vitrina/owner/00/00/000.jpg"]
complexName / buildingEndYear"Sample Complex" / 2026
sellerName / isAgency / companyName"Agent Name" / true / "Sample Company"
isRosreestrApproved / isSberCollateraltrue / false
hasDiscount / discountValue / hasFamilyMortgagetrue / 500000 / true
publishedDate"2026-01-01T00:00:00+00:00"
marketPrice / minMarketPrice / maxMarketPrice30280000 / 25740000 / 34820000 (when extra details on)
agentDealsCompleted / poiCount31 / 50 (when extra details on)

Every listing also carries companyFiasId, sellerCasId, complexId, complexSlug, buildingReleased, buildingEndQuarter, hasPersonalDiscount, duplicatesOfferCount, tariffName, tariffDisplayName, isPlacementPaid, isExclusive, isAuction, assignmentSale, chatAvailable, hasAdvancePayment, hasRentCommission, transferMortgageRate, pessimizationType, updatedDate, offerRegion, offerRegionName, subdomain, buildingPath, localityPath, roomsOffered, status, isSold, isAgent, isSbolVerified, isEsiaVerified, hasVideo, monthlyPayment, rentShortPrice, rentLongPrice, sellerExperience, sellerPhotoUrl, query and scrapedAt, plus the complete seller and agency block passed through verbatim as sellerRaw and the source building or locality path metadata as seoRaw, so the full seller and agency record is always available even where it is not mapped to a named field.

How to Use

  1. Pick a mode: search (build from city and filters) or url (paste Domclick links).
  2. In search mode, fill in city, deal type, category, and any filters. In URL mode, paste search or listing links.
  3. Turn on Fetch extra details if you need the market valuation estimate, nearby places, and agent stats, and set Max listings and Max pages to control run size and cost.
  4. Click Start, then download the dataset as JSON, CSV or Excel, or read it through the API.

Search one city:

{
"mode": "search",
"locations": ["Москва"],
"dealType": "sale",
"category": "living",
"offerType": "flat",
"maxListings": 100
}

Search with filters:

{
"mode": "search",
"locations": ["Санкт-Петербург"],
"dealType": "sale",
"rooms": ["2", "3"],
"minPrice": 10000000,
"maxPrice": 25000000,
"minArea": 50,
"sortBy": "price_asc",
"maxListings": 200
}

Multiple cities with extra details (valuation, nearby places, agent stats):

{
"mode": "search",
"locations": ["Москва", "Сочи", "Казань"],
"fetchDetails": true,
"maxPages": 3
}

Paste a search link:

{
"mode": "url",
"urls": [
"https://domclick.ru/search?deal_type=rent&category=living&offer_type=flat&address=1d1463ae-c80f-4d19-9331-a1b68a85b553"
],
"maxListings": 50
}

Run it from your code

Python:

from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("abotapi/domclick-scraper").call(run_input={"mode": "search", "locations": ["Москва"], "maxListings": 50})
for listing in client.dataset(run["defaultDatasetId"]).iterate_items():
print(listing["address"], listing["price"])

JavaScript:

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });
const run = await client.actor('abotapi/domclick-scraper').call({ mode: 'search', locations: ['Москва'], maxListings: 50 });
const { items } = await client.dataset(run.defaultDatasetId).listItems();

Or connect it to Make, Zapier, n8n, Google Sheets or webhooks from the Integrations tab.

In url mode, pasting a Domclick search link (domclick.ru/search?...) walks the results exactly like search mode and returns full listings. Pasting a single listing card link (domclick.ru/card/...) is different: there is no public single-listing lookup endpoint, so the actor builds a minimal record from the listing id and adds only a market valuation estimate when one is available. Price, area, rooms, floor, address, photos, and seller details are not populated from a card link, because those fields only exist in the search results payload. To get full fields for a specific property, search for it instead.

maxPages, maxListings, and incremental mode

maxListings is an overall cap across every target (0 means unlimited); maxPages caps result pages per city or URL, about 30 listings each (empty means walk every page, still bounded by maxListings and end of catalogue detection). Under incremental mode, maxListings counts rows returned, not rows examined: a scheduled run keeps walking past listings it has already seen until it fills the quota with genuinely new ones. To make a quiet monitoring run return nothing and cost almost nothing when nothing changed, run uncapped (maxListings: 0, maxPages empty).

Resume and recurring updates

  • resumeFromRunId continues one interrupted, uncapped run in a new run: paste its run or dataset id and listings already collected there (matched by id) are skipped, so you only pay for the new ones. A platform migration or a Resurrect of a failed run also resumes automatically within the same run, with no input needed.
  • Incremental mode (incrementalMode) is for recurring runs over the same search. Each listing is classified NEW, UPDATED (with changedFields), UNCHANGED (suppressed and not billed unless emitUnchanged is on), REAPPEARED (was previously marked expired and is back), or EXPIRED (only after a run that scanned every result page for every target with no cap and no resume in effect, so a partial run can never wrongly mark a listing as gone). stateKey names or shares the saved baseline; leave it empty to derive one automatically from your search filters. incrementalMode and resumeFromRunId cannot both apply to a search that already has a saved incremental baseline.

Send results into your apps (MCP connectors)

Optionally pipe the scraped results into the apps you already use, via Model Context Protocol (MCP) connectors. This is an extra delivery step after the scrape: the Apify dataset is never changed.

What gets written to the connector: a condensed, human readable summary of each record, not the full JSON. Each item becomes one entry with a title and its key fields flattened to plain text. The complete record always stays in the Apify dataset.

  1. Authorize a connector once under Apify → Settings → Integrations (Notion, Linear, Airtable, or Apify).
  2. Select it in the "Pipe results into your apps" input field. If the picker is empty, you have not authorized a connector yet.
  3. For Notion, also set notionParentPageUrl to the page where items should be created.

The connection is mediated by Apify's MCP proxy, so this actor never sees your third party credentials. Leave the field empty to skip.

Input Parameters

ParameterTypeDefaultDescription
modestringsearchsearch builds a query from filters; url reads pasted links.
locationsarray["Москва"]City or region names, or an address GUID pasted directly. Search mode only.
dealTypestringsalesale or rent.
categorystringlivingliving, commercial, or garage.
offerTypestringflatflat (secondary market) or layout (new building plan).
roomsarray[]Any combination of studio, 1, 2, 3, 4+.
minPriceintegernoneMinimum price in rubles.
maxPriceintegernoneMaximum price in rubles.
minAreaintegernoneMinimum area in square meters.
maxAreaintegernoneMaximum area in square meters.
minFloorintegernoneMinimum floor.
maxFloorintegernoneMaximum floor.
sortBystringrelevancerelevance, newest, updated, price_asc, price_desc, price_per_m2_asc, price_per_m2_desc.
urlsarraynone (prefill: one sample search link)Domclick search or listing links. URL mode only.
fetchDetailsbooleanfalseAdds a market valuation estimate, nearby points of interest count, and agent deal stats. Loads each listing's card page, so it is slower and bills a per-listing surcharge; a listing whose card does not load in time keeps its base fields and is not charged for enrichment.
maxPagesintegernone (unset means unlimited)Result pages per city or URL, about 30 listings each. Leave empty to walk every result page; the item cap and end of catalogue detection still bound the run.
maxListingsinteger20Overall cap across all targets. 0 means unlimited.
proxyobjectApify Residential, country RUConnection settings. Domclick only accepts Russian residential connections.
resumeFromRunIdstringnoneA previous run id or dataset id to continue a full catalogue walk across separate runs.
incrementalModebooleanfalseRecurring monitoring: remembers the previous run of the same search and returns only changed listings on later runs.
stateKeystringnone (auto derived from your filters)Only used with incrementalMode. Identifies the saved baseline.
emitUnchangedbooleanfalseOnly used with incrementalMode. Also return, and bill, listings with no changes, marked changeType: UNCHANGED.
emitExpiredbooleanfalseOnly used with incrementalMode. Also return, and bill, a row for a listing no longer found, marked changeType: EXPIRED. Only fires after a complete, uncapped, non resumed scan.
mcpConnectorsarraynoneOptional: send a summary of each listing to apps you authorized under Integrations.
notionParentPageUrlstringnoneNotion connector only: page under which records are created.
maxNotifyListingsinteger50Cap on items written to each connector per run. Does not affect the dataset.

Output Example

Sample shape: values are illustrative placeholders, not from a live listing.

{
"id": "2077927661",
"url": "https://domclick.ru/card/sale__flat__2077927661",
"dealType": "sale",
"offerType": "flat",
"price": 34999000,
"squarePrice": 466653,
"currency": "RUB",
"area": 75,
"rooms": 2,
"floor": 14,
"totalFloors": 17,
"buildYear": 2026,
"address": "Москва, набережная Примерная, 1 к1",
"latitude": 55.0000,
"longitude": 37.0000,
"nearestSubway": "Технопарк",
"subwayWalkMinutes": 12,
"complexName": "Sample Complex",
"sellerName": "Agent Name",
"sellerCasId": 1234567,
"isAgency": true,
"companyName": "Sample Company",
"companyFiasId": "00000000-0000-0000-0000-000000000000",
"isRosreestrApproved": true,
"hasDiscount": true,
"discountValue": 500000,
"photoCount": 11,
"photos": ["https://img.dmclk.ru/vitrina/owner/00/00/000.jpg"],
"publishedDate": "2026-01-01T00:00:00+00:00",
"marketPrice": 30280000,
"minMarketPrice": 25740000,
"maxMarketPrice": 34820000,
"agentDealsCompleted": 31,
"poiCount": 50,
"query": "Москва",
"scrapedAt": "2026-01-01T00:00:00.000Z"
}

Plan Requirement

Domclick only accepts traffic from Russian residential connections, so this actor selects Apify Residential proxy with country RU by default under Connection. Residential proxy is available starting on the Starter plan. Without it, the site rejects requests and a run will likely return zero listings; the actor prints a clear warning at the start of a run when this happens.

FAQ

How much does it cost?

You pay per listing returned, plus a per-listing surcharge for listings that get extra details (when Fetch extra details is on, and always for a pasted listing card link that returns a valuation estimate). The Pricing tab shows the current rates. Use Max listings and Max pages to cap the cost of any run.

This actor collects only publicly available property listing data. You are responsible for how you use it: follow Domclick's terms and the laws that apply to you, and get legal advice if you plan commercial redistribution. Property facts such as price and area are generally facts, but photos and descriptions may be subject to third party rights.

Can I get only new or changed listings on a schedule?

Yes. Schedule the actor from the Schedules tab and turn on Incremental mode. Each run then returns only new, updated, reappeared, and, if enabled, expired listings, and unchanged ones are not billed by default.

There is no public endpoint to look up one listing by id with full details. A pasted search link walks results like search mode and returns full listings, but a pasted individual listing card link only returns the listing id, url, and a market valuation estimate when available. To get the full field set for a property, search for it by city and filters instead.

Why did my run fail instead of returning an empty dataset?

If every request is rejected, the run stops with a clear message so "no listings found" is never confused with "nothing could be read". The first request of a run also needs to clear a one time connection check, which can take up to about 75 seconds; give a run at least 5 minutes in Input > Run options. If the run is close to running out of time, it stops with an explanatory message instead of being cut off silently. A search that genuinely has no matches still finishes successfully with zero rows.

Can I use it with AI agents or MCP?

Yes. Call it from any Apify integration or MCP client, and use the connector field to push results into Notion, Linear or Airtable.

🔗 Want more real estate data?

Pair this actor with these related scrapers from the same team:

🏷️ Avito.ru Scraper
From $1/1K. Scrape structured listings from Avito.ru by region, category, filters, or...
🏠 Cian RU
Collect property listings from Cian.ru by search filters or direct URLs. Returns...
🛒 Ozon.ru Scraper
Extract structured product data from Ozon.ru, Russia’s largest marketplace. Search by...
💼 HH.ru Jobs Scraper
From $1/1K. Scrape HH.ru job listings with 50+ structured fields. Search by filters or...
🏷️ Wildberries Scraper
Scrape Wildberries marketplace: product search with prices (wallet vs retail), discounts...
🏠 Real Estate AU
Extract detailed Australian real estate property listings with 30+ structured fields...

👉 Browse all abotapi scrapers

💬 Support & custom scrapers

  • 🐞 Found a bug or a missing field? Open a ticket on the Issues tab. We usually reply within hours.
  • 🛠️ Need another site, extra fields or a private build? Email abotapi@proton.me or message Telegram @abotapi.
  • ⭐ Enjoying it? A quick review on the actor page helps other users find it.