Skip to content
Scrappa Get API key
Nepremicnine.net API 1 credit/request

Nepremicnine.net Property Search API Documentation

GET https://scrappa.co/api/nepremicnine/search?deal_type=sale&property_type=1&max_price=250000&min_area=50

Scrappa's GET /api/nepremicnine/search returns Nepremicnine.net property for sale (deal_type=sale, the default) or rent (rent) in Slovenia as structured JSON, 30 listings per page.

What you get

One request returns one page of listings plus the real match count in total_results and total_pages. Each listing has id, deal_type, property_type, rooms_type, price with currency and price_period, the original price_text, area, plot_area, floor, build_year, energy_class, location (region, unit, municipality, settlement and, when the seller publishes it, coordinates), a short summary, the main image, extras, the listing dates and the agency with phone and logo. Call the listing endpoint for the full description, all images, bedrooms, bathrooms and features.

Filters are honoured

Nepremicnine.net applies every filter itself, so total_results and the paging always describe the real result set. Unknown parameters are rejected with 422 instead of being ignored. applied_filters echoes what was sent.

Not available

Nepremicnine.net offers no sort order, no bedroom or bathroom filter and no settlement filter to apps. They are not accepted here, and sending them returns 422. Listings come in the order Nepremicnine.net uses. Bedrooms and bathrooms are returned on the listing endpoint. To narrow by place, use unit_id or region.

Slovenia only

Only Slovenian listings are returned. Prices are in EUR. price_period is month for rent, per_person_month for a price per person and empty for a sale price. price_per_person repeats the amount for per-person rent. A price of 0 is returned as null; price_text keeps the original text.

Pagination

page is 1-based. A page past the last one returns an empty list with the correct totals. It never returns another page's listings.

Data quality

Values pass through as agencies entered them. An area of 0 or an unknown coordinate is returned as null.

Nepremicnine.net Property Search API Documentation 1 credit/request

Endpoint

