# MyHome.ge Scraper — Georgia Real Estate (`sian.agency/myhome-ge-property-scraper`) Actor

Extract MyHome.ge listings: price in GEL, USD and EUR, price per m², area, rooms, floor, address, GPS and seller. Tbilisi, Batumi and all Georgia. JSON or CSV.

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

## Pricing

from $2.20 / 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/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## 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.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## MyHome.ge Scraper — Tbilisi & Georgia Property Listings 🚀

[![SIÁN Agency Store](https://img.shields.io/badge/Store-SI%C3%81N%20Agency-1AE392)](https://apify.com/sian.agency?fpr=sian) [![Cian Property Scraper](https://img.shields.io/badge/Store-Cian%20Property-0468FF)](https://apify.com/sian.agency/cian-property-scraper?fpr=sian) [![Cian Agent Scraper](https://img.shields.io/badge/Store-Cian%20Agents-0468FF)](https://apify.com/sian.agency/cian-agent-scraper?fpr=sian) [![Otodom Property Scraper](https://img.shields.io/badge/Store-Otodom%20Poland-1AE392)](https://apify.com/sian.agency/otodom-property-scraper?fpr=sian)

#### 🎉 Georgia's number-one property portal as a table — 351,000 live adverts, each priced in lari, dollars and euro

##### Built for analysts, estate agencies and investors working Tbilisi, Batumi and the regions

### 🔎 What is the MyHome.ge Georgia Property Scraper — and when should you use it?

The **MyHome.ge Georgia Property Scraper** turns public MyHome.ge property adverts from anywhere in Georgia 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:** Georgian sale, rental, lease and daily-rent adverts as rows. The asking price comes back in lari, US dollars and euros at once, and so does the price per square metre in each of the three, because MyHome publishes all six figures itself. Each row carries floor area, rooms, bedrooms, floor, floors in the building and building status. The seller's own advert text arrives in full rather than as a teaser. Location comes as the street address the seller published, the city, the district and, for Tbilisi, the micro-district. The seller block says whether a private owner, an agency, a broker or a developer placed the advert, and carries that account's logo. Switch on full details and each row also gains GPS coordinates, the Georgian cadastral code that joins a listing to the national property register, the true publication date, a view counter and how many live adverts that seller holds. The same pass adds the seller's phone as the portal publishes it, the renovation condition, the heating, hot-water, parking and wall-material systems, ceiling height, balcony and yard areas, and the full amenity list.

**Use something else when:** the property is not in Georgia. Use [Cian Scraper](https://apify.com/sian.agency/cian-property-scraper?fpr=sian) for Russia's leading property portal, with the same sale-and-rent row shape. Use [Cian Agent Scraper](https://apify.com/sian.agency/cian-agent-scraper?fpr=sian) for the Russian agencies behind the adverts, with their live inventory. Use [Otodom Property Scraper](https://apify.com/sian.agency/otodom-property-scraper?fpr=sian) for Polish sale and rental stock with price per square metre in zloty. This actor covers what MyHome.ge publishes: apartments, private houses, country houses, land plots, commercial premises and hotels, each for sale, for rent, for lease or for daily rent, across all 126 Georgian cities and municipalities. It returns what is advertised now, so there is no sold-price history and no record of an advert after it is withdrawn. Phone numbers come back exactly as the portal prints them, which is partly masked. Districts, micro-districts and metro stations exist for Tbilisi only. The other large Georgian portal, ss.ge, is a separate site and is not covered.

### 🤖 Use with AI agents

Already connected to the [Apify MCP server](https://mcp.apify.com)? Just ask for this Actor by name: sian.agency/myhome-ge-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 property listings and asking prices from MyHome.ge using the Apify Actor `sian.agency/myhome-ge-property-scraper`.

Use it when I need: Georgian sale, rental, lease and daily-rent adverts as rows. The asking price comes back in lari, US dollars and euros at once, and so does the price per square metre in each of the three, because MyHome publishes all six figures itself. Each row carries floor area, rooms, bedrooms, floor, floors in the building and building status. The seller's own advert text arrives in full rather than as a teaser. Location comes as the street address the seller published, the city, the district and, for Tbilisi, the micro-district. The seller block says whether a private owner, an agency, a broker or a developer placed the advert, and carries that account's logo. Switch on full details and each row also gains GPS coordinates, the Georgian cadastral code that joins a listing to the national property register, the true publication date, a view counter and how many live adverts that seller holds. The same pass adds the seller's phone as the portal publishes it, the renovation condition, the heating, hot-water, parking and wall-material systems, ceiling height, balcony and yard areas, and the full amenity list.

Don't use it when: the property is not in Georgia — use cian-property-scraper or cian-agent-scraper or otodom-property-scraper instead.

How to call it: set `dealType` to one of `sale`, `rent`, `lease` or `daily-rent`, and `propertyType` to one of `apartment`, `house`, `country-house`, `plot`, `commercial` or `hotel`. For location, pick a `city` from the 126 MyHome indexes, and for the capital narrow further with `tbilisiDistricts`, `microDistricts` or `metroStations`. Every location field is a picker built from MyHome's own place index, so a name the portal does not know is rejected up front rather than quietly widening the search to the whole country. Narrow with `minPrice`/`maxPrice` (written in whatever `priceCurrency` you choose, converted to lari using the portal's own rate because its filter only speaks lari), `rooms`, `bedrooms`, `minArea`/`maxArea`, `minFloor`/`maxFloor`, `buildingStatus`, `condition`, `projectType`, `heating`, `parking`, `wallMaterial`, `amenities` and `sellerType`; anything a filter excludes is never saved and never billed. Note that `amenities` combines with OR rather than AND, so two choices return more adverts than one. `includeDetails` opens each advert for its coordinates, cadastral code and amenity list, for an extra charge per advert. To expand adverts you already have, set `operation` to `detail` and pass `listingUrls`. A search larger than the portal's 9,600-row page ceiling is split into price bands automatically and de-duplicated, so `maxResults` can exceed it safely.

Start with this input:
{
  "operation": "search",
  "dealType": "sale",
  "propertyType": "apartment",
  "city": "tbilisi",
  "priceCurrency": "USD",
  "maxResults": 200
}

Ask me which Georgian city or Tbilisi neighbourhoods to cover, whether they want sale, rental or daily-rent adverts, and whether the coordinates and cadastral code are worth the extra per-advert charge, then run the Actor and summarise the results as a table.
```

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

- *Pull two-room flats for sale in Vake and Saburtalo between $80,000 and $150,000 and rank the micro-districts by median price per square metre.*
- *Find owner-listed rentals in Batumi with a lift and air conditioning, with the address and GPS point for each.*
- *List the agencies advertising apartments in Tbilisi, sorted by how much live stock each one holds.*

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

### 📋 Overview

**Georgia's largest property portal had never been turned into data.** MyHome.ge carries roughly 351,000 live adverts across six property sections, of which about 85,000 are apartments for sale. This Actor reads all of them, for sale, for rent, for lease and for daily rent.

**Why thousands of professionals choose us:**

- ✅ **No 9,600-row wall**: MyHome stops paging any single search at 9,600 adverts. This Actor measures the match count first, splits the price range into bands until every band fits, then de-duplicates by advert ID. A full Tbilisi apartments-for-sale extract, about 73,000 adverts, comes back as 14 bands with nothing lost at the seams.
- ⚡ **24 complete adverts per request**, so a 5,000-row market extract takes a couple of minutes.
- 🎯 **77 typed fields per advert**, read from MyHome's own attribute values rather than guessed from page text.
- 💰 **$2.50 per 1,000 listings**, which sits on the median of the CIS and Caucasus property field.
- 💎 **Georgian geography properly modelled**: 126 cities and municipalities, Tbilisi's six districts, 76 micro-districts and 22 metro stations, all picked from a list.
- ✨ **NEW**: three currencies and a price per square metre on every row, published by the portal. No exchange rate is applied afterwards, so a €/m² comparison across districts uses MyHome's own arithmetic.

### ✨ Features

- 🏠 **Six property sections**: apartments, private houses, country houses, land plots, commercial premises and hotels.
- 🤝 **Four deal types**: for sale, monthly rent, lease (იჯარა) and daily rent, each row labelled.
- 💱 **Prices in GEL, USD and EUR**, plus the price per square metre in all three.
- 🏘️ **Tbilisi at neighbourhood level**: filter by district, by one of 76 micro-districts, or by metro station.
- 🙋 **Owner-only sourcing**: one picker separates private owners from agencies, brokers and developers.
- 🏢 **Agency intelligence**: the seller's name, account ID and logo on every row; how many live adverts they hold comes with the detail pass.
- 📜 **The Georgian cadastral code** (rs\_code) where the advert publishes it, which is the key that joins a listing to the public property register.
- 🖼️ **Every photo** at full size, plus the 3D-tour link where one exists.
- 📝 **The complete advert description** on the listing row. MyHome does not truncate it, so the seller's whole text costs nothing extra.
- 📍 **GPS coordinates and amenities on demand**: one switch opens each advert for the fields a search row does not carry.

### 🎬 Quick Start

Pick a section, pick a city, press Start. Everything else is optional, and the defaults already sweep Tbilisi apartments for sale. Results land in a dataset you can download as JSON, CSV or Excel.

```bash
curl -X POST https://api.apify.com/v2/acts/sian.agency~myhome-ge-property-scraper/runs?token=YOUR_TOKEN \
-d '{"operation": "search", "dealType": "sale", "propertyType": "apartment", "city": "tbilisi"}'
```

### 🚀 Getting Started (3 Simple Steps)

#### Step 1: Choose the section

Pick a deal type and a property type. For sale and For rent hold almost the whole portal, at roughly 125,000 and 218,000 adverts.

#### Step 2: Choose where

Pick a city or municipality. For Tbilisi you can go further and pick districts, micro-districts or metro stations.

#### Step 3: Press Start

Raise **Maximum listings** if you want more than the first 100, then export the dataset.

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

- Adverts with 77 fields each, priced in three currencies
- Price per square metre on every row, as MyHome publishes it
- A dataset ready for Excel, BigQuery, a notebook or an AI agent

### 📥 Input Configuration

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `operation` | string | No | `search` sweeps the portal; `detail` opens specific adverts |
| `dealType` | string | No | `sale`, `rent`, `lease` or `daily-rent` |
| `propertyType` | string | No | `apartment`, `house`, `country-house`, `plot`, `commercial` or `hotel` |
| `city` | string | No | One of 126 cities and municipalities, picked from the list |
| `tbilisiDistricts` | array | No | Tbilisi's six districts. Tbilisi only |
| `microDistricts` | array | No | 76 Tbilisi neighbourhoods such as Vake, Saburtalo and Vera. Tbilisi only |
| `metroStations` | array | No | The 22 Tbilisi metro stations. Tbilisi only |
| `keyword` | string | No | Free text, matched against the title, the description and the place name |
| `priceCurrency` | string | No | Which currency the price range below is written in: `GEL`, `USD` or `EUR` |
| `minPrice` / `maxPrice` | integer | No | Price band in that currency. Leave a bound empty for open-ended |
| `minArea` / `maxArea` | integer | No | Floor area band in square metres |
| `rooms` / `bedrooms` / `bathrooms` | array | No | Counts, on MyHome's own scale |
| `buildingStatus` | array | No | Old building, new build, under construction, agricultural land, office, trade and more |
| `condition` | array | No | Renovation grade, including the Georgian white, black and green frame finishes |
| `projectType` | array | No | Building series: Lvov, Moscow, Czech, Khrushov, Italian courtyard and the modern developments |
| `minFloor` / `maxFloor` | integer | No | Floor band |
| `minTotalFloors` | integer | No | Only buildings with at least this many floors |
| `heating` / `hotWater` / `parking` / `wallMaterial` | array | No | Building systems and construction material |
| `amenities` | array | No | Lift, furniture, air conditioning, concierge, pool, pets allowed and 47 more |
| `sellerType` | string | No | `any`, `physical` (private owner), `agent`, `broker` or `developer` |
| `only3dTours` | boolean | No | Keep only adverts carrying a walkthrough |
| `exchangeOffered` | boolean | No | Keep only adverts whose owner will consider a swap |
| `maxResults` | integer | No | How many listings to return at most. Defaults to 100 |
| `includeDetails` | boolean | No | Open every advert found for coordinates, cadastral code and amenities. Extra charge per advert |
| `listingUrls` | array | No | For the detail operation: advert addresses or bare advert IDs |

**Example — Tbilisi apartments for sale, owner-listed, under $100,000:**

```json
{
  "operation": "search",
  "dealType": "sale",
  "propertyType": "apartment",
  "city": "tbilisi",
  "microDistricts": ["vake", "vera"],
  "sellerType": "physical",
  "priceCurrency": "USD",
  "maxPrice": 100000,
  "maxResults": 500
}
```

**Example — open specific adverts for coordinates and amenities:**

```json
{
  "operation": "detail",
  "listingUrls": [
    "https://www.myhome.ge/en/pr/25995559/",
    "25995560"
  ]
}
```

### 📤 Output

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

| Field | Type | Description |
|-------|------|-------------|
| `listingId` | number | MyHome advert ID |
| `propertyTitle` | string | Advert headline as MyHome renders it |
| `url` | string | Link back to the advert |
| `priceGel` / `priceUsd` / `priceEur` | number | Asking price or rent, in all three currencies at once |
| `pricePerSqmGel` / `pricePerSqmUsd` / `pricePerSqmEur` | number | Price per square metre, published by the portal |
| `area` / `yardArea` / `balconyArea` | number | Floor area, yard and balcony |
| `rooms` / `bedrooms` / `bathrooms` | string | Counts, on MyHome's own scale |
| `floor` / `totalFloors` / `ceilingHeight` | number | Floor, floors in the building, ceiling height |
| `buildingStatus` / `condition` / `projectType` | string | New build or old stock, renovation grade, building series |
| `cityName` / `districtName` / `urbanName` / `metroStation` | string | Where it is, at four levels |
| `address` / `latitude` / `longitude` | string, number | Street address and GPS point |
| `cadastralCode` / `hasCadastralCode` | string, boolean | The Georgian registry code, and whether it was published |
| `sellerType` / `sellerName` / `sellerPhone` / `sellerListingsCount` | string, number | Who is advertising, and how much stock they hold |
| `imageUrls` / `imageCount` / `tourUrl` | array, number, string | Every photo full size, and the walkthrough link |
| `descriptionText` / `views` / `publishedAt` / `daysListed` | string, number | The complete advert text, its view count and its age |

**Example:**

```json
{
  "listingId": 25995559,
  "propertyTitle": "3-room apartment for sale in Saburtalo",
  "url": "https://www.myhome.ge/en/pr/25995559",
  "dealType": "For sale",
  "propertyType": "Apartment",
  "buildingStatus": "New building",
  "priceGel": 310000,
  "priceUsd": 114800,
  "priceEur": 106000,
  "pricePerSqmGel": 3444,
  "pricePerSqmUsd": 1275,
  "pricePerSqmEur": 1177,
  "area": 90,
  "areaUnit": "m²",
  "rooms": "3",
  "bedrooms": "2",
  "floor": 7,
  "totalFloors": 14,
  "condition": "Newly Renovated",
  "projectType": "m2 development",
  "heating": "Central Heating",
  "parking": "Underground parking",
  "address": "Ilia Vekua St.",
  "cityName": "Tbilisi",
  "districtName": "Vake-Saburtalo",
  "urbanName": "Saburtalo",
  "metroStation": "Delisi",
  "latitude": 41.7264,
  "longitude": 44.7523,
  "cadastralCode": "01.10.15.004.045.01.514",
  "hasCadastralCode": true,
  "sellerType": "Agency",
  "sellerListingsCount": 412,
  "imageCount": 18,
  "views": 1043,
  "publishedAt": "2026-08-29T09:14:22Z",
  "lastUpdated": "2026-09-11T07:02:10Z",
  "daysListed": 15,
  "_operation": "search",
  "_fetchedAt": "2026-09-13T12:04:31Z"
}
```

The coordinates, the cadastral code, the publication date, the view counter, the seller's phone, the renovation condition and the amenity list arrive with the detail pass. Price, area, rooms, address, district, photos, description and seller type are already on the listing row.

### 💼 Use Cases & Examples

#### 1. Georgian Property Market Analysis

**Analysts and valuers who need Tbilisi, Batumi and the regions as a comparable table.**

**Input:** a deal type, a property type and a city, or a single micro-district.
**Output:** price and price per square metre in three currencies, plus area, rooms, floor and building status on every row.
**Use:** Vake against Saburtalo, or Tbilisi against Batumi, on the portal's own per-square-metre figure rather than one derived afterwards from a price and an area that may not refer to the same thing.

#### 2. Estate Agency and Developer Lead Generation

**Proptech and CRM vendors selling into Georgian agencies.**

**Input:** a city, with **Who is selling** set to Agency.
**Output:** the account name, its ID, its logo and how many live adverts it holds.
**Use:** group by account and the active agencies in a district come out ranked by inventory. Of roughly 85,000 apartments for sale, about 70,000 are agency stock, so the list is deep enough to segment.

#### 3. Private-Owner Sourcing

**Buyers, investors and acquisition desks who want stock before an agency signs it.**

**Input:** the same search, with **Who is selling** set to Private owner.
**Output:** owner-listed adverts only, about 7,000 of the apartments for sale.
**Use:** the portal mixes owners and agencies in one list, so separating them by hand is slow work. One picker does it here. Opening each advert adds the owner's name and phone as MyHome publishes them.

#### 4. New Listing and Price-Change Monitoring

**Data teams keeping a dated index of Georgian housing supply.**

**Input:** a saved filter, run on a schedule.
**Output:** the last-updated date and days-listed on every row; publication date and view count with the detail pass.
**Use:** key on the advert ID and the difference between two runs is what appeared, what disappeared and what quietly changed price.

#### 5. Tbilisi Rental Yield Screening

**Investors comparing purchase price against achievable rent.**

**Input:** the same micro-district and room count run twice, once For sale and once For rent.
**Output:** both sides carrying area, rooms, bedrooms, floor, renovation condition and building project.
**Use:** divide honestly, rather than comparing an asking price in one part of the city to a rent from another.

#### 6. Cadastral and Ownership Research

**Lawyers, due-diligence teams and registry researchers.**

**Input:** a search with the detail pass on, or advert IDs passed straight to the detail operation.
**Output:** the rs\_code where the advert publishes it, with a flag saying whether it was published at all.
**Use:** the cadastral code is what joins a listing to the public record of who owns the property. It is not on every advert, and the row says so plainly rather than leaving a silent blank.

#### 7. Short-Stay and Relocation Research

**Operators and relocation consultants pricing the Georgian short-let market.**

**Input:** Daily rent as the deal type, a micro-district, and an amenity filter.
**Output:** the nightly asking curve for the stock competing with a given flat, with photos and, on the detail pass, coordinates.
**Use:** the daily-rent section runs to about 8,000 live adverts and the relocation wave into Georgia keeps it moving.

### 🔗 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/myhome-ge-property-scraper').call({
  operation: 'search',
  dealType: 'sale',
  propertyType: 'apartment',
  city: 'tbilisi',
  microDistricts: ['saburtalo'],
  maxResults: 500,
});

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/myhome-ge-property-scraper').call(
    run_input={
        'operation': 'search',
        'dealType': 'rent',
        'propertyType': 'apartment',
        'city': 'batumi',
        'maxResults': 500,
    }
)

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

#### cURL

```bash
curl -X POST 'https://api.apify.com/v2/acts/sian.agency~myhome-ge-property-scraper/runs?token=YOUR_TOKEN' \
-H 'Content-Type: application/json' \
-d '{"operation": "search", "dealType": "sale", "propertyType": "apartment", "city": "tbilisi", "maxResults": 200}'
```

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

1. **Trigger**: Schedule, daily or weekly
2. **HTTP Request**: Call the Actor API with your saved filter
3. **Process**: Drop advert IDs you have already stored
4. **Action**: Append the new rows to a sheet, a database or a Slack alert

### 📊 Performance & Pricing

#### FREE Tier (Try It Now)

- **25 adverts** per run — every field, every filter, the same data
- No credit card required
- Enough to check the fields against your own model before you commit

#### PAID Tier (Production Ready)

- **Unlimited** adverts per run, and no 9,600-row wall on a large sweep
- 24 complete adverts per request, and the band splitting is automatic
- Pay-per-result: charged per advert returned, never for a search that matched nothing

💰 **$2.50 per 1,000 listings**, plus a small run-start fee. Opening an advert for its coordinates, cadastral code and amenities costs **$3.00 per 1,000 adverts** and is off unless you ask for it. That per-row price sits on the median of the CIS and Caucasus property field.

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

### ❓ Frequently Asked Questions

**Q: Do I need a MyHome.ge account, an API key or a proxy?**
A: No. There is nothing to sign up for, no key to paste and nothing to configure. Pick the filters and press Start.

**Q: How many listings can one run return?**
A: As many as the filter matches. MyHome stops paging any single query at 9,600 rows, so a larger request is split into price bands automatically until every band fits, and the bands are de-duplicated by advert ID. A full Tbilisi apartments-for-sale extract is about 73,000 adverts and comes back whole.

**Q: Which currency does the price filter use?**
A: MyHome's own filter only ever speaks lari. Pick dollars or euro and your range is converted into lari before the search runs, using the portal's own live conversion rather than an outside rate. Every row still comes back priced in all three currencies whichever you choose.

**Q: Are the coordinates on every row?**
A: No, and this is the main reason to turn on the detail pass. A search row has no latitude or longitude at all. They exist only on the advert's own record, together with the cadastral code, the publication date, the view counter and the amenity list.

**Q: Can I get the seller's phone number?**
A: The advert record carries the phone as MyHome publishes it, which is partly masked on the portal itself. It is on the detail row, not the search row.

**Q: Does it cover the whole country or only Tbilisi?**
A: The whole country. All 126 cities and municipalities are in the picker, and a municipality covers the villages inside it. Districts, micro-districts and metro stations are Tbilisi-specific and are ignored elsewhere, which the run log says out loud rather than quietly returning an unfiltered city.

**Q: What language does the data come back in?**
A: English labels, with the original Georgian preserved where the seller wrote it. The advert description and the street address are whatever the seller typed, usually Georgian and sometimes Russian or English.

**Q: Why do two amenity filters return more results, not fewer?**
A: Because MyHome combines amenities with OR rather than AND. Picking a lift and air conditioning returns adverts with either one. For an AND, run them separately and intersect the results.

**Q: Is the advert description cut short on the listing row?**
A: No. The description arrives complete on the search row, so you do not need the detail pass for the text. Buy the detail pass for the coordinates, the cadastral code, the publication date, the view counter and the amenities.

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

**Q: What does a run cost?**
A: A small start fee plus one charge per listing row. Turning on the detail pass adds one charge per advert opened, which is why it is off by default. Invalid input is rejected before anything is charged.

**Q: Is this affiliated with MyHome.ge?**
A: No. It reads only publicly published adverts and collects nothing behind a login.

### 🐛 Troubleshooting

**A search returned no adverts**

- Land plots are effectively sale-only, so a daily-rent run against them is empty by definition.
- A building status that belongs to another property type empties the search: Office and Warehousing are commercial values, Agricultural is a land value.
- Districts, micro-districts and metro stations exist for Tbilisi only. Using one with another city empties the search, and the run log says so.
- Clear the narrowest filter first, then widen the location.

**The price band looks wrong**

- MyHome's filter speaks lari. If you meant dollars or euro, set **Price filter currency** to match, and the range is converted for you before the search runs.

**Two amenities returned more adverts, not fewer**

- MyHome combines amenities with OR. Run them one at a time and intersect the results yourself.

**Coordinates, the phone number or the cadastral code are blank**

- Those live on the advert's own record. Switch on **Also open each advert**, or pass the advert IDs to the detail operation.
- The cadastral code is not published on every advert. The `hasCadastralCode` flag tells you which it was.

**The run stopped before Maximum listings**

- On the FREE tier every run stops at 25 adverts. Add credits in Apify Console to lift it.
- A search that reaches the end of its result set stops there, and the log line says so.

**A city I want is not in the list**

- The picker holds the 126 places MyHome indexes. Villages sit inside a municipality, so choose the municipality, or type the name into **Keyword**.

### ⚖️ 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/).

MyHome.ge is a trademark of its owner. This actor is not affiliated with, endorsed by, or sponsored by MyHome.ge or TNET.

### 🤝 Support

**Join our active support community**

- For issues or questions, open an issue in the actor's repository
- Check [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)**

# Changelog

This Actor's version history is a separate document: https://apify.com/sian.agency/myhome-ge-property-scraper/changelog.md

# Actor input Schema

## `operation` (type: `string`):

Pick one per run. Property Search returns listing rows for any Georgian city, Tbilisi district or micro-district, with any filter set, and partitions its own sweep so a result set larger than the portal's 9,600-row page ceiling still comes back whole. Property Detail takes MyHome advert addresses or IDs and opens each one for the coordinates, the cadastral code, the publication date and the amenity block that a search row does not carry.

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

Which MyHome section to read. For sale and For rent hold almost the whole corpus — about 125,000 and 218,000 adverts. Lease is a Georgian mortgage-style arrangement (იჯარა) with roughly 200 live adverts, and Daily rent is the short-stay section with about 8,000. Land plots are effectively sale-only, so a daily-rent run against them returns nothing rather than an error.

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

Which property section to read. Apartments are by far the largest at about 268,000 live adverts, followed by commercial premises, private houses and land plots. Hotel covers whole guest-house and hotel buildings offered for sale or rent, not rooms in one.

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

The city, town or municipality to search, from MyHome's own place index — all 126 of them. Tbilisi holds most of the market; Batumi, Kutaisi and Rustavi are the next largest. A municipality covers the villages inside it, so choosing one returns the whole district rather than only its administrative centre.

## `tbilisiDistricts` (type: `array`):

Narrow a Tbilisi search to one or more of the six districts the city is divided into. Leave empty for the whole city. These apply to Tbilisi only — pick a different city above and they are ignored, which the run log says out loud rather than quietly returning the unfiltered city.

## `microDistricts` (type: `array`):

Tbilisi neighbourhoods — Vake, Saburtalo, Vera, Didi Dighomi, Gldani and 71 more. This is the level Georgian buyers actually shop at, and it is finer than the district above: Vake is a micro-district inside Vake-Saburtalo, not the district itself.

## `metroStations` (type: `array`):

Adverts attached to one or more of the 22 Tbilisi metro stations. MyHome tags an advert with a station only when it sits near one, so this is a much narrower filter than a micro-district and returns nothing outside Tbilisi.

## `keyword` (type: `string`):

Free text, matched the way the portal's own search box matches it — against the advert title, its description and the place name. A MyHome advert ID typed here returns that single advert. Georgian, Russian and English all work; the portal indexes all three.

## `priceCurrency` (type: `string`):

Which currency the price range below is written in. MyHome's own price filter only ever speaks lari, so a dollar or euro range is converted to lari before the search runs, using the portal's own live conversion rather than an outside rate. Every row still comes back priced in all three currencies whatever you pick here.

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

Lowest price to include, in the currency chosen above. Leave empty for no lower bound.

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

Highest price to include, in the currency chosen above. Leave empty for no upper bound.

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

Smallest floor area to include, in square metres. Land plots are measured in square metres here too, so a plot search uses large numbers.

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

Largest floor area to include, in square metres.

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

Total room count, MyHome's own scale. The top value is "10+", which is a bucket rather than exactly ten. Rooms and bedrooms are separate fields on a Georgian advert and both are published.

## `bedrooms` (type: `array`):

Bedroom count, separate from the total room count above.

## `buildingStatus` (type: `array`):

The advert's building or land classification. Old building, New building and Under construction apply to homes; Agricultural and Non-agricultural to land; Office, Trade, Warehousing, Manufacturing and the rest to commercial premises. Choosing a value that does not apply to the property type above returns nothing rather than everything.

## `condition` (type: `array`):

How finished the property is. White frame, Black frame and Green frame are the Georgian shell-finish grades that new-build buyers sort on; Newly Renovated and Old renovated cover completed stock.

## `projectType` (type: `array`):

The Soviet-era or modern building series — Lvov, Moscow, Czech, Khrushov, Tukhareli, Italian courtyard and the rest, plus the named modern developments. Georgian buyers read this as a proxy for ceiling height, layout and wall thickness.

## `minFloor` (type: `integer`):

Lowest floor number to include.

## `maxFloor` (type: `integer`):

Highest floor number to include.

## `minTotalFloors` (type: `integer`):

Only buildings with at least this many floors in total.

## `bathrooms` (type: `array`):

Bathroom count. "General" means a shared bathroom.

## `heating` (type: `array`):

How the property is heated.

## `hotWater` (type: `array`):

How hot water is supplied.

## `parking` (type: `array`):

What parking the advert offers.

## `wallMaterial` (type: `array`):

What the building is built from.

## `amenities` (type: `array`):

Features the advert lists — lift, furniture, air conditioning, concierge, pool, pets allowed and 47 more. MyHome combines several amenities with OR rather than AND, so picking two returns more adverts than picking one, not fewer. For an AND, run them separately and intersect the results yourself.

## `sellerType` (type: `string`):

Who placed the advert. Private owner is the one buyers hunt for and agencies are the one lead-generation buyers want: of roughly 85,000 apartments for sale, about 7,000 are listed by private owners, 70,000 by agencies, 5,000 by brokers and 2,000 by developers.

## `only3dTours` (type: `boolean`):

Keep only adverts that carry a Matterport-style walkthrough. These are rare — a handful across the whole portal — so this is a very narrow filter.

## `exchangeOffered` (type: `boolean`):

Keep only adverts whose owner will consider swapping the property rather than selling outright, a common arrangement in the Georgian market.

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

How many listings to return at most. The portal stops paging any single query at 9,600 rows, so a larger request is split into price bands automatically and the bands are de-duplicated by advert ID.

## `includeDetails` (type: `boolean`):

Open every listing found on its own record to add the GPS coordinates, the cadastral code, the true publication date, the view counter, the seller's phone, the renovation condition and the amenity list. This adds one request per listing and bills the detail event for each, so it is off by default.

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

For the Property Detail run: MyHome advert addresses such as https://www.myhome.ge/en/pr/25995559/ or bare advert IDs such as 25995559. Each one is opened on its own record. Georgian, Russian and English advert addresses all work.

## Actor input object example

```json
{
  "operation": "search",
  "dealType": "sale",
  "propertyType": "apartment",
  "city": "tbilisi",
  "tbilisiDistricts": [],
  "microDistricts": [],
  "metroStations": [],
  "keyword": "",
  "priceCurrency": "GEL",
  "rooms": [],
  "bedrooms": [],
  "buildingStatus": [],
  "condition": [],
  "projectType": [],
  "bathrooms": [],
  "heating": [],
  "hotWater": [],
  "parking": [],
  "wallMaterial": [],
  "amenities": [],
  "sellerType": "any",
  "only3dTours": false,
  "exchangeOffered": false,
  "maxResults": 100,
  "includeDetails": false,
  "listingUrls": []
}
```

# Actor output Schema

## `myhomeGeListings` (type: `string`):

Every listing this run returned.

## `scrapingSummary` (type: `string`):

HTML summary showing successful and failed results with key metrics

# 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 = {
    "operation": "search",
    "dealType": "sale",
    "propertyType": "apartment",
    "city": "tbilisi",
    "tbilisiDistricts": [],
    "microDistricts": [],
    "metroStations": [],
    "keyword": "",
    "priceCurrency": "GEL",
    "rooms": [],
    "bedrooms": [],
    "buildingStatus": [],
    "condition": [],
    "projectType": [],
    "bathrooms": [],
    "heating": [],
    "hotWater": [],
    "parking": [],
    "wallMaterial": [],
    "amenities": [],
    "sellerType": "any",
    "only3dTours": false,
    "exchangeOffered": false,
    "maxResults": 100,
    "includeDetails": false,
    "listingUrls": []
};

// Run the Actor and wait for it to finish
const run = await client.actor("sian.agency/myhome-ge-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 = {
    "operation": "search",
    "dealType": "sale",
    "propertyType": "apartment",
    "city": "tbilisi",
    "tbilisiDistricts": [],
    "microDistricts": [],
    "metroStations": [],
    "keyword": "",
    "priceCurrency": "GEL",
    "rooms": [],
    "bedrooms": [],
    "buildingStatus": [],
    "condition": [],
    "projectType": [],
    "bathrooms": [],
    "heating": [],
    "hotWater": [],
    "parking": [],
    "wallMaterial": [],
    "amenities": [],
    "sellerType": "any",
    "only3dTours": False,
    "exchangeOffered": False,
    "maxResults": 100,
    "includeDetails": False,
    "listingUrls": [],
}

# Run the Actor and wait for it to finish
run = client.actor("sian.agency/myhome-ge-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 '{
  "operation": "search",
  "dealType": "sale",
  "propertyType": "apartment",
  "city": "tbilisi",
  "tbilisiDistricts": [],
  "microDistricts": [],
  "metroStations": [],
  "keyword": "",
  "priceCurrency": "GEL",
  "rooms": [],
  "bedrooms": [],
  "buildingStatus": [],
  "condition": [],
  "projectType": [],
  "bathrooms": [],
  "heating": [],
  "hotWater": [],
  "parking": [],
  "wallMaterial": [],
  "amenities": [],
  "sellerType": "any",
  "only3dTours": false,
  "exchangeOffered": false,
  "maxResults": 100,
  "includeDetails": false,
  "listingUrls": []
}' |
apify call sian.agency/myhome-ge-property-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,sian.agency/myhome-ge-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/DvBlCpEF3T0lwsBOu/builds/6RlZaTbGz1zHs33kc/openapi.json
