The problem
Watching the Adriatic property market — Montenegro, Croatia, Serbia — means watching Realitica.com, one of the region's main real-estate classifieds portals. Doing it by hand means opening search pages for every combination of country, deal type and property type, then copying titles, prices, room counts and links into a spreadsheet. Repeating that across several cities, daily or weekly, is a lot of copy-paste work.
There is no official Realitica API to call. The real-estate data platforms that cover the region package this as a subscription, and building a custom scraper means handling pagination, region path slugs and markup changes on your own.
What the actor does
The Realitica.com Adriatic Real Estate Listings actor pulls live apartment and house classifieds from Realitica search-result pages — no login, no API key, no browser or proxies needed on your side. Per the README:
- Filter by deal type (
prodajasale ornajamlong-term rent), property type (stanovaapartments orkucahouses) and region — a whole country (Crna-Gora,Hrvatska,Srbija) or a city-level drilldown such asbudva/Crna-Gora. - Every delivered row carries title, price with currency, rooms, floor area in square meters, free-text location, a short description, the preview photo URL and the direct listing URL, plus a
source_portaltag and ascraped_attimestamp. - Pagination is configurable (
max_pages, 25 listings per page;max_itemsrow cap), and queries with zero matching listings return explicitfound: falserows for transparency.
Honest limits the README states plainly: posted_date and lat/lng are always null because Realitica does not print them on the pages the actor reads; only the single preview photo from the search card is returned, not the full gallery; and najam maps to the long-term rental category, never the separate short-term/tourist listings.
Because the actor runs on Apify, the same region query can be scheduled to re-run daily or weekly from the console, and each run's dataset exports as CSV, JSON or Excel or pulls through the API — the usual backbone for price-watch spreadsheets and new-listing alerts across the Adriatic markets.
Example: input and output
A minimal run for sale apartments in Montenegro:
{
"deal_type": "prodaja",
"property_type": "stanova",
"region": "Crna-Gora",
"max_items": 5,
"max_pages": 1
}
This is a real row from a local verification run on 2026-07-30, quoted from the README:
{
"found": true,
"url": "https://www.realitica.com/hr/listing/3665844",
"title": "Branko · prodaje stan · 2 sobe · 78 m²",
"price": 200000,
"currency": "EUR",
"deal_type": "sale",
"property_type": "stanova",
"rooms": 2,
"area_sqm": 78,
"location": "Radanovići, Kotor, Crna Gora",
"posted_date": null,
"images": ["https://www.realitica.com/images/listing_photos/thumb_3665844_08-09.jpg"],
"source_portal": "realitica-adriatic",
"scraped_at": "2026-07-30T07:20:00.000Z"
}
A zero-result query produces a free found: false row with a human-readable note instead of an empty dataset.
Pricing and the free limit
Pay-per-event: $0.005 per run start plus $0.002 per delivered listing. Not-found rows are never charged. A run that delivers 100 listings costs $0.005 + 100 × $0.002 = $0.205. Apify's free plan gives $5 of usage credits per month, so $5 covers about 24 such runs — roughly 2,400 listings.
Try it
Open the actor, pick deal type, property type and region, and hit Start — no card needed on the free plan: Realitica.com Adriatic Real Estate Listings
For AI agents and MCP
This is a standard Apify actor: strict JSON input, structured JSON dataset rows, callable through the Apify API, the JavaScript/Python clients, or the hosted Apify MCP server whose setup the README documents. An agent can branch on the found flag without parsing any HTML — true rows carry the comparable fields (price, rooms, area, location), while false rows explain zero-result regions and cost nothing.
Top comments (0)