# Hepsiemlak Search API Documentation

<p><strong>Hepsiemlak Search API</strong> returns one page of listings for a query. Pick the property class and listing type, narrow by place, price, rooms, bathrooms, area, building age, floor, heating, owner type, usage status and media, then sort and page. Each item has the price in TRY, price per square meter, gross and net area, rooms, floor, building age, location, photos, agency and agent with public phone numbers, badges and dates. Every filter is honoured on every item: a value the upstream cannot honour is rejected with 422, never ignored. <code>pagination.total</code> is the count the source reports and can include new-build project cards, which are skipped here (<code>skipped_project_cards</code>) and served by the projects route. Bathrooms, heating, usage status and owner type are filtered at the source and are not shown on search items; open the listings with the bulk route to read them. A page past the last result returns an empty list with the requested page number. Failed requests are not billed.</p>

- **Documentation:** [https://scrappa.co/docs/hepsiemlak-api/hepsiemlak_search](https://scrappa.co/docs/hepsiemlak-api/hepsiemlak_search)
- **API group:** Hepsiemlak API
- **Endpoint:** `GET https://scrappa.co/api/hepsiemlak/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 |
| --- | --- | --- | --- |
| `property_class` | string | No | housing (default), commercial, land, timeshare or tourist. |
| `listing_type` | string | No | sale (default), rent, seasonal_rent (housing only), transfer_sale and transfer_rent (commercial only) or swap_sale (land only). |
| `property_type` | array | No | Repeatable property type slug of the class, such as daire, villa, mustakil-ev, dukkan-magaza, tarla or otel. Use the filters route for the full list. |
| `city` | string | No | City slug such as istanbul. Get slugs from autocomplete or filters. |
| `county` | array | No | Repeatable county slug such as kadikoy. Needs city. |
| `district` | array | No | Repeatable district slug such as kadikoy-goztepe-mah. Read it from the filters route with a county. |
| `area` | array | No | Repeatable area slug such as kadikoy-acibadem. Read it from the filters route with a county. |
| `rooms` | array | No | Repeatable room layout: studyo, 1+1, 2+1, 3+1, 4+1 and so on up to 9-ve-uzeri. 3+1 and 3-1 both work. Several values match any of them. |
| `bathrooms` | array | No | Repeatable: none, 1, 2, 3, 4 or 5_plus. |
| `building_age` | array | No | Repeatable age band: 0 (new), 1_5, 6_10, 11_15, 16_20 or 21_plus. |
| `floors` | array | No | Repeatable floor label such as Zemin, 3, Bodrum or En Üst Kat. The filters route lists all labels. |
| `heating` | array | No | Repeatable heating label such as Kombi, Klima or Merkezi. The filters route lists all labels. |
| `owner_type` | array | No | Repeatable: owner, agency or bank. |
| `usage_status` | array | No | Repeatable: empty, tenant, owner or unknown. |
| `media` | array | No | Repeatable: video, video_call or virtual_tour. Listings must have the media. |
| `price_min` | integer | No | Minimum price in TRY, inclusive. Rent prices are per month. |
| `price_max` | integer | No | Maximum price in TRY, inclusive. |
| `area_min` | integer | No | Minimum gross area in square meters. |
| `area_max` | integer | No | Maximum gross area in square meters. |
| `net_area_min` | integer | No | Minimum net area in square meters. |
| `net_area_max` | integer | No | Maximum net area in square meters. |
| `listing_date` | string | No | Updated within: today, last_3_days, last_week, last_15_days, last_month or last_2_months. It filters the update date, not the creation date. |
| `furnish_status` | string | No | furnished or unfurnished. |
| `furnished` | boolean | No | true for furnished listings only. |
| `balcony` | boolean | No | true for listings with a balcony. |
| `elevator` | boolean | No | true for listings with an elevator. |
| `garden` | boolean | No | true for listings with a garden. |
| `parking` | boolean | No | true for listings with parking. |
| `within_complex` | boolean | No | true for listings inside a housing complex. |
| `loan_eligible` | boolean | No | true for listings that qualify for a loan. |
| `barter` | boolean | No | true for listings open to a swap. |
| `has_campaign` | boolean | No | true for listings with a campaign. |
| `keyword` | string | No | Free text over the listing text, features and place. Use Turkish spelling with accents, 2 to 100 characters. |
| `agency_id` | integer | No | Only listings of this agency. |
| `sort` | string | No | relevance (default), price_asc, price_desc, updated_desc, updated_asc, created_desc or created_asc. price_desc starts with listings that have a mistyped huge price. |
| `page` | integer | No | One-based page number, default 1. A page past the last result returns an empty list. |
| `per_page` | integer | No | Listings per page, 1 to 50, default 20. |

## Example response

```json
{
    "data": {
        "items": [
            {
                "id": "129350-1379",
                "url": "https://www.hepsiemlak.com/istanbul-kadikoy-rasimpasa-satilik/daire/129350-1379",
                "area": {
                    "net_sqm": 90,
                    "gross_sqm": 100
                },
                "agent": {
                    "id": 1,
                    "name": "Example Agent",
                    "photo": null,
                    "phones": [
                        {
                            "type": "PHONE1",
                            "number": "+90212XXXXXXX",
                            "extension": null
                        }
                    ]
                },
                "floor": "En \u00dcst Kat",
                "price": 7050000,
                "rooms": "3+1",
                "title": "TA\u015eK\u00d6PR\u00dc CADDES\u0130 \u00dcZER\u0130 - S\u00d6\u011e\u00dcTL\u00dc\u00c7E\u015eME METROB\u00dcS MARMARAY YANI 3+1",
                "agency": {
                    "id": 129350,
                    "url": null,
                    "logo": "https://example.com/photo.jpg",
                    "name": "REMAX GOAL",
                    "phones": [
                        {
                            "type": "PHONE1",
                            "number": "+90212XXXXXXX",
                            "extension": null
                        }
                    ],
                    "rating": null,
                    "package": null,
                    "badge_year": null,
                    "short_name": "REMAX GOAL",
                    "branded_logo": "https://example.com/photo.jpg",
                    "member_since": null,
                    "licence_number": null
                },
                "badges": [],
                "images": [
                    "https://example.com/photo.jpg",
                    "https://example.com/photo.jpg"
                ],
                "bedrooms": 3,
                "currency": "TRY",
                "location": {
                    "city": "\u0130stanbul",
                    "county": "Kad\u0131k\u00f6y",
                    "district": "Rasimpa\u015fa"
                },
                "seasonal": null,
                "deed_type": "Kat M\u00fclkiyeti",
                "has_video": true,
                "is_shared": true,
                "created_at": "2026-06-12T10:51:59Z",
                "updated_at": "2026-10-23T20:21:11Z",
                "building_age": 31,
                "listing_type": "sale",
                "price_per_sqm": 70500,
                "property_type": "Daire",
                "has_video_call": true,
                "property_class": "Konut",
                "building_floors": null,
                "has_virtual_tour": false,
                "listing_type_label": "Sat\u0131l\u0131k",
                "identification_number": "1234abcd",
                "energy_certificate_number": null
            }
        ],
        "pagination": {
            "page": 1,
            "total": 18,
            "per_page": 20,
            "returned": 17,
            "total_pages": 1,
            "skipped_project_cards": 1
        },
        "applied_filters": {
            "city": "istanbul",
            "sort": "price_asc",
            "rooms": [
                "3+1"
            ],
            "county": [
                "kadikoy"
            ],
            "price_max": 9000000,
            "price_min": 5000000,
            "listing_type": "sale",
            "property_class": "housing"
        }
    },
    "meta": {
        "billable": true,
        "endpoint_family": "search"
    },
    "success": true
}
```

## Errors

| Status | Error | Description |
| --- | --- | --- |
| 422 | Validation Error | A parameter is missing or outside its allowed values. This response is not billable. |
| 422 | Unknown Location | A city, county, district or area slug does not exist. Use a slug from autocomplete or filters. This response is not billable. |
| 503 | Upstream Unavailable | Hepsiemlak could not be reached or capacity is busy. Retry after a short pause. This response is not billable. |

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