4zida.rs Scraper - Serbia Property Listings & Prices avatar

4zida.rs Scraper - Serbia Property Listings & Prices

Pricing

from $1.76 / 1,000 property searches

Go to Apify Store
4zida.rs Scraper - Serbia Property Listings & Prices

4zida.rs Scraper - Serbia Property Listings & Prices

Scrape 4zida.rs: sale and rental listings across Serbia with price, area, rooms, floor, year built, agency and phone. Serbian-language property data from the country's #1 portal.

Pricing

from $1.76 / 1,000 property searches

Rating

0.0

(0)

Developer

SIÁN OÜ

SIÁN OÜ

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

4zida.rs Scraper - Serbia Property Listings & Prices 🚀

Store SIÁN Agency Store Njuškalo Scraper Store Sreality Scraper Store Otodom Scraper

🎉 Every 4zida.rs listing, in Serbian, with the seller type already labelled

For analysts pricing the Serbian market, agencies sourcing stock, and anyone tired of scrolling Beograd by hand

🔎 What is the 4zida.rs Serbia Property Scraper — and when should you use it?

The 4zida.rs Serbia Property Scraper turns public 4zida.rs property listings from anywhere in Serbia into clean, structured rows you can filter, export and feed straight into a spreadsheet, database or AI agent. No account, no portal API key, no browser automation to maintain.

Use it when you need: Serbian sale and rental adverts as rows: asking price or monthly rent in euros, area, rooms, floor and building height, heating, registration, condition, publish and refresh dates, photos, the agency behind the advert and its page on the portal. Every row also names the seller type (agency, owner, company or developer), so an export splits by who is selling after the fact. Switch on full details and each row additionally carries the seller's own advert text, the complete photo set, coordinates, year built, deposit, price per square metre and the agency's phone number.

Use something else when: the property is not in Serbia. Use Njuškalo Scraper for Croatia's biggest classifieds site, with the same sale-and-rent row shape. Use Sreality Scraper for the Czech market leader, including price per square metre and agency contacts. Use Otodom Scraper for Poland, sale and rent, from the country's dominant portal. This actor covers the property surfaces 4zida.rs publishes on its main portal: apartments, houses, commercial premises, lots and garages/parking, each for sale or for rent. It reads what the portal serves to a visitor; the portal's finance calculators, blog and agency-directory pages are not part of it, and sold-price history is not published by 4zida.rs at all.

🤖 Use with AI agents

Already connected to the Apify MCP server? Just ask for this Actor by name: sian.agency/4zida-property-scraper

Your agent can pay for its own runs. This Actor is eligible for agentic payments, so an agent can discover it, run it and settle the bill over x402 (USDC on Base) or Skyfire — without an Apify account or API token of its own. Billing is the same either way: per successful row, never for errors.

Otherwise copy this prompt into Claude, ChatGPT, Cursor or any MCP-enabled assistant:

