# Emlakjet Property Scraper (`solidcode/emlakjet-scraper`) Actor

\[💰 $3.0 / 1K] Extract Turkish real estate listings from Emlakjet — for-sale and for-rent homes, land, and commercial. Get price, per-m² price, room layout, size, floor, building age, heating, deed status, features, agency and owner contacts, coordinates, and photos. Search by filters or paste URLs.

- **URL**: https://apify.com/solidcode/emlakjet-scraper.md
- **Developed by:** [SolidCode](https://apify.com/solidcode) (community)
- **Categories:** Real estate, Developer tools, Automation
- **Stats:** 4 total users, 2 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.00 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## Emlakjet Property Scraper

Pull structured Turkish real-estate listings from Emlakjet (emlakjet.com) at scale — nationwide for-sale (satılık) and for-rent (kiralık) properties with full photo galleries, GPS coordinates, agency and owner contacts, and a ~24-field specification bag on every row. Point it at an Emlakjet search or listing URL, or build a search from location, property type, and Turkish room-layout filters. Built for real-estate investors, agencies, proptech and market-research teams, and lead-generation users who need Turkish property data across İstanbul, Ankara, İzmir, Antalya and beyond without manually copying listings one page at a time.

### Why This Scraper?

- **Nationwide coverage — all 81 Turkish provinces plus their districts** — search İstanbul, Ankara, İzmir, Antalya, Bursa or any city, and drill down to a specific district like Kadıköy or Çankaya.
- **Both markets in one actor** — for-sale (satılık) and for-rent (kiralık) listings from a single input toggle.
- **12 targeted property types** — apartment (daire), villa, residence, detached house, summer house, building, land/plot (arsa), shop, office, commercial, and touristic facility, each run as its own precise search.
- **Owner-vs-agency seller filter** — restrict results to listings from the owner (sahibinden), a real-estate agency (emlakçıdan), or a developer (müteahhitten) — a genuine lead-generation differentiator.
- **Full photo gallery per listing** — up to ~32 image URLs on every enriched property, not just the cover photo.
- **GPS coordinates on every enriched listing** — latitude and longitude for mapping, radius analysis, and geospatial workflows.
- **Verified seller contacts** — agency company name, agent license number, and a `+90` phone number pulled per listing.
- **~24-field specification bag** — Turkish room layout (3+1, 2+1, studio…), gross and net area in m², floor, building age, heating type, deed/title status, furnishing, credit and swap eligibility, plus 20+ amenity features.
- **Price and price-per-m² in TRY** — both the headline figure and the per-square-metre value, ready for comps and valuation.

### Use Cases

**Real Estate Investment & Analysis**
- Build price-per-m² comparables across İstanbul districts for underwriting.
- Track for-sale vs for-rent inventory to estimate gross rental yields.
- Monitor new land (arsa) and commercial listings in growth corridors.

**Lead Generation**
- Pull owner-listed (sahibinden) properties with phone numbers for direct outreach.
- Extract agency names and agent license numbers to build a broker directory.
- Segment leads by city, price band, and property type.

**Market Research & Proptech**
- Feed live Turkish listing data into pricing models and dashboards.
- Compare heating type, building age, and furnishing mix across neighborhoods.
- Benchmark rent levels by room layout (1+1 vs 3+1) and district.

**Portfolio & Relocation Services**
- Shortlist rentals matching a room-layout, budget, and area brief.
- Assemble villa or summer-house inventories for a coastal region.
- Enrich existing property records with coordinates and full galleries.

### Getting Started

#### Simple — one city, for sale

```json
{
  "listingType": "satilik",
  "locations": ["Istanbul"],
  "maxResults": 50
}
````

#### Filtered — 3+1 apartments in a budget band, from owners

```json
{
  "listingType": "satilik",
  "propertyTypes": ["daire"],
  "locations": ["Istanbul Kadıköy"],
  "sellerType": "owner",
  "rooms": ["3+1"],
  "minPrice": 4000000,
  "maxPrice": 8000000,
  "maxResults": 200
}
```

#### Advanced — rentals, multiple types and cities, size range

```json
{
  "listingType": "kiralik",
  "propertyTypes": ["daire", "villa"],
  "locations": ["Ankara", "Izmir"],
  "sellerType": "agency",
  "rooms": ["2+1", "3+1"],
  "minArea": 90,
  "maxArea": 180,
  "scrapeDetails": true,
  "maxResults": 500
}
```

#### From a ready-made Emlakjet URL

```json
{
  "startUrls": ["https://www.emlakjet.com/satilik-konut/istanbul/"],
  "maxResults": 300
}
```

### Input Reference

#### What to Scrape

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `startUrls` | array | `[]` | One or more Emlakjet URLs — search-result pages or individual listing pages. Every filter is read straight from each search URL, so the filters below are ignored when this is set. |

#### Search Filters

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `listingType` | string | `"satilik"` | `satilik` (for sale) or `kiralik` (for rent). |
| `propertyTypes` | array | `["konut"]` | Property types to include: housing, apartment, villa, residence, detached house, summer house, building, commercial, shop, office, land, touristic facility. Each type runs as its own search. |
| `locations` | array | `[]` | Where to search. Enter a city on its own (`Istanbul`, `Ankara`) for the whole city, or write a district as `City District` (`Istanbul Kadıköy`, `Ankara Çankaya`) to target it. A district name alone (just `Kadıköy`) will not match — always pair it with its city. Each location is searched separately. |
| `sellerType` | string | `"any"` | Restrict to `owner` (sahibinden), `agency` (emlakçıdan), `developer` (müteahhitten), or `any`. |

#### Price, Rooms & Size

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `rooms` | array | `[]` | Turkish room layouts: `studio`, `1+1`, `2+1`, `2.5+1`, `3+1`, `4+1`, `5+1`, `6+` and more. |
| `minPrice` | integer | — | Minimum price in Turkish lira (TRY). |
| `maxPrice` | integer | — | Maximum price in Turkish lira (TRY). |
| `minArea` | integer | — | Minimum gross area in m². |
| `maxArea` | integer | — | Maximum gross area in m². |

#### Output

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `scrapeDetails` | boolean | `true` | Follow each listing to its detail page for full specifications, the complete photo gallery, coordinates, deed status, and seller phone. Turn off for a faster run returning only summary fields. |
| `maxResults` | integer | `100` | Maximum listings to collect across all searches. `0` collects as many as possible (up to a 10,000 safety cap). |

### Output

Each result is one flat property record. Example (enriched):

```json
{
  "listingId": "19540757",
  "title": "Kadıköy Merkezde Yenilenmiş 3+1 Satılık Daire",
  "url": "https://www.emlakjet.com/ilan/kadikoy-merkezde-3-1-daire-19540757",
  "listingType": "satilik",
  "propertyType": "Daire",
  "price": 6250000,
  "currency": "TRY",
  "pricePerSqm": 48828,
  "dues": 1500,
  "city": "İstanbul",
  "district": "Kadıköy",
  "neighborhood": "Caferağa",
  "fullAddress": "İstanbul / Kadıköy / Caferağa",
  "latitude": 40.9901,
  "longitude": 29.0270,
  "rooms": "3+1",
  "roomCount": 3,
  "livingRoomCount": 1,
  "grossArea": 128,
  "netArea": 110,
  "floor": "3",
  "totalFloors": 5,
  "buildingAge": "5-10",
  "heating": "Doğalgaz (Kombi)",
  "deedStatus": "Kat Mülkiyeti",
  "furnished": false,
  "creditEligible": true,
  "swapAvailable": false,
  "features": ["Asansör", "Otopark", "Güvenlik", "Balkon"],
  "sellerType": "agency",
  "sellerName": "Ahmet Yılmaz",
  "sellerPhone": "+905321234567",
  "agencyName": "Kadıköy Emlak",
  "agencyLicense": "34-1234",
  "imageUrls": ["https://.../1.jpg", "https://.../2.jpg"],
  "imageCount": 32,
  "listingDate": "2025-06-14",
  "scrapedAt": "2026-07-01T09:12:00Z"
}
```

#### Core Fields

| Field | Type | Description |
|-------|------|-------------|
| `listingId` | string | Unique Emlakjet listing ID. |
| `title` | string | Listing headline. |
| `url` | string | Direct link to the listing. |
| `listingType` | string | `satilik` (sale) or `kiralik` (rent). |
| `propertyType` | string | Property category (Daire, Villa, Arsa…). |
| `listingDate` | string | Date the listing was posted. |
| `scrapedAt` | string | ISO-8601 timestamp of collection. |

#### Location & Coordinates

| Field | Type | Description |
|-------|------|-------------|
| `city` | string | Province (e.g. İstanbul). |
| `district` | string | District (e.g. Kadıköy). |
| `neighborhood` | string | Neighborhood name. |
| `fullAddress` | string | Combined city / district / neighborhood string. |
| `latitude` | number | GPS latitude (enriched runs). |
| `longitude` | number | GPS longitude (enriched runs). |

#### Pricing

| Field | Type | Description |
|-------|------|-------------|
| `price` | number | Listing price in TRY. |
| `currency` | string | Currency code (TRY). |
| `pricePerSqm` | number | Price per square metre in TRY. |
| `dues` | number | Monthly maintenance dues (aidat) in TRY. |

#### Specifications

| Field | Type | Description |
|-------|------|-------------|
| `rooms` | string | Turkish room layout (e.g. `3+1`). |
| `roomCount` | number | Number of bedrooms. |
| `livingRoomCount` | number | Number of living rooms. |
| `bathroomCount` | number | Number of bathrooms. |
| `grossArea` | number | Gross area in m². |
| `netArea` | number | Net usable area in m². |
| `floor` | string | Floor the unit is on. |
| `totalFloors` | number | Total floors in the building. |
| `buildingAge` | string | Building age band. |
| `heating` | string | Heating type. |
| `deedStatus` | string | Deed / title status. |
| `usageStatus` | string | Current usage status (e.g. empty, tenant-occupied, owner-occupied). |
| `furnished` | boolean | Whether the property is furnished. |
| `balcony` | boolean | Whether the property has a balcony. |
| `inComplex` | boolean | Whether the property sits inside a managed residential complex (site). |
| `creditEligible` | boolean | Mortgage-credit eligibility. |
| `swapAvailable` | boolean | Whether swap (takas) is accepted. |
| `features` | array | Amenity features (elevator, parking, security…). |

#### Seller & Media

| Field | Type | Description |
|-------|------|-------------|
| `sellerType` | string | `agency` or `fromOwner`. |
| `sellerName` | string | Agent or owner name. |
| `sellerPhone` | string | Contact phone (`+90…`). |
| `agencyName` | string | Real-estate agency company name. |
| `agencyLicense` | string | Agent license / registration number. |
| `imageUrls` | array | Full photo gallery URLs (up to ~32). |
| `imageCount` | number | Number of images collected. |

### Tips for Best Results

- **For lead generation, set `sellerType` to `owner`** — sahibinden listings surface direct owner phone numbers instead of agency switchboards.
- **Target a district by pairing it with its city** — write district searches as `City District`, for example `Istanbul Kadıköy` or `Ankara Çankaya` (a comma or slash works too). A district name on its own will return nothing, because Turkish district names repeat across provinces — always include the city.
- **Narrow to a single district for deeper pagination** — a city-wide İstanbul search can span tens of thousands of listings; a district search like `Istanbul Kadıköy` returns a cleaner, fully paginated set.
- **Keep `scrapeDetails` on for coordinates, galleries, and phones** — turn it off only when you need a fast headline-and-price sweep.
- **Combine `rooms` and price bands for comps** — pulling only 3+1 apartments in one budget band gives directly comparable price-per-m² data.
- **Run each city separately for clean regional datasets** — every entry in `locations` is searched on its own, so results stay easy to split by region.
- **Start small, then scale** — test with `maxResults` of 10–50, confirm the fields you need populate, then raise the cap for a full run.
- **Paste an Emlakjet URL to replicate a search exactly** — build the filters on the site, copy the URL into `startUrls`, and every filter is honored verbatim.

### Pricing

**From $3.00 per 1,000 results** — a flat pay-per-result rate with no compute or time-based charges. Bronze, Silver, and Gold subscribers pay progressively less; the table below shows total cost at each discount tier.

| Results | No discount | Bronze | Silver | Gold |
|---------|-------------|--------|--------|------|
| 100 | $0.36 | $0.34 | $0.32 | $0.30 |
| 1,000 | $3.60 | $3.40 | $3.20 | $3.00 |
| 10,000 | $36.00 | $34.00 | $32.00 | $30.00 |
| 100,000 | $360.00 | $340.00 | $320.00 | $300.00 |

No compute or time-based charges — you pay per result, plus a small fixed per-run start fee. A "result" is one property record pushed to your dataset. Platform fees are additional.

### Integrations

Export data in JSON, CSV, Excel, XML, or RSS. Connect to 1,500+ apps via:

- **Zapier** / **Make** / **n8n** — Workflow automation
- **Google Sheets** — Direct spreadsheet export
- **Slack** / **Email** — Notifications on new results
- **Webhooks** — Trigger custom APIs on run completion
- **Apify API** — Full programmatic access

### Legal & Ethical Use

This actor collects publicly available property listing data for legitimate business purposes such as market research, investment analysis, and lead generation. You are responsible for using the collected data in compliance with Emlakjet's terms of service, applicable data-protection laws (including handling of personal contact information), and any local regulations. Do not use the data for spam, harassment, or any unlawful purpose. Always respect the rights of listing owners and agencies.

# Actor input Schema

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

Paste one or more Emlakjet URLs — either search-result pages (e.g. https://www.emlakjet.com/satilik-konut/istanbul/) or individual property detail pages. The scraper reads every filter straight from each search URL, so the Search Filters below are ignored for these. Use this when you already built a search on the site.

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

Whether to find properties for sale or for rent. Only applies when you build a search below (not when pasting URLs).

## `propertyTypes` (type: `array`):

Which kinds of property to include. Leave empty to include all types.

## `locations` (type: `array`):

Where to search. Enter a city on its own (e.g. 'Istanbul', 'Ankara') to cover the whole city. To target a district, write it as 'City District' — for example 'Istanbul Kadıköy' or 'Ankara Çankaya' (a comma or slash also works: 'Istanbul, Kadıköy'). A district name on its own (e.g. just 'Kadıköy') will not match — always pair it with its city. Each location is searched separately. Leave empty when you are pasting URLs above.

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

Only include listings from a specific kind of seller. Choose 'Any' to include all.

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

Only include listings with these room layouts (Turkish style: bedrooms + living rooms). Leave empty for any layout.

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

Only include listings at or above this price, in Turkish lira. Leave empty for no minimum.

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

Only include listings at or below this price, in Turkish lira. Leave empty for no maximum.

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

Only include listings with at least this much gross area, in square meters. Leave empty for no minimum.

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

Only include listings with at most this much gross area, in square meters. Leave empty for no maximum.

## `scrapeDetails` (type: `boolean`):

Follow each listing to its detail page to collect full data: complete specifications, the whole photo gallery, map coordinates, deed status, and seller phone. Turn off for a faster, lighter run that returns only the summary fields shown in search results.

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

Maximum number of listings to collect across all URLs and searches. Set to 0 for as many as possible (up to a built-in safety cap of 10,000). Tip: start with 10-50 to test, then increase.

## Actor input object example

```json
{
  "startUrls": [
    "https://www.emlakjet.com/satilik-konut/istanbul/"
  ],
  "listingType": "satilik",
  "propertyTypes": [
    "konut"
  ],
  "locations": [],
  "sellerType": "any",
  "rooms": [],
  "scrapeDetails": true,
  "maxResults": 100
}
```

# Actor output Schema

## `overview` (type: `string`):

Table of scraped property listings with key fields.

# 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 = {
    "startUrls": [
        "https://www.emlakjet.com/satilik-konut/istanbul/"
    ],
    "listingType": "satilik",
    "propertyTypes": [
        "konut"
    ],
    "locations": [],
    "sellerType": "any",
    "rooms": [],
    "scrapeDetails": true,
    "maxResults": 100
};

// Run the Actor and wait for it to finish
const run = await client.actor("solidcode/emlakjet-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 = {
    "startUrls": ["https://www.emlakjet.com/satilik-konut/istanbul/"],
    "listingType": "satilik",
    "propertyTypes": ["konut"],
    "locations": [],
    "sellerType": "any",
    "rooms": [],
    "scrapeDetails": True,
    "maxResults": 100,
}

# Run the Actor and wait for it to finish
run = client.actor("solidcode/emlakjet-scraper").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{
  "startUrls": [
    "https://www.emlakjet.com/satilik-konut/istanbul/"
  ],
  "listingType": "satilik",
  "propertyTypes": [
    "konut"
  ],
  "locations": [],
  "sellerType": "any",
  "rooms": [],
  "scrapeDetails": true,
  "maxResults": 100
}' |
apify call solidcode/emlakjet-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Emlakjet Property Scraper",
        "description": "[💰 $3.0 / 1K] Extract Turkish real estate listings from Emlakjet — for-sale and for-rent homes, land, and commercial. Get price, per-m² price, room layout, size, floor, building age, heating, deed status, features, agency and owner contacts, coordinates, and photos. Search by filters or paste URLs.",
        "version": "1.0",
        "x-build-id": "OVY6GeudkvdA1XFhV"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/solidcode~emlakjet-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-solidcode-emlakjet-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/solidcode~emlakjet-scraper/runs": {
            "post": {
                "operationId": "runs-sync-solidcode-emlakjet-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/solidcode~emlakjet-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-solidcode-emlakjet-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "startUrls": {
                        "title": "Emlakjet URLs",
                        "type": "array",
                        "description": "Paste one or more Emlakjet URLs — either search-result pages (e.g. https://www.emlakjet.com/satilik-konut/istanbul/) or individual property detail pages. The scraper reads every filter straight from each search URL, so the Search Filters below are ignored for these. Use this when you already built a search on the site.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "listingType": {
                        "title": "Listing Type",
                        "enum": [
                            "satilik",
                            "kiralik"
                        ],
                        "type": "string",
                        "description": "Whether to find properties for sale or for rent. Only applies when you build a search below (not when pasting URLs)."
                    },
                    "propertyTypes": {
                        "title": "Property Types",
                        "uniqueItems": true,
                        "type": "array",
                        "description": "Which kinds of property to include. Leave empty to include all types.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "konut",
                                "daire",
                                "villa",
                                "residence",
                                "mustakil-ev",
                                "yazlik",
                                "bina",
                                "is-yeri",
                                "magaza",
                                "ofis",
                                "arsa",
                                "turistik-tesis"
                            ],
                            "enumTitles": [
                                "Housing (all residential)",
                                "Apartment",
                                "Villa",
                                "Residence",
                                "Detached house",
                                "Summer house",
                                "Building",
                                "Commercial (all)",
                                "Shop / store",
                                "Office",
                                "Land / plot",
                                "Touristic facility"
                            ]
                        }
                    },
                    "locations": {
                        "title": "Locations",
                        "type": "array",
                        "description": "Where to search. Enter a city on its own (e.g. 'Istanbul', 'Ankara') to cover the whole city. To target a district, write it as 'City District' — for example 'Istanbul Kadıköy' or 'Ankara Çankaya' (a comma or slash also works: 'Istanbul, Kadıköy'). A district name on its own (e.g. just 'Kadıköy') will not match — always pair it with its city. Each location is searched separately. Leave empty when you are pasting URLs above.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "sellerType": {
                        "title": "Seller Type",
                        "enum": [
                            "any",
                            "agency",
                            "owner",
                            "developer"
                        ],
                        "type": "string",
                        "description": "Only include listings from a specific kind of seller. Choose 'Any' to include all.",
                        "default": "any"
                    },
                    "rooms": {
                        "title": "Room Layouts",
                        "uniqueItems": true,
                        "type": "array",
                        "description": "Only include listings with these room layouts (Turkish style: bedrooms + living rooms). Leave empty for any layout.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "studio",
                                "1+1",
                                "1.5+1",
                                "2+1",
                                "2.5+1",
                                "3+1",
                                "3.5+1",
                                "4+1",
                                "5+1",
                                "2+2",
                                "3+2",
                                "4+2",
                                "6+"
                            ],
                            "enumTitles": [
                                "Studio",
                                "1+1",
                                "1.5+1",
                                "2+1",
                                "2.5+1",
                                "3+1",
                                "3.5+1",
                                "4+1",
                                "5+1",
                                "2+2",
                                "3+2",
                                "4+2",
                                "6+1 and larger"
                            ]
                        }
                    },
                    "minPrice": {
                        "title": "Minimum Price (TRY)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Only include listings at or above this price, in Turkish lira. Leave empty for no minimum."
                    },
                    "maxPrice": {
                        "title": "Maximum Price (TRY)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Only include listings at or below this price, in Turkish lira. Leave empty for no maximum."
                    },
                    "minArea": {
                        "title": "Minimum Area (m²)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Only include listings with at least this much gross area, in square meters. Leave empty for no minimum."
                    },
                    "maxArea": {
                        "title": "Maximum Area (m²)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Only include listings with at most this much gross area, in square meters. Leave empty for no maximum."
                    },
                    "scrapeDetails": {
                        "title": "Scrape Full Details",
                        "type": "boolean",
                        "description": "Follow each listing to its detail page to collect full data: complete specifications, the whole photo gallery, map coordinates, deed status, and seller phone. Turn off for a faster, lighter run that returns only the summary fields shown in search results.",
                        "default": true
                    },
                    "maxResults": {
                        "title": "Max Results",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Maximum number of listings to collect across all URLs and searches. Set to 0 for as many as possible (up to a built-in safety cap of 10,000). Tip: start with 10-50 to test, then increase.",
                        "default": 100
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
