# Zigbang Property Search API Documentation

<p><strong>Zigbang Property Search API Documentation</strong> Search Zigbang (직방) listings in South Korea for monthly rent (월세), jeonse (전세) and sale (매매) of one-rooms (원룸), villas (빌라) and officetels (오피스텔). Pick a place with lat and lng (use the autocomplete endpoint to find them) or a subway_id with a radius of up to 2 km. Filter by deposit, rent, sale price, maintenance fee, exclusive area, floor, room type, bathrooms, elevator, parking, pets, CCTV, south facing, immediate move-in and loan lease. Each listing returns the id, public Zigbang url, Korean title, property and sales type (Korean text and a code), prices in man-won and in KRW, maintenance fee, area in square metres and pyeong, floor, address parts, coordinates, thumbnail, registration time (ISO 8601, UTC) and the agency id. Prices are in man-won (10,000 KRW) next to the exact KRW value. Korean text is returned as Zigbang shows it. Apartment listings are not available on Zigbang's web search, so apartments are not covered. There is no sort parameter because Zigbang offers no sort: listings keep Zigbang's own ranking, with promoted listings first. Zigbang returns a whole map cell without paging, so Scrappa pages it for you: page N is slice N of that list, page labels always match your request and a page past the end is empty. total_count is the number of listings in the cell before the row check. Every row is checked again against your filters and rows that fail are dropped and counted in filtered_out. A valid search with no matches is a successful response with an empty list.</p>

- **Documentation:** [https://scrappa.co/docs/zigbang-api/zigbang_search](https://scrappa.co/docs/zigbang-api/zigbang_search)
- **API group:** Zigbang API
- **Endpoint:** `GET https://scrappa.co/api/zigbang/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_type` | string | Yes | oneroom (one-room), villa or officetel. Apartments are not available. Example: villa. |
| `sales_type` | string | No | monthly_rent (월세), jeonse (전세) or sale (매매). Omit it to get all types. One-rooms are never sold, so oneroom with sale returns 422. Required when you filter by deposit, rent or price. |
| `lat` | number | No | Latitude of the search point in South Korea (33.0 to 38.7). Send it together with lng. Zigbang answers one map cell of about 5 km around the point, not a free radius. Example: 37.4979. |
| `lng` | number | No | Longitude of the search point in South Korea (124.5 to 132.0). Send it together with lat. Example: 127.0276. |
| `subway_id` | integer | No | Search around a subway station instead of lat and lng. Use the subway_id from the autocomplete endpoint. Example: 31 (Gangnam station). |
| `radius` | number | No | Search radius in km around the subway station, 0.1 to 2. Defaults to 1. Only works with subway_id. |
| `deposit_min` | integer | No | Minimum deposit in man-won (10,000 KRW). Needs sales_type monthly_rent or jeonse. |
| `deposit_max` | integer | No | Maximum deposit in man-won (10,000 KRW). Needs sales_type monthly_rent or jeonse. Example: 1000 for 10,000,000 KRW. |
| `rent_min` | integer | No | Minimum monthly rent in man-won. Needs sales_type monthly_rent. |
| `rent_max` | integer | No | Maximum monthly rent in man-won. Needs sales_type monthly_rent. Example: 60. |
| `price_min` | integer | No | Minimum sale price in man-won. Needs sales_type sale. |
| `price_max` | integer | No | Maximum sale price in man-won. Needs sales_type sale. Example: 60000 for 600,000,000 KRW. |
| `manage_cost_min` | integer | No | Minimum monthly maintenance fee in man-won. Listings without a fee count as 0. |
| `manage_cost_max` | integer | No | Maximum monthly maintenance fee in man-won. Listings without a fee count as 0. |
| `size_min` | number | No | Minimum exclusive area in square metres. |
| `size_max` | number | No | Maximum exclusive area in square metres. |
| `floor` | string | No | One or more of first (1st floor), above_ground, semi_basement or rooftop, comma separated. Example: first,above_ground. |
| `room_type` | string | No | One or more of open_studio, separate_studio, duplex_studio, two_room, three_room_plus or four_room_plus, comma separated. |
| `bathroom_count` | integer | No | Number of bathrooms, 1 to 10. |
| `elevator` | boolean | No | Send true to keep only buildings with an elevator. |
| `parking` | boolean | No | Send true to keep only listings with parking. |
| `pet` | boolean | No | Send true to keep only listings that allow pets. |
| `cctv` | boolean | No | Send true to keep only buildings with CCTV. |
| `south_facing` | boolean | No | Send true to keep only south facing listings. |
| `immediate_move` | boolean | No | Send true to keep only listings available for immediate move-in. |
| `loan_lease` | boolean | No | Send true to keep only listings that allow a jeonse loan. |
| `page` | integer | No | Page number, starting at 1. Defaults to 1. A page past the end returns an empty results list with the true total_count. |
| `page_size` | integer | No | Listings per page, 1 to 15. Defaults to 15. |

## Example response

```json
{
    "data": {
        "meta": {
            "page": 1,
            "has_more": true,
            "page_size": 2,
            "total_count": 21,
            "total_pages": 11,
            "filtered_out": 0
        },
        "results": [
            {
                "id": 50626169,
                "url": "https://www.zigbang.com/home/villa/items/50626169",
                "floor": 4,
                "title": "\ub0b4\uc678\uad00 \uae54\ub054 \uc5d8\ubca0 \uc8fc\ucc28",
                "address": "\uc11c\ucd08\uad6c \ubc18\ud3ec\ub3d9",
                "size_m2": 36.4,
                "latitude": 37.5039057968036,
                "agency_id": 14118530,
                "longitude": 127.019767059757,
                "thumbnail": "https://ic.zigbang.com/ic/items/50626169/1.jpg",
                "sales_type": "\uc804\uc138",
                "deposit_krw": 230000000,
                "floor_label": "4",
                "size_pyeong": 11,
                "service_type": "\ube4c\ub77c",
                "property_type": "villa",
                "registered_at": "2026-10-13T03:36:17Z",
                "address_detail": {
                    "city": "\uc11c\ucd08\uad6c",
                    "district": "\ubc18\ud3ec\ub3d9",
                    "province": "\uc11c\uc6b8\uc2dc",
                    "full_text": "\uc11c\uc6b8\uc2dc \uc11c\ucd08\uad6c \ubc18\ud3ec\ub3d9",
                    "lot_number": "742-11"
                },
                "building_floor": 6,
                "deposit_manwon": 23000,
                "room_type_code": "04",
                "supply_size_m2": 36.4,
                "manage_cost_krw": 120000,
                "sales_type_code": "jeonse",
                "supply_size_pyeong": 11
            }
        ]
    },
    "meta": {
        "billable": true,
        "filtered_out": 0,
        "endpoint_family": "search"
    },
    "success": true
}
```

## Errors

| Status | Error | Description |
| --- | --- | --- |
| 422 | Validation Error | A query parameter is missing or invalid, for example no place, a point outside South Korea, deposit filters with sales_type sale, or oneroom with sale. No upstream request is made. This response is not billable. |
| 503 | Service Unavailable | Zigbang could not be reached, blocked every attempt, or answered with a shape that no longer matches the documented contract (error code PARSER_DRIFT). 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)
