- Brand
- Bloki.si
- Category
- Pending
- Primary Subcategory
- Pending
Integration details
Description
Bloki.si connects ChatGPT to Slovenia's public property registers: the GURS real-estate and building cadastre, the register of real-estate transactions (every registered sale and lease since 2007), spatial plans, utility networks, and a dozen registers of what is around an address. What you can ask: - Which address an advert describes, from its text alone, and what the register holds about the flat: floor, year built, lift, and what its area is made of. - What flats and houses nearby actually sold for: the newest sales with date, size and price, and the local price per square metre. - What a flat is worth to sell or let, built from several independent anchors, with the spread between them and the measured error of the method. - Price levels and trends for any municipality, settlement or Ljubljana district. - What is around a property: shops, schools, doctors, transport, the assigned primary school, and who lives there. - The site: elevation and slope, water, sewer, electricity and gas, fibre, flood and landslide maps. - Companies registered at an address, building permits, court auctions, and building managers. How it answers: every figure comes with how many observations it rests on and what the register cannot say. A private owner is never named, because the register holds no identifier for one. A missing record is reported as a gap in a register, never as an absence in the world. When a question has no answer in the data, the plugin says so. Who it is for: anyone buying, renting or selling in Slovenia, agents and valuers, journalists, and researchers. Limits: Slovenia only. Data comes from public registers, refreshed as each is published; transactions are filed with a delay, so the newest months are thin. Read-only: nothing is bought, sold, booked or changed. You sign in with a Bloki.si account (Google or username and password).
- Integration type
- Plugin
- Verification status
- Not applicable
- Platform
- ChatGPT
- Category
- Pending
- Primary Subcategory
- Pending
- Secondary Subcategories
- None listed
- Brand
- Bloki.si
- Access
- Account required
- First tracked
- 2026-11-13
- Tool count
- 38
- Market
- US
The broad Category that contains the Primary Subcategory.
The Primary Subcategory used for this profile’s headline score.
Other Subcategories where the Integration is listed.
Not discoverable in ChatGPT yet
ChatGPT now suggests Plugins on its own when they match a user's request, but not every Plugin is being surfaced yet.We haven’t seen Bloki.si suggested yet. Sign up and we’ll track it, and your Discoverability Score will appear here once ChatGPT starts surfacing it.
What discovery looks like

