---
title: "Key figures of the parcel at a point"
description: "Resolves the parcel at a WGS84 point in Switzerland and returns its key figures (as the summary). Use the returned parcel.egrid for the other operations."
---

> Documentation Index
> Fetch the complete documentation index at: https://docs.aireon.ch/llms.txt
> Use this file to discover all available pages before exploring further.

Path: revenoo API › Valuation

`GET /api/valuation/by-point`

Resolves the parcel at a WGS84 point in Switzerland and returns its key figures (as the summary). Use the returned parcel.egrid for the other operations.

## Query parameters

- `lat` (`findRevenooValuation.query.lat`; number, required)
  - min 45.7; max 47.9
- `lng` (`findRevenooValuation.query.lng`; number, required)
  - min 5.9; max 10.6

## Code samples

### cURL

```bash
curl --request GET \
  --url 'https://revenoo.aireon.ch/api/valuation/by-point?lat=47.322534&lng=7.898823'
```

### TypeScript

```typescript
const url = 'https://revenoo.aireon.ch/api/valuation/by-point?lat=47.322534&lng=7.898823';
const options = {method: 'GET'};

fetch(url, options)
  .then(res => res.json())
  .then(json => console.log(json))
  .catch(err => console.error(err));
```

### Python

```python
import requests

url = "https://revenoo.aireon.ch/api/valuation/by-point?lat=47.322534&lng=7.898823"

response = requests.get(url)

print(response.text)
```

## Responses

### 200

The key figures.

#### Example

```json
{
  "api_version": "string",
  "valuation_date": "2019-08-24",
  "parcel": {},
  "data": {},
  "links": {},
  "assumptions": {
    "asking_land_price": 100000000000,
    "rentable_area_m2": 1,
    "residential_rent_per_m2_year": 5000,
    "vacancy_pct": 100,
    "discount_rate_real_pct": 30,
    "macro_premium_pct": -10,
    "micro_rating": "good",
    "micro_premium_bp": -500,
    "usage_rating": "residential",
    "condition_rating": "new",
    "special_premium_pct": -10,
    "inflation_pct": -5,
    "forecast_years": 1,
    "rent_growth_real_pct": -10,
    "discount_timing": "mid_year",
    "exit_cap_rate_pct": 0.1,
    "exit_sale_costs_pct": 20,
    "lease_up": true,
    "initial_occupancy_pct": 100,
    "lease_up_months": 60,
    "cap_rate_pct": 0.1,
    "noi_convention": "after_capex",
    "gdv_source": "dcf",
    "gdv_manual": 100000000000,
    "construction_cost_per_m2_nia": 50000,
    "professional_fees_pct": 50,
    "contingency_pct": 50,
    "sale_costs_pct": 20,
    "site_acquisition_costs_pct": 20,
    "development_period_months": 1,
    "target_irr_pct": 100,
    "finance_rate_pct": 30,
    "developers_profit_pct": 100,
    "target_yield_on_cost_pct": 0.1,
    "yield_on_cost_basis": "gross_rent"
  },
  "figures": {
    "dcf_value": 0,
    "dcf_value_per_m2_nia": 0,
    "discount_rate_real_pct": 0,
    "direct_cap_value": 0,
    "dcf_implied_cap_rate_pct": 0,
    "land_value_yield_on_cost": 0,
    "land_value_yield_on_cost_per_m2_nia": 0,
    "land_value_dcf": 0,
    "land_value_static": 0,
    "land_value_static_implied_irr_pct": 0,
    "net_yield_after_capex_pct": 0,
    "gross_yield_pct": 0,
    "noi_after_capex": 0,
    "gross_potential_rent": 0,
    "units_total": 0,
    "dcf_value_at_rate_minus_30bp": 0,
    "dcf_value_at_rate_plus_30bp": 0,
    "asking_price": {}
  }
}
```

- `api_version` (`findRevenooValuation.response.200.api_version`; string, required)
- `valuation_date` (`findRevenooValuation.response.200.valuation_date`; string, required)
  - format `date`