Request preview
GET
https://scrappa.co/api/nepremicnine/search?deal_type=sale&property_type=1&max_price=250000&min_area=50
Auth header
x-api-key
Cost
1 credit/request
Response preview
200 OK
{
    "success": true,
    "total_results": 4210,
    "total_pages": 141,
    "returned": 1,
    "pagination": {
        "page": 1,
        "per_page": 30,
        "total_pages": 141,
        "has_next_page": true,
        "has_previous_page": false
    },
    "applied_filters": {
        "deal_type": "sale",
...

Parameters

Start with the required fields, then add optional filters only when your use case needs them.

Runnable path

This endpoint has no required query parameters.

12 optional filters available.

deal_type string Optional

sale (default) or rent.

Example value sale
property_type integer Optional

Property type id from the property-types endpoint, for example 1 for apartment.

Example value 1
rooms_type integer Optional

One room type id from the property-types endpoint, for example 4 for 2-room.

Example value 10
region integer Optional

Region id: 1 LJ-okolica, 2 Jugozahodna Primorska, 3 Gorenjska, 4 Severna Primorska, 5 Savinjska, 6 Dolenjska, 8 Notranjska, 9 Podravska, 10 Koroška, 11 Zasavska, 12 Posavska, 14 LJ-mesto, 15 Pomurska.

Example value US
unit_id integer Optional

Administrative unit id from the administrative-units endpoint.

Example value 1234567890
min_price integer Optional

Minimum price in EUR, a whole number.

Example value 10
max_price integer Optional

Maximum price in EUR, a whole number.

Example value 250000
min_area integer Optional

Minimum living area in square metres.

Example value 50
max_area integer Optional

Maximum living area in square metres.

Example value 10
min_year integer Optional

Earliest build year, for example 2020.

Example value 10
last_24h boolean Optional

true to return only listings from the last 24 hours.

Example value true
page integer Optional

Result page, 1-based. 30 listings per page.

Example value 1

Request Examples

PHP
<?php

$curl = curl_init();

curl_setopt_array($curl, [
    CURLOPT_URL => "https://scrappa.co/api/nepremicnine/search?deal_type=sale&property_type=1&max_price=250000&min_area=50",
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_ENCODING => "",
    CURLOPT_MAXREDIRS => 10,
    CURLOPT_TIMEOUT => 30,
    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
    CURLOPT_CUSTOMREQUEST => "GET",
    CURLOPT_HTTPHEADER => [
        "x-api-key: YOUR_API_KEY_HERE"
    ],
]);

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
    echo "cURL Error #:" . $err;
} else {
    echo $response;
}
PHP
<?php

use Illuminate\Support\Facades\Http;

$response = Http::timeout(30)
    ->withHeaders(['x-api-key' => 'YOUR_API_KEY_HERE'])
    ->get('https://scrappa.co/api/nepremicnine/search?deal_type=sale&property_type=1&max_price=250000&min_area=50');

if ($response->successful()) {
    echo $response->body();
} else {
    echo "Error: " . $response->status();
}
JavaScript
const options = {
    method: 'GET',
    headers: {
        'x-api-key': 'YOUR_API_KEY_HERE'
    }
};

fetch('https://scrappa.co/api/nepremicnine/search?deal_type=sale&property_type=1&max_price=250000&min_area=50', options)
    .then(response => {
        if (!response.ok) {
            throw new Error(`HTTP error! status: ${response.status}`);
        }
        return response.text();
    })
    .then(data => console.log(data))
    .catch(error => console.error('Error:', error));
JavaScript
const axios = require('axios');

const options = {
    method: 'GET',
    url: 'https://scrappa.co/api/nepremicnine/search?deal_type=sale&property_type=1&max_price=250000&min_area=50',
    headers: {
        x-api-key: 'YOUR_API_KEY_HERE',
    }
};

try {
    const response = await axios(options);
    console.log(response.data);
} catch (error) {
    console.error('Error:', error.message);
}
Ruby
require 'net/http'
require 'uri'

uri = URI.parse("https://scrappa.co/api/nepremicnine/search?deal_type=sale&property_type=1&max_price=250000&min_area=50")
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = uri.scheme == 'https'

request = Net::HTTP::Get.new(uri.request_uri)
request['x-api-key'] = 'YOUR_API_KEY_HERE'

begin
    response = http.request(request)
    puts response.body
rescue => e
    puts "Error: #{e.message}"
end
Python
import http.client
import json

conn = http.client.HTTPSConnection("scrappa.co")

headers = {
    'x-api-key': 'YOUR_API_KEY_HERE',
}

try:
    conn.request("GET", "/api/nepremicnine/search?deal_type=sale&property_type=1&max_price=250000&min_area=50", headers=headers)
    res = conn.getresponse()
    data = res.read()
    print(data.decode("utf-8"))
except Exception as e:
    print(f"Error: {e}")
finally:
    conn.close()
Python
import requests

headers = {
    'x-api-key': 'YOUR_API_KEY_HERE',
}

try:
    response = requests.get('https://scrappa.co/api/nepremicnine/search?deal_type=sale&property_type=1&max_price=250000&min_area=50', headers=headers)
    response.raise_for_status()
    print(response.text)
except requests.exceptions.RequestException as e:
    print(f"Error: {e}")
Java
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
import java.io.IOException;

public class ApiExample {
    public static void main(String[] args) {
        OkHttpClient client = new OkHttpClient();

        Request request = new Request.Builder()
            .url("https://scrappa.co/api/nepremicnine/search?deal_type=sale&property_type=1&max_price=250000&min_area=50")
        .addHeader("x-api-key", "YOUR_API_KEY_HERE")
            .build();

        try (Response response = client.newCall(request).execute()) {
            if (response.isSuccessful()) {
                System.out.println(response.body().string());
            } else {
                System.out.println("Error: " + response.code());
            }
        } catch (IOException e) {
            System.out.println("Error: " + e.getMessage());
        }
    }
}
Go
package main

import (
    "fmt"
    "net/http"
    "io/ioutil"
)

func main() {
    client := &http.Client{}
    req, err := http.NewRequest("GET", "https://scrappa.co/api/nepremicnine/search?deal_type=sale&property_type=1&max_price=250000&min_area=50", nil)
    if err != nil {
        fmt.Println("Error creating request:", err)
        return
    }
    req.Header.Set("x-api-key", "YOUR_API_KEY_HERE")

    resp, err := client.Do(req)
    if err != nil {
        fmt.Println("Error making request:", err)
        return
    }
    defer resp.Body.Close()

    body, err := ioutil.ReadAll(resp.Body)
    if err != nil {
        fmt.Println("Error reading response:", err)
        return
    }

    fmt.Println(string(body))
}
Terminal
#!/bin/bash

curl -X GET \
    -H "x-api-key: YOUR_API_KEY_HERE" \
    "https://scrappa.co/api/nepremicnine/search?deal_type=sale&property_type=1&max_price=250000&min_area=50"
C#
using System;
using System.Net.Http;
using System.Threading.Tasks;

class Program
{
    static async Task Main()
    {
        using var client = new HttpClient();
        client.DefaultRequestHeaders.Add("x-api-key", "YOUR_API_KEY_HERE");

        try
        {
            var response = await client.SendAsync(new HttpRequestMessage(HttpMethod.Get, "https://scrappa.co/api/nepremicnine/search?deal_type=sale&property_type=1&max_price=250000&min_area=50"));
            var content = await response.Content.ReadAsStringAsync();
            Console.WriteLine(content);
        }
        catch (Exception ex)
        {
            Console.WriteLine($"Error: {ex.Message}");
        }
    }
}
TypeScript
import axios from 'axios';

async function run(): Promise<void> {
    try {
        const response = await axios({
            method: 'GET',
            url: 'https://scrappa.co/api/nepremicnine/search?deal_type=sale&property_type=1&max_price=250000&min_area=50',
            headers: {
        'x-api-key': 'YOUR_API_KEY_HERE',
            },
        });

        console.log(response.data);
    } catch (error) {
        console.error('Error:', error);
    }
}

void run();
RUST
use reqwest::Client;

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let client = Client::new();

    let response = client
        .get("https://scrappa.co/api/nepremicnine/search?deal_type=sale&property_type=1&max_price=250000&min_area=50")
        .header("x-api-key", "YOUR_API_KEY_HERE")
        .send()
        .await?;

    println!("{}", response.text().await?);

    Ok(())
}

