Tecnocasa APItecnocasa.it ↗
Search Tecnocasa.it properties for sale or rent across Italy. Retrieve listings, agency contacts, pricing, energy data, and location autocomplete via 4 endpoints.
What is the Tecnocasa API?
The Tecnocasa.it API provides 4 endpoints to search and retrieve property listings and agency data from Italy's largest real estate franchising network. The search_properties endpoint returns paginated results filtered by region, province, contract type, and price range, while get_property_details returns a full property record including surface area, room count, energy data, media, and mortgage information.
curl -X GET 'https://api.parse.bot/scraper/7aac2acc-9f50-45a6-9ee8-4322b3252092/search_properties?page=1&limit=5®ion=lom&contract=acquis&province=MI&max_price=500000&min_price=50000' \ -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 tecnocasa-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.
"""Tecnocasa.it Real Estate SDK — search listings, get details, find agencies."""
from parse_apis.tecnocasa_italy_real_estate_api import (
Tecnocasa, Contract, PropertyNotFound
)
client = Tecnocasa()
# Search properties for sale in Milan province, capped at 5 results
for prop in client.propertysummaries.search(
province="MI", contract=Contract.SALE, limit=5
):
print(prop.title, prop.price, prop.surface)
# Drill into the first result's full details
listing = client.propertysummaries.search(province="MI", limit=1).first()
if listing:
detail = listing.details()
print(detail.title, detail.price, detail.rooms)
print(detail.energy_data.class_, detail.energy_data.heating)
print(detail.agency.name, detail.agency.phone)
# Fetch a specific agency by URL
agency = client.agencies.get(
url="https://www.tecnocasa.it/agenzie/immobiliari+residenziali/firenze/firenze/ficsd.html"
)
print(agency.name, agency.email, agency.district)
# Location autocomplete
for loc in client.locationsuggestions.search(query="Roma", limit=3):
print(loc.name, loc.type, loc.placeholder)
# Typed error handling
try:
client.agencies.get(url="https://www.tecnocasa.it/agenzie/immobiliari+residenziali/fake/fake/xxxxx.html")
except PropertyNotFound as exc:
print(f"Agency not found: {exc}")
print("Exercised: propertysummaries.search, details, agencies.get, locationsuggestions.search")Search for properties available for sale or rent by location (province/region). Returns paginated results with property summaries including price, surface area, rooms, and detail URLs. Each result includes a detail_url that can be passed to get_property_details for the full listing. The upstream API returns a total field but it is always 0 regardless of actual result count; use the estates array length to determine how many results were returned.
| Param | Type | Description |
|---|---|---|
| page | integer | Page number for pagination. |
| limit | integer | Results per page. |
| region | string | Region code (e.g., 'taa' for Trentino Alto Adige, 'lom' for Lombardia, 'vda' for Valle d'Aosta, 'ven' for Veneto, 'tos' for Toscana, 'laz' for Lazio). |
| contract | string | Contract type: 'acquis' for sale, 'affitto' for rent. |
| province | string | Province code (e.g., 'TN', 'MI', 'RM', 'FI', 'BZ'). |
| typology | string | Property typology filter. |
| max_price | integer | Maximum price filter in euros. |
| min_price | integer | Minimum price filter in euros. |
{
"type": "object",
"fields": {
"total": "integer total count field (always 0 from the API)",
"estates": "array of property summary objects with id, title, price, surface, rooms, detail_url, images, agency"
},
"sample": {
"data": {
"total": 0,
"estates": [
{
"id": 61233362,
"top": true,
"price": "€ 365.000",
"rooms": "4 locali",
"title": "Quadrilocale in vendita",
"agency": {
"id": "mihk5"
},
"images": [
{
"id": 65211916,
"url": {
"card": "https://cdn-media.medialabtc.it/it/agencies/mihk5/estates/61233362/images/65211916/card.jpeg",
"gallery_preview": "https://cdn-media.medialabtc.it/it/agencies/mihk5/estates/61233362/images/65211916/gallery_preview.jpeg"
},
"order": 1
}
],
"ad_type": "estate",
"country": "it",
"surface": "116 Mq",
"discount": null,
"is_saved": 0,
"subtitle": "Settimo Milanese, via Ciniselli",
"bathrooms": "2 bagni",
"exclusive": false,
"is_hidden": null,
"best_offer": false,
"detail_url": "https://www.tecnocasa.it/vendita/appartamenti/milano/settimo-milanese/61233362.html",
"rooms_short": "4 locali",
"virtual_tour": null,
"is_discounted": false,
"previous_price": null,
"price_alternative": null,
"discount_percentage": "%"
}
]
},
"status": "success"
}
}About the Tecnocasa API
Property Search and Filtering
The search_properties endpoint accepts filters for region (e.g., lom for Lombardia, ven for Veneto), province (e.g., RM for Rome, MI for Milan), contract (acquis for sale, affitto for rent), and price bounds via min_price and max_price in euros. Results are paginated via page and limit parameters. Each item in the estates array includes an id, title, price, surface, rooms, detail_url, thumbnail images, and a summary agency object.
Property Detail Data
Passing a full Tecnocasa.it property URL to get_property_details returns a richer record. The media object contains an images array, video, and virtual_tour link when available. The features object covers floor, box, bedrooms, and heating. The agency object includes the listing agency's name, email, phone, address, and a team array of individual agents. Price is returned as a formatted string or a reserved-negotiation label when the seller has withheld the figure. The data array provides address label/value pairs such as municipality and neighborhood.
Agency Lookup
The get_agency_details endpoint accepts an agency URL and returns the agency's full contact record: name, email, phone, address, district, latitude, longitude, and nested region and province objects each carrying an id and title. The team array lists staff members when published.
Location Autocomplete
The get_location_autocomplete endpoint accepts a partial place name via the query parameter and returns a precise array of suggestions. Each suggestion includes a type (province, city, or district), an id, a name, and a placeholder string suitable for display in a search input.
The Tecnocasa API is a managed, monitored endpoint for tecnocasa.it — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when tecnocasa.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 tecnocasa.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 region and contract type for a real estate comparison portal
- Monitor price changes on specific provinces by periodically calling search_properties with min_price/max_price filters
- Build a map-based property browser using latitude/longitude from get_agency_details responses
- Populate a CRM with Tecnocasa agency contact details including phone, email, and team members
- Feed an investment analysis tool with surface area, room count, and price data from search_properties
- Implement a location-aware search UI using get_location_autocomplete to resolve partial city or district names
- Enrich property listings with virtual tour links, energy data, and mortgage information from get_property_details
| 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.