[{"data":1,"prerenderedAt":824},["ShallowReactive",2],{"page:\u002Fproperties\u002Flist":3,"operation:listProperties":603},{"id":4,"title":5,"body":6,"description":593,"extension":594,"meta":595,"navigation":596,"operation":597,"path":598,"rawbody":599,"seo":600,"stem":601,"__hash__":602},"docs\u002Fproperties\u002Flist.md","List properties",{"type":7,"value":8,"toc":588},"minimark",[9,13,18,30,193,207,211,224,255,258,268,272,282,503,560,575,584],[10,11,12],"p",{},"Returns a page of the public catalogue and the total number of matching properties. Without filters, it returns every public property, most recently updated first.",[14,15,17],"h2",{"id":16},"filters","Filters",[10,19,20,21,25,26,29],{},"Filters combine with AND and use the same vocabulary as Vestta. ",[22,23,24],"code",{},"operation"," and ",[22,27,28],{},"city"," ignore case; the other text filters must match exactly:",[31,32,33,49],"table",{},[34,35,36],"thead",{},[37,38,39,43,46],"tr",{},[40,41,42],"th",{},"Filter",[40,44,45],{},"Match",[40,47,48],{},"Example",[50,51,52,74,89,108,122,137,158,173],"tbody",{},[37,53,54,59,69],{},[55,56,57],"td",{},[22,58,24],{},[55,60,61,62,65,66],{},"Contains the value, so ",[22,63,64],{},"alquiler"," also matches ",[22,67,68],{},"venta,alquiler",[55,70,71],{},[22,72,73],{},"operation=alquiler",[37,75,76,81,84],{},[55,77,78],{},[22,79,80],{},"type",[55,82,83],{},"Exact, lowercase key",[55,85,86],{},[22,87,88],{},"type=apartamento",[37,90,91,96,103],{},[55,92,93],{},[22,94,95],{},"subtype",[55,97,98,99],{},"Exact, using the subtype ",[100,101,102],"strong",{},"key",[55,104,105],{},[22,106,107],{},"subtype=atico",[37,109,110,114,117],{},[55,111,112],{},[22,113,28],{},[55,115,116],{},"Exact, ignoring case",[55,118,119],{},[22,120,121],{},"city=Madrid",[37,123,124,129,132],{},[55,125,126],{},[22,127,128],{},"status",[55,130,131],{},"Exact",[55,133,134],{},[22,135,136],{},"status=reservada",[37,138,139,144,153],{},[55,140,141],{},[22,142,143],{},"rental_type",[55,145,146,149,150],{},[22,147,148],{},"temporal"," or ",[22,151,152],{},"anual",[55,154,155],{},[22,156,157],{},"rental_type=anual",[37,159,160,165,168],{},[55,161,162],{},[22,163,164],{},"min_bedrooms",[55,166,167],{},"At least",[55,169,170],{},[22,171,172],{},"min_bedrooms=2",[37,174,175,180,188],{},[55,176,177],{},[22,178,179],{},"is_featured",[55,181,182,149,185],{},[22,183,184],{},"true",[22,186,187],{},"false",[55,189,190],{},[22,191,192],{},"is_featured=true",[10,194,195,196,198,199,202,203,206],{},"Note that ",[22,197,95],{}," filters by key (",[22,200,201],{},"atico",") while responses return a display label (",[22,204,205],{},"Ático",").",[14,208,210],{"id":209},"prices","Prices",[10,212,213,216,217,25,220,223],{},[22,214,215],{},"min_price",", ",[22,218,219],{},"max_price",[22,221,222],{},"sort"," compare the price of the operation you filter by:",[225,226,227,237,246],"ul",{},[228,229,230,232,233,236],"li",{},[22,231,73],{}," → the monthly rent, ",[22,234,235],{},"specs.price_calc.price_alq",".",[228,238,239,242,243,236],{},[22,240,241],{},"operation=traspaso"," → the transfer price, ",[22,244,245],{},"specs.price_calc.price_trasp",[228,247,248,249,251,252,236],{},"any other value, or no ",[22,250,24],{}," → the sale price, ",[22,253,254],{},"price",[10,256,257],{},"So a rental search in Madrid between 800 and 1,200 € per month, cheapest first, is:",[259,260,266],"pre",{"className":261,"code":263,"language":264,"meta":265},[262],"language-text","GET \u002Fv1\u002Fext\u002Fproperties?operation=alquiler&city=Madrid&min_price=800&max_price=1200&sort=price_asc\n","text","",[22,267,263],{"__ignoreMap":265},[14,269,271],{"id":270},"map-areas","Map areas",[10,273,274,277,278,281],{},[22,275,276],{},"locations"," restricts results to areas drawn on a map. It is a JSON array, URL-encoded into the query string. Each element is one area; a property matches if it falls inside ",[100,279,280],{},"any"," of them. Three shapes are supported:",[259,283,287],{"className":284,"code":285,"language":286,"meta":265,"style":265},"language-json shiki shiki-themes github-light","[\n  { \"geometry\": { \"type\": \"circle\", \"center\": { \"lat\": 40.4168, \"lng\": -3.7038 }, \"radius\": 1500 } },\n  { \"geometry\": { \"type\": \"polygon\", \"coordinates\": [\n    { \"lat\": 40.43, \"lng\": -3.71 }, { \"lat\": 40.43, \"lng\": -3.68 }, { \"lat\": 40.41, \"lng\": -3.69 }\n  ] } },\n  { \"type\": \"point\", \"position\": { \"lat\": 39.4699, \"lng\": -0.3763 }, \"radius\": 800 }\n]\n","json",[22,288,289,298,360,384,445,451,497],{"__ignoreMap":265},[290,291,294],"span",{"class":292,"line":293},"line",1,[290,295,297],{"class":296},"sgsFI","[\n",[290,299,301,304,308,311,314,317,321,323,326,328,331,333,336,338,341,343,346,349,352,354,357],{"class":292,"line":300},2,[290,302,303],{"class":296},"  { ",[290,305,307],{"class":306},"sYu0t","\"geometry\"",[290,309,310],{"class":296},": { ",[290,312,313],{"class":306},"\"type\"",[290,315,316],{"class":296},": ",[290,318,320],{"class":319},"sYBdl","\"circle\"",[290,322,216],{"class":296},[290,324,325],{"class":306},"\"center\"",[290,327,310],{"class":296},[290,329,330],{"class":306},"\"lat\"",[290,332,316],{"class":296},[290,334,335],{"class":306},"40.4168",[290,337,216],{"class":296},[290,339,340],{"class":306},"\"lng\"",[290,342,316],{"class":296},[290,344,345],{"class":306},"-3.7038",[290,347,348],{"class":296}," }, ",[290,350,351],{"class":306},"\"radius\"",[290,353,316],{"class":296},[290,355,356],{"class":306},"1500",[290,358,359],{"class":296}," } },\n",[290,361,363,365,367,369,371,373,376,378,381],{"class":292,"line":362},3,[290,364,303],{"class":296},[290,366,307],{"class":306},[290,368,310],{"class":296},[290,370,313],{"class":306},[290,372,316],{"class":296},[290,374,375],{"class":319},"\"polygon\"",[290,377,216],{"class":296},[290,379,380],{"class":306},"\"coordinates\"",[290,382,383],{"class":296},": [\n",[290,385,387,390,392,394,397,399,401,403,406,409,411,413,415,417,419,421,424,426,428,430,433,435,437,439,442],{"class":292,"line":386},4,[290,388,389],{"class":296},"    { ",[290,391,330],{"class":306},[290,393,316],{"class":296},[290,395,396],{"class":306},"40.43",[290,398,216],{"class":296},[290,400,340],{"class":306},[290,402,316],{"class":296},[290,404,405],{"class":306},"-3.71",[290,407,408],{"class":296}," }, { ",[290,410,330],{"class":306},[290,412,316],{"class":296},[290,414,396],{"class":306},[290,416,216],{"class":296},[290,418,340],{"class":306},[290,420,316],{"class":296},[290,422,423],{"class":306},"-3.68",[290,425,408],{"class":296},[290,427,330],{"class":306},[290,429,316],{"class":296},[290,431,432],{"class":306},"40.41",[290,434,216],{"class":296},[290,436,340],{"class":306},[290,438,316],{"class":296},[290,440,441],{"class":306},"-3.69",[290,443,444],{"class":296}," }\n",[290,446,448],{"class":292,"line":447},5,[290,449,450],{"class":296},"  ] } },\n",[290,452,454,456,458,460,463,465,468,470,472,474,477,479,481,483,486,488,490,492,495],{"class":292,"line":453},6,[290,455,303],{"class":296},[290,457,313],{"class":306},[290,459,316],{"class":296},[290,461,462],{"class":319},"\"point\"",[290,464,216],{"class":296},[290,466,467],{"class":306},"\"position\"",[290,469,310],{"class":296},[290,471,330],{"class":306},[290,473,316],{"class":296},[290,475,476],{"class":306},"39.4699",[290,478,216],{"class":296},[290,480,340],{"class":306},[290,482,316],{"class":296},[290,484,485],{"class":306},"-0.3763",[290,487,348],{"class":296},[290,489,351],{"class":306},[290,491,316],{"class":296},[290,493,494],{"class":306},"800",[290,496,444],{"class":296},[290,498,500],{"class":292,"line":499},7,[290,501,502],{"class":296},"]\n",[225,504,505,518,543],{},[228,506,507,510,511,25,514,517],{},[100,508,509],{},"Circle"," — ",[22,512,513],{},"center",[22,515,516],{},"radius"," in metres.",[228,519,520,523,524,527,528,531,532,535,536,539,540,236],{},[100,521,522],{},"Polygon"," — at least three ",[22,525,526],{},"coordinates","; ",[22,529,530],{},"rectangle"," is accepted as a synonym. Coordinates can also be ",[22,533,534],{},"[lat, lng]"," pairs, and ",[22,537,538],{},"lon"," is accepted in place of ",[22,541,542],{},"lng",[228,544,545,548,549,552,553,555,556,559],{},[100,546,547],{},"Point"," — a ",[22,550,551],{},"position"," and an optional ",[22,554,516],{}," in metres, 500 by default. ",[22,557,558],{},"marker"," is a synonym.",[10,561,562,563,566,567,570,571,574],{},"Areas are matched against the ",[100,564,565],{},"published"," coordinates: rounded ones for approximate locations, none for hidden ones. Approximate properties can match an area up to about 1 km away from their real position, and properties with a hidden location never match an area. Elements without a recognised geometry — for example ",[22,568,569],{},"{ \"name\": \"Madrid\" }"," — are ignored, and so is the whole parameter if it is not valid JSON. The ",[22,572,573],{},"filters.locations"," field of the response echoes the areas that were applied, so you can check what was understood.",[576,577,578],"tip",{},[10,579,580,581,583],{},"Most HTTP clients URL-encode query parameters for you: pass the JSON string as the value of ",[22,582,276],{}," instead of encoding it by hand.",[585,586,587],"style",{},"html pre.shiki code .sgsFI, html code.shiki .sgsFI{--shiki-default:#24292E}html pre.shiki code .sYu0t, html code.shiki .sYu0t{--shiki-default:#005CC5}html pre.shiki code .sYBdl, html code.shiki .sYBdl{--shiki-default:#032F62}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}",{"title":265,"searchDepth":362,"depth":362,"links":589},[590,591,592],{"id":16,"depth":300,"text":17},{"id":209,"depth":300,"text":210},{"id":270,"depth":300,"text":271},"Return the public property catalogue, filtered, sorted and paginated.","md",{},true,"listProperties","\u002Fproperties\u002Flist","---\ntitle: List properties\ndescription: Return the public property catalogue, filtered, sorted and paginated.\noperation: listProperties\n---\n\nReturns a page of the public catalogue and the total number of matching properties. Without filters, it returns every public property, most recently updated first.\n\n## Filters\n\nFilters combine with AND and use the same vocabulary as Vestta. `operation` and `city` ignore case; the other text filters must match exactly:\n\n| Filter | Match | Example |\n| --- | --- | --- |\n| `operation` | Contains the value, so `alquiler` also matches `venta,alquiler` | `operation=alquiler` |\n| `type` | Exact, lowercase key | `type=apartamento` |\n| `subtype` | Exact, using the subtype **key** | `subtype=atico` |\n| `city` | Exact, ignoring case | `city=Madrid` |\n| `status` | Exact | `status=reservada` |\n| `rental_type` | `temporal` or `anual` | `rental_type=anual` |\n| `min_bedrooms` | At least | `min_bedrooms=2` |\n| `is_featured` | `true` or `false` | `is_featured=true` |\n\nNote that `subtype` filters by key (`atico`) while responses return a display label (`Ático`).\n\n## Prices\n\n`min_price`, `max_price` and `sort` compare the price of the operation you filter by:\n\n- `operation=alquiler` → the monthly rent, `specs.price_calc.price_alq`.\n- `operation=traspaso` → the transfer price, `specs.price_calc.price_trasp`.\n- any other value, or no `operation` → the sale price, `price`.\n\nSo a rental search in Madrid between 800 and 1,200 € per month, cheapest first, is:\n\n```text\nGET \u002Fv1\u002Fext\u002Fproperties?operation=alquiler&city=Madrid&min_price=800&max_price=1200&sort=price_asc\n```\n\n## Map areas\n\n`locations` restricts results to areas drawn on a map. It is a JSON array, URL-encoded into the query string. Each element is one area; a property matches if it falls inside **any** of them. Three shapes are supported:\n\n```json\n[\n  { \"geometry\": { \"type\": \"circle\", \"center\": { \"lat\": 40.4168, \"lng\": -3.7038 }, \"radius\": 1500 } },\n  { \"geometry\": { \"type\": \"polygon\", \"coordinates\": [\n    { \"lat\": 40.43, \"lng\": -3.71 }, { \"lat\": 40.43, \"lng\": -3.68 }, { \"lat\": 40.41, \"lng\": -3.69 }\n  ] } },\n  { \"type\": \"point\", \"position\": { \"lat\": 39.4699, \"lng\": -0.3763 }, \"radius\": 800 }\n]\n```\n\n- **Circle** — `center` and `radius` in metres.\n- **Polygon** — at least three `coordinates`; `rectangle` is accepted as a synonym. Coordinates can also be `[lat, lng]` pairs, and `lon` is accepted in place of `lng`.\n- **Point** — a `position` and an optional `radius` in metres, 500 by default. `marker` is a synonym.\n\nAreas are matched against the **published** coordinates: rounded ones for approximate locations, none for hidden ones. Approximate properties can match an area up to about 1 km away from their real position, and properties with a hidden location never match an area. Elements without a recognised geometry — for example `{ \"name\": \"Madrid\" }` — are ignored, and so is the whole parameter if it is not valid JSON. The `filters.locations` field of the response echoes the areas that were applied, so you can check what was understood.\n\n::tip\nMost HTTP clients URL-encode query parameters for you: pass the JSON string as the value of `locations` instead of encoding it by hand.\n::\n",{"title":5,"description":593},"properties\u002Flist","ydyC-YO8WMUss5hpNVHiiUL9XUdLTzmeC3WJVxDUFhA",{"id":597,"method":604,"path":605,"fullPath":606,"summary":5,"tag":607,"scopes":608,"url":610,"description":611,"pathParams":612,"queryParams":613,"responses":672,"samples":807,"docsPath":598},"GET","\u002Fproperties","\u002Fv1\u002Fext\u002Fproperties","Properties",[609],"properties:read","https:\u002F\u002Fapi.vestta.app\u002Fv1\u002Fext\u002Fproperties","Returns the public catalogue of the authenticated business: properties marked as public that are not sold, rented or withdrawn. Results are ordered by last update unless `sort` is set. Requires the `properties:read` scope.",[],[614,623,629,633,636,640,643,646,649,652,656,659,662,666],{"name":615,"type":616,"required":617,"nullable":617,"description":618,"defaultValue":619,"constraints":620},"limit","integer",false,"Maximum number of properties to return.","100",[621,622],"≥ 1","≤ 1000",{"name":624,"type":616,"required":617,"nullable":617,"description":625,"defaultValue":626,"constraints":627},"offset","Number of matching properties to skip before returning results.","0",[628],"≥ 0",{"name":128,"type":630,"required":617,"nullable":596,"description":631,"constraints":632},"string","Exact status match. Only `disponible` and `reservada` can match: sold, rented and withdrawn properties are never returned.",[],{"name":24,"type":630,"required":617,"nullable":596,"description":634,"constraints":635},"Operation: `venta`, `alquiler` or `traspaso`. Case-insensitive partial match, so properties offered for several operations match each of them. Also selects which price `min_price`, `max_price` and `sort` use.",[],{"name":143,"type":630,"required":617,"nullable":596,"description":637,"enumValues":638,"constraints":639},"Rental type: `temporal` for temporary rentals, `anual` for long-term rentals that are neither temporary nor holiday rentals.",[148,152],[],{"name":80,"type":630,"required":617,"nullable":596,"description":641,"constraints":642},"Exact property type: `apartamento`, `casa`, `local`, `nave`, `almacenaje`, `oficina`, `terreno`, `aparcamiento` or `edificio`.",[],{"name":95,"type":630,"required":617,"nullable":596,"description":644,"constraints":645},"Exact subtype key as stored in Vestta, for example `atico`, `duplex`, `chalet` or `villa`. Responses return the subtype as a display label.",[],{"name":28,"type":630,"required":617,"nullable":596,"description":647,"constraints":648},"City name. Case-insensitive exact match.",[],{"name":276,"type":630,"required":617,"nullable":596,"description":650,"constraints":651},"URL-encoded JSON array of map areas. Supports `circle` (center + radius in metres), `polygon`\u002F`rectangle` (coordinates) and `point`\u002F`marker` (500 m default radius). Invalid JSON is ignored.",[],{"name":215,"type":653,"required":617,"nullable":596,"description":654,"constraints":655},"number","Minimum price, inclusive. Uses the rent or transfer price when `operation` is `alquiler` or `traspaso`.",[628],{"name":219,"type":653,"required":617,"nullable":596,"description":657,"constraints":658},"Maximum price, inclusive. Uses the rent or transfer price when `operation` is `alquiler` or `traspaso`.",[628],{"name":164,"type":616,"required":617,"nullable":596,"description":660,"constraints":661},"Minimum number of bedrooms, inclusive.",[628],{"name":179,"type":663,"required":617,"nullable":596,"description":664,"constraints":665},"boolean","`true` returns only featured properties; `false` only non-featured ones.",[],{"name":222,"type":630,"required":617,"nullable":596,"description":667,"enumValues":668,"constraints":671},"Sort by price (properties without a price go last). When omitted, results are ordered by last update, newest first.",[669,670],"price_asc","price_desc",[],[673,796,800,804],{"status":674,"description":675,"schemaName":676,"fields":677,"example":794,"exampleHtml":795},"200","Successful response.","PropertyListResponse",[678,682,777,781,784,787,790],{"name":128,"type":630,"required":596,"nullable":617,"enumValues":679,"constraints":681},[680],"ok",[],{"name":683,"type":684,"required":596,"nullable":617,"description":685,"constraints":686,"children":687},"data","array of objects","The requested page of properties.",[],[688,692,695,698,701,705,708,712,715,718,722,726,731,735,740,744,747,751,753,756,759,763,766,769,773],{"name":689,"type":616,"required":596,"nullable":617,"description":690,"constraints":691},"id","Numeric property ID. Use it with Retrieve a property.",[],{"name":24,"type":630,"required":617,"nullable":596,"description":693,"constraints":694},"Operations the property is offered for: `venta`, `alquiler`, `traspaso`, or several joined by commas (e.g. `venta,alquiler`).",[],{"name":80,"type":630,"required":617,"nullable":596,"description":696,"constraints":697},"Property type key, e.g. `apartamento`, `casa`, `local`, `oficina`, `terreno` or `edificio`.",[],{"name":95,"type":630,"required":617,"nullable":596,"description":699,"constraints":700},"Subtype as a Spanish display label (e.g. `Ático`, `Local Comercial`), or `Sin Especificar`.",[],{"name":702,"type":630,"required":617,"nullable":596,"description":703,"constraints":704},"title","Listing title. May be empty.",[],{"name":254,"type":653,"required":617,"nullable":596,"description":706,"constraints":707},"Sale price in euros. Rent and transfer prices are in `specs.price_calc`.",[],{"name":709,"type":653,"required":617,"nullable":596,"description":710,"constraints":711},"size_total","Total size in m².",[],{"name":713,"type":616,"required":617,"nullable":596,"constraints":714},"bedrooms",[],{"name":716,"type":616,"required":617,"nullable":596,"constraints":717},"bathrooms",[],{"name":719,"type":630,"required":617,"nullable":596,"description":720,"constraints":721},"postal_code","Omitted when the property's location is hidden.",[],{"name":723,"type":630,"required":617,"nullable":596,"description":724,"constraints":725},"description","Listing description as HTML.",[],{"name":727,"type":728,"required":617,"nullable":617,"description":729,"constraints":730},"images","array of any","Public images, as `{id, url, order, is_primary, title}` objects.",[],{"name":732,"type":728,"required":617,"nullable":596,"description":733,"constraints":734},"videos","Processed videos, as `{id, title, order, url, hls_url, thumbnail_url, embed_url}` objects.",[],{"name":736,"type":737,"required":617,"nullable":596,"description":738,"constraints":739},"specs","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":741,"type":728,"required":617,"nullable":596,"description":742,"constraints":743},"features","Amenities as `{label, key, value, isextra}` objects. `label` is a display string; `key` is stable.",[],{"name":128,"type":630,"required":617,"nullable":596,"description":745,"constraints":746},"`disponible` or `reservada`. Sold, rented and withdrawn properties are never returned.",[],{"name":748,"type":630,"required":617,"nullable":596,"description":749,"constraints":750},"address","Follows the property's address privacy: the full address when public, the approximate address when approximate, omitted when hidden.",[],{"name":28,"type":630,"required":617,"nullable":596,"constraints":752},[],{"name":754,"type":630,"required":617,"nullable":596,"constraints":755},"province",[],{"name":757,"type":630,"required":617,"nullable":596,"constraints":758},"country",[],{"name":760,"type":653,"required":617,"nullable":596,"description":761,"constraints":762},"lat","Latitude in decimal degrees. Exact when the address is public, rounded to 2 decimals (about 1 km) when approximate, omitted when hidden.",[],{"name":538,"type":653,"required":617,"nullable":596,"description":764,"constraints":765},"Longitude in decimal degrees, with the same precision rules as `lat`.",[],{"name":179,"type":663,"required":617,"nullable":596,"description":767,"constraints":768},"Whether the business marked the property as featured.",[],{"name":770,"type":630,"required":617,"nullable":596,"description":771,"constraints":772},"created_at","ISO 8601 timestamp with UTC offset.",[],{"name":774,"type":630,"required":617,"nullable":596,"description":775,"constraints":776},"updated_at","ISO 8601 timestamp with UTC offset. The default sort key.",[],{"name":778,"type":616,"required":596,"nullable":617,"description":779,"constraints":780},"count","Total number of properties matching the filters, across all pages.",[],{"name":615,"type":616,"required":596,"nullable":617,"description":782,"constraints":783},"The `limit` that was applied.",[],{"name":624,"type":616,"required":596,"nullable":617,"description":785,"constraints":786},"The `offset` that was applied.",[],{"name":16,"type":737,"required":596,"nullable":617,"description":788,"constraints":789},"Echo of the filters that were applied; `null` for filters that were not sent. `locations` contains only the areas that were understood.",[],{"name":791,"type":630,"required":617,"nullable":596,"description":792,"constraints":793},"authenticated_as","Name of the business that owns the API key.",[],"{\n  \"status\": \"ok\",\n  \"data\": [\n    {\n      \"id\": 1355,\n      \"operation\": \"traspaso,alquiler\",\n      \"type\": \"local\",\n      \"subtype\": \"Local Comercial\",\n      \"title\": \"Local comercial en el centro\",\n      \"price\": 0,\n      \"size_total\": 120,\n      \"bedrooms\": 0,\n      \"bathrooms\": 1,\n      \"postal_code\": \"07820\",\n      \"description\": \"\u003Ch2>Características del local\u003C\u002Fh2>\u003Cp>Superficie total de 120 m² en planta baja…\u003C\u002Fp>\",\n      \"images\": [\n        {\n          \"id\": \"63cfd9acfb62c728a6721ca0dd4afdcb_1784627270\",\n          \"is_primary\": true,\n          \"order\": 1,\n          \"url\": \"https:\u002F\u002Fcdn.vestta.app\u002Fimages\u002Fcaa459b11e9f\u002F73121a89c611\u002F63cfd9acfb62c728a6721ca0dd4afdcb_1784627270.jpeg\"\n        }\n      ],\n      \"videos\": [],\n      \"specs\": {\n        \"address_privacy\": \"approximate\",\n        \"holiday_renting\": false,\n        \"price_calc\": {\n          \"price_alq\": 2000,\n          \"price_trasp\": 25000\n        },\n        \"temporal_renting\": false\n      },\n      \"features\": [\n        {\n          \"isextra\": false,\n          \"key\": \"air_conditioning\",\n          \"label\": \"Aire Acondicionado\",\n          \"value\": \"Sí\"\n        }\n      ],\n      \"status\": \"disponible\",\n      \"address\": \"San Antonio\",\n      \"city\": \"San Antonio\",\n      \"province\": \"Islas Baleares\",\n      \"country\": \"España\",\n      \"lat\": 38.98,\n      \"lon\": 1.3,\n      \"is_featured\": false,\n      \"created_at\": \"2026-07-21T11:42:51.820440+02:00\",\n      \"updated_at\": \"2026-09-26T19:38:41.390976+02:00\"\n    }\n  ],\n  \"count\": 78,\n  \"limit\": 20,\n  \"offset\": 0,\n  \"filters\": {\n    \"locations\": [],\n    \"operation\": \"alquiler\"\n  },\n  \"authenticated_as\": \"Inmobiliaria Ejemplo\"\n}","\u003Cpre class=\"shiki github-light\" style=\"background-color:#fff;color:#24292e\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#24292E\">{\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5\">  \"status\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#032F62\">\"ok\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5\">  \"data\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: [\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#24292E\">    {\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5\">      \"id\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\">1355\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5\">      \"operation\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#032F62\">\"traspaso,alquiler\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5\">      \"type\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#032F62\">\"local\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5\">      \"subtype\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#032F62\">\"Local Comercial\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5\">      \"title\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#032F62\">\"Local comercial en el centro\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5\">      \"price\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\">0\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5\">      \"size_total\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\">120\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5\">      \"bedrooms\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\">0\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5\">      \"bathrooms\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\">1\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5\">      \"postal_code\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#032F62\">\"07820\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5\">      \"description\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#032F62\">\"&#x3C;h2>Características del local&#x3C;\u002Fh2>&#x3C;p>Superficie total de 120 m² en planta baja…&#x3C;\u002Fp>\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5\">      \"images\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: [\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#24292E\">        {\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5\">          \"id\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#032F62\">\"63cfd9acfb62c728a6721ca0dd4afdcb_1784627270\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5\">          \"is_primary\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\">true\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5\">          \"order\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\">1\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5\">          \"url\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#032F62\">\"https:\u002F\u002Fcdn.vestta.app\u002Fimages\u002Fcaa459b11e9f\u002F73121a89c611\u002F63cfd9acfb62c728a6721ca0dd4afdcb_1784627270.jpeg\"\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#24292E\">        }\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#24292E\">      ],\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5\">      \"videos\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: [],\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5\">      \"specs\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: {\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5\">        \"address_privacy\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#032F62\">\"approximate\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5\">        \"holiday_renting\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\">false\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5\">        \"price_calc\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: {\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5\">          \"price_alq\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\">2000\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5\">          \"price_trasp\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\">25000\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#24292E\">        },\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5\">        \"temporal_renting\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\">false\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#24292E\">      },\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5\">      \"features\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: [\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#24292E\">        {\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5\">          \"isextra\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\">false\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5\">          \"key\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#032F62\">\"air_conditioning\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5\">          \"label\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#032F62\">\"Aire Acondicionado\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5\">          \"value\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#032F62\">\"Sí\"\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#24292E\">        }\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#24292E\">      ],\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5\">      \"status\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#032F62\">\"disponible\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5\">      \"address\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#032F62\">\"San Antonio\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5\">      \"city\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#032F62\">\"San Antonio\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5\">      \"province\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#032F62\">\"Islas Baleares\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5\">      \"country\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#032F62\">\"España\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5\">      \"lat\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\">38.98\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5\">      \"lon\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\">1.3\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5\">      \"is_featured\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\">false\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5\">      \"created_at\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#032F62\">\"2026-07-21T11:42:51.820440+02:00\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5\">      \"updated_at\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#032F62\">\"2026-09-26T19:38:41.390976+02:00\"\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#24292E\">    }\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#24292E\">  ],\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5\">  \"count\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\">78\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5\">  \"limit\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\">20\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5\">  \"offset\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\">0\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5\">  \"filters\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: {\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5\">    \"locations\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: [],\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5\">    \"operation\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#032F62\">\"alquiler\"\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#24292E\">  },\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5\">  \"authenticated_as\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#032F62\">\"Inmobiliaria Ejemplo\"\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#24292E\">}\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>",{"status":797,"description":798,"schemaName":799},"401","The API key is missing, malformed, unknown, revoked or expired, or lacks the required scope.","ExternalApiError",{"status":801,"description":802,"schemaName":803},"422","A path parameter, query parameter or body field is invalid.","ExternalValidationError",{"status":805,"description":806,"schemaName":799},"500","Unexpected server error while processing the request.",[808,814,819],{"id":809,"label":810,"lang":811,"code":812,"html":813},"curl","cURL","bash","curl \"https:\u002F\u002Fapi.vestta.app\u002Fv1\u002Fext\u002Fproperties?limit=20\" \\\n  -H \"X-Api-Key: $VESTTA_API_KEY\"","\u003Cpre class=\"shiki github-light\" style=\"background-color:#fff;color:#24292e\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#6F42C1\">curl\u003C\u002Fspan>\u003Cspan style=\"color:#032F62\"> \"https:\u002F\u002Fapi.vestta.app\u002Fv1\u002Fext\u002Fproperties?limit=20\"\u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\"> \\\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5\">  -H\u003C\u002Fspan>\u003Cspan style=\"color:#032F62\"> \"X-Api-Key: \u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">$VESTTA_API_KEY\u003C\u002Fspan>\u003Cspan style=\"color:#032F62\">\"\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>",{"id":815,"label":816,"lang":815,"code":817,"html":818},"javascript","JavaScript","const response = await fetch('https:\u002F\u002Fapi.vestta.app\u002Fv1\u002Fext\u002Fproperties?limit=20', {\n  headers: { 'X-Api-Key': process.env.VESTTA_API_KEY },\n})\n\nconst data = await response.json()","\u003Cpre class=\"shiki github-light\" style=\"background-color:#fff;color:#24292e\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#D73A49\">const\u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\"> response\u003C\u002Fspan>\u003Cspan style=\"color:#D73A49\"> =\u003C\u002Fspan>\u003Cspan style=\"color:#D73A49\"> await\u003C\u002Fspan>\u003Cspan style=\"color:#6F42C1\"> fetch\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">(\u003C\u002Fspan>\u003Cspan style=\"color:#032F62\">'https:\u002F\u002Fapi.vestta.app\u002Fv1\u002Fext\u002Fproperties?limit=20'\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">, {\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#24292E\">  headers: { \u003C\u002Fspan>\u003Cspan style=\"color:#032F62\">'X-Api-Key'\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: process.env.\u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\">VESTTA_API_KEY\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\"> },\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#24292E\">})\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#D73A49\">const\u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\"> data\u003C\u002Fspan>\u003Cspan style=\"color:#D73A49\"> =\u003C\u002Fspan>\u003Cspan style=\"color:#D73A49\"> await\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\"> response.\u003C\u002Fspan>\u003Cspan style=\"color:#6F42C1\">json\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">()\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>",{"id":820,"label":821,"lang":820,"code":822,"html":823},"python","Python","import os\n\nimport requests\n\nresponse = requests.get(\n    \"https:\u002F\u002Fapi.vestta.app\u002Fv1\u002Fext\u002Fproperties\",\n    headers={\"X-Api-Key\": os.environ[\"VESTTA_API_KEY\"]},\n    params={\n        \"limit\": 20,\n    },\n)\nresponse.raise_for_status()\ndata = response.json()","\u003Cpre class=\"shiki github-light\" style=\"background-color:#fff;color:#24292e\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#D73A49\">import\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\"> os\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#D73A49\">import\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\"> requests\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#24292E\">response \u003C\u002Fspan>\u003Cspan style=\"color:#D73A49\">=\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\"> requests.get(\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#032F62\">    \"https:\u002F\u002Fapi.vestta.app\u002Fv1\u002Fext\u002Fproperties\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E36209\">    headers\u003C\u002Fspan>\u003Cspan style=\"color:#D73A49\">=\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">{\u003C\u002Fspan>\u003Cspan style=\"color:#032F62\">\"X-Api-Key\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: os.environ[\u003C\u002Fspan>\u003Cspan style=\"color:#032F62\">\"VESTTA_API_KEY\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">]},\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E36209\">    params\u003C\u002Fspan>\u003Cspan style=\"color:#D73A49\">=\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">{\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#032F62\">        \"limit\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\">20\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#24292E\">    },\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#24292E\">)\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#24292E\">response.raise_for_status()\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#24292E\">data \u003C\u002Fspan>\u003Cspan style=\"color:#D73A49\">=\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\"> response.json()\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>",1791110048842]