# Emlakjet Property Search API Documentation

Scrappa's `GET /api/emlakjet/search` returns Emlakjet property in Turkey as structured JSON, for sale or for rent, with location, type, price, rooms, bathrooms, area, sort and paging.

## What you get

One request returns one page of up to 30 listings, Emlakjet's own match count in `pagination.total` and the real `page`. Each listing has `id`, `title`, `url`, `listing_type`, `listing_type_label`, `property_type`, `price`, `currency`, `price_per_sqm`, `area.gross_sqm`, `rooms`, `bedrooms`, `floor`, `location`, `images`, `has_video`, `badges`, `posted_at`, `agency` and `agent`. A field Emlakjet does not state is `null`. Call the listing endpoint for coordinates, fees, bathrooms, features and all images.

## Filters are honoured

Emlakjet ignores a value it does not know and returns the unfiltered list. This API therefore checks every value before the lookup and rejects unknown values with `422`, for example `2+1` (write it as `2-1`). It also checks every returned row against `min_price`, `max_price`, `min_area`, `max_area` and `rooms`. A row that breaks a filter is dropped and counted in `pagination.dropped_by_filter`. `query` echoes the applied filters.

## Location

Take `location` from `search_params` of `/api/emlakjet/autocomplete`, for example `istanbul-kadikoy`. Without a location the search covers Turkey. A type and location pair that does not exist returns `404`.

## Sorting

`sort` is `price_asc` or `price_desc`. Without it Emlakjet uses its recommended order.

## Pagination

`page` runs from 1 to 50, 30 listings per page. A page past the last one returns an empty list with the real `page`. It never returns page 1 data under another page number.

- **Documentation:** [https://scrappa.co/docs/emlakjet-api/emlakjet_search](https://scrappa.co/docs/emlakjet-api/emlakjet_search)
- **API group:** Emlakjet API
- **Endpoint:** `GET https://scrappa.co/api/emlakjet/search`

## Authentication

Send your Scrappa API key in the `X-API-KEY` request header. Paid endpoints also support accountless x402 payments when called without an API key.

## Parameters

| Parameter | Type | Required | Description |
| --- | --- | --- | --- |
| `trade` | string | Yes | sale or rent. |
| `type` | string | No | konut (default), daire, villa, arsa, mustakil-ev, bina, residence, ofis, is-yeri, tarla, yazlik, depo, devremulk or fabrika. For rent: konut, daire, ofis, is-yeri, depo or yazlik. |
| `location` | string | No | Location slug from autocomplete, for example istanbul-kadikoy. |
| `min_price` | integer | No | Minimum price in Turkish lira. |
| `max_price` | integer | No | Maximum price in Turkish lira. |
| `rooms` | string | No | Room layouts, 2+1 written as 2-1. Comma-separated, for example 2-1,3-1. |
| `bathrooms` | integer | No | Number of bathrooms, 1 to 5. |
| `min_area` | integer | No | Minimum gross area in square metres. |
| `max_area` | integer | No | Maximum gross area in square metres. |
| `sort` | string | No | price_asc or price_desc. |
| `page` | integer | No | Result page, 1 to 50. |

## Example request

```bash
#!/bin/bash

curl -X GET \
    -H "x-api-key: YOUR_API_KEY_HERE" \
    "https://scrappa.co/api/emlakjet/search?trade=sale&location=istanbul-kadikoy&max_price=8000000&rooms=2-1&sort=price_asc"
```

## Example response

```json
{
    "success": true,
    "data": {
        "items": [
            {
                "id": "20023368",
                "title": "Turyap G\u00f6ztepe Den Erenk\u00f6y De 3+1 Sat\u0131l\u0131k Daire",
                "url": "https://www.emlakjet.com/ilan/turyap-goztepe-den-erenkoy-de-31-satilik-daire-20023368",
                "listing_type": "sale",
                "listing_type_label": "Sat\u0131l\u0131k Konut",
                "property_type": "Konut",
                "price": 7950000,
                "currency": "TRY",
                "price_per_sqm": 58889,
                "availability": "InStock",
                "area": {
                    "gross_sqm": 135
                },
                "rooms": "2+1",
                "bedrooms": 2,
                "floor": "4. Kat",
                "location": {
                    "label": "Erenk\u00f6y Mahallesi, Kad\u0131k\u00f6y",
                    "neighborhood": "Erenk\u00f6y Mahallesi",
                    "district": "Kad\u0131k\u00f6y"
                },
                "images": [
                    "https://imaj.emlakjet.com/resize/640/0/listing/20023368/AE566253288191CE5D879E51DAE1D8C320023368.jpg"
                ],
                "has_video": true,
                "badges": [
                    "YEN\u0130"
                ],
                "posted_at": "2026-10-25",
                "agency": {
                    "id": 1307951,
                    "name": "TURYAP G\u00f6ztepe",
                    "logo": "https://imaj.emlakjet.com/resize/640/0/logo/1307951/806B8E80BD4819BC10A0BA38307DC220.jpg",
                    "type": "corporate"
                },
                "agent": {
                    "name": "Mehmet Ali \u00c7AKMAK"
                }
            }
        ],
        "pagination": {
            "page": 1,
            "per_page": 30,
            "total": 15,
            "total_pages": 1,
            "returned": 1,
            "dropped_by_filter": 0,
            "has_more": false
        },
        "query": {
            "trade": "sale",
            "type": "konut",
            "location": "istanbul-kadikoy",
            "max_price": 8000000,
            "rooms": [
                "2-1"
            ],
            "sort": "price_asc"
        }
    },
    "meta": {
        "endpoint_family": "search",
        "billable": true
    }
}
```

## Errors

| Status | Error | Description |
| --- | --- | --- |
| 404 | Not Found | No Emlakjet search page exists for that type and location. Take the location from autocomplete. (`NOT_FOUND`). Non-billable. |
| 422 | Validation Error | A query parameter is missing, unknown or unusable. Unknown parameters and unknown values are rejected before any lookup, never ignored. Non-billable. |
| 503 | Upstream Unavailable | Emlakjet could not be reached after one retry, answered with an error or changed its format (`UPSTREAM_UNAVAILABLE`). Retryable and never billed. Clients are never rate limited. |

## More Scrappa resources

- [API documentation](https://scrappa.co/docs)
- [Full LLM-readable API reference](https://scrappa.co/llms-full.txt)
- [OpenAPI specification](https://scrappa.co/docs/api.json)
- [Pricing](https://scrappa.co/pricing)
