Immobiliare APIimmobiliare.it ↗
Search Italian property listings, agencies, and price trends via the immobiliare.it API. 6 endpoints covering sales, rentals, market stats, and agency data.
What is the Immobiliare API?
The immobiliare.it API provides access to Italian real estate data across 6 endpoints, covering property listings for sale and rent, agency directories, and city-level price trend statistics. The search_properties endpoint accepts location keys and contract type filters to return paginated listings, while get_price_trends delivers average prices per square meter, historical charts, and zone-level breakdowns for any Italian city.
curl -X GET 'https://api.parse.bot/scraper/532d5d50-cc62-4c98-9003-0849823141d7/get_location_autocomplete?query=Roma' \ -H 'X-API-Key: $PARSE_API_KEY'
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 immobiliare-it-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.
from parse_apis.immobiliare_it_api import Immobiliare, Contract, Category
client = Immobiliare()
# Search for locations matching "Roma"
for location in client.locations.search(query="Roma"):
print(location.label, location.keyurl, location.center)
break
# Search rental apartments in Roma
for listing in client.propertylistings.search(location_key="Roma", contract=Contract.AFFITTO, category=Category.CASE, limit=5):
print(listing.title, listing.price.formatted_value)
# Get full details for this listing
detail = listing.detail()
print(detail.title, detail.contract)
# Search agencies in Milano
for agency in client.agencies.search(location_key="Milano", limit=3):
print(agency.display_name, agency.address, agency.real_estate)
# Get full agency details
full = agency.detail()
print(full.name, full.real_estate_ads, full.website)
# Get market price trends for Roma
trends = client.locations.trends(region_key="Lazio", city_key="Roma")
print(trends.building_prices_stats.title)
for highlight in trends.building_prices_stats.highlighted:
print(highlight.title, highlight.current_value, highlight.unit)
Search for locations (cities, regions, zones) by query to get location keys for use in other endpoints. Returns an array of matching locations with geographic hierarchy, center coordinates, and parent regions. The keyurl field is used as location_key in search_properties and search_agencies.
| Param | Type | Description |
|---|---|---|
| queryrequired | string | Location search query (e.g., 'Roma', 'Milano', 'Firenze') |
{
"type": "object",
"fields": {
"locations": "array of location objects with id, type, label, keyurl, parents array, and center coordinates"
},
"sample": {
"data": {
"locations": [
{
"id": "6737",
"type": 2,
"label": "Roma",
"center": {
"lat": 41.8955,
"lng": 12.4823
},
"keyurl": "Roma",
"country": null,
"parents": [
{
"id": "RM",
"type": 1,
"label": "Roma",
"keyurl": "Roma",
"country": null
},
{
"id": "laz",
"type": 0,
"label": "Lazio",
"keyurl": "Lazio",
"country": "IT"
}
],
"admin_centre": true
}
]
},
"status": "success"
}
}About the Immobiliare API
Property Search and Listing Detail
The search_properties endpoint accepts a location_key (obtained from get_location_autocomplete), a contract value of either vendita (sale) or affitto (rent), and a category such as case, uffici, or negozi. Results include a paginated results array alongside total_count, location, and contract metadata. To retrieve a specific listing, pass the numeric listing_id to get_property_detail, which returns the full realEstate object — including description, photos, energy class, geographic coordinates, and advertiser details — along with seo and trovakasa fields.
Location Resolution
Before calling most endpoints you need a location key. get_location_autocomplete takes a free-text query (e.g., 'Roma' or 'Firenze') and returns an array of matching location objects, each with an id, type, label, keyurl, parents for geographic hierarchy, and center coordinates. The keyurl value from this response is what search_properties, search_agencies, and related endpoints expect as their location_key.
Agency Directory
search_agencies accepts a location_key and returns paginated agency listings with total_count and location context. For a specific agency, get_agency_detail requires a numeric agency_id and an optional URL slug; its response includes the agency's name, agents, phones, address, location, description, and associated realEstateAds.
Price Trends and Market Statistics
get_price_trends takes a city_key and a region_key (e.g., 'Roma' and 'Lazio') and returns buildingPricesStats for average prices per square meter, buildingPricesMap for zone-level breakdowns, priceCharts for time-series data, realEstateCounters for listing volume, plus seoMeta, pageData, and breadcrumbs. This makes it the primary endpoint for market analysis and valuation context.
The Immobiliare API is a managed, monitored endpoint for immobiliare.it — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when immobiliare.it changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official immobiliare.it API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Aggregate Italian property listings by city and contract type for a real estate portal or comparison tool.
- Track average price-per-square-meter trends over time for specific Italian cities using
priceChartsfromget_price_trends. - Build a neighborhood analysis tool by combining zone-level
buildingPricesMapdata with listing counts fromrealEstateCounters. - Populate an agency directory with contact details, opening hours, and agent lists sourced from
get_agency_detail. - Resolve Italian city and region names to structured location keys for use in downstream property or agency queries.
- Monitor listing volumes by category (houses, offices, shops) across multiple cities to identify inventory shifts.
- Enrich individual property records with energy class, photos, and advertiser information via
get_property_detail.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does immobiliare.it offer an official developer API?+
What does `get_price_trends` return and how granular is the data?+
buildingPricesStats (average price per square meter), buildingPricesMap (zone-level breakdowns within the city), priceCharts (historical time-series data), and realEstateCounters (listing counts). Granularity is at the city and intra-city zone level; inputs are city_key and region_key, so data is currently available per city rather than per postal code or individual street.Can I filter property searches by price range, number of rooms, or surface area?+
search_properties currently accepts location_key, contract, category, and page as filters. Price range, room count, and surface area filters are not exposed. You can fork this API on Parse and revise it to add those filter parameters.Does the API cover commercial or industrial properties beyond shops and offices?+
category parameter in search_properties supports case (houses), uffici (offices), and negozi (shops). Industrial properties, warehouses, and land listings are not currently included as distinct categories. You can fork the API on Parse and revise it to add support for additional property categories that appear on the site.How does pagination work across the search endpoints?+
search_properties and search_agencies accept an integer page parameter. Responses include a total_count field so you can calculate the number of pages. There is no cursor-based pagination; iterate by incrementing page until the results array is exhausted relative to total_count.