# Hepsiemlak Map Search API Documentation

<p><strong>Hepsiemlak Map Search API</strong> returns the listings inside a bounding box as points: listing id, price, coordinates and building age. Give the top left and bottom right corner and add the search filters to narrow the points. Open the ids with the listing or bulk route. Up to 100 points per page.</p>

- **Documentation:** [https://scrappa.co/docs/hepsiemlak-api/hepsiemlak_map](https://scrappa.co/docs/hepsiemlak-api/hepsiemlak_map)
- **API group:** Hepsiemlak API
- **Endpoint:** `GET https://scrappa.co/api/hepsiemlak/map`

## 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. |
| `top_left` | string | Yes | Latitude and longitude of the top left corner of the map area, such as 41.0,29.0. |
| `bottom_right` | string | Yes | Latitude and longitude of the bottom right corner, such as 40.95,29.06. |
| `page` | integer | No | One-based page number, default 1. A page past the last result returns an empty list. |
| `per_page` | integer | No | Points per page, 1 to 100, default 100. |

## Example response

```json
{
    "data": {
        "points": [
            {
                "id": "19996-4377",
                "price": 5950000,
                "currency": "TRY",
                "latitude": 40.993700130266255,
                "longitude": 29.029813016156123,
                "building_age": 35
            }
        ],
        "pagination": {
            "page": 1,
            "total": 79,
            "per_page": 100,
            "returned": 79,
            "total_pages": 1
        },
        "applied_filters": {
            "sort": "relevance",
            "top_left": "41.0,29.0",
            "price_max": 9000000,
            "price_min": 5000000,
            "bottom_right": "40.95,29.06",
            "listing_type": "sale",
            "property_class": "housing"
        }
    },
    "meta": {
        "billable": true,
        "endpoint_family": "map"
    },
    "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)