Get alerts for Bloki.si
Get updates when Bloki.si’s Discoverability Score or category rank changes.
Competitive lineup
38 tools agents can invoke
Report this caller's plan: credits left, requests per minute, concurrency, and the credit cost of every tool. INPUT: nothing. READ: `credits_remaining` before starting a long chain of calls. Free to call.
account_status
Report WHERE ONE OWNER HOLDS PROPERTY (portfelj, nepremicnine lastnika), by municipality and by what the property is for. INPUT: an `owner_id` from find_owner or institutional_owners, or a maticna stevilka. Optional `area` ref to list one municipality's parcels. READ: `parcels` — WHICH parcels (katastrska obcina, parcel number, area, zoning, share), largest first, with `n_parcels_matching`. Empty with `parcels_listed: false` for owners of more than 5,000 parcels. READ: `as_of` for `gurs_valuation` — ownership is GURS's quarterly extract, not the live land register: a parcel sold since still shows the SELLER. That is how a sold plot is found from its seller's name. NEVER: read the counts as values. A forest parcel and a city office each count as one, and a fractional stake counts as a whole property. For land, `n_holdings` is about twice `n_properties` because both GURS registers file each parcel. Use it for 'where does this company own things', never for 'what is their portfolio worth'.
owner_holdings
Report who manages the buildings in a municipality (upravnik, upravljanje stavb), largest first. INPUT: an area `ref` from find_area. A managed building carries a monthly UPRAVNINA on top of rent or mortgage. READ: `n_parts` beside every `area_share_pct`, and `n_parts_nationally`. A name is not a size — the median registered manager holds FOUR parts, because schools managing their own premises share this register with the largest firm's 55,724. READ: `in_business_register` and `in_bankruptcy`. The register is not maintained against AJPES: 276 of 1,366 managers are no longer listed there and 84 are named 'v stecaju'. NEVER: divide by the dwelling stock. `area_share_pct` is a share of the MANAGED parts; most of a rural municipality has no upravnik at all. `pct_of_stock_managed` is served separately. NEVER: rate a manager. No complaint register, no service record and no fee exists in any Slovenian open register, and 53 registered managers are natural persons who are never named. READ: `source`. In Ljubljana (`gurs_with_mol_register`) the city's statutory register of managers replaces the GURS filing at every entrance it lists; `n_parts_from_register` says how much of each holding comes from it. THEN: get_property gives the manager of one specific building.
building_managers
Report BUILDING PERMITS and other construction acts on a property, around it, or in an area (gradbeno dovoljenje, uporabno dovoljenje, inspekcija, legalizacija). INPUT: a property `ref` or a parcel `ref` (from find_parcels / find_by_cadastral_ref — an unbuilt plot), OR an `area` from find_area. Optional `radius_m` (default 300, max 2000) and `since_year` (2015 or later). READ: `subject` — `parcel` answers for that parcel alone. `on_property` for acts on the property's own parcel; `nearby.by_class` for acts within `radius_m`; `municipality.years` for the local rate beside `national_acts_per_1000_addresses`. READ: `act_class` on every row. `build_permit` = work ALLOWED, `use_permit` = building FINISHED, `start_notice` = work STARTED. READ: `is_adverse`. `enforcement` (inspection proceedings) and `legalisation` (built first, legalised after) are FINDINGS against a property, not permissions. READ: `freshness.is_stale` and `freshness.age_days` before saying nothing new was filed. NEVER: add classes into one total, or read `n_pending` as a construction pipeline — most pending acts are `enforcement`, i.e. open proceedings. NEVER: read an empty `on_property` as "never permitted" — old parcel numbers are lost (`freshness.share_keys_resolved_to_parcel`), so a parcel's history is a floor. THEN: `property_land` for the designated use — nothing here is zoning. `neighbourhood` for what stands around it.
building_permits
List the businesses REGISTERED at a Slovenian address (podjetja na naslovu), from the public AJPES register of 290,837 entities. INPUT: an address, in the same forms find_address takes. Use it for 'which companies are in this building'. READ: `is_natural_person` — true for sole traders, about half the register, where the entity IS a person: the name is a person's name and the address is very often their home. Some apps are shown natural persons as a count only: `n_natural_persons_withheld` says how many are not listed. NEVER: read a registered office as proof of occupation. A holding company with no premises and the firm actually on the third floor look identical here; this register carries no floor, no unit and no tenancy. THEN: find_company does the reverse, from a name to an address.
find_businesses
Restate a price from an earlier year in today's money. INPUT: the amount, `from_period` and optionally `to_period` — years (2015) nationally or by municipality, quarters (2024Q1) nationally. A price from an earlier year is NOT comparable to today's without this: the national sale index rose 77% between 2021 and 2026. READ: `known_bias` — the residential index runs 3.5% low. THEN: price_index shows the whole series behind this one number.
carry_price_forward
Report what OFFICES, SHOPS, WAREHOUSES and GARAGES let for (najemnine poslovnih prostorov). INPUT: an area `ref` for a municipality, or a property `ref` to measure a radius around one building — with a property ref it matches that unit's own usage type and a size window around its own area. The residential tools cannot answer this: market_stats, find_comparables and estimate_value all read views defined with is_dwelling, so 152,287 non-dwelling lettings are excluded from them by construction. READ: `usage_type_id` on every figure. An office lets at EUR 11.00/m2/month and a cellar at 2.50, so a figure spanning both describes neither. NEVER: carry these forward yourself — nothing here is indexed and the years are given separately; use price_index with market='commercial'. NEVER: treat this median as a valuation. THEN: estimate_commercial_value to value one specific unit; commercial_sale for what such premises sell for.
commercial_rent
Report what OFFICES, SHOPS, WAREHOUSES and GARAGES sell for (prodajne cene poslovnih prostorov). INPUT: an area `ref` or a property `ref`. The sale twin of commercial_rent, over 251,199 non-dwelling sale items that find_comparables excludes by construction. READ: `median_price_over_bundle_value` beside any EUR/m2 figure, and `n_with_land`. 61.1% of these sales BUNDLE LAND, so a EUR/m2 number divides by the building part's area while the land sits in the numerator. NEVER: treat the plausibility bound as a calibrated classifier. It is a stated convention validated against nothing.
commercial_sale
List the individual registered transactions behind the statistics, for one area. INPUT: an area `ref`, optionally narrowed by size band, vintage cohort, year and `building_type` (a type id from get_property.building_type). The canonical clean filters are already applied. Prices are each item's own price over its own area. READ: `caveats` for how many transactions the filter excluded — often more than it includes. NEVER: read 'no comparable sale' as 'no sale'. A comparable set requires a single-item contract, so every property sold together with its land is EXCLUDED. NEVER: expect itemised rent. Rent is summarised only. THEN: property_history reports every transaction of one property in full, comparable or not.
find_comparables
COMPARE TWO BUILDINGS: the register properties where they differ most, in plain words (primerjava stavb, razlike med stavbama). INPUT: two property refs, `a` and `b` — from find_address, resolve_property or similar_buildings. Each is compared as its BUILDING, not its flat. READ: `differences` (largest first, in national standard deviations) and each `sentence`; `alike` for where they agree; `not_compared` before saying they agree on energy, attachment or structure. READ: `distance_km` — straight line, stated and NEVER a difference. `same_building` when both refs are in one building. NEVER: say either building is better, in better condition or worth more — these are register properties, not quality or value. NEVER: read an unknown energy class as poor; it is in `not_compared`. THEN: neighbourhood and terrain_and_utilities on each ref for the surroundings; estimate_value for a price.
compare_buildings
Report COURT AND INSOLVENCY AUCTIONS (sodne drazbe, izvrsba, insolvencni postopek, javna drazba) near a property. INPUT: a property `ref`, and `radius_m` (default 2000, max 10000). READ: `n_lots_in_range` for PROPERTIES and `n_publications_in_range` for SALES — one court publication often sells many parcels (Sevnica: 86 properties in 5 sales), so these are different numbers. READ: `n_with_own_price`. On the rest `price_basis` is `lot_total`: the filed figure belongs to the WHOLE lot, so `opening_price_eur` is null and `lot_opening_price_min_eur`/`max` give the lot's range. READ: `municipality_n_lots` BEFORE saying there are none — 640 lots cover the country, so an empty radius is the normal answer. READ: `price_per_m2_eur` as given — `area_m2` is the WHOLE parcel while 332 of 640 lots sell a share, so a hand-computed rate is wrong by 1/`share_fraction`. NEVER: say a lot SOLD, or give a sale rate, clearing price or discount-to-appraisal. NO OUTCOME is published anywhere in this source. `presence = left_board` means it stopped being listed, not that it sold — 4 of the first 6 publications to leave went on the day their sale was due to START. NEVER: name a flat. A `Posamezni del stavbe` lot resolves to its BUILDING, which holds up to 219 registered parts (`n_parts_at_address`) — say "somewhere in this building". NEVER: quote a re-listing rate or time-on-board — the panel began 2026-09-03. `is_resale` is the source's own static flag and is fine. THEN: `property_land` for what a parcel is and what it is worth, `find_by_cadastral_ref` to resolve `cadastral_municipality` + `parcel_number` to a property, `estimate_value` for what a comparable non-distressed property fetches. Court and insolvency sales only; municipal, state and DUTB-successor sales are not here.
court_auctions
Estimate what one OFFICE, SHOP, WAREHOUSE, WORKSHOP, GARAGE or CELLAR is worth to sell and what it should let for (koliko je vreden poslovni prostor). INPUT: a non-dwelling `ref` from find_address, find_properties or resolve_property. A dwelling ref is refused; so is usage_kind 'other', which was never fitted. The anchor is this unit's own GURS generalised value times the recent local ratio of realised price to that value, because a EUR/m2 median does not exist outside three cities: 13 of 212 municipalities hold 25+ comparable business sales, while a generalised value exists for 100% of non-dwelling parts. READ: `method_error_pct` BEFORE quoting `range.point`. It is about a quarter (0.27), so this is a SCREENING RANGE and not a valuation report. `range_basis` says whether the range came from that error or from the anchors disagreeing by more. READ: `national_coverage_25plus` on each side separately — the rent side reaches nearly twice as far as the sale side. READ: `cross_check`, which tests both estimates against the cap rate this usage type realises. NEVER: compare the rent to an advert's asking rent without adjusting. It is a NET rent, exclusive of VAT and operating costs; 54.8% of commercial lettings are filed the other way and an advert is usually gross. NEVER: use this for land. It values none, and 61.1% of commercial sales include land — use property_land.
estimate_commercial_value
Estimate what one DWELLING is worth to sell and what it should let for (koliko je vredno, kaksna je trzna najemnina). INPUT: a `ref` from find_address, resolve_property or get_property. `perspective` is 'owner', 'tenant', 'buyer' or 'seller' and is NOT cosmetic — registered prices understate asking prices, so the correction runs in opposite directions for a landlord and a tenant. This is the composing tool: it builds several anchors that do not share inputs — the unit's own history, other sales in the same building, comparables within 500-2000 m, and the unit's own GURS generalised value calibrated against local realised prices — and reports the SPREAD between them as confidence. READ: `confidence` and `spread_pct` BEFORE quoting `range.point`. READ: `cross_check` — it tests the sale and rent estimates against the yield the neighbourhood actually realised, and is the only way a wrong answer shows from inside the response. READ: `rent.lettings_coverage` — the rent median reads open-market lettings only, and this says how much of the municipality's filed letting activity that excludes (19.3% nationally, 8.6% of it rent set by law). NEVER: present the rent as today's. It is stated as of the last CLOSED rent quarter, never the present one. NEVER: read the excluded share as a discount. A rent set by law is calculated from a valuation under statute, not negotiated — a different product, not a cheaper one, and paired within a municipality it is not even lower. NEVER: pass a non-dwelling ref; use estimate_commercial_value. THEN: asking_prices for what is being asked in that area now.
estimate_value
Report everything the register holds about one building part. INPUT: a `ref` from find_address or resolve_property. Returns the address, storey, year built, renovation years, lift, and what the area is made of — habitable, garage, cellar, balcony. An advert's square metres usually match the HABITABLE component, not the headline total. READ: `manager.state` — `named` carries the upravnik; `managed_not_named` means one is recorded and this export does not say who; `none_recorded` does NOT mean the building has no manager. READ: `connectivity.state` for FIBRE (optika). `optical_route_at_building` = an optical route at the building; `other_technology_only` = coax/copper; `not_filed` = no cable filed, which WITHHOLDS. READ: `civic_initiatives.state` for citizen initiatives around the address (pobude). `board_here` = Ljubljana only; then `pct_rank_in_municipality` and `themes`. Fixed at 300 m. READ: `building_type.state` — `typed` carries `type_name_sl`/`type_name_en`; the era in a type name is the TYPE's median, so quote `year_built` for this building's age. READ: `recent_sales_nearby` for what homes nearby SOLD for (prodaje v okolici): `radius_m`, the newest five `sales`, then `n_excluded` — real sales priced as a bundle. NEVER: quote `manager.name` as the CURRENT manager — it is a dated filing; check `filed_on`, `building_disagrees`, `in_bankruptcy` and `in_business_register` first. NEVER: report `connectivity.state` = `not_filed` as 'no fibre', or an optical route as a connection. Fibre is ruled IN, never OUT. NEVER: read `civic_initiatives.n_filings_300m` as problems or `mentions.noise` as a noise level — it is a filing rate rising WITH price; no sound level exists. THEN: terrain_and_utilities (full site), property_history (own sales), estimate_value (worth).
get_property
Report leases FILED to the rental register against the dwelling stock they could have come from — where to look, never how much is missing. INPUT: an area `ref` from find_area, or omit `area` for the national series. READ: `year_is_settled` FIRST. Rent files late, so a fresh year is short in COUNT and reads as mass non-compliance when it is nothing of the kind. READ: `n_tourist_beds` beside the rate. One municipality files 48 leases against 3,508 dwellings and holds 9,915 registered beds — that is where its stock went. Beds are capacity, never occupancy. NEVER: state a quantity of evasion. Owner-occupation is in the denominator and is measured nowhere here, so a low rate is consistent with a municipality where everyone owns. NEVER: look for a taxpayer. There is none in this database.
letting_gap
Find WHERE A NAMED COMPANY IS REGISTERED (sedez podjetja) — the reverse of find_businesses, which needs an address to start from. INPUT: a company name in any case, with or without diacritics, or a maticna stevilka (7 or 10 digits). READ: `n_matches` and narrow the query if it is large. Matches are NOT ranked by size: the export ships twelve columns and none is revenue or headcount. READ: `is_branch` — 40,617 rows are a company's registered business units (poslovna enota) rather than companies, and the address is the unit's. NEVER: read a registered office as a place of work. It is where the post goes. NEVER: expect a sole trader. Search by name covers legal entities only; sole traders are counted in `n_natural_persons_withheld` and never named, because their registered address is usually their home. THEN: the response carries a municipality eid, so a company can be carried straight into market_stats or find_area.
find_company
Find the dwellings at ONE Slovenian address, urban or rural. INPUT: the address as a person writes it — 'Frankopanska 16, Ljubljana', 'Celovska cesta 176a', or 'Krn 17', because 59% of Slovenian addresses have NO STREET and are a settlement plus a house number. Names match leniently. `usage` selects 'dwelling' (default), 'business', 'ancillary' (garages, cellars) or 'all'. READ: `outcome` FIRST. `address_only` means the address is real and no building part is registered at it — get_property, property_history and estimate_value have nothing to work on, while market_stats and find_comparables still answer for the area. READ: `parts_by_usage` — every kind of part at the address, whether or not you asked for it. NEVER: answer about an address that is mostly offices with its flats alone. That is a wrong answer, not a partial one. THEN: pass a dwelling's `ref` to get_property, property_history, estimate_value, neighbourhood or terrain_and_utilities. For a whole street use street_profile; for a settlement or municipality use find_properties.
find_address
Turn Slovenian place text into an administrative area (obcina, naselje, cetrtna skupnost, katastrska obcina). INPUT: any spelling — inflected ('v Ljubljani', 'iz Maribora'), no diacritics ('Sentvid'), colloquial or short ('Bezigrad', 'LJ'), Italian ('Ancarano'), misspelt. READ: `ambiguous` before choosing a candidate, and `caveats`. NEVER: pass a place NAME to another tool. They take a `ref`. THEN: pass `ref` (not `eid`) to market_stats, asking_prices, find_properties, market_activity, valuation_base, letting_gap, building_managers. CALL THIS FIRST whenever another tool asks for an area.
find_area
Find a property OWNER BY NAME — a company, municipality, fund or institution (lastnik). INPUT: a name, matched exactly, then by prefix, then by similarity, so a partial or misspelt name still resolves. It searches 25,824 of the register's 127,226 owners: those the business register vouches for and that are not a natural person trading under their own name. NEVER: read no match as no property. A private individual cannot appear here under any spelling, because every private owner in Slovenia shares one withheld identifier. THEN: pass `owner_id` to owner_holdings.
find_owner
Resolve a Slovenian CADASTRAL REFERENCE to a property (del stavbe, katastrska obcina, parcela). INPUT: the identifier as a legal document writes it — '2606-7765-1' (k.o.-stavba-del stavbe), 'k.o. 2606, stavba 7765, del stavbe 1', or a parcel as '239/92, k.o. 2606'. Give only k.o. and stavba to list every part of that building. USE THIS FIRST for an auction listing, a land-register extract (zemljiskoknjizni izpisek), a notarial deed or a court decision — they identify property this way and never by address. READ: `parsed_as` to confirm the reference was read as you meant it. READ: `address` may be null, and that is ORDINARY — a garage, cellar or common part often has no house number, which is why find_address cannot reach it. NEVER: treat this as a title check. This database holds NO encumbrances — no mortgage, no easement, no pre-emption right, no annotation. Part C of the land register is not loaded and nothing here substitutes for an official extract. THEN: pass a part's `ref` to get_property, property_history, estimate_commercial_value, property_land or neighbourhood. THEN: pass a parcel's `ref` (`pc_…`, never `parcel_eid`) to building_permits for the acts filed on that parcel.
find_by_cadastral_ref
Find the actual address of the property an advert describes. INPUT: the Slovenian advert text. It reads the area, floor ('2. nadstropje', 'pritlicje'), year built ('zgrajeno 1975'), renovation ('adaptirano l. 2000') and lift ('dvigalo' / 'brez dvigala'), then ranks candidate addresses. Pass attributes directly to override the text. READ: `outcome` — `resolved`, `ambiguous`, `no_area`, `no_candidates` or `insufficient_detail`. NEVER: assume the advertised unit is separately registered. The caveats say when it is not. THEN: pass `ref` to get_property, estimate_value or neighbourhood.
resolve_property
Report how OFTEN property changes hands in an area — the counterpart to market_stats, which says what it costs. INPUT: an area `ref` from find_area, or omit `area` for the national figures. Four segments are kept apart because business space churns FASTEST to let and SLOWEST to sell; a single 'commercial' rate would hide that. READ: `n_events` and `n_stock` beside every `per_1000_per_year`, and check `thin`. NEVER: read activity as a price level. It says nothing about what anything costs. THEN: it answers in municipalities where market_stats is silent for want of comparables.
market_activity
Report WHICH INSTITUTIONS hold property in an area, in aggregate (lastniki, lastnistvo) — companies, the state, municipalities, housing funds — with the ten largest named. INPUT: an area `ref`. `property_kind` picks dwellings, business premises, ancillary space or land, and it changes the DENOMINATOR as well as the answer. READ: `coverage` BEFORE reporting anything. Only 5.5% of dwellings nationally have a visible owner. NEVER: present a share here as a share of the area. It is a share of the VISIBLE owners. NEVER: say who the biggest private landlord is. Every privately owned property in Slovenia is withheld behind ONE shared sentinel, so two flats held by the same person cannot be linked — the rest are hidden, not unowned.
institutional_owners
Report the LAND: which cadastral parcels a property stands on, and which were SOLD WITH it (parcele, zemljisce). INPUT: a property `ref`. These are two different questions with different answers: `plot` is what it stands on, `sold_with` is what changed hands with it. READ: `designated_use` — what the spatial plan permits the land to BECOME (building land, housing, industry). This is what a development buyer pays for. `actual_use` is what it is today (forest, orchard, arable). READ: `soil_quality` (boniteta, points, higher is better) rates only the parcel's farmland and forest — read it beside `actual_use`'s shares. Null means no rated land, not poor soil. NEVER: quote one valuation row as the parcel's value; GURS's generalised land value is SUMMED across valuation models. THEN: use this to explain a land-heavy sale price that the housing tools can only report.
property_land
List the LARGEST property transfers and what each one covered (najvecji posli, portfelji, sklopi nepremicnin). The unit is the CONTRACT, not the property. INPUT: an area `ref` for one municipality, or nothing for the whole country. Pass a `transaction_id` from a previous result to open one contract and list what was in it. INPUT: `min_items=1` admits SINGLE sales (one plot, one house). With `since_year`, `shape='land_only'` and `min_price_eur`/`max_price_eur` it answers 'land sales in this municipality this year between EUR 1M and 2M'. Every other sale tool here is item-level, so a contract conveying 97 office units appears elsewhere as 97 ordinary rows. READ: `shape` BEFORE `n_items_total`. Many items is not many properties: 291,834 of 620,417 contracts sit inside ONE building and only 761 cross a municipality. READ: `value_complete` before `price_over_value` — a wild ratio is usually a missing valuation, and nothing is dropped for it. READ: `clusters` for the inverse pattern, one deal filed as N separate single-item contracts, which no item count can find. NEVER: say who bought or sold. The register names NO buyer and NO seller — no name, no id, not even a hash. NEVER: use this as a market statistic. It applies no comparability filter, by design. NEVER: read a missing recent sale as 'no sale'. `as_of` gives `data_through` for etn_sales, and the weeks before it are still filling. THEN: find_owner and owner_holdings for who holds property now.
portfolio_transactions
List the administrative areas of one level, with their GURS eid. INPUT: `level` — municipality (212 of them), settlement (naselje), quarter_community (cetrtna skupnost), local_community (krajevna skupnost), cadastral_area (katastrska obcina). READ: `boundary_matches_name` — a cadastral area's NAME is a neighbourhood name and its BOUNDARY is not. THEN: use find_area instead when you have text to resolve; this tool enumerates, it does not search.
list_areas
Report published price or rent LEVELS for one administrative area (obcina, naselje, cetrtna skupnost). INPUT: an area `ref` from find_area. `area` IS REQUIRED — there is no national figure, because the register publishes a grid and not a country total. Returns one cell per size band x vintage cohort; `by_building_type=true` adds `type_cells`, one per residential building type. READ: `period`, `n_obs`, `n_buildings` and `max_building_share` beside every median, and `concentration_warning`. NEVER: quote a median alone. One bulk transfer filed as many single-flat contracts can move a cell 41%. NEVER: read a type's name as the buildings' age — the era is the type's median; segment by vintage cohort for age. THEN: for a national read use price_index (an index, not a level) or market_activity. For what is being asked TODAY rather than what was filed, use asking_prices.
market_stats
Report the market index over time, base 2023 = 100. INPUT: nothing for the national series, or a municipality `ref`. `market_` selects 'residential' (dwellings, the default) or 'commercial' (offices, shops, warehouses, garages). READ: only points where `usable` is true. NEVER: treat the two markets' LEVELS as comparable. One base serves both, so their MOVEMENTS compare, but the ratio each indexes differs and the caveats say how. The residential index is validated against repeat sales and runs 3.5% low; the commercial one has no validation and no bias figure. THEN: carry_price_forward applies this index to one amount.
price_index
List every registered sale and letting of ONE dwelling, with its building for context. INPUT: a `ref` from find_address, resolve_property or get_property. READ: `has_own_history` — a unit with none is common and is NOT a quiet property. READ: `price_context` — the last sale's rank among ALL registered sales in the municipality. This is how you answer 'how many properties sold for more than this one'; find_comparables cannot, because its filter drops every property sold with its land. READ: `total_price_eur` is the whole contract and `price_eur` this unit's share. For a bundle they differ and both are true. READ: `lease_type` on every letting. `regulated_by_law` is a rent set from a valuation under statute rather than negotiated — a DIFFERENT product, not a cheap market rent, and 8.6% of filed lettings nationally. NEVER: read `is_comparable: false` as doubtful. It means 'cannot be used to price other property'; `not_comparable_because` says why. NEVER: quote a `regulated_by_law` rent as what this property lets for on the market. THEN: estimate_value to turn this into a figure.
property_history
Search LAND by what the plan says it may become: unbuilt building plots, farmland or forest in an area or around a property (zazidljiva parcela, stavbno zemljisce, gradbena parcela, kmetijsko zemljisce). INPUT: an `area` from find_area (municipality, settlement or cadastral area), OR a property `ref` with `radius_m` (default 1000). `use` (default `developable`), `min_share_pct` (default 50), `min_area_m2`, `max_area_m2`, `unbuilt_only` (default true), `limit`. READ: `summary.n_matching` for how many match — `parcels` is only the first `limit`, largest first (nearest first around a `ref`). READ: `use_pct` and `designated_use` on each match — use is a SHARE of the parcel. `oppn_required` true means a detailed plan must come first; null means unknown. NEVER: say a parcel is AVAILABLE or FOR SALE. `n_buildings = 0` is also a garden, and no owner is identified. NEVER: call `land_value_eur` a price — it is GURS's generalised value. THEN: `building_permits` with a match's `ref` for the acts filed on that parcel and around it; `find_by_cadastral_ref` with `cadastral_ref` for the parcel itself.
find_parcels
Sweep an area for every property matching stated attributes. INPUT: a settlement or municipality `ref` from find_area, narrowed by usage, floor area, year built or PLOT AREA. Use plot area when an advert gives one ('719 m2 zemljisca') — it alone identifies 78% of the buildings in a village. READ: `n_matched` — the true count before the limit is applied. NEVER: read the order as a ranking. This tool ranks nothing. THEN: to identify the ONE property an advert describes, use resolve_property.
find_properties
Report server status and the vintage of every loaded dataset (stanje podatkov). INPUT: nothing. READ: `as_of` — quote it whenever you state how current an answer is. Free to call.
server_info
Find BUILDINGS LIKE a property anywhere in Slovenia, by what they are rather than where they stand (podobne stavbe, selitev iz mesta, hiša z vrtom). INPUT: a property `ref`. `preset`: `building` (default), `era`, or `move_out` for leaving a city — houses, plot weighted, villages and small towns. `set` steers the query, e.g. {"n_dwellings": 1, "plot_m2": 800, "year_built": 2005}. INPUT: where — `radius_km` around the property (default 30, max 100) or around `origin_ref` (a workplace), OR an `area` from find_area. Filters: `family`, `settlement_classes`, `min_plot_m2`, `max_plot_m2`, `min_year`, `max_year`, `k`. READ: `results[].differs_most_in` for why each is not closer, `distance_km` (straight line), and `query.filled_from_family_median` — what was taken from a typical house because the search crosses family. NEVER: say a result is FOR SALE or AVAILABLE, or that it is better or worth more. Similarity is over register properties only. THEN: get_property, neighbourhood and terrain_and_utilities with a result's `ref`; asking_prices for what is offered in its district.
similar_buildings
Report how far the STATUTORY valuation base (GURS posplosena vrednost — what a property tax would be levied on) sits from what property actually sells for. INPUT: an area `ref` from find_area, or omit `area` for the national series. READ: `year_measures_the_base`, true on exactly ONE year. The base is a FROZEN SNAPSHOT — it moved on zero of 14,871 parts sold in two or more different years — so every earlier row measures how far the MARKET has risen since, not how wrong the base was then. READ: `dispersion` and `pct_within_25`, not the median. The median has caught up while dispersion runs 2.07x and only ~65% of sales sit within 25% of their own base, and that spread is WITHIN municipalities rather than between them. NEVER: read a low ratio as evidence a price was understated. NEVER: look for a taxpayer. There is none in this database and no parameter here could name one. Measured on clean single-item dwelling sales.
valuation_base
Profile a WHOLE STREET at once (cela ulica): its buildings, dwellings, offices, businesses and how many people live there. INPUT: a street name — 'Trzaska cesta, Ljubljana' — or a settlement name, for the 59% of addresses with no street. Pass `list_businesses` to name the businesses as well as count them. READ: `by_address` FIRST when the question is about a KIND of flat. It lists every house number with its year, lift, homes, median dwelling size and `n_dwellings_under_45m2`. A street is rarely one building or one era. READ: `n_dwellings` to rank buildings, NOT `n_parts` — a block with garages leads on parts and not on homes. READ: `by_vintage` for the street's build eras, in market_stats' cohorts. READ: `by_address[].optical_status` for FIBRE (optika) per house number — it varies along a street. `n_addresses_with_optical` is the count, never the verdict. READ: `by_address[].civic_filings_300m` for citizen initiatives filed near each house number (pobude), Ljubljana only. It varies 10x along one street, so there is no street total; `null` means no board rather than none filed. NEVER: read `civic_filings_300m` or `civic_noise_mentions_300m` as problems or noise. Both are FILING counts; neighbourhood carries the percentile and the mix. NEVER: report `optical_status` = `not_filed` as 'no fibre'. It means nobody filed a cable near that building; only 51.4% of routes carry a cable record. NEVER: describe a street from one building, and never present `estimated_residents` as counted. It is APPORTIONED: SURS counts on a 100 m grid, a cell holds several streets, and this street gets each cell's residents times its share of that cell's dwellings. `grid_cell_residents` is the bound. THEN: pick a house number from `by_address` and call find_address on it.
street_profile
Report THE SITE: elevation, slope, aspect, how far a building sits above its surroundings, distance to the sea, and whether it is on mains WATER, SEWER, ELECTRICITY and GAS (teren, naklon, nadmorska visina, kanalizacija, plin, vodovod). INPUT: a property `ref`. Use it for any advert claim about the ground ('razgled', 'soncna lega', 'raven teren') and for what a rural house is actually connected to. READ: `rank_national` and `rank_in_municipality` beside every terrain figure. '923 m' is unreadable; 'p99 nationally, p95 in Kobarid' is not. NEVER: confirm a view. The elevation model is bare earth and holds no building or tree. NEVER: turn a nearby gas main into a gas connection. A main within 200 m means connected only 21.6% of the time; no main within 200 m means not connected 99.3% of the time. NEVER: report `aspect` as window orientation, and note it is ABSENT below 2 degrees of slope where a bearing is grid noise. READ: `connectivity.state` for FIBRE (optika). `optical_route_at_building` = an optical route within 10 m of the wall, recall 98.5%. `other_technology_only` = coax or copper here, a real reading. `not_filed` = nobody filed a cable, which WITHHOLDS. NEVER: report `not_filed`, or a null `optical_distance_m`, as 'no fibre'. Only 51.4% of routes carry a cable record and Telekom files one on 41.4% of its own. NEVER call an optical route a connection or a subscription. READ: `slope_movement.state` for LANDSLIDES (plaz, podor): `mapped` gives `class_at_point` 0-5; `not_mapped` (103 of 212 councils) is NO MAP, never 0. `seismic.pga_design_g` is the EC8 design acceleration on rock. NEVER: call a low class safe from a slope above it — the map shows where slides START; read `class_within_100m`.
terrain_and_utilities
Report WHAT IS AROUND a property: shops, schools, doctors, bus stops, parks, cafes, ATMs, petrol, tourist accommodation (trgovina, sola, vrtec, zdravnik, okolica). INPUT: a property `ref`, and `radius_m` (default 1000). Checks an advert's location claims ('vse potrebno v blizini'). READ: `coverage` BEFORE reporting that anything is absent. READ: `n_within_radius` for the count; `examples` is a SAMPLE (up to 12), `n_not_shown` did not fit. READ: `assigned_school` is the school the address is ENTITLED to, not the nearest one. READ: `civic_initiatives.state` for what neighbours FILE with the council (pobude) — `board_here` is Ljubljana only; then `pct_rank_in_municipality`, `themes`. NEVER: read `n_filings_300m` as PROBLEMS or `mentions.noise` as a noise level — it is a filing rate, highest where prices are highest. NEVER: add the OSM count to `registered`: OSM is named and full of holes; `registered` is GURS building space, complete but unnamed and possibly vacant. NEVER: say a shop does not exist — say OSM records none, and quote `registered`. Two-thirds of OSM's silence is a mapping gap. READ: `population.residents_per_dwelling_1km` for whether housing is LIVED IN (~2.0-2.5 ordinary, Piran waterfront 1.19) beside `accommodation.short_term_units_per_100_dwellings`. Null under 25 dwellings; a low ratio names NO cause. READ: `recent_sales_nearby` for what homes nearby SOLD for (prodaje v okolici): `radius_m` (own ring), the newest five `sales`, then `n_excluded` — real sales priced as a bundle. NEVER: quote a distance as a walk. Straight-line understates it 1.38x on the flat, more on a slope. THEN: to LIST a category in full instead of sampling, pass `list_category` (daily_shopping, health, education, food_drink, services, transport, culture, recreation) and read `listed`.
neighbourhood
List what this data CANNOT answer, and the nearest thing it can. INPUT: nothing. READ: `limitations` — nineteen questions with a stated reason and a substitute. NEVER: infer an answer the register does not hold. Absent here: days on market, who owns a private flat, whether a flat is renovated, drive times, a building manager's fee or service record. THEN: call this when a user asks for one of those, instead of estimating. Free to call.
data_limitations
Bloki.si ChatGPT Plugin FAQ
How the directory, categories and Discoverability Score work.
Read the methodologyHow do I improve Bloki.si's ChatGPT Plugin discoverability?
The levers are the listing surface agents actually read: names, descriptions, keywords, tool metadata, and registry health. Which lever matters depends on where discovery breaks, which is what continuous measurement shows.
Where is this profile measured?
This profile uses the geography attached to the latest public registry snapshot: US. Locale tags are intentionally omitted.


