# Halo Oglasi Search API Documentation

<p><strong>Halo Oglasi Search API</strong> returns Serbian real estate for sale or for rent as JSON, 20 per page. Filter by property type, location ids from the autocomplete route, price in EUR, area, rooms, advertiser type, building type, condition, furnishing, heating and features, sort the results, and page through them. Every item has the price, price per square meter, area, rooms, floor, location chain, advertiser type, thumbnail, publish date and short description. The item <code>url</code> works in the listing route.</p><p><strong>Filters are never ignored.</strong> Items that break a requested price, area or rooms range are not returned and are counted in <code>pagination.filtered_out</code>. A page is never labelled as another page. A page past the last one returns an empty list with the real <code>total_pages</code>.</p><p><strong>Facets.</strong> <code>data.facets</code> lists the filter values with counts for the current search. Each value shows the id to send in the parameter named in <code>filter_param</code>. Rooms count as the total number of rooms. Bathrooms, bedrooms and phone numbers are not available on the site. Failed requests are not billed.</p>

- **Documentation:** [https://scrappa.co/docs/halooglasi-api/halooglasi_search](https://scrappa.co/docs/halooglasi-api/halooglasi_search)
- **API group:** Halo Oglasi API
- **Endpoint:** `GET https://scrappa.co/api/halooglasi/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 |
| --- | --- | --- | --- |
| `listing_type` | string | No | sale (default) or rent. |
| `location_ids` | string | No | Comma separated location ids from the autocomplete route. |
| `property_type` | string | No | flat, house, land, garage, shop, warehouse or room (rent only). Omit for all types. |
| `min_price` | number | No | Minimum price in EUR (rent: per month). |
| `max_price` | number | No | Maximum price in EUR. |
| `min_area` | number | No | Minimum area in square meters. |
| `max_area` | number | No | Maximum area in square meters. |
| `min_rooms` | number | No | Minimum number of rooms, in steps of 0.5. |
| `max_rooms` | number | No | Maximum number of rooms, in steps of 0.5. |
| `advertiser_type` | string | No | owner, agency or investor. |
| `building_type` | string | No | old or new. |
| `condition_ids` | string | No | Comma separated condition ids from data.facets.condition. |
| `furnishing_ids` | string | No | Comma separated furnishing ids from data.facets.furnishing (rent). |
| `heating_ids` | string | No | Comma separated heating ids from data.facets.heating. |
| `feature_ids` | string | No | Comma separated ids from data.facets.additional and data.facets.extras. |
| `sort` | string | No | newest (default), oldest, price_asc, price_desc, area_asc or area_desc. |
| `page` | integer | No | One-based page number, 1 to 5000 (default 1). |

## Example response

```json
{
    "data": {
        "items": [
            {
                "id": "5425642675010",
                "url": "https://www.halooglasi.com/nekretnine/prodaja-stanova/garazno-mesto-u-kraljevim-cardacima/5425642675010",
                "path": "/nekretnine/prodaja-stanova/garazno-mesto-u-kraljevim-cardacima/5425642675010",
                "floor": null,
                "price": {
                    "amount": 20000,
                    "currency": "EUR"
                },
                "rooms": 1,
                "title": "Gara\u017eno mesto u Kraljevim \u010cardacima",
                "area_m2": 13,
                "location": {
                    "area": "Planina",
                    "city": "Kopaonik",
                    "places": [
                        "Kopaonik",
                        "Planina",
                        "Kraljevi \u010dardaci",
                        "Stefana Prvoven\u010danog"
                    ],
                    "street": "Stefana Prvoven\u010danog",
                    "micro_location": "Kraljevi \u010dardaci"
                },
                "thumbnail": "https://img.halooglasi.com/slike/oglasi/Thumbs/231026/m/garazno-mesto-u-kraljevim-cardacima-5425642675010-71806144963.jpg",
                "floor_label": null,
                "image_count": 2,
                "price_per_m2": {
                    "amount": 1538,
                    "currency": "EUR"
                },
                "published_at": "2026-10-19",
                "total_floors": null,
                "advertiser_type": "owner",
                "has_map_position": true,
                "short_description": "Parking mesto je uknjizeno i odmah spremno za preuzimanje. Mogu\u0107 je i godi\u0161nji zakup parking mesta. U ponudi je dostupno vise parking mesta."
            },
            {
                "id": "5425647452310",
                "url": "https://www.halooglasi.com/nekretnine/prodaja-stanova/residence-hill-kopaonik/5425647452310",
                "path": "/nekretnine/prodaja-stanova/residence-hill-kopaonik/5425647452310",
                "floor": 2,
                "price": {
                    "amount": 32000,
                    "currency": "EUR"
                },
                "rooms": 0.5,
                "title": "Residence Hill Kopaonik",
                "area_m2": 20,
                "location": {
                    "area": "Planina",
                    "city": "Kopaonik",
                    "places": [
                        "Kopaonik",
                        "Planina",
                        "\u010cajetinska \u010desma",
                        "Stefana Prvoven\u010danog"
                    ],
                    "street": "Stefana Prvoven\u010danog",
                    "micro_location": "\u010cajetinska \u010desma"
                },
                "thumbnail": "https://img.halooglasi.com/slike/oglasi/Thumbs/260726/m/residence-hill-kopaonik-5425647452310-71816504034.jpg",
                "floor_label": "II",
                "image_count": 13,
                "price_per_m2": {
                    "amount": 1600,
                    "currency": "EUR"
                },
                "published_at": "2026-10-24",
                "total_floors": 7,
                "advertiser_type": "owner",
                "has_map_position": true,
                "short_description": "Na prodaju apartmani u Residence Hill u najluksuznijem kompleksu u vikend naselju. Apartmani si od 20,22,25,27,30,31,40 i 53m2. Imamo useljive i..."
            }
        ],
        "facets": {
            "media": {
                "with_3d": 733,
                "with_video": 860,
                "with_images": 14073
            },
            "extras": {
                "values": [
                    {
                        "id": 12100001,
                        "count": 9241,
                        "label": "Terasa",
                        "filter_value": 12100001
                    },
                    {
                        "id": 12100018,
                        "count": 205,
                        "label": "Francuski balkon",
                        "filter_value": 12100018
                    }
                ],
                "filter_param": "feature_ids"
            },
            "heating": {
                "values": [
                    {
                        "id": 1542,
                        "count": 5420,
                        "label": "CG",
                        "filter_value": 1542
                    },
                    {
                        "id": 1543,
                        "count": 2906,
                        "label": "EG",
                        "filter_value": 1543
                    }
                ],
                "filter_param": "heating_ids"
            },
            "condition": {
                "values": [
                    {
                        "id": 260581,
                        "count": 1740,
                        "label": "Izvorno stanje",
                        "filter_value": 260581
                    },
                    {
                        "id": 370347,
                        "count": 2069,
                        "label": "Renovirano",
                        "filter_value": 370347
                    }
                ],
                "filter_param": "condition_ids"
            },
            "additional": {
                "values": [
                    {
                        "id": 12000001,
                        "count": 4956,
                        "label": "Odmah useljiv",
                        "filter_value": 12000001
                    },
                    {
                        "id": 12000004,
                        "count": 8170,
                        "label": "Uknji\u017een",
                        "filter_value": 12000004
                    }
                ],
                "filter_param": "feature_ids"
            },
            "building_type": {
                "values": [
                    {
                        "id": 387234,
                        "count": 3354,
                        "label": "Stara gradnja",
                        "filter_value": "old"
                    },
                    {
                        "id": 387235,
                        "count": 6010,
                        "label": "Novogradnja",
                        "filter_value": "new"
                    }
                ],
                "filter_param": "building_type"
            },
            "advertiser_type": {
                "values": [
                    {
                        "id": 387238,
                        "count": 13061,
                        "label": "Agencija",
                        "filter_value": "agency"
                    },
                    {
                        "id": 387237,
                        "count": 657,
                        "label": "Vlasnik",
                        "filter_value": "owner"
                    }
                ],
                "filter_param": "advertiser_type"
            }
        },
        "pagination": {
            "page": 1,
            "per_page": 20,
            "total_count": 14100,
            "total_pages": 705,
            "filtered_out": 0,
            "has_next_page": true,
            "duplicates_removed": 0
        },
        "applied_filters": {
            "sort": "newest",
            "max_area": null,
            "min_area": null,
            "max_price": null,
            "max_rooms": null,
            "min_price": null,
            "min_rooms": null,
            "feature_ids": null,
            "heating_ids": null,
            "listing_type": "sale",
            "location_ids": null,
            "building_type": null,
            "condition_ids": null,
            "property_type": "flat",
            "furnishing_ids": null,
            "advertiser_type": null
        }
    },
    "meta": {
        "billable": true,
        "endpoint_family": "search"
    },
    "success": true
}
```

## Errors

| Status | Error | Description |
| --- | --- | --- |
| 422 | Validation Error | A required parameter, a range or a combination is invalid. This response is not billable. |
| 503 | Upstream Unavailable | Halo Oglasi could not be reached or returned data that does not match the request. This response is not billable and is retryable. |

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