Discover/Imobiliare API
live

Imobiliare APIimobiliare.ro

Search and filter rental apartments across Romania by city, zone, and price range using real-time listings from imobiliare.ro. Discover available properties that match your budget and location preferences with detailed filtering options.

Endpoint health
monitored
search_apartments_for_rent
search_locations
Checks pendingself-healing
Endpoints
2
Updated
3h ago
Try it
Location name to search for (e.g. 'Cluj', 'Bucuresti', 'Pipera').
api.parse.bot/scraper/209dc279-0def-4b60-a612-bc01a1fecaa6/<endpoint>
Ready to send
Fill in the parameters and hit sign in to send to see live response data here.
Call it over HTTPgrab a free API key at signup
curl -X GET 'https://api.parse.bot/scraper/209dc279-0def-4b60-a612-bc01a1fecaa6/search_locations?query=Cluj' \
  -H 'X-API-Key: $PARSE_API_KEY'
Python SDK · recommended

Typed, relational, agent-ready

A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.

  • Fully typed · autocompletes
  • Objects link to objects
  • Typed errors & pagination

Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:

uv add parse-sdk
uv run parse init
uv run parse add --marketplace imobiliare-ro-api

uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.

"""Walkthrough: Imobiliare.ro SDK - search apartments for rent in Romania."""
from parse_apis.imobiliare_ro_api import Imobiliare, LocationNotFound

client = Imobiliare()

# Discover locations matching "Cluj" to find valid city/zone slugs.
for loc in client.locations.search(query="Cluj", limit=3):
    print(loc.label, loc.listings_count)

# Search apartments for rent in Bucuresti with a price filter.
for apt in client.apartments.search(city="bucuresti", min_price="400", max_price="800", limit=5):
    print(apt.title, apt.price, apt.currency, apt.area)

# Drill into a specific zone search.
apt = client.apartments.search(city="cluj-napoca", zone="manastur", limit=1).first()
if apt:
    print(apt.listing_id, apt.title, apt.price, apt.seller_type)

# Handle location not found error.
try:
    for a in client.apartments.search(city="nonexistent-city-xyz", limit=1):
        print(a.title)
except LocationNotFound as exc:
    print(f"Location not found: {exc}")

print("exercised: locations.search / apartments.search (city, zone, price filter)")
All endpoints · 2 totalmissing one? ·

Search for locations (counties, cities, zones, streets) by name. Returns matching locations organized by type, each with a location_id and listings_count. Use this to discover valid city and zone slugs for the search_apartments_for_rent endpoint.

Input
ParamTypeDescription
queryrequiredstringLocation name to search for (e.g. 'Cluj', 'Bucuresti', 'Pipera').
Response
{
  "type": "object",
  "fields": {
    "zones": "array of zone location objects",
    "cities": "array of city location objects",
    "streets": "array of street location objects",
    "counties": "array of county location objects"
  },
  "sample": {
    "zones": [
      {
        "depth": 3,
        "label": "Manastur",
        "id_tree": "11115_11335_11365",
        "subtext": "Cluj-Napoca, Judetul Cluj",
        "parent_id": 11335,
        "location_id": 11365,
        "has_children": false,
        "parent_stack": [
          {
            "depth": 1,
            "label": "Judetul Cluj",
            "id_tree": "11115",
            "location_id": 11115
          },
          {
            "depth": 2,
            "label": "Cluj-Napoca",
            "id_tree": "11115_11335",
            "location_id": 11335
          }
        ],
        "listings_count": 1890
      }
    ],
    "cities": [
      {
        "depth": 2,
        "label": "Cluj-Napoca",
        "id_tree": "11115_11335",
        "subtext": "Judetul Cluj",
        "parent_id": 11115,
        "location_id": 11335,
        "has_children": true,
        "parent_stack": [
          {
            "depth": 1,
            "label": "Judetul Cluj",
            "id_tree": "11115",
            "location_id": 11115
          }
        ],
        "listings_count": 14570
      }
    ],
    "streets": [
      {
        "depth": 3,
        "label": "Strada Paris",
        "id_tree": "11115_11335_35032",
        "subtext": "Cluj-Napoca, Judetul Cluj",
        "parent_id": 11335,
        "location_id": 35032,
        "has_children": false,
        "parent_stack": [
          {
            "depth": 1,
            "label": "Judetul Cluj",
            "id_tree": "11115",
            "location_id": 11115
          },
          {
            "depth": 2,
            "label": "Cluj-Napoca",
            "id_tree": "11115_11335",
            "location_id": 11335
          }
        ],
        "listings_count": 886
      }
    ],
    "counties": [
      {
        "depth": 1,
        "label": "Judetul Cluj",
        "id_tree": "11115",
        "subtext": "",
        "parent_id": 0,
        "location_id": 11115,
        "has_children": true,
        "parent_stack": [],
        "listings_count": 21695
      }
    ]
  }
}

About the Imobiliare API

The Imobiliare API on Parse exposes 2 endpoints for the publicly available data on imobiliare.ro. Calls return JSON over HTTPS and are billed per successful response.

Pin a release with the API-Snapshot-Version header so canonical updates don't silently change your contract.