Response Schema

Example response fields are illustrative; inspect the JSON before integrating.

Example response fields

Scan these fields before integrating.

success total_results total_pages returned pagination applied_filters listings meta

Common listings fields

id reference deal_type deal_type_label
JSON Response
200 OK
{
    "success": true,
    "total_results": 4210,
    "total_pages": 141,
    "returned": 1,
    "pagination": {
        "page": 1,
        "per_page": 30,
        "total_pages": 141,
        "has_next_page": true,
        "has_previous_page": false
    },
    "applied_filters": {
        "deal_type": "sale",
        "property_type": 1,
        "max_price": 250000,
        "min_area": 50
    },
    "listings": [
        {
            "id": "rkE39j",
            "reference": null,
            "deal_type": "sale",
            "deal_type_label": "Prodaja",
            "property_type": "Stanovanje",
            "rooms_type": "3-sobno",
            "rooms_types": [
                "3-sobno"
            ],
            "price": 229000,
            "currency": "EUR",
            "price_period": null,
            "price_text": "229.000,00 EUR",
            "price_note": null,
            "area": 74.07,
            "plot_area": null,
            "floor": "2/4",
            "build_year": 2008,
            "build_year_label": "zgrajeno leta",
            "renovation_year": null,
            "energy_class": null,
            "location": {
                "country": "Slovenija",
                "region_id": 14,
                "region": "LJ-mesto",
                "unit_id": 204,
                "unit": "Lj. Center",
                "municipality_id": 78,
                "municipality": "Ljubljana",
                "settlement_id": 2379,
                "settlement": "LJ-Center",
                "area_name": "LJ. CENTER",
                "latitude": 46.0511,
                "longitude": 14.5051
            },
            "summary": "74,07 m\u00b2, 3-sobno, zgrajeno l. 2008, 2/4 nad., prodamo. Cena: 229.000,00 EUR",
            "image": "https://img.nepremicnine.net/slonep_oglasi2/24976651.jpg",
            "extras": {
                "pogled": "Lep razgled, Mirna lokacija"
            },
            "student_friendly": null,
            "public_auction": null,
            "listed_at": "2026-10-25",
            "updated_at": "2026-10-25",
            "agency": {
                "id": 2750,
                "name": "TRG NEPREMI\u010cNIN d.o.o.",
                "phone": "041/851-851",
                "phones": [
                    "041/851-851"
                ],
                "email": null,
                "website": null,
                "address": null,
                "postal_code": null,
                "city": null,
                "logo": "https://img.nepremicnine.net/slonep_agenc120/2750.jpg"
            }
        }
    ],
    "meta": {
        "endpoint_family": "search",
        "billable": true,
        "attempts": 1
    }
}

Errors

Handle these documented responses before retrying or showing customer-facing failures.

422

Validation Error

A query parameter is missing, unknown or unusable. Unknown parameters are rejected, never ignored. Non-billable.

{
    "errors": {
        "deal_type": [
            "The selected deal type is invalid."
        ]
    },
    "message": "The selected deal type is invalid."
}
503

Upstream Unavailable

Nepremicnine.net could not be reached after retries or answered with an error (`upstream_unavailable`, `upstream_blocked`, `parser_drift`). Retryable and never billed. Clients are never rate limited.

{
    "meta": {
        "attempts": 3,
        "billable": false,
        "retryable": true,
        "endpoint_family": "search"
    },
    "error": {
        "code": "upstream_unavailable",
        "message": "Nepremicnine.net is temporarily unavailable. Please retry."
    },
    "success": false
}

Generate Code with AI

Copy a ready-made prompt with all the endpoint details, parameters, and example responses. Paste it into ChatGPT, Claude, or any AI assistant to instantly generate working code.

Try It Live

Test this endpoint in our interactive playground with real data.