[{"data":1,"prerenderedAt":469},["ShallowReactive",2],{"page:\u002Fproperties":3,"schema:ExternalProperty":331,"operations":425},{"id":4,"title":5,"body":6,"description":321,"extension":322,"meta":323,"navigation":324,"operation":325,"path":326,"rawbody":327,"seo":328,"stem":329,"__hash__":330},"docs\u002Fproperties.md","Properties",{"type":7,"value":8,"toc":310},"minimark",[9,18,26,31,34,38,41,67,78,83,101,181,201,204,208,219,281,293,297,300,304],[10,11,12,13,17],"p",{},"A property is a listing managed in Vestta: an apartment for rent, a house for sale, a commercial unit offered for transfer. The API exposes the workspace's ",[14,15,16],"strong",{},"public catalogue"," — the same listings the agency chooses to publish — so you can show them on a website, feed another product or keep an external index in sync.",[10,19,20,21,25],{},"All property endpoints need the ",[22,23,24],"code",{},"properties:read"," scope.",[27,28,30],"h2",{"id":29},"endpoints","Endpoints",[32,33],"api-endpoints",{"tag":5},[27,35,37],{"id":36},"what-is-public","What is public",[10,39,40],{},"A property is returned only when, in Vestta:",[42,43,44,52],"ul",{},[45,46,47,48,51],"li",{},"it is marked as ",[14,49,50],{},"public",", and",[45,53,54,55,58,59,62,63,66],{},"its status is not sold (",[22,56,57],{},"vendida","), rented (",[22,60,61],{},"alquilada",") or withdrawn (",[22,64,65],{},"retirado",").",[10,68,69,70,73,74,77],{},"In practice the API returns properties with status ",[22,71,72],{},"disponible"," or ",[22,75,76],{},"reservada",". The response only carries listing data: public images, processed videos and the characteristics shown in a listing. Internal data — notes, owner and agency details, commission and captation figures, price history, portal settings — is never sent.",[79,80,82],"h3",{"id":81},"address-privacy","Address privacy",[10,84,85,86,89,90,73,93,96,97,100],{},"Each property has an address privacy setting in Vestta (",[14,87,88],{},"Dirección exacta",", ",[14,91,92],{},"Solo zona \u002F calle",[14,94,95],{},"Ocultar ubicación","). Every location field follows it, and ",[22,98,99],{},"specs.address_privacy"," tells you which one applies:",[102,103,104,133],"table",{},[105,106,107],"thead",{},[108,109,110,114,119,128],"tr",{},[111,112,113],"th",{},"Setting",[111,115,116],{},[22,117,118],{},"address",[111,120,121,124,125],{},[22,122,123],{},"lat"," \u002F ",[22,126,127],{},"lon",[111,129,130],{},[22,131,132],{},"postal_code",[134,135,136,152,167],"tbody",{},[108,137,138,143,146,149],{},[139,140,141],"td",{},[22,142,50],{},[139,144,145],{},"The full address",[139,147,148],{},"Exact",[139,150,151],{},"Returned",[108,153,154,159,162,165],{},[139,155,156],{},[22,157,158],{},"approximate",[139,160,161],{},"The approximate address entered in Vestta, such as a neighbourhood or street",[139,163,164],{},"Rounded to 2 decimals (about 1 km)",[139,166,151],{},[108,168,169,174,177,179],{},[139,170,171],{},[22,172,173],{},"hidden",[139,175,176],{},"Omitted",[139,178,176],{},[139,180,176],{},[10,182,183,89,186,189,190,193,194,196,197,200],{},[22,184,185],{},"city",[22,187,188],{},"province"," and ",[22,191,192],{},"country"," are always returned when set. Properties without a privacy setting are treated as ",[22,195,158],{},", like in the Vestta app. ",[22,198,199],{},"specs.building_name"," is only included when the address is public.",[10,202,203],{},"When you draw approximate properties on a map, show an area rather than a pin: the coordinates mark a ~1 km cell, not the building.",[27,205,207],{"id":206},"operations-and-prices","Operations and prices",[10,209,210,211,214,215,218],{},"A property can be offered for more than one operation at once, so ",[22,212,213],{},"operation"," may hold several values separated by commas, such as ",[22,216,217],{},"venta,alquiler",". Each operation has its own price:",[102,220,221,234],{},[105,222,223],{},[108,224,225,228,231],{},[111,226,227],{},"Operation",[111,229,230],{},"Value",[111,232,233],{},"Price field",[134,235,236,251,266],{},[108,237,238,241,246],{},[139,239,240],{},"Sale",[139,242,243],{},[22,244,245],{},"venta",[139,247,248],{},[22,249,250],{},"price",[108,252,253,256,261],{},[139,254,255],{},"Rent (monthly)",[139,257,258],{},[22,259,260],{},"alquiler",[139,262,263],{},[22,264,265],{},"specs.price_calc.price_alq",[108,267,268,271,276],{},[139,269,270],{},"Transfer",[139,272,273],{},[22,274,275],{},"traspaso",[139,277,278],{},[22,279,280],{},"specs.price_calc.price_trasp",[10,282,283,284,286,287,292],{},"When you filter or sort by price, the ",[22,285,213],{}," filter decides which of these fields is used. See ",[288,289,291],"a",{"href":290},"\u002Fproperties\u002Flist#prices","List properties",".",[27,294,296],{"id":295},"the-property-object","The property object",[10,298,299],{},"List properties and Retrieve a property return the same object.",[301,302],"api-model",{"name":303},"ExternalProperty",[10,305,306,309],{},[22,307,308],{},"specs"," holds additional characteristics whose keys depend on the property type — floor, orientation, energy certificate, rental flags and so on. Read the keys you need and ignore the rest.",{"title":311,"searchDepth":312,"depth":312,"links":313},"",3,[314,316,319,320],{"id":29,"depth":315,"text":30},2,{"id":36,"depth":315,"text":37,"children":317},[318],{"id":81,"depth":312,"text":82},{"id":206,"depth":315,"text":207},{"id":295,"depth":315,"text":296},"Read the public property catalogue of a Vestta workspace, with filters, prices, images and locations.","md",{},true,null,"\u002Fproperties","---\ntitle: Properties\ndescription: Read the public property catalogue of a Vestta workspace, with filters, prices, images and locations.\n---\n\nA property is a listing managed in Vestta: an apartment for rent, a house for sale, a commercial unit offered for transfer. The API exposes the workspace's **public catalogue** — the same listings the agency chooses to publish — so you can show them on a website, feed another product or keep an external index in sync.\n\nAll property endpoints need the `properties:read` scope.\n\n## Endpoints\n\n:api-endpoints{tag=\"Properties\"}\n\n## What is public\n\nA property is returned only when, in Vestta:\n\n- it is marked as **public**, and\n- its status is not sold (`vendida`), rented (`alquilada`) or withdrawn (`retirado`).\n\nIn practice the API returns properties with status `disponible` or `reservada`. The response only carries listing data: public images, processed videos and the characteristics shown in a listing. Internal data — notes, owner and agency details, commission and captation figures, price history, portal settings — is never sent.\n\n### Address privacy\n\nEach property has an address privacy setting in Vestta (**Dirección exacta**, **Solo zona \u002F calle** or **Ocultar ubicación**). Every location field follows it, and `specs.address_privacy` tells you which one applies:\n\n| Setting | `address` | `lat` \u002F `lon` | `postal_code` |\n| --- | --- | --- | --- |\n| `public` | The full address | Exact | Returned |\n| `approximate` | The approximate address entered in Vestta, such as a neighbourhood or street | Rounded to 2 decimals (about 1 km) | Returned |\n| `hidden` | Omitted | Omitted | Omitted |\n\n`city`, `province` and `country` are always returned when set. Properties without a privacy setting are treated as `approximate`, like in the Vestta app. `specs.building_name` is only included when the address is public.\n\nWhen you draw approximate properties on a map, show an area rather than a pin: the coordinates mark a ~1 km cell, not the building.\n\n## Operations and prices\n\nA property can be offered for more than one operation at once, so `operation` may hold several values separated by commas, such as `venta,alquiler`. Each operation has its own price:\n\n| Operation | Value | Price field |\n| --- | --- | --- |\n| Sale | `venta` | `price` |\n| Rent (monthly) | `alquiler` | `specs.price_calc.price_alq` |\n| Transfer | `traspaso` | `specs.price_calc.price_trasp` |\n\nWhen you filter or sort by price, the `operation` filter decides which of these fields is used. See [List properties](\u002Fproperties\u002Flist#prices).\n\n## The property object\n\nList properties and Retrieve a property return the same object.\n\n:api-model{name=\"ExternalProperty\"}\n\n`specs` holds additional characteristics whose keys depend on the property type — floor, orientation, energy certificate, rental flags and so on. Read the keys you need and ignore the rest.\n",{"title":5,"description":321},"properties","VI8SG7LWTeJVsOY7xeOVNhBXvU604iXifgdjW68XS5Q",{"name":303,"fields":332},[333,339,343,347,351,355,359,363,366,369,372,376,381,385,389,393,397,400,402,404,406,409,412,417,421],{"name":334,"type":335,"required":324,"nullable":336,"description":337,"constraints":338},"id","integer",false,"Numeric property ID. Use it with Retrieve a property.",[],{"name":213,"type":340,"required":336,"nullable":324,"description":341,"constraints":342},"string","Operations the property is offered for: `venta`, `alquiler`, `traspaso`, or several joined by commas (e.g. `venta,alquiler`).",[],{"name":344,"type":340,"required":336,"nullable":324,"description":345,"constraints":346},"type","Property type key, e.g. `apartamento`, `casa`, `local`, `oficina`, `terreno` or `edificio`.",[],{"name":348,"type":340,"required":336,"nullable":324,"description":349,"constraints":350},"subtype","Subtype as a Spanish display label (e.g. `Ático`, `Local Comercial`), or `Sin Especificar`.",[],{"name":352,"type":340,"required":336,"nullable":324,"description":353,"constraints":354},"title","Listing title. May be empty.",[],{"name":250,"type":356,"required":336,"nullable":324,"description":357,"constraints":358},"number","Sale price in euros. Rent and transfer prices are in `specs.price_calc`.",[],{"name":360,"type":356,"required":336,"nullable":324,"description":361,"constraints":362},"size_total","Total size in m².",[],{"name":364,"type":335,"required":336,"nullable":324,"constraints":365},"bedrooms",[],{"name":367,"type":335,"required":336,"nullable":324,"constraints":368},"bathrooms",[],{"name":132,"type":340,"required":336,"nullable":324,"description":370,"constraints":371},"Omitted when the property's location is hidden.",[],{"name":373,"type":340,"required":336,"nullable":324,"description":374,"constraints":375},"description","Listing description as HTML.",[],{"name":377,"type":378,"required":336,"nullable":336,"description":379,"constraints":380},"images","array of any","Public images, as `{id, url, order, is_primary, title}` objects.",[],{"name":382,"type":378,"required":336,"nullable":324,"description":383,"constraints":384},"videos","Processed videos, as `{id, title, order, url, hls_url, thumbnail_url, embed_url}` objects.",[],{"name":308,"type":386,"required":336,"nullable":324,"description":387,"constraints":388},"object","Listing characteristics. Keys depend on the property type. `price_calc.price_alq` and `price_calc.price_trasp` hold the monthly rent and transfer price; `address_privacy` is `public`, `approximate` or `hidden`; `building_name` is only present when the address is public.",[],{"name":390,"type":378,"required":336,"nullable":324,"description":391,"constraints":392},"features","Amenities as `{label, key, value, isextra}` objects. `label` is a display string; `key` is stable.",[],{"name":394,"type":340,"required":336,"nullable":324,"description":395,"constraints":396},"status","`disponible` or `reservada`. Sold, rented and withdrawn properties are never returned.",[],{"name":118,"type":340,"required":336,"nullable":324,"description":398,"constraints":399},"Follows the property's address privacy: the full address when public, the approximate address when approximate, omitted when hidden.",[],{"name":185,"type":340,"required":336,"nullable":324,"constraints":401},[],{"name":188,"type":340,"required":336,"nullable":324,"constraints":403},[],{"name":192,"type":340,"required":336,"nullable":324,"constraints":405},[],{"name":123,"type":356,"required":336,"nullable":324,"description":407,"constraints":408},"Latitude in decimal degrees. Exact when the address is public, rounded to 2 decimals (about 1 km) when approximate, omitted when hidden.",[],{"name":127,"type":356,"required":336,"nullable":324,"description":410,"constraints":411},"Longitude in decimal degrees, with the same precision rules as `lat`.",[],{"name":413,"type":414,"required":336,"nullable":324,"description":415,"constraints":416},"is_featured","boolean","Whether the business marked the property as featured.",[],{"name":418,"type":340,"required":336,"nullable":324,"description":419,"constraints":420},"created_at","ISO 8601 timestamp with UTC offset.",[],{"name":422,"type":340,"required":336,"nullable":324,"description":423,"constraints":424},"updated_at","ISO 8601 timestamp with UTC offset. The default sort key.",[],[426,436,444,450,455,462],{"id":427,"method":428,"path":429,"fullPath":430,"summary":431,"tag":432,"scopes":433,"docsPath":435},"listLeads","GET","\u002Fleads","\u002Fv1\u002Fext\u002Fleads","List leads","Leads",[434],"leads:read","\u002Fleads\u002Flist",{"id":437,"method":438,"path":439,"fullPath":440,"summary":441,"tag":432,"scopes":442,"docsPath":439},"ingestRentalLead","POST","\u002Fleads\u002Fingest","\u002Fv1\u002Fext\u002Fleads\u002Fingest","Ingest a rental lead",[443],"leads:ingest",{"id":445,"method":438,"path":446,"fullPath":447,"summary":448,"tag":432,"scopes":449,"docsPath":446},"createLeadInquiry","\u002Fleads\u002Finquiries","\u002Fv1\u002Fext\u002Fleads\u002Finquiries","Create an inquiry",[443],{"id":451,"method":428,"path":326,"fullPath":452,"summary":291,"tag":5,"scopes":453,"docsPath":454},"listProperties","\u002Fv1\u002Fext\u002Fproperties",[24],"\u002Fproperties\u002Flist",{"id":456,"method":428,"path":457,"fullPath":458,"summary":459,"tag":5,"scopes":460,"docsPath":461},"getProperty","\u002Fproperties\u002F{property_id}","\u002Fv1\u002Fext\u002Fproperties\u002F{property_id}","Retrieve a property",[24],"\u002Fproperties\u002Fretrieve",{"id":463,"method":428,"path":464,"fullPath":465,"summary":466,"tag":467,"scopes":468,"docsPath":464},"getApiKeyContext","\u002Fme","\u002Fv1\u002Fext\u002Fme","Retrieve key context","Authentication",[],1791110048513]