- `parcel` (`findRevenooValuation.response.200.parcel`; object, required): The parcel: EGRID, address, municipality, BFS number, canton, zone, coordinates and areas.
- `data` (`findRevenooValuation.response.200.data`; object, required): Provenance: market data status and date, municipal and Zürich reference rents.
- `links` (`findRevenooValuation.response.200.links`; object, required): `app` opens this valuation in revenoo; `docs` is this document.
- `assumptions` (`findRevenooValuation.response.200.assumptions`; object, required): Assumptions you can change. Omitted keys keep the defaults the response reports.
  - `asking_land_price` (`findRevenooValuation.response.200.assumptions.asking_land_price`; number | null, optional): Asking price of the land. When set, the response appraises it: project IRR, profit on cost and on value, initial yield on cost.
    - min 0; max 100000000000
  - `rentable_area_m2` (`findRevenooValuation.response.200.assumptions.rentable_area_m2`; number, optional): Rentable area (NIA) in m². The unit mix is rescaled to it.
    - min 1; max 10000000
  - `residential_rent_per_m2_year` (`findRevenooValuation.response.200.assumptions.residential_rent_per_m2_year`; number, optional): Rent per m² NIA and year for every apartment row of the unit mix (parking keeps its own rent).
    - min 0; max 5000
  - `vacancy_pct` (`findRevenooValuation.response.200.assumptions.vacancy_pct`; number, optional): Stabilized vacancy, in percent of GPR, applied to every row of the unit mix.
    - min 0; max 100
  - `discount_rate_real_pct` (`findRevenooValuation.response.200.assumptions.discount_rate_real_pct`; number, optional): Real discount rate in percent. Setting it enters the macro rate at this value and resets the premiums to zero; premium assumptions sent with it add to it.
    - min 0; max 30
  - `macro_premium_pct` (`findRevenooValuation.response.200.assumptions.macro_premium_pct`; number, optional): Macro premium added to the macro rate, in percent.
    - min -10; max 10
  - `micro_rating` (`findRevenooValuation.response.200.assumptions.micro_rating`; string, optional): Micro location grade, which sets the micro premium.
    - one of `"good"`, `"average"`, `"weak"`
  - `micro_premium_bp` (`findRevenooValuation.response.200.assumptions.micro_premium_bp`; number | null, optional): Micro premium in basis points; replaces the micro rating while set (e.g. from proove). null returns to the rating.
    - min -500; max 500
  - `usage_rating` (`findRevenooValuation.response.200.assumptions.usage_rating`; string, optional): Use of the property, which sets the usage premium.
    - one of `"residential"`, `"office"`, `"retail"`, `"commercial"`
  - `condition_rating` (`findRevenooValuation.response.200.assumptions.condition_rating`; string, optional): Condition of the building, which sets the condition premium.
    - one of `"new"`, `"like_new"`, `"normal_condition"`, `"minor_renovation_needed"`, `"major_renovation_needed"`
  - `special_premium_pct` (`findRevenooValuation.response.200.assumptions.special_premium_pct`; number, optional): Special premium for risks no other factor covers, in percent.
    - min -10; max 10
  - `inflation_pct` (`findRevenooValuation.response.200.assumptions.inflation_pct`; number, optional): Expected inflation in percent; real rate plus inflation gives the nominal rate, shown for reference (the cash flows are real).
    - min -5; max 20
  - `forecast_years` (`findRevenooValuation.response.200.assumptions.forecast_years`; integer, optional): Explicit forecast period in years (RICS §4.65: markets often default to about ten).
    - min 1; max 50
  - `rent_growth_real_pct` (`findRevenooValuation.response.200.assumptions.rent_growth_real_pct`; number, optional): Real rent growth per year, in percent. Must stay below the real discount rate.
    - min -10; max 10
  - `discount_timing` (`findRevenooValuation.response.200.assumptions.discount_timing`; string, optional): Discount each year from its middle or its end.
    - one of `"mid_year"`, `"end_year"`
  - `exit_cap_rate_pct` (`findRevenooValuation.response.200.assumptions.exit_cap_rate_pct`; number | null, optional): Exit capitalization rate in percent. null lets it follow the discount rate (RICS §4.59 with no real growth).
    - min 0.1; max 30
  - `exit_sale_costs_pct` (`findRevenooValuation.response.200.assumptions.exit_sale_costs_pct`; number, optional): Sale costs deducted from the terminal value, in percent (RICS §4.63).
    - min 0; max 20
  - `lease_up` (`findRevenooValuation.response.200.assumptions.lease_up`; boolean, optional): Model a lease-up: occupancy rises from the initial level to stabilized over the lease-up months.
  - `initial_occupancy_pct` (`findRevenooValuation.response.200.assumptions.initial_occupancy_pct`; number, optional): Occupancy at the start of the lease-up, in percent.
    - min 0; max 100
  - `lease_up_months` (`findRevenooValuation.response.200.assumptions.lease_up_months`; integer, optional): Months until stabilized occupancy.
    - min 0; max 60
  - `cap_rate_pct` (`findRevenooValuation.response.200.assumptions.cap_rate_pct`; number, optional): Capitalization rate in percent: direct cap value = stabilized NOI ÷ cap rate.
    - min 0.1; max 30
  - `noi_convention` (`findRevenooValuation.response.200.assumptions.noi_convention`; string, optional): Which NOI is capitalized.
    - one of `"after_capex"`, `"before_capex"`, `"custom_factor"`
  - `gdv_source` (`findRevenooValuation.response.200.assumptions.gdv_source`; string, optional): Where the gross development value (GDV) comes from.
    - one of `"dcf"`, `"direct_cap"`, `"manual"`
  - `gdv_manual` (`findRevenooValuation.response.200.assumptions.gdv_manual`; number, optional): GDV amount when gdv_source is manual.
    - min 0; max 100000000000
  - `construction_cost_per_m2_nia` (`findRevenooValuation.response.200.assumptions.construction_cost_per_m2_nia`; number, optional): Construction costs per m² NIA.
    - min 0; max 50000
  - `professional_fees_pct` (`findRevenooValuation.response.200.assumptions.professional_fees_pct`; number, optional): Professional fees, in percent of construction costs (RICS B1.2.6).
    - min 0; max 50
  - `contingency_pct` (`findRevenooValuation.response.200.assumptions.contingency_pct`; number, optional): Contingency, in percent of construction costs (RICS B1.2.5).
    - min 0; max 50
  - `sale_costs_pct` (`findRevenooValuation.response.200.assumptions.sale_costs_pct`; number, optional): Sale costs, in percent of GDV (GDV less sale costs is the NDV).
    - min 0; max 20
  - `site_acquisition_costs_pct` (`findRevenooValuation.response.200.assumptions.site_acquisition_costs_pct`; number, optional): Site acquisition costs, in percent of the land price (RICS B1.2.2).
    - min 0; max 20
  - `development_period_months` (`findRevenooValuation.response.200.assumptions.development_period_months`; integer, optional): Development period from land purchase to completion, in months.
    - min 1; max 240
  - `target_irr_pct` (`findRevenooValuation.response.200.assumptions.target_irr_pct`; number, optional): Target rate of return of the DCF application: a project IRR before finance, real (RICS §6.2.4, §7.2.4).
    - min 0; max 100
  - `finance_rate_pct` (`findRevenooValuation.response.200.assumptions.finance_rate_pct`; number, optional): Cost of finance per year, on 100% of land and building costs (RICS B2.2.2).
    - min 0; max 30
  - `developers_profit_pct` (`findRevenooValuation.response.200.assumptions.developers_profit_pct`; number, optional): Developer's profit, in percent of GDV (RICS B2.2.3).
    - min 0; max 100
  - `target_yield_on_cost_pct` (`findRevenooValuation.response.200.assumptions.target_yield_on_cost_pct`; number, optional): Target initial yield on cost: annual income over total development cost, in percent (RICS B2.2.3.4).
    - min 0.1; max 50
  - `yield_on_cost_basis` (`findRevenooValuation.response.200.assumptions.yield_on_cost_basis`; string, optional): The annual income the yield on cost is read on: GPR, or NOI before or after the capex reserve.
    - one of `"gross_rent"`, `"noi_before_capex"`, `"noi_after_capex"`
