# Hepsiemlak & Emlakjet Scraper: Turkey Real Estate Data (`clearpath/turkey-real-estate-scraper`) Actor

Get phone numbers and full listing details from Hepsiemlak and Emlakjet in one dataset: price, price history, rooms, m², attributes, features, coordinates, photos, agent and office. Search by city, district or quarter, or paste links. Same fields as our Sahibinden scrapers. No login.

- **URL**: https://apify.com/clearpath/turkey-real-estate-scraper.md
- **Developed by:** [ClearPath](https://apify.com/clearpath) (community)
- **Categories:** Real estate, Lead generation
- **Features:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

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

<p><a href="https://console.apify.com/actors/CDvphBGp91pZvOkr5/input"><img src="https://api.apify.com/v2/key-value-stores/rfpznBPgVbyLYqNaQ/records/turkey-real-estate-readme-hero-3a17f4b27f06.png" alt="Search two Turkish property portals at once. Compare actual Hepsiemlak and Emlakjet listings from Kadıköy by price, area and price per square metre. An Istanbul test returned 100 listings in 6.6 seconds."></a></p>

<p>From <strong>Clearpath</strong>, creators of the <a href="https://apify.com/clearpath/sahibinden-real-estate">Sahibinden Real Estate Scraper</a> and <a href="https://apify.com/clearpath/sahibinden-scraper-pro">Sahibinden Scraper Pro</a>. The actors use matching field names, so you can combine the exports.</p>

<h2>Search Hepsiemlak and Emlakjet at the same time</h2>

<ul>
<li><strong>Use the same filters on both portals.</strong> One Istanbul sale test returned 50 listings from each portal in 6.6 seconds with listing details and phone numbers enabled.</li>
<li><strong>Compare prices and property details.</strong> Export asking price, price per square metre, room layout, gross and net area, coordinates and photos where listed. Emlakjet records include published price history where available.</li>
<li><strong>Get contact numbers when listed.</strong> Export available seller, agency and WhatsApp numbers. The example masks the two seller numbers.</li>
</ul>
<a data-demo-cta="true" href="https://console.apify.com/actors/CDvphBGp91pZvOkr5/input"><img src="https://api.apify.com/v2/key-value-stores/rfpznBPgVbyLYqNaQ/records/turkey-real-estate-readme-cta-21874516dd76.svg" width="235" height="48" alt="Get listings &amp; phones" /></a>

<h3>Try apartments for sale in Kadıköy</h3>

```json
{
  "portals": [
    "Hepsiemlak",
    "Emlakjet"
  ],
  "listingType": "Sale",
  "propertyCategory": "Residential",
  "propertyType": [
    "Apartment"
  ],
  "city": "Istanbul",
  "district": [
    "Kadıköy"
  ],
  "extractPhoneNumbers": true,
  "includeDetails": true,
  "maxResults": 10
}
```

<p>Open the <a href="https://console.apify.com/actors/CDvphBGp91pZvOkr5/input">actor input</a>, switch to JSON and paste this example. It returns up to 10 listings across both portals. Export the results as JSON, CSV or Excel.</p>

<table>
<tr>
<td style="background:#FFE800;padding:10px 12px;border-radius:4px 4px 0 0"><strong style="color:#211D00;font-size:14px">Clearpath · Property &amp; Classifieds</strong></td>
</tr>
<tr>
<td style="padding:6px;border:1px solid #E8DB9B;border-top:none;border-radius:0 0 4px 4px;background:#FFF9D6">
<span style="display:inline-block;vertical-align:top;margin:4px;padding:8px 12px;border:1px solid #E8DB9B;border-radius:4px;background:#FFF2A3"><span style="white-space:nowrap"><img src="https://api.apify.com/v2/key-value-stores/rfpznBPgVbyLYqNaQ/records/turkey-real-estate-icon-833ee89957dd.png" width="20" height="20" style="vertical-align:middle" alt="">&nbsp;<a href="https://apify.com/clearpath/turkey-real-estate-scraper" style="color:#302900;font-weight:700;font-size:13px;text-decoration:none">Hepsiemlak &amp; Emlakjet</a></span><br><span style="color:#66571A;font-size:12px;white-space:nowrap">You are here</span></span>
<span style="display:inline-block;vertical-align:top;margin:4px;padding:8px 12px;border:1px solid #E8DB9B;border-radius:4px;background:#FFF9D6"><span style="white-space:nowrap"><img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/DSvMCAwsufMyZeLyt-actor-z4v4lnrbobs8Nnf3N-CaRg48OBfX-sahibinden-phone-scraper-logo.png" width="20" height="20" style="vertical-align:middle" alt="">&nbsp;<a href="https://apify.com/clearpath/sahibinden-real-estate" style="color:#302900;font-weight:700;font-size:13px;text-decoration:none">Sahibinden</a></span><br><span style="color:#66571A;font-size:12px;white-space:nowrap">Turkish property</span></span>
<span style="display:inline-block;vertical-align:top;margin:4px;padding:8px 12px;border:1px solid #E8DB9B;border-radius:4px;background:#FFF9D6"><span style="white-space:nowrap"><img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/DSvMCAwsufMyZeLyt-actor-OCfsByJOX4xk4G5ee-q6T9LiJpgI-sahibinden-phone-scraper-logo.png" width="20" height="20" style="vertical-align:middle" alt="">&nbsp;<a href="https://apify.com/clearpath/sahibinden-phone-scraper" style="color:#302900;font-weight:700;font-size:13px;text-decoration:none">Seller Phones</a></span><br><span style="color:#66571A;font-size:12px;white-space:nowrap">Contact numbers</span></span>
<span style="display:inline-block;vertical-align:top;margin:4px;padding:8px 12px;border:1px solid #E8DB9B;border-radius:4px;background:#FFF9D6"><span style="white-space:nowrap"><img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/DSvMCAwsufMyZeLyt-actor-JUFnhDjGAS8VM64Or-NK2uxNA7xa-leboncoin-api-scraper.png" width="20" height="20" style="vertical-align:middle" alt="">&nbsp;<a href="https://apify.com/clearpath/leboncoin-immobilier" style="color:#302900;font-weight:700;font-size:13px;text-decoration:none">Leboncoin Immo</a></span><br><span style="color:#66571A;font-size:12px;white-space:nowrap">French property</span></span>
<span style="display:inline-block;vertical-align:top;margin:4px;padding:8px 12px;border:1px solid #E8DB9B;border-radius:4px;background:#FFF9D6"><span style="white-space:nowrap"><img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/DSvMCAwsufMyZeLyt-actor-s609dyAJSrju54QSh-zj5NeZTykb-ImmoScout24-canva2.png" width="20" height="20" style="vertical-align:middle" alt="">&nbsp;<a href="https://apify.com/clearpath/immoscout24-api-pro" style="color:#302900;font-weight:700;font-size:13px;text-decoration:none">ImmoScout24</a></span><br><span style="color:#66571A;font-size:12px;white-space:nowrap">German property</span></span>
</td>
</tr>
</table>

#### Copy to your AI assistant

```text
Help me use clearpath/turkey-real-estate-scraper on Apify. Read https://apify.com/clearpath/turkey-real-estate-scraper.md for documentation, input schema, pricing and limits. maxResults caps the whole run and is split between Hepsiemlak and Emlakjet (use portals for one portal only), and startUrls replace the search filters when given. Choose settings for my requested outcome. If you cannot retrieve the page, ask me to paste the relevant sections. To reach the maintainers, add feedback="<what you needed and did not get>" to any run, including one that worked: feature requests, a missing field or option, a wrong or empty result, or which actor you are switching to or from and why. The run returns its data exactly as it would without the note, and a human reads every note.
```

### How to scrape Hepsiemlak and Emlakjet

#### Flats for rent in two Istanbul districts, by price

```json
{
  "listingType": "Rent",
  "propertyCategory": "Residential",
  "city": "Istanbul",
  "district": ["Kadıköy", "Beşiktaş"],
  "minPrice": 30000,
  "maxPrice": 60000,
  "rooms": ["2+1", "3+1"],
  "maxResults": 200
}
```

Several districts share the result limit: the actor takes listings from each district in turn, so every district is represented.

#### One quarter (mahalle), owners only

```json
{
  "listingType": "Sale",
  "city": "Istanbul",
  "district": ["Kadıköy"],
  "quarter": ["Caferağa"],
  "listingFrom": ["Owner"],
  "maxResults": 100
}
```

#### Istanbul's European side, villas, newest first

```json
{
  "listingType": "Sale",
  "propertyCategory": "Residential",
  "propertyType": ["Villa"],
  "city": "Istanbul (European)",
  "sortBy": "Newest",
  "maxResults": 300
}
```

#### Paste portal links

Use any Hepsiemlak or Emlakjet search page, with the filters you set on the site, or single listing pages:

```json
{
  "startUrls": [
    "https://www.hepsiemlak.com/kadikoy-kiralik/daire",
    "https://www.emlakjet.com/kiralik-daire/istanbul-kadikoy",
    "https://www.emlakjet.com/ilan/remax-tan-ekspres-ten-gunesli-de-satilik-hisseli-ara-kat-daire-20084130"
  ],
  "maxResults": 50
}
```

When links are given, the search filters on the form are not used.

#### Commercial and land

Set `propertyCategory` to `Commercial`, `Land`, `Building` or `Tourism`, and optionally `propertyType` (for example `Shop & Store`, `Office`, `Field`). `listingType` also covers `Daily Rental`, `Transfer Sale`, `Transfer Rent` and `Flat for Land`.

### Input parameters

| Parameter | Type | Default | Meaning |
|---|---|---|---|
| `portals` | array | both | `Hepsiemlak`, `Emlakjet` or both. The result limit is split evenly; when one portal runs out, the other gets the rest. |
| `listingType` | string | `Sale` | `Sale`, `Rent`, `Daily Rental`, `Transfer Sale`, `Transfer Rent`, `Flat for Land`. |
| `propertyCategory` | string | `Residential` | `Residential`, `Commercial`, `Land`, `Building`, `Tourism`. |
| `propertyType` | array | all | Types of the selected category, e.g. `Apartment`, `Villa`, `Residence`, `Shop & Store`, `Office`, `Field`. A type one portal lacks is skipped there and named in the log. |
| `city` | string | all of Türkiye | One of the 81 cities, plus `Istanbul (European)` and `Istanbul (Asian)`. |
| `district` | array | all | District (ilçe) names in the city, up to 50. Turkish characters are optional. |
| `quarter` | array | all | Quarter (mahalle) names inside those districts, up to 50. |
| `maxResults` | integer | 100 | Most listings to deliver in this run, across both portals. |
| `startUrls` | array | none | Up to 100 Hepsiemlak or Emlakjet search or listing links, instead of the filters. |
| `sortBy` | string | `Newest` | `Newest`, `Oldest`, `Price Low to High`, `Price High to Low`, `Smart Sort`. Applies to the first results; the rest of a large search follows in ascending price, so nothing is skipped. |
| `minPrice`, `maxPrice` | integer | none | Price range in Turkish lira (`currency` is TRY; listings priced in USD or EUR are still delivered with their currency). |
| `rooms` | array | all | `Studio (1+0)`, `1+1`, `2+1`, `3+1`, `4+1`, `6+` and more. Residential only. |
| `buildingAge` | array | all | `0 (Ready)`, `0 (Under construction)`, `1` to `5`, `6-10` up to `31+`. Residential only. |
| `minSize`, `maxSize` | integer | none | Gross area in m². |
| `minNetSize`, `maxNetSize` | integer | none | Net area in m². |
| `listingFrom` | array | all | `Owner`, `Agent`, `Construction Company`, `Bank` (Hepsiemlak only). |
| `listingDate` | string | any | `Last 24 hours` up to `Last 30 days`, by publish date. |
| `furnished` | boolean | any | `true` furnished only, `false` unfurnished only. |
| `extractPhoneNumbers` | boolean | `true` | Include phone and WhatsApp numbers. |
| `includeDetails` | boolean | `true` | Open every listing for the description, all attributes, the full gallery and price history. Off gives a faster search-card dataset. |
| `includeRawData` | boolean | `false` | Add each portal's original listing data in a `raw` field. |

The input names and values are the same as in [Sahibinden Real Estate Scraper](https://apify.com/clearpath/sahibinden-real-estate), so one input works for both actors.

### What data can you extract from Hepsiemlak and Emlakjet?

Every row has the same 162 fields, whichever portal it comes from. Fields a portal does not have stay empty.

| Group | Fields |
|---|---|
| Listing | `portal`, `id`, `listingNo`, `url`, `title`, `description`, `descriptionHtml`, `status`, `listedAt`, `updatedAt`, `createdAt`, `badges` |
| Price | `price`, `currency`, `formattedPrice`, `pricePerSqm`, `originalPrice`, `priceHistory`, `monthlyDues`, `deposit`, `rentalIncome`, `valuation` |
| Property | `listingType`, `propertyCategory`, `propertyType`, `rooms`, `roomCount`, `grossSize`, `netSize`, `floor`, `floorLabel`, `totalFloors`, `buildingAge`, `heatingType`, `bathroomCount`, `furnished`, `usageStatus`, `deedStatus`, `buildingStatus`, `energyClass`, `attributes`, `features`, `featureGroups` |
| Location | `city`, `district`, `neighborhood`, `quarter`, `address`, `latitude`, `longitude`, `locationIds`, `nearbyPlaces` |
| Contact | `sellerName`, `sellerType`, `listingFrom`, `phoneMobile`, `phoneWork`, `phones`, `whatsappNumber`, `sellerLicenseNumber` |
| Office | `storeName`, `storeUrl`, `storeAddress`, `storeCity`, `storeDistrict`, `storeLicenseNumber`, `storeLogoUrl`, `storeMemberSince`, `storeRating` |
| Media | `images`, `imageCount`, `coverImageUrl`, `videoUrls`, `has360Tour`, `virtualTourUrl` |
| Matching | `duplicateKey`: equal on rows that agree on listing type, district, quarter, rooms, gross m², floor and exact price, a hint that two rows (often one per portal) are the same property |

#### Hepsiemlak listing (real output)

Real rows from an Istanbul search. Phone digits are masked here; `images`, `features`, `featureGroups` and `nearbyPlaces` are shortened to their first entries.

```json
{
  "portal": "hepsiemlak",
  "id": "132589-267",
  "listingNo": "132589-267",
  "realtyId": "47623572",
  "identificationNo": "000",
  "url": "https://www.hepsiemlak.com/istanbul-sisli-mesrutiyet-satilik/daire/132589-267",
  "shortname": "istanbul-sisli-mesrutiyet-satilik/daire/132589-267",
  "title": "iLKE GAYRIMENKUL DEN ELAZIĞ DA YENI MAHALLE DE SATILIK DAIRE",
  "description": "Dōrt yillik ful dizayin yapili yatirim için uygun idal merkez de ulaşim sorunu yok yürüyüş mesafesinde üniverste yakin Mesafesinde şehir Merkezin de",
  "descriptionHtml": "Dōrt yillik ful dizayin yapili yatirim için uygun idal merkez de ulaşim sorunu yok yürüyüş mesafesinde üniverste yakin Mesafesinde şehir Merkezin de&nbsp;",
  "summary": "İstanbul, Şişli, Meşrutiyet Mahallesi'nde yer alan **190 m² brüt, 150 m² net** kullanım alanına sahip **3+1 satılık daire**, 9 katlı binanın 8. katında bulunuyor. 4 yıllık yeni yapıdaki eşyasız konut, kombi doğalgaz ile ısınıyor.\n\n**Krediye uygun** dairede ankastre mutfak, asansör, balkon, duşakabin ve vestiyer bulunuyor. Güney ve doğu cepheli konut, sahip olduğu özelliklerle kullanışlı bir yaşam alanı sunuyor.\n\nMeşrutiyet Mahallesi, metro ve metrobüs hatlarına yakın konumda. Hastane ve üniversiteye yürüme mesafesinde bulunan çevrede market ve alışveriş merkezi var. Yatırım için uygun bu kiracılı daire hakkında detaylı bilgi için arayabilirsiniz.",
  "price": 3500000.0,
  "currency": "TRY",
  "formattedPrice": "3.500.000 TL",
  "originalPrice": null,
  "originalCurrency": null,
  "priceHistory": [],
  "pricePerSqm": 18421.05,
  "lowestPrice": 3500000.0,
  "highestPrice": 3500000.0,
  "rentalIncome": 30,
  "status": "active",
  "isStale": false,
  "isVisible": true,
  "listingType": "Sale",
  "listingTypeLabel": "Satılık",
  "propertyCategory": "Residential",
  "propertyType": "Daire",
  "categoryId": "10000101",
  "categoryIds": [
    1000010101,
    1000010100,
    10000101
  ],
  "detailsScraped": true,
  "rooms": "3+1",
  "roomCount": 3,
  "livingRoomCount": 1,
  "grossSize": 190,
  "netSize": 150,
  "openAreaSize": null,
  "buildingAge": "4",
  "floor": 8,
  "floorLabel": "8.Kat",
  "totalFloors": 9,
  "heatingType": "Kombi",
  "fuelType": "Doğalgaz",
  "bathroomCount": 1,
  "wcCount": null,
  "balcony": null,
  "elevator": null,
  "parking": null,
  "furnished": false,
  "furnishedStatus": "Eşyalı Değil",
  "usageStatus": "Kiracılı",
  "deedStatus": "Kat Mülkiyeti",
  "buildingStatus": "İkinci El",
  "buildingType": "Betonarme",
  "kitchenType": null,
  "energyClass": null,
  "facades": [
    "Güney",
    "Doğu"
  ],
  "mortgageStatus": null,
  "listingFrom": "Emlakçıdan",
  "inComplex": null,
  "loanEligible": "Uygun",
  "swapAvailable": "Yapılmaz",
  "monthlyDues": 450,
  "deposit": null,
  "bedCount": null,
  "guestCount": null,
  "dormitory": null,
  "star": null,
  "rentalPeriod": null,
  "populated": null,
  "project": null,
  "flatForLand": false,
  "isShared": true,
  "onlineVisit": true,
  "attributes": {
    "Fiyat": "3.500.000 TL",
    "İlan No": "132589-267",
    "Son Güncelleme Tarihi": "2026-11-10T22:10:45.830+0000",
    "İlan Durumu": "Satılık",
    "Konut Tipi": "Daire",
    "Konut Şekli": "Ara Kat",
    "Oda + Salon Sayısı": "3+1",
    "Banyo Sayısı": "1",
    "Brüt / Net m2": "190 m2 / 150 m2",
    "Bulunduğu Kat": "8.Kat",
    "Kat Sayısı": "9 Katlı",
    "Bina Yaşı": "4 Yaşında",
    "Isınma Tipi": "Kombi",
    "Yakıt Tipi": "Doğalgaz",
    "Krediye Uygunluk": "Uygun",
    "Tapu Durumu": "Kat Mülkiyeti",
    "Eşya Durumu": "Eşyalı Değil",
    "Yapı Tipi": "Betonarme",
    "Yapının Durumu": "İkinci El",
    "Kullanım Durumu": "Kiracılı",
    "Cephe": "Güney, Doğu",
    "Kira Getirisi": "30 TL",
    "Aidat": "450 TL",
    "Takas": "Yapılmaz",
    "Yetkili Ofis": "Evet",
    "Tasarruf Finansmanına Uygunluk": "Uygun"
  },
  "attributeIds": {},
  "features": [
    "Ahşap Doğrama",
    "Ankastre Mutfak",
    "Asansör",
    "Balkon",
    "Çamaşır Odası",
    "Çelik Kapı",
    "Duşakabin",
    "Duvar Kağıdı",
    "Ebeveyn Banyolu",
    "Engelliye Uygun Tuvalet",
    "Gömme Dolap",
    "Görüntülü Diafon"
  ],
  "featureGroups": {
    "İç Özellikler": [
      "Ahşap Doğrama",
      "Ankastre Mutfak",
      "Asansör",
      "Balkon"
    ],
    "Konum Özellikleri": [
      "Alışveriş Merkezi",
      "Cadde Üzerinde",
      "Caddeye yakın",
      "Camiye Yakın"
    ]
  },
  "nearbyPlaces": [
    {
      "type": "Ulaşım",
      "name": "Elektrikli Araç Şarj İstasyonu - Şişli Hamidiye Etfal Eğitim Ve Araştırma Hastanesi",
      "distance": "345 m"
    },
    {
      "type": "Ulaşım",
      "name": "Havaalanı - Atatürk Havalimanı",
      "distance": "16,7 km"
    },
    {
      "type": "Ulaşım",
      "name": "Durak (Metrobüs) - İETT Mecidiyeköy Metrobüs Durağı",
      "distance": "1,2 km"
    }
  ],
  "country": "Türkiye",
  "city": "İstanbul",
  "district": "Şişli",
  "neighborhood": null,
  "quarter": "Meşrutiyet",
  "locationIds": {
    "cityId": 34,
    "townId": 1663,
    "neighborhoodId": 13156
  },
  "locationHierarchy": {
    "city": {
      "id": 34,
      "label": "İstanbul"
    },
    "town": {
      "id": 1663,
      "label": "Şişli"
    },
    "quarter": {
      "id": 13156,
      "label": "Meşrutiyet"
    }
  },
  "latitude": 41.056079843837495,
  "longitude": 28.988425908323226,
  "locationIsApproximate": false,
  "address": "Meşrutiyet, Şişli, İstanbul",
  "images": [
    "https://hecdnw01.hemlak.com/ds01/2/7/5/3/2/6/7/4/17943325450XX-XXXX3572.jpg",
    "https://hecdnw01.hemlak.com/ds01/2/7/5/3/2/6/7/4/17943325449XX-XXXX3572.jpg",
    "https://hecdnw01.hemlak.com/ds01/2/7/5/3/2/6/7/4/17943325450XX-XXXX3572.jpg"
  ],
  "imageCount": 31,
  "coverImageUrl": "https://hecdnw01.hemlak.com/ds01/2/7/5/3/2/6/7/4/17943325450XX-XXXX3572.jpg",
  "hasVideo": false,
  "videoUrls": [],
  "has360Tour": false,
  "image360Count": 0,
  "virtualTourUrl": null,
  "sellerType": "Kurumsal",
  "sellerName": "Ahmet Ergücü",
  "sellerFirstName": "Ahmet",
  "sellerLastName": "Ergücü",
  "sellerPreferredName": null,
  "sellerId": "3494169",
  "sellerProfileImage": "https://hecdn01.hemlak.com/assets/useravatar.png",
  "sellerUrl": "https://www.hepsiemlak.com/emlak-ofisi/ilke-emlak-gayrimenkul-132589",
  "sellerIsAdmin": true,
  "sellerIsTestUser": null,
  "sellerLicenseNumber": null,
  "sellerLicenseExpiresAt": null,
  "sellerVerified": null,
  "phoneMobile": "+90-XXX-XXXXXXX",
  "phoneHome": null,
  "phoneWork": "+90-XXX-XXXXXXX",
  "phoneWork2": null,
  "phones": [
    {
      "number": "+90-XXX-XXXXXXX",
      "type": "work"
    },
    {
      "number": "+90-XXX-XXXXXXX",
      "type": "mobile"
    },
    {
      "number": "+90-XXX-XXXXXXX",
      "type": "mobile"
    }
  ],
  "whatsappNumber": "+90-XXX-XXXXXXX",
  "contactName": null,
  "contactPhones": [],
  "useContactInfo": false,
  "storeName": "İLKE EMLAK GAYRİMENKUL",
  "storeShortName": "İLKE EMLAK GAYRİMENKUL",
  "storeId": "132589",
  "storeUrl": "https://www.hepsiemlak.com/emlak-ofisi/ilke-emlak-gayrimenkul-132589",
  "storeType": "Emlak Ofisi",
  "storeProductType": "Taahhütlü Eko Plus Paket",
  "storeLogoUrl": "https://hecdn01.hemlak.com/logo/9/8/5/2/3/1/076849e2-15a7-4477-8247-649fa85395ee.jpg",
  "storeBrandedLogoUrl": "https://hecdn01.hemlak.com/logo/9/8/5/2/3/1/076849e2-15a7-4477-8247-649fa85395ee.jpg",
  "storeAddress": "NAİL BEY MAHALLESİ",
  "storeCity": "Elazığ",
  "storeDistrict": "Merkez",
  "storeQuarter": "Nail Bey",
  "storeAgentCount": null,
  "storeBadgeYear": 5,
  "storeBlacklisted": null,
  "storeGoogleName": null,
  "storeGooglePlaceId": null,
  "storeRating": null,
  "storeIsReservation": false,
  "storeLicenseNumber": "2300090",
  "storeLicenseExpiresAt": null,
  "storeMemberSince": "2022-08-29T00:00:00Z",
  "storePackageStartDate": null,
  "storeYearsActive": null,
  "advertiseCategoryTitle": "",
  "featuredProducts": [],
  "tagProducts": [],
  "badges": [],
  "interactions": [],
  "hasBranded": false,
  "hasFirmBrandedUser": false,
  "brandedUser": null,
  "hasUpdateBooster": false,
  "cplStatus": false,
  "valuation": null,
  "createdAt": "2026-11-10T17:35:25Z",
  "listedAt": "2026-11-10T18:26:30Z",
  "updatedAt": "2026-11-10T22:10:45Z",
  "listingUpdatedAt": "2026-11-10T17:35:25Z",
  "daysSinceCreated": 0,
  "scrapedAt": "2026-11-10T22:13:03Z",
  "duplicateKey": "Sale|sisli|mesrutiyet|3+1|190|8|3500000|TRY"
}
```

#### Emlakjet listing (real output)

```json
{
  "portal": "emlakjet",
  "id": "20084273",
  "listingNo": "20084273",
  "realtyId": null,
  "identificationNo": null,
  "url": "https://www.emlakjet.com/ilan/re-max-tan-universite-yani-rafine-silivri-de-satilik-11-daire-20084273",
  "shortname": "re-max-tan-universite-yani-rafine-silivri-de-satilik-11-daire-20084273",
  "title": "Re/max'tan Üniversite Yanı Rafine Silivri'de Satılık 1+1 Daire",
  "description": "RAFİNE SİLİVRİ SİTESİNDE\nRUMELİ ÜNİVERSİTESİ YANI SATILIK 1+1 DAİRE\nÜNİVERSİTEYE SADECE 50 METRE MESAFEDEDİR\nDAİREMİZ NET 50m2 BRÜT 65m2'DİR\nSİTEMİZ\n13.000m2 ARSA ÜZERİNE KURULU\n5 BLOK 352 DAİREDİR\nAÇIK HAVUZ\nBASKETBOL SAHASI\nKAPALI OTOPARK\nÇOCUK PARKI\n7/24 GÜVENLİK\nTEK YETKİLİ RE/MAX HEDEF OFİSİDİR\nDETAYLI BİLGİ VE SUNUM İÇİN LÜTFEN BENİ ARAYIN\nOSMAN EREN AKSOY\n0505 XXX XX XX\n0505 XXX XX XX",
  "descriptionHtml": "<p style=\"text-align:center\">RAFİNE SİLİVRİ SİTESİNDE</p><p style=\"text-align:center\">RUMELİ ÜNİVERSİTESİ YANI SATILIK 1+1 DAİRE</p><p style=\"text-align:center\">ÜNİVERSİTEYE SADECE 50 METRE MESAFEDEDİR</p><p style=\"text-align:center\">DAİREMİZ NET 50m2 BRÜT 65m2'DİR</p><p style=\"text-align:center\">SİTEMİZ</p><p style=\"text-align:center\">13.000m2 ARSA ÜZERİNE KURULU</p><p style=\"text-align:center\">5 BLOK 352 DAİREDİR</p><p style=\"text-align:center\">AÇIK HAVUZ</p><p style=\"text-align:center\">BASKETBOL SAHASI</p><p style=\"text-align:center\">KAPALI OTOPARK</p><p style=\"text-align:center\">ÇOCUK PARKI</p><p style=\"text-align:center\">7/24 GÜVENLİK</p><p style=\"text-align:center\"><span style=\"background-color:rgb( 255 , 255 , 255 );font-size:14px;color:rgb( 0 , 0 , 0 )\">TEK YETKİLİ RE/MAX HEDEF OFİSİDİR</span></p><p style=\"text-align:center\"><span style=\"background-color:rgb( 255 , 255 , 255 );font-size:14px;color:rgb( 0 , 0 , 0 )\">DETAYLI BİLGİ VE SUNUM İÇİN LÜTFEN BENİ ARAYIN</span></p><p style=\"text-align:center\"><span style=\"background-color:rgb( 255 , 255 , 255 );font-size:14px;color:rgb( 0 , 0 , 0 )\">OSMAN EREN AKSOY</span></p><p style=\"text-align:center\"><span style=\"background-color:rgb( 255 , 255 , 255 );font-size:14px;color:rgb( 0 , 0 , 0 )\">0505 XXX XX XX</span></p><p style=\"text-align:center\"><span style=\"background-color:rgb( 255 , 255 , 255 );font-size:14px;color:rgb( 0 , 0 , 0 )\">0505 XXX XX XX</span></p>",
  "summary": null,
  "price": 3700000.0,
  "currency": "TRY",
  "formattedPrice": "3.700.000 TL",
  "originalPrice": null,
  "originalCurrency": null,
  "priceHistory": [],
  "pricePerSqm": 56923.08,
  "lowestPrice": null,
  "highestPrice": null,
  "rentalIncome": null,
  "status": "active",
  "isStale": false,
  "isVisible": true,
  "listingType": "Sale",
  "listingTypeLabel": "Satılık",
  "propertyCategory": "Residential",
  "propertyType": "Daire",
  "categoryId": "4",
  "categoryIds": [
    2,
    1,
    4
  ],
  "detailsScraped": true,
  "rooms": "1+1",
  "roomCount": 1,
  "livingRoomCount": 1,
  "grossSize": 65,
  "netSize": 50,
  "openAreaSize": null,
  "buildingAge": "0 (Oturuma Hazır)",
  "floor": null,
  "floorLabel": "Düz Giriş (Zemin)",
  "totalFloors": 7,
  "heatingType": "Merkezi (Pay Ölçer)",
  "fuelType": null,
  "bathroomCount": 1,
  "wcCount": null,
  "balcony": "Var",
  "elevator": "Var",
  "parking": "Kapalı Otopark",
  "furnished": false,
  "furnishedStatus": "Boş",
  "usageStatus": "Boş",
  "deedStatus": "Kat İrtifakı",
  "buildingStatus": null,
  "buildingType": null,
  "kitchenType": "Açık (Amerikan)",
  "energyClass": null,
  "facades": [
    "Güney Cepheli"
  ],
  "mortgageStatus": null,
  "listingFrom": "Emlak Ofisinden",
  "inComplex": "Evet",
  "loanEligible": "Krediye Uygun",
  "swapAvailable": "Var",
  "monthlyDues": null,
  "deposit": null,
  "bedCount": null,
  "guestCount": null,
  "dormitory": null,
  "star": null,
  "rentalPeriod": null,
  "populated": null,
  "project": null,
  "flatForLand": null,
  "isShared": null,
  "onlineVisit": null,
  "attributes": {
    "Oda Sayısı": "1+1",
    "Banyo Sayısı": "1",
    "Bulunduğu Kat": "Düz Giriş (Zemin)",
    "Binanın Kat Sayısı": "7",
    "Brüt / Net": "65 m² / 50 m²",
    "Binanın Yaşı": "0 (Oturuma Hazır)",
    "İlan Numarası": "20084273",
    "İlan Güncelleme Tarihi": "11 Kasım 2026",
    "Kategori": "Satılık Daire",
    "Isıtma Tipi": "Merkezi (Pay Ölçer)",
    "Otopark": "Kapalı Otopark",
    "Kullanım Durumu": "Boş",
    "Krediye Uygunluk": "Krediye Uygun",
    "Site İçerisinde": "Evet",
    "Tapu Durumu": "Kat İrtifakı",
    "Ada": "6243",
    "Parsel": "7",
    "Takas": "Var",
    "Asansör": "Var",
    "Mutfak": "Açık (Amerikan)",
    "Eşya Durumu": "Boş",
    "Balkon": "Var"
  },
  "attributeIds": {
    "Oda Sayısı": "room_count",
    "Banyo Sayısı": "bath_count",
    "Bulunduğu Kat": "floor_number",
    "Binanın Kat Sayısı": "floor_count",
    "Brüt / Net": "gross_net_square",
    "Binanın Yaşı": "build_age",
    "İlan Numarası": "id",
    "İlan Güncelleme Tarihi": "updated_at",
    "Kategori": "category",
    "Isıtma Tipi": "heating_type",
    "Otopark": "parking_type",
    "Kullanım Durumu": "usability",
    "Krediye Uygunluk": "suitability_for_credit",
    "Site İçerisinde": "in_site",
    "Tapu Durumu": "deed_status",
    "Ada": "block_of_buildings",
    "Parsel": "parcel_of_land",
    "Takas": "trade",
    "Asansör": "elevator",
    "Mutfak": "kitchen",
    "Eşya Durumu": "furniture_status",
    "Balkon": "balcony_condition"
  },
  "features": [
    "Güney Cepheli"
  ],
  "featureGroups": {
    "Dış Özellikler / Cephe": [
      "Güney Cepheli"
    ]
  },
  "nearbyPlaces": [],
  "country": "Türkiye",
  "city": "İstanbul",
  "district": "Silivri",
  "neighborhood": null,
  "quarter": "Yeni Mahallesi",
  "locationIds": {
    "cityId": 34,
    "townId": 1622,
    "districtId": 10002062,
    "neighborhoodId": 140921
  },
  "locationHierarchy": {
    "city": {
      "id": 34,
      "label": "İstanbul"
    },
    "town": {
      "id": 1622,
      "label": "Silivri"
    },
    "district": {
      "id": 10002062,
      "label": "Silivri"
    },
    "quarter": {
      "id": 140921,
      "label": "Yeni Mahallesi"
    }
  },
  "latitude": 41.0776439305664,
  "longitude": 28.267092179199217,
  "locationIsApproximate": null,
  "address": "Yeni Mahallesi, Silivri, İstanbul",
  "images": [
    "https://imaj.emlakjet.com/listing/20084273/F973F03F4BA4034FAB36681401601E0920084273.jpg",
    "https://imaj.emlakjet.com/listing/20084273/E76E081F694FA9E00311A4237F0E30CC20084273.jpg",
    "https://imaj.emlakjet.com/listing/20084273/EBDA4E7442B4EB38C7E901D0F5DD4B0420084273.jpg"
  ],
  "imageCount": 17,
  "coverImageUrl": "https://imaj.emlakjet.com/listing/20084273/F973F03F4BA4034FAB36681401601E0920084273.jpg",
  "hasVideo": false,
  "videoUrls": [],
  "has360Tour": false,
  "image360Count": null,
  "virtualTourUrl": null,
  "sellerType": "Kurumsal",
  "sellerName": "Rafet CANER",
  "sellerFirstName": "Rafet",
  "sellerLastName": "CANER",
  "sellerPreferredName": null,
  "sellerId": "2351415",
  "sellerProfileImage": "https://imaj.emlakjet.com/member_photo/2351415/A387F5AC81AA1235E55966D17C5E0849.jpg",
  "sellerUrl": "https://www.emlakjet.com/danismanlar/rafet-caner-2351415",
  "sellerIsAdmin": null,
  "sellerIsTestUser": null,
  "sellerLicenseNumber": null,
  "sellerLicenseExpiresAt": null,
  "sellerVerified": true,
  "phoneMobile": "+90-XXX-XXXXXXX",
  "phoneHome": null,
  "phoneWork": "+90-XXX-XXXXXXX",
  "phoneWork2": null,
  "phones": [
    {
      "number": "+90-XXX-XXXXXXX",
      "type": "work"
    },
    {
      "number": "+90-XXX-XXXXXXX",
      "type": "mobile",
      "source": "whatsapp"
    }
  ],
  "whatsappNumber": "+90-XXX-XXXXXXX",
  "contactName": null,
  "contactPhones": [],
  "useContactInfo": null,
  "storeName": "Remax Hedef",
  "storeShortName": null,
  "storeId": "2257780",
  "storeUrl": "https://www.emlakjet.com/emlak-ofisleri/remax-hedef-2257780",
  "storeType": "Emlak",
  "storeProductType": "premium ofis",
  "storeLogoUrl": "https://imaj.emlakjet.com/logo/2257780/A387F5AC81AA1235E55966D17C5E0849.jpg",
  "storeBrandedLogoUrl": null,
  "storeAddress": null,
  "storeCity": null,
  "storeDistrict": null,
  "storeQuarter": null,
  "storeAgentCount": null,
  "storeBadgeYear": null,
  "storeBlacklisted": null,
  "storeGoogleName": null,
  "storeGooglePlaceId": null,
  "storeRating": null,
  "storeIsReservation": null,
  "storeLicenseNumber": "3415638",
  "storeLicenseExpiresAt": null,
  "storeMemberSince": null,
  "storePackageStartDate": null,
  "storeYearsActive": 1,
  "advertiseCategoryTitle": null,
  "featuredProducts": [],
  "tagProducts": [],
  "badges": [
    "new"
  ],
  "interactions": [],
  "hasBranded": null,
  "hasFirmBrandedUser": null,
  "brandedUser": null,
  "hasUpdateBooster": null,
  "cplStatus": null,
  "valuation": null,
  "createdAt": "2026-11-11T00:38:41Z",
  "listedAt": "2026-11-11T00:38:51Z",
  "updatedAt": "2026-11-11T00:40:54Z",
  "listingUpdatedAt": null,
  "daysSinceCreated": null,
  "scrapedAt": "2026-11-10T22:13:02Z",
  "duplicateKey": "Sale|silivri|yeni|1+1|65||3700000|TRY"
}
```

Fields and their availability differ by listing: Hepsiemlak shows no price history, Emlakjet shows no 360° photo count, and not every seller states every attribute. The [Output tab](https://apify.com/clearpath/turkey-real-estate-scraper/output-schema) lists every field with its meaning.

### Pricing

You pay per listing delivered: **$2.99 per 1,000 listings** on the Free plan. Bronze pays $2.79, Silver $2.49, Gold and above $2.09 per 1,000. Phone numbers, details and price history are included in that price.

A listing whose details could not be loaded is still delivered with its search data, marked `detailsScraped: false`, and is not charged.

### Integrations and scheduling

Schedule the actor daily with `sortBy: Newest` and a `listingDate` of `Last 24 hours` to collect new listings every morning. Send results to Google Sheets, a webhook, Make, Zapier or your database through [Apify integrations](https://docs.apify.com/platform/integrations), or start it from Python and JavaScript with the [Apify client libraries](https://docs.apify.com/api/client/python).

### FAQ

**Do I get both portals in one dataset?** Yes. Leave `portals` empty or select both. Each row says which portal it came from in `portal`, and both use the same fields.

**Do I need a Hepsiemlak or Emlakjet account?** No. No login, account or cookies.

**Do all listings have phone numbers?** Most do: in our Istanbul test every listing had at least one number. Agencies often show an office line; Emlakjet rows also carry the seller's WhatsApp mobile. Turn `extractPhoneNumbers` off to leave numbers out.

**How many listings can I get?** As many as the portals list for your search, up to `maxResults`, including the listings beyond the pages the portal sites show.

**Can I merge the data with Sahibinden?** Yes. The field names, location levels (`city`, `district`, `neighborhood`, `quarter`), listing types and phone format match our [Sahibinden Real Estate Scraper](https://apify.com/clearpath/sahibinden-real-estate) and [Sahibinden Scraper Pro](https://apify.com/clearpath/sahibinden-scraper-pro).

**How do I find the same property on both portals?** Group rows by `duplicateKey`. It is a hint: rows with the same listing type, district, quarter, rooms, gross m², floor and price share it.

**Why are some rows marked `detailsScraped: false`?** The listing's page could not be loaded in full during the run (it may have been removed). The row keeps its search data and is not charged.

**Does it show price changes?** Emlakjet rows include `priceHistory` and `originalPrice` when the price changed. Hepsiemlak does not publish price history.

### Support

Open an issue in the Issues tab or email max@mapa.slmail.me with your run link. Feature requests are welcome.

### Legal

This actor collects listings that Hepsiemlak and Emlakjet show publicly, without logging in. You are responsible for how you use the data, including personal data such as seller names and phone numbers under KVKK and other applicable laws. Hepsiemlak and Emlakjet are trademarks of their owners; this actor is not affiliated with or endorsed by them.

# Actor input Schema

## `portals` (type: `array`):

Which portals to search. Leave empty for both. The result limit is shared: each portal gets an equal part, and when one runs out of listings the other gets the rest.

## `listingType` (type: `string`):

<b>Sale</b> (Satılık), <b>Rent</b> (Kiralık), <b>Daily Rental</b> (Günlük / Sezonluk Kiralık), <b>Transfer Sale</b> and <b>Transfer Rent</b> (Devren: a running business handed over), <b>Flat for Land</b> (Kat Karşılığı: land offered in exchange for flats). Transfer Rent exists on Hepsiemlak only.

## `propertyCategory` (type: `string`):

<b>Residential</b> (Konut), <b>Commercial</b> (İşyeri), <b>Land</b> (Arsa), <b>Building</b> (whole buildings), <b>Tourism</b> (hotels and pensions).

## `propertyType` (type: `array`):

Narrow to one or more types of the selected category. Leave empty for all types. A type one portal does not have is skipped there and named in the log.<br><br><b>Residential:</b> Apartment, Residence, Detached House, Villa, Summer House, Cooperative, Farm House, Mansion, Waterfront Villa, Waterfront Apartment, Prefabricated House, Bungalow, Village House, Mountain House, Loft, Timeshare<br><b>Commercial:</b> Shop & Store, Office, Bureau, Ready & Virtual Office, Residence Floor & Office, Plaza, Plaza Floor & Office, Business Center Floor & Office, Whole Building, Warehouse & Depot, Factory & Production Facility, Workshop, Manufacturing Unit, Gas Station, Garage & Parking Space, Car Park, Farm, Mine & Quarry, Marketplace, Sports Facility, School, Hammam, Sauna & Spa, Meeting & Event Hall, Restaurant & Diner, Cafe & Bar<br><b>Land:</b> Field, Residential Zoned Land, Commercial Zoned Land, Vineyard & Garden, Olive Grove, Industrial Zoned Land, Tourism Zoned Land<br><b>Tourism:</b> Hotel, Boutique Hotel, Apart & Pension

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

Turkish city (il). Leave empty for all of Türkiye. <b>Istanbul (European)</b> and <b>Istanbul (Asian)</b> search that side's districts.

## `district` (type: `array`):

District names (ilçe) in the selected city, for example <code>Kadıköy</code>. Several districts combine (any match). Turkish characters are optional.

## `quarter` (type: `array`):

Quarter names (mahalle) inside the selected districts, for example <code>Caferağa</code>. The suffix Mahallesi / Mah. / Mh. is optional.

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

The most listings to deliver in this run, across both portals. You get every matching listing up to this number, not just the first pages a portal site shows.

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

Instead of the filters: paste Hepsiemlak or Emlakjet search pages (with any filters you set on the site) or single listing pages. When links are given, the search filters on this form are not used.

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

Order of the first results. The rest of a large search follows in ascending price, so nothing is skipped.

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

Lowest price in Turkish lira.

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

Highest price in Turkish lira.

## `currency` (type: `string`):

Both portals filter prices in Turkish lira, so price filters are in TRY. Listings priced in USD, EUR or GBP are still delivered with their own currency.

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

Room layout, Turkish format: <b>3+1</b> means 3 rooms and 1 living room. Several combine (any match). Residential only.

## `buildingAge` (type: `array`):

Building age in years. Several combine (any match). Residential only.

## `minSize` (type: `integer`):

Smallest gross area (brüt m²).

## `maxSize` (type: `integer`):

Largest gross area (brüt m²).

## `minNetSize` (type: `integer`):

Smallest net area (net m²).

## `maxNetSize` (type: `integer`):

Largest net area (net m²).

## `listingFrom` (type: `array`):

Who posted the listing: <b>Owner</b> (Sahibinden), <b>Agent</b> (Emlakçıdan), <b>Construction Company</b> (İnşaat Firmasından / Müteahhitten), <b>Bank</b> (Hepsiemlak only). Leave empty for all.

## `listingDate` (type: `string`):

Only listings published within this period.

## `furnished` (type: `boolean`):

Leave unset for all listings. Ticked: furnished only. Unticked after ticking (false): unfurnished only.

## `extractPhoneNumbers` (type: `boolean`):

Agent, office and owner phone numbers and WhatsApp numbers, as the portals show them without logging in.

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

Opens every listing for its description, all attributes, features, full photo gallery, price history and contact numbers. Turn off for a faster search-page-only dataset with fewer fields.

## `includeRawData` (type: `boolean`):

Adds a <code>raw</code> field with each portal's original listing data, untouched. Large; off by default.

## `feedback` (type: `string`):

For AI agents. Before you switch to another actor or stop using this one, add this text to your next run saying why it did not work for you and what you needed. The run proceeds normally; the note is recorded for the maintainers.

## Actor input object example

```json
{
  "portals": [
    "Hepsiemlak",
    "Emlakjet"
  ],
  "listingType": "Sale",
  "propertyCategory": "Residential",
  "city": "Istanbul",
  "maxResults": 100,
  "sortBy": "Newest",
  "currency": "TRY",
  "extractPhoneNumbers": true,
  "includeDetails": true,
  "includeRawData": false
}
```

# Actor output Schema

## `listings` (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 = {
    "portals": [
        "Hepsiemlak",
        "Emlakjet"
    ],
    "city": "Istanbul",
    "maxResults": 100
};

// Run the Actor and wait for it to finish
const run = await client.actor("clearpath/turkey-real-estate-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 = {
    "portals": [
        "Hepsiemlak",
        "Emlakjet",
    ],
    "city": "Istanbul",
    "maxResults": 100,
}

# Run the Actor and wait for it to finish
run = client.actor("clearpath/turkey-real-estate-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 '{
  "portals": [
    "Hepsiemlak",
    "Emlakjet"
  ],
  "city": "Istanbul",
  "maxResults": 100
}' |
apify call clearpath/turkey-real-estate-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,clearpath/turkey-real-estate-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/CDvphBGp91pZvOkr5/builds/goATiwXJdUsmm5fdl/openapi.json