I want property listings and asking prices from 4zida.rs using the Apify Actor `sian.agency/4zida-property-scraper`.
Use it when I need: Serbian sale and rental adverts as rows: asking price or monthly rent in euros, area, rooms, floor and building height, heating, registration, condition, publish and refresh dates, photos, the agency behind the advert and its page on the portal. Every row also names the seller type (agency, owner, company or developer), so an export splits by who is selling after the fact. Switch on full details and each row additionally carries the seller's own advert text, the complete photo set, coordinates, year built, deposit, price per square metre and the agency's phone number.
Don't use it when: the property is not in Serbia — use njuskalo-property-scraper or sreality-property-scraper or otodom-property-scraper instead.
How to call it: give `locations` a list of Serbian places (`beograd`, `novi-sad`, `nis`; the picker lists the cities and towns of 4zida's own place index) and set `dealType` to `prodaja` for sale or `izdavanje` for rent. Add `unitTypes` to pick apartments, houses, commercial premises, lots or garages/parking; leaving it empty reads apartments, the portal's default surface. Narrow with `minPrice`, `maxPrice`, `minArea` or `maxArea`; the bounds go to the portal's own filter parameters, and anything a filter excludes is never saved and never billed. `sellerType` keeps only agencies, owners, companies or developers, and every row carries the seller type it came from. `includeDetails` opens each advert for its full text, photo set, coordinates and phone, for an extra charge per listing. To expand adverts you already have, set `operation` to `detail` and pass `listingUrls`; to reach a micro-location the picker does not list (a blok, a street), paste its 4zida.rs address into `searchUrls`.
Start with this input:
{
"operation": "search",
"dealType": "prodaja",
"locations": [
"beograd"
],
"unitTypes": [
"stanovi"
],
"maxResults": 200
}
Ask me which Serbian places to cover, whether they want sale or rental listings, and whether the full advert text, photo set and agency phone are worth the extra per-listing charge, then run the Actor and summarise the results as a table.

Things you can ask your agent for:

  • Pull apartments for sale in Novi Sad between €100,000 and €200,000 and rank neighbourhoods by median price per square metre.
  • Find owner-listed rentals in Belgrade under €600 a month, with a phone number for each.
  • Give me this week's new listings in Niš and Kragujevac with the agency name and portal page.

Machine-readable API, MCP config and OpenAPI definition for this Actor are published at apify.com/sian.agency/4zida-property-scraper.md.

📋 Overview

4zida.rs is where Serbia's property market actually happens. Serbia's most-visited dedicated property portal (1.25 million visits a month, three times its nearest dedicated rival) carries around 75,000 active adverts from agencies, developers and private sellers, and publishes its own quarterly price reports for the four biggest cities. This Actor reads it the way the site publishes it and hands you the rows.

Why professionals choose us:

  • The record, not a teaser: price, area, rooms, floor, total floors, heating, registration, condition, seller type, publish date and photo count on every row
  • 20-26 listings per request: a 500-listing sweep of Novi Sad is about 20 requests and finishes in under a minute
  • 🇷🇸 Serbian that survives the trip: place names, layouts and agency names arrive with their diacritics intact (Bačka Palanka, not Backa Palanka), because the Actor reads the structured data the portal embeds rather than scraping pixels
  • 🤝 Seller typing on every row: agency, owner, company or developer, so an export splits by who is selling as well as by where
  • 📄 Full details as a paid add-on: the seller's own text, every photo, coordinates, year built and the agency's phone
  • 💰 $2.00 per 1,000 listings: matched to the field leader's price, with a row that carries what neither rival exposes

✨ Features

  • 🔍 Two operations in one Actor: search 4zida.rs's listing pages, or expand specific adverts by URL
  • 🇷🇸 Every place 4zida indexes: Serbia's cities and towns picked from a list built off the portal's own place index, not typed and hoped for
  • 🏠 All five property surfaces: apartments, houses, commercial premises, lots and garages/parking
  • 🤝 Sale and rent in the same Actor: one bill, one dataset, one schedule
  • 🏷️ Seller type as data: every row states whether an agency, owner, company or developer advertises it
  • 🎚️ Filters that reach the portal: price and area bounds ride 4zida's own filter parameters, so a narrow band costs nothing but time
  • 📄 Full details as a paid add-on: advert text, the complete photo set, coordinates, year built, deposit, price per square metre and the agency phone
  • 🔗 Paste a URL instead: any 4zida.rs search address works, including the micro-location pages the form cannot name (a blok in Novi Beograd, a street, a gradska lokacija)
  • 🕒 Market timestamps: publish date, last-activated date and the portal's own last-checked date on every row, which is what a new-listing diff needs

🎬 Quick Start

Pick a place, pick sale or rent, press Start. The defaults return Beograd sale apartments, so a run with no configuration at all still gives you real data. Everything below is optional narrowing.

curl -X POST 'https://api.apify.com/v2/acts/sian.agency~4zida-property-scraper/runs?token=YOUR_TOKEN' \
-H 'Content-Type: application/json' \
-d '{"operation":"search","dealType":"prodaja","locations":["beograd"],"maxResults":100}'

🚀 Getting Started (3 Simple Steps)

Step 1: Choose your places

Pick one or more Serbian places from the list. For a micro-location the list cannot name (a blok, a street, a gradska lokacija), open its page on 4zida.rs and paste the address into Search URLs.

Step 2: Choose sale or rent, and the property types

Leave the property-type list empty to read apartments, or pick the surfaces you care about. Each type is searched separately, the same way a site visitor would open them one by one.

Step 3: Press Start, then export

Watch the run log count the pages. When it finishes, download JSON, CSV or Excel from the dataset, or open the HTML report for a summary with the advert links already collected.

That's it! In under a minute, you'll have:

  • Every matching listing with price, area, rooms, floor, heating and seller type
  • Publish and refresh timestamps for new-listing tracking
  • A copy-ready list of advert links and, with full details on, contact numbers

📥 Input Configuration

FieldTypeRequiredDescription
operationstringNosearch (default) or detail
locationsarrayNoSerbian places, e.g. beograd, novi-sad; defaults to Beograd
dealTypestringNoprodaja for sale (default) or izdavanje for rent
unitTypesarrayNoApartments, houses, commercial premises, lots, garages/parking; empty means apartments
sellerTypestringNovlasnik, agencija, firma or investitor; empty means everyone
maxResultsintegerNoWhole-run listing budget, default 100
includeDetailsbooleanNoOpen each advert for the full text, all photos, coordinates and the phone
minPrice / maxPriceintegerNoPrice bounds in euros; 0 means no bound
minArea / maxAreaintegerNoArea bounds in square metres; 0 means no bound
searchUrlsarrayNo4zida.rs search addresses, including micro-location pages
listingUrlsarrayNo4zida.rs advert addresses, for the detail operation

Example:

{
"operation": "search",
"dealType": "prodaja",
"locations": ["novi-sad"],
"minPrice": 100000,
"maxPrice": 200000,
"maxResults": 500
}

Owner-listed rentals under €600 across two cities:

{
"operation": "search",
"dealType": "izdavanje",
"locations": ["beograd", "novi-sad"],
"sellerType": "vlasnik",
"maxPrice": 600,
"maxResults": 300
}

Expand specific adverts:

{
"operation": "detail",
"listingUrls": [
{ "url": "https://www.4zida.rs/prodaja-stanova/novo-naselje-gradske-lokacije-novi-sad/dvoiposoban-stan/6a96b4940e849d4f120358d2" }
]
}

📤 Output

Results are saved to the Apify dataset with 45+ fields, including:

FieldTypeDescription
listingIdstring4zida's advert id
urlstringCanonical advert address
titleTextstringThe card's location name, as 4zida shows it
structureLabelstringThe layout, in Serbian (Dvoiposoban stan, …)
dealTypestringsale or rent
propertyTypestringapartment, house, newHouse, … as the portal types it
pricenumberAsking price, or monthly rent for a rental
priceCurrencystringReported, never assumed
pricePerM2EurnumberThe portal's own figure (with full details on)
areaM2 / roomsnumberSize and room count
floor / totalFloorsnumberFloor number and floors in the building
registeredstringWhether the property is registered (uknjiženo)
heatingType / statestringHeating and condition, as the portal states them
hasElevator / hasTerracebooleanPresent only where the portal publishes them
sellerTypestringagencija, vlasnik, firma or investitor
agencyName / agencyUrlstringThe agency and its page on 4zida.rs
createdAt / lastActivatedAt / lastCheckedAtstringPublish, reactivation and portal-check dates
descriptionTextstringThe seller's full advert text (includeDetails)
latitude / longitudenumberCoordinates (includeDetails)
phonestringThe number printed on the advert (includeDetails)
galleryUrls / photoCountarray, numberPhotos and how many there are

Example:

{
"listingId": "6a96b4940e849d4f120358d2",
"url": "https://www.4zida.rs/prodaja-stanova/novo-naselje-gradske-lokacije-novi-sad/dvoiposoban-stan/6a96b4940e849d4f120358d2",
"titleText": "Novo Naselje",
"structureLabel": "Dvoiposoban stan",
"dealType": "sale",
"propertyType": "apartment",
"price": 197200,
"priceCurrency": "EUR",
"areaM2": 58,
"rooms": 2.5,
"floor": 6,
"totalFloors": 7,
"registered": "yes",
"heatingType": "district",
"sellerType": "agencija",
"agencyName": "Level Property",
"agencyUrl": "https://www.4zida.rs/agencije/novi-sad/level-property-doo/288758",
"createdAt": "2026-09-01T11:18:44.000Z",
"photoCount": 18,
"locationPath": "Novo Naselje › Gradske lokacije › Novi Sad"
}

💼 Use Cases & Examples

1. Serbian asking-price index

A property analyst measuring what a city really asks per square metre.

Input: one or more places, apartments, a high maxResults Output: every listing with price, area and the portal's own refreshed dates Use: group by neighbourhood and build the index that 4zida's quarterly city report only samples

2. Rental yield screening

An investor comparing what a flat costs against what it rents for.

Input: two runs on the same place, one prodaja and one izdavanje Output: sale and rental rows sharing area, room count and location path Use: match on area and location for a gross-yield picture no single 4zida page shows

3. Agency stock and market-share mapping

An agency or a proptech vendor mapping who holds the stock in a city.

Input: a place, full details switched on Output: every advert with its agency name and the agency's own page on the portal Use: group by agency, rank by listing count, and approach the ones that dominate your patch

4. Owner-listed sourcing

An investor who wants the sellers no agency has signed yet.

Input: sellerType: "vlasnik", one or more places Output: only adverts with no agency behind them, each with the owner's phone where the portal shows it Use: the listings that never reach an agency feed, which is why Serbians scroll 4zida by hand

5. New-build developer tracking

A buyer or fund watching what developers bring to market.

Input: sellerType: "investitor" on a daily schedule, with your saved places Output: the units developers are advertising, with publish timestamps and photo counts Use: keep the ids you have seen, pay only for what appeared since yesterday

6. New-listing monitoring

A relocation service or a buying agent who needs to see today's stock today.

Input: saved places on a schedule, sale or rent Output: only what is live, each row carrying its publish date Use: the publish timestamp makes the diff a simple set operation

7. Commercial and land sourcing

A business buyer looking for premises or a plot with the right size and price.

Input: unitTypes: ["poslovni-prostora", "placeva"] with price and area bounds Output: the stock by surface type with the portal's own layout labels Use: shortlist before anyone drives out to look

🔗 Integration Examples

JavaScript/Node.js

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_TOKEN' });
const run = await client.actor('sian.agency/4zida-property-scraper').call({
operation: 'search',
dealType: 'prodaja',
locations: ['novi-sad'],
unitTypes: ['stanovi'],
maxResults: 200,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items[0]);

Python

from apify_client import ApifyClient
client = ApifyClient('YOUR_TOKEN')
run = client.actor('sian.agency/4zida-property-scraper').call(
run_input={
'operation': 'search',
'dealType': 'izdavanje',
'locations': ['beograd'],
'maxResults': 200,
}
)
for item in client.dataset(run['defaultDatasetId']).iterate_items():
print(item['titleText'], item['price'], item['sellerType'])

cURL

curl -X POST 'https://api.apify.com/v2/acts/sian.agency~4zida-property-scraper/runs?token=YOUR_TOKEN' \
-H 'Content-Type: application/json' \
-d '{"operation":"search","dealType":"izdavanje","locations":["nis"],"sellerType":"vlasnik"}'

Automation Workflows (N8N / Zapier / Make)

  1. Trigger: a daily schedule, or a webhook from your own system
  2. HTTP Request: call the Actor's run-sync endpoint with your saved input
  3. Process: filter the returned rows on price, area or seller type
  4. Action: append to a sheet, upsert into your CRM, or send the new listings to Slack

📊 Performance & Pricing

FREE Tier (Try It Now)

  • 25 listings per run, with every field and every filter available
  • No credit card required
  • Enough to check the data before you commit to a sweep
  • Unlimited listings per run, bounded only by the row budget you set
  • Pay-per-result: charged per listing saved, never for a listing your filters excluded
  • Full details available as a per-listing add-on, only when you switch it on

💰 $2.00 per 1,000 listings, level with the leading 4zida.rs Actor on the Store: floor, heating, registration, seller type and the publish timestamps sit on the same row.

🔗 View current pricing

❓ Frequently Asked Questions

Q: How many listings can I get per run? A: FREE tier: 25 per run. PAID tier: as many as you budget for. Beograd apartments alone cover roughly eleven thousand listings, so for national-scale work split the run by place, by property type or by price band.

Q: Will the Serbian text come through correctly? A: Yes. The Actor reads the structured data 4zida.rs embeds in its own pages, so place names, layouts and agencies arrive with their diacritics intact (Bačka Palanka, not Backa Palanka) in JSON, CSV and Excel alike.

Q: Are rental prices per month? A: Yes. 4zida.rs publishes rentals in euros per month and the rows carry them as-is; sale prices are the full asking price. The currency field on each row states which.

Q: What is the difference between a listing row and full details? A: A listing row carries everything on the search card: price, area, rooms, floor, heating, registration, seller type, the agency and a photo. Full details opens the advert itself and adds the seller's text, the complete photo set, coordinates, year built, deposit, price per square metre and the phone.

Q: Can I search a single neighbourhood? A: Yes, through Search URLs. Open the neighbourhood page on 4zida.rs and paste the address (a blok in Novi Beograd, a street, a gradska lokacija). The form covers cities and towns; a pasted address reaches anything the portal publishes.

Q: What happens if I type a place the portal does not know? A: 4zida.rs quietly answers with its whole-country search, which would mislabel every row. This Actor checks every place against the portal's own place index before the run starts and flags an unknown one as an input error instead, and you are never charged for it.

Q: What happens to an advert that has been withdrawn? A: The portal answers a dead advert with a not-found page. The Actor writes a row saying the listing could not be found and does not charge you for it.

Q: What output formats are available? A: JSON, CSV, Excel and XML. Export straight from the Apify dataset, or read them over the API.

Q: Is this legal? A: Yes. Only publicly available adverts are read. See the legal note below.

🐛 Troubleshooting

A run returns fewer listings than the place has adverts

  • The row budget is a whole-run ceiling; raise maxResults to read more
  • Filters exclude listings whose price or area the portal does not publish, so a tight bound on a thin market can empty the result
  • Each place × property-type combination is its own search with its own budget; name more of them to widen the sweep

A filter returned nothing

  • Price bounds are in euros on both sale and rental rows
  • Nothing filtered out is charged, so an empty run costs you the run-start fee and nothing else

A listing URL comes back as not found

  • The advert has been sold, rented or withdrawn; re-run the search to pick up what is live today
  • A bare advert id cannot be resolved (4zida.rs has no address for one), so paste the full advert URL, which every search row carries

Serbian characters look wrong in Excel

  • Open the CSV with UTF-8 encoding selected, or use the XLSX export, which carries the encoding itself
  • The JSON export is always UTF-8 and needs no configuration

Our actors are ethical and do not extract any private user data, such as email addresses, gender, or location. They only extract what the user has chosen to share publicly. We therefore believe that our actors, when used for ethical purposes by Apify users, are safe.

However, you should be aware that your results could contain personal data. Personal data is protected by the GDPR in the European Union and by other regulations around the world. You should not scrape personal data unless you have a legitimate reason to do so. If you're unsure whether your reason is legitimate, consult your lawyers.

You can also read Apify's blog post on the legality of web scraping.

4zida and 4zida.rs are trademarks of Inspira grupa d.o.o. This Actor is not affiliated with, endorsed by, or sponsored by 4zida or Inspira grupa.

🤝 Support

Telegram Support

Join our active support community


Built by SIÁN Agency | More Tools