- `figures` (`findRevenooValuation.response.200.figures`; object, optional): The key figures.
  - `dcf_value` (`findRevenooValuation.response.200.figures.dcf_value`; number | null, optional): Market value by explicit DCF: PV of the net cash flows plus PV of the terminal value.
  - `dcf_value_per_m2_nia` (`findRevenooValuation.response.200.figures.dcf_value_per_m2_nia`; number | null, optional): DCF value per m² of rentable area (NIA).
  - `discount_rate_real_pct` (`findRevenooValuation.response.200.figures.discount_rate_real_pct`; number | null, optional): Real discount rate, built up from the macro rate (municipal rent level against Zürich) and five premiums.
  - `direct_cap_value` (`findRevenooValuation.response.200.figures.direct_cap_value`; number | null, optional): Direct cap value: stabilized NOI ÷ capitalization rate.
  - `dcf_implied_cap_rate_pct` (`findRevenooValuation.response.200.figures.dcf_implied_cap_rate_pct`; number | null, optional): Stabilized NOI ÷ DCF value.
  - `land_value_yield_on_cost` (`findRevenooValuation.response.200.figures.land_value_yield_on_cost`; number | null, optional): Residual land value at which the initial yield on cost meets its target.
  - `land_value_yield_on_cost_per_m2_nia` (`findRevenooValuation.response.200.figures.land_value_yield_on_cost_per_m2_nia`; number | null, optional): The same per m² NIA.
  - `land_value_dcf` (`findRevenooValuation.response.200.figures.land_value_dcf`; number | null, optional): Residual land value, DCF application: NPV 0 at the target rate of return.
  - `land_value_static` (`findRevenooValuation.response.200.figures.land_value_static`; number | null, optional): Residual land value, basic (static) application: after finance and developer's profit.
  - `land_value_static_implied_irr_pct` (`findRevenooValuation.response.200.figures.land_value_static_implied_irr_pct`; number | null, optional): Project IRR the static land value implies.
  - `net_yield_after_capex_pct` (`findRevenooValuation.response.200.figures.net_yield_after_capex_pct`; number | null, optional): NOI after the capex reserve ÷ DCF value.
  - `gross_yield_pct` (`findRevenooValuation.response.200.figures.gross_yield_pct`; number | null, optional): GPR ÷ DCF value.
  - `noi_after_capex` (`findRevenooValuation.response.200.figures.noi_after_capex`; number | null, optional): Stabilized net operating income after the capex reserve.
  - `gross_potential_rent` (`findRevenooValuation.response.200.figures.gross_potential_rent`; number | null, optional): Gross potential rent of the unit mix per year.
  - `units_total` (`findRevenooValuation.response.200.figures.units_total`; number | null, optional): Apartments in the unit mix.
  - `dcf_value_at_rate_minus_30bp` (`findRevenooValuation.response.200.figures.dcf_value_at_rate_minus_30bp`; number | null, optional): DCF value with the discount rate 30 bp lower.
  - `dcf_value_at_rate_plus_30bp` (`findRevenooValuation.response.200.figures.dcf_value_at_rate_plus_30bp`; number | null, optional): DCF value with the discount rate 30 bp higher.
  - `asking_price` (`findRevenooValuation.response.200.figures.asking_price`; object | null, optional): Appraisal of asking_land_price when set: project IRR, profit on cost and on value, initial yield on cost. Null otherwise.

