Serbian Real Estate Scraper | Nekretnine.rs
Pricing
from $2.00 / 1,000 listings
Serbian Real Estate Scraper | Nekretnine.rs
Scrape apartments, houses, rentals, land, prices, images, and detailed real estate listings from Nekretnine.rs with advanced filters for property type, location, price, rooms, and more. Export structured JSON data for market analysis, lead generation, and property tracking.
Pricing
from $2.00 / 1,000 listings
Rating
0.0
(0)
Developer
TrueFalseMaybe
Maintained by CommunityActor stats
0
Bookmarked
6
Total users
1
Monthly active users
43 minutes ago
Last modified
Categories
Share
Nekretnine.rs Real Estate Scraper
This Apify Actor scrapes structured real estate listings from Nekretnine.rs, one of the largest property marketplaces in Serbia.
Give it a city and some filters (or paste a full search URL, or specific listing IDs/URLs), and it returns clean, structured data for every matching listing — price, size, rooms, floor, location, amenities, photos, and optionally the advertising agency's contact details.
How It Works
You can point the Actor at listings in three ways (checked in this order):
- Direct listings — pass specific
listingIdsand/orlistingUrlsto scrape exactly those properties, skipping search entirely. - Custom search URL — paste any search URL copied from your browser (e.g. after setting filters on the site yourself) into
startUrl. - Built-in filters — set
cityplus any of the price/size/room/keyword filters below and the Actor builds the search URL for you.
The Actor then crawls the search results (following pagination automatically) or the direct listings, and extracts structured data from each listing page into an Apify Dataset — one item per property.
Because the target site blocks Apify's datacenter proxy IPs, the Actor always routes requests through Apify's residential proxy. This is built in and not configurable — there's no proxy input.
Input
Direct listings
| Field | Type | Description |
|---|---|---|
listingIds | string[] | Numeric listing ID(s), e.g. for https://www.nekretnine.rs/oglasi/1030479/ the ID is 1030479. |
listingUrls | string[] | Full listing URLs to scrape directly. |
If either of these is set, they take priority and everything below is ignored.
Search
| Field | Type | Description |
|---|---|---|
startUrl | string | A full nekretnine.rs search URL, e.g. https://www.nekretnine.rs/prodaja-stambenih-nekretnina/beograd/?prezzoMinimo=50000. Overrides all filter fields below (except maxResults) if set. |
city | string | City to search in, e.g. "Beograd" or "Novi Sad". Ignored if startUrl is set. |
typeOfListing | string | "sale" or "rent". Default "sale". Ignored if startUrl is set. |
minPrice / maxPrice | integer | Price range in EUR. Ignored if startUrl is set. |
sqMeterMin / sqMeterMax | integer | Size range in m². Ignored if startUrl is set. |
noOfRoomsMin / noOfRoomsMax | integer | Room count range. Ignored if startUrl is set. |
keywords | string[] | Only show listings whose description matches these keywords, e.g. "grad", "kamin". Ignored if startUrl is set. |
All filters above are independent and can be combined freely (e.g. only minPrice, or minPrice + sqMeterMin, etc).
Filtering by property subtype (houses, cottages, land, commercial, etc.) isn't exposed as a separate input — if you need it, build the URL for it on the site yourself and pass it via
startUrl.
Crawl settings
| Field | Type | Description |
|---|---|---|
maxResults | integer | Maximum number of listings to scrape. Leave empty for unlimited. Doesn't apply when scraping specific listingIds/listingUrls. |
startPage | integer | Skip ahead to this search-results page instead of starting from page 1. Default 1. Only applies to City/filter searches, not startUrl or direct listings. |
Nekretnine.rs never shows more than 2000 results for a given search, no matter how many total matches it reports. If your search matches more than that, narrow it down with filters (price, size, rooms, keywords) or split it by city/municipality to get everything.
Add-ons
| Field | Type | Description |
|---|---|---|
scrapeCompany | boolean | Scrape the agency/company advertising each property: name, address, phone numbers, website, logo, opening hours, and the specific agent's name when the site shows one. Default false. Additional charges apply per listing when enabled. |
Full input example
{"city": "Novi Sad","typeOfListing": "rent","minPrice": 200,"maxPrice": 800,"noOfRoomsMin": 2,"keywords": ["kamin"],"maxResults": 50,"scrapeCompany": true}
Or, to scrape specific listings directly:
{"listingIds": ["1030479"],"scrapeCompany": false}
Or, using a search URL copied straight from your browser:
{"startUrl": "https://www.nekretnine.rs/prodaja-stambenih-nekretnina/beograd/?prezzoMinimo=50000&prezzoMassimo=70000","maxResults": 100}
Output
Each dataset item represents one property listing.
Listing fields
| Field | Type | Description |
|---|---|---|
title | string | Listing title |
contract | string | Sale or rent, as reported by the site |
listingUrl | string | URL of the listing |
description | string | Full property description |
price | number | Price (null if the seller hides it) |
size | number | Size in m² |
pricePerSqMeter | number | Price divided by size |
numberOfRooms | number | Number of rooms |
numberOfBedrooms | number | Number of bedrooms |
numberOfBathrooms | number | Number of bathrooms |
parking | boolean | Whether a garage/parking space is included |
garageDetails | string | Raw garage/parking description |
propertyFloor | number | Floor the property is on (0 for ground floor) |
totalFloors | number | Total floors in the building |
hasElevator | boolean | Whether the building has an elevator |
condition | string | Property condition (e.g. "Novogradnja", "Renovirano") |
buildingYear | string | number | Year built, as reported by the site |
energyClass | string | Energy efficiency class |
heatingType | string | Heating type |
kitchenType | string | Kitchen type/status |
isNew | boolean | Whether the listing is flagged as new |
luxury | boolean | Whether the listing is flagged as luxury |
registered | boolean | Whether the property is legally registered ("uknjižen") |
referenceCode | string | Agency's internal reference code |
features | string[] | Full list of visible amenities (balcony, alarm, fiber, etc.) |
latitude / longitude | number | GPS coordinates |
address | string | Street address |
city | string | City |
municipality | string | Municipality/macrozone |
neighborhood | string | Neighborhood/microzone |
datePublished | string | Publication date (DD.MM.YYYY.) |
dateUpdated | string | Last updated date (DD.MM.YYYY.) |
image | string | Main/first photo URL |
images | string[] | All photo URLs |
agency | object | Agency/company info — only present when scrapeCompany is enabled |
Photos are included at no extra cost — no add-on needed for image/images.
agency object (requires scrapeCompany)
| Field | Type | Description |
|---|---|---|
name | string | Agency name |
url | string | Agency's page on nekretnine.rs |
agencyUrl | string | Agency's own external website |
phones | object[] | All phone numbers, each { type, value } |
businessPhone | string | Convenience alias for the office/landline number |
mobilePhone | string | Convenience alias for the mobile number |
image | string | Agency logo URL |
numberOfListing | number | Number of active listings the agency has |
address | string | Agency address |
latitude / longitude | number | Agency GPS coordinates |
openingHours | array | Opening hours, when the agency provides them (empty otherwise) |
agents | array | Agency's listed agents, when provided (empty otherwise) |
contactPerson | object | The specific agent handling this listing, if the site names one — { name, phones } |
Output example
{"title": "Dvosoban stan, Vračar","contract": "sale","listingUrl": "https://www.nekretnine.rs/oglasi/1030479/","description": "Prostran dvosoban stan u mirnoj ulici...","price": 145000,"size": 62,"pricePerSqMeter": 2339,"numberOfRooms": 2,"numberOfBedrooms": 1,"numberOfBathrooms": 1,"parking": true,"garageDetails": "Garažno mesto","propertyFloor": 3,"totalFloors": 5,"hasElevator": true,"condition": "Renovirano","buildingYear": 1978,"energyClass": "C","heatingType": "Centralno grejanje","kitchenType": "Odvojena","isNew": false,"luxury": false,"registered": true,"referenceCode": "VR-1234","features": ["Terasa", "Klima", "Internet"],"latitude": 44.797,"longitude": 20.478,"address": "Njegoševa 15","city": "Beograd","municipality": "Vračar","neighborhood": "Neimar","datePublished": "12.03.2026.","dateUpdated": "20.03.2026.","image": "https://www.nekretnine.rs/.../photo1.jpg","images": ["https://www.nekretnine.rs/.../photo1.jpg", "https://www.nekretnine.rs/.../photo2.jpg"],"agency": {"name": "Nebessa Kvart","url": "https://www.nekretnine.rs/agencije/nebessa-kvart/","agencyUrl": "https://nebessakvart.rs","phones": [{ "type": "tel1", "value": "011/123-4567" },{ "type": "cell", "value": "064/123-4567" }],"businessPhone": "011/123-4567","mobilePhone": "064/123-4567","image": "https://www.nekretnine.rs/.../logo.jpg","numberOfListing": 42,"address": "Kneza Miloša 10, Beograd","latitude": 44.804,"longitude": 20.462,"openingHours": [],"agents": [],"contactPerson": {"name": "Marko Marković","phones": [{ "type": "cell", "value": "065/987-6543" }]}}}
Legal Disclaimer
This Actor is not affiliated with, endorsed by, or officially connected to Nekretnine.rs.
- All trademarks and brand names belong to their respective owners
- This scraper is intended for educational, analytical, and research purposes only
- Users are responsible for complying with Nekretnine.rs's terms of service and applicable laws