### 400

Invalid EGRID or assumptions. `details` lists each invalid assumption.

#### Example

```json
{
  "error": "string",
  "details": null
}
```

- `error` (`findRevenooValuation.response.400.error`; string, required)
- `details` (`findRevenooValuation.response.400.details`; unknown, optional): For invalid assumptions: one { key, message } per problem.

### 404

No parcel with this EGRID, or an unknown part.

#### Example

```json
{
  "error": "string",
  "details": null
}
```

- `error` (`findRevenooValuation.response.404.error`; string, required)
- `details` (`findRevenooValuation.response.404.details`; unknown, optional): For invalid assumptions: one { key, message } per problem.

### 429

Too many uncached requests from this client; retry after the Retry-After seconds.

#### Example

```json
{
  "error": "string",
  "details": null
}
```

- `error` (`findRevenooValuation.response.429.error`; string, required)
- `details` (`findRevenooValuation.response.429.details`; unknown, optional): For invalid assumptions: one { key, message } per problem.

### 502

The data service (RES) failed.

#### Example

```json
{
  "error": "string",
  "details": null
}
```

- `error` (`findRevenooValuation.response.502.error`; string, required)
- `details` (`findRevenooValuation.response.502.details`; unknown, optional): For invalid assumptions: one { key, message } per problem.

### 503

The data service is not configured.

#### Example

```json
{
  "error": "string",
  "details": null
}
```

- `error` (`findRevenooValuation.response.503.error`; string, required)
- `details` (`findRevenooValuation.response.503.details`; unknown, optional): For invalid assumptions: one { key, message } per problem.


Source: https://docs.aireon.ch/revenoo/find-revenoo-valuation/index.md
