Docs

Valuation

Last updated: 2026-10-038 min read

Four valuation tools. Apartments, houses and land plots are supported; the express valuation and the report refuse commercial property and residential complexes with 422 business_rule; the rent estimate works for commercial property too.

Express valuation

POST /valuation/express - scope tools:valuation, immediate. One API call plus the express valuation price.

FieldTypeRequiredDescription
propertyCategorystringnoapartment (default), house, land; commercial is refused with 422, any other value (there is no complex) with 400
totalAreanumberone of threearea, m²
areaM2numberone of threesame as totalArea
landPlotAreanumberone of threeplot area, m²; counts as the area only for land
addressTextstringrecommendedaddress as one line
country, city, postalCodestringnoaddress in parts
lat, lonnumbernocoordinates
roomsnumbernorooms
yearBuiltnumbernoyear built
floor, floorsTotalnumbernofloor and number of floors
houseLevelsnumbernolevels in the house
heatingTypestringnoheating
pricenumbernoyour price - compared with the estimate
currencystringnoresult currency
languagestringnonot used: the express answer has no explanation text
targetIdstringnoyour listing id: repeat estimates of the same listing are served from cache for 7 days
curl -X POST https://developers.grem.capital/api/v1/valuation/express \
  -H "Authorization: Bearer gsk_live_xxx" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: 5b8c3f7e-2a71-4c55-8d0e-9f1a6b2c4d10" \
  -d '{"propertyCategory":"apartment","addressText":"Torstraße 12, Berlin","totalArea":64,"rooms":2,"currency":"EUR"}'

Response:

FieldDescription
estimate.pricePointestimated value
estimate.rangeLow, estimate.rangeHighrange
estimate.confidenceconfidence level: low, medium or high
estimate.confidenceScoreconfidence as a number from 0 to 1
estimate.currencycurrency
estimate.analogscomparable listings found for the estimate: title, address, area, rooms, pricePerM2, originalPrice, adjustedPrice, adjustments, weight, provenance, source, sourceUrl
degradedtrue for a rough estimate without market data; such an estimate is not charged

No area or an unknown propertyCategory - 400 validation; commercial property - 422 business_rule with code: commercial_unsupported.

Full valuation report

POST /valuation/report - scope tools:valuation, job. A report with market analysis and a PDF. Required fields depend on propertyCategory. Send only the fields of your category: a field of another category (for example houseLevels for an apartment, parking for a house) is refused with 400. Apartment only: livingArea, kitchenArea, bathrooms, ceilingHeight, floor, storeys, balcony, elevator, parking, houseType, apartmentType. House only: houseLevels. Land only: zoning. House and land: utilities.

FieldTypeDescription
propertyCategorystringapartment, house or land - required
addressobjectrequired: country, city, street (may be empty), streetNumber, location (lat, lng)
totalAreanumberm²; required for apartments and houses
landPlotAreanumberm²; required for houses; land needs this or totalArea
conditionstringcondition; required for apartments and houses
apartmentTypestringapartment: Residential, Commercial, Industrial, Land plot or Complex - required
houseTypestringapartment: building type - required
floor, storeysnumberapartment: floor and floors in the building - required
balcony, elevatoryes/noapartment: required
houseLevelsnumberhouse: levels, 1 to 10 - required
roomsnumberapartment, house: rooms
livingArea, kitchenArea, bathrooms, ceilingHeightnumberapartment only: optional details
yearConstructionnumberapartment, house: year built
wallMaterial, heatingTypestringapartment, house: wall material, heating; for a house heatingType is one of central, autonomous, boiler, fireplace, mixed, gas, electric, heat_pump, solid_fuel, underfloor, none
furnishedyes/noapartment, house: furniture
parkingyes/noapartment only: parking
zoningstringland only: zoning
utilitiesobjecthouse and land: gas, water, sewage, electricity (yes/no)
pricenumberyour price - compared with the estimate
currencystringUAH, USD, EUR, AZN, GBP, AED, CNY, TRY, GEL
languagestringreport language: eng, rus, ukr, deu, spa, aze, arb, fra, zho, tur
objectIdstringyour listing id, if you are valuing it
commentsstringa comment for the valuation
curl -X POST https://developers.grem.capital/api/v1/valuation/report \
  -H "Authorization: Bearer gsk_live_xxx" \
  -H "Content-Type: application/json" \
  -d '{
    "propertyCategory": "apartment",
    "address": { "country": "Germany", "city": "Berlin", "street": "Torstraße", "streetNumber": "12" },
    "currency": "EUR", "language": "eng",
    "apartmentType": "Residential", "houseType": "panel",
    "totalArea": 64, "rooms": 2, "floor": 3, "storeys": 5,
    "balcony": true, "elevator": false, "condition": "good"
  }'

202 response: { "jobId": "...", "status": "processing", "state": "running" }. The finished job (GET /valuation/report/jobs/{id}) holds:

FieldDescription
metricsfigures: potPrice, priceRangeLow, priceRangeHigh, avgPrice, analogCount, growth - market value, its range, price per m², number of comparables, growth %
confidence, priceMethod, estimateTypehow reliable the value is (high…very_low), how it was calculated, point or range
currencycurrency of every figure
justificationwhy the value is what it is
recommendationspricing and selling recommendations
pdfMetaPDF report data
analogscomparable listings the value rests on (the same table as in the PDF): title, address, area, rooms, pricePerM2, originalPrice, adjustedPrice, adjustments, weight, provenance, source, sourceUrl. provenance: model_estimate - a benchmark without a listing behind it

Commercial property (including apartmentType Commercial or Industrial) is refused with 422 business_rule and code: commercial_unsupported - estimate its rent with POST /valuation/rent. A residential complex (apartmentType: Complex) - 422 with code: complex_unsupported: value one apartment or house in it.

PDF: GET /artifacts/v1/ai/appraisal/reports/{id}/pdf. Events - valuation.completed / valuation.failed.

Rent estimate

POST /valuation/rent - scope tools:rent, immediate. Describe the property with fields or pass the objectId of your own or a public listing.

FieldTypeDescription
objectIdstringa listing instead of a description
citystringrequired without objectId
totalAreanumberm²; required without objectId
country, district, streetstringaddress
propertyCategorystringproperty type
rooms, floornumberrooms, floor
furnishedyes/nofurnished
conditionstringcondition
rentTermstringlong - monthly rent (default), short - daily rent. Two different markets
occupancyPctnumberdaily rent: expected occupancy, 10 to 100 %
monthRentalRatenumberyour monthly rate - the response shows how it compares with the market
declaredDayRatenumberyour nightly rate
currencystringresult currency
curl -X POST https://developers.grem.capital/api/v1/valuation/rent \
  -H "Authorization: Bearer gsk_live_xxx" \
  -H "Content-Type: application/json" \
  -d '{"propertyCategory":"apartment","country":"Germany","city":"Berlin","totalArea":50,"rooms":2,"currency":"EUR"}'

Response:

FieldDescription
idestimate id; PDF - GET /artifacts/v1/ai/appraisal/rent/{id}/pdf
currencycurrency
rent.monthlyRentmarket rent per month
rent.low, rent.highrange
rent.annualRentper year
rent.pricePerM2per m² per month
rent.grossYieldPctgross yield against the property price, %, when the price is known
rent.confidenceconfidence
rent.basedOnhow many comparable listings the estimate rests on
rent.termBasislong or short
compsevery listing considered and its fate in the estimate: address, area, rooms, monthlyRent/dayRent, effectiveMonthly, term, status, usedInEstimate, source, url

Without area or city - 400 with a detail like "Missing or invalid: totalArea".

Report review

POST /valuation/review - scope tools:review. Upload a valuation report (PDF, DOCX, DOC, RTF; up to 40 MB) - GREM reads it and checks the value against market data.

Body - multipart/form-data:

PartDescription
filethe report document (or a document part)
languageresult language, rus by default
currencycurrency, USD by default
curl -X POST https://developers.grem.capital/api/v1/valuation/review \
  -H "Authorization: Bearer gsk_live_xxx" \
  -F "[email protected]" \
  -F "language=eng" -F "currency=EUR"

The document is read right away. The 202 response holds jobId, status and state:

  • action_required (status: need_confirm) - extracted holds the data read from the document. Check it and confirm: POST /valuation/review/jobs/{id}/confirm (Jobs and results). After confirmation the job moves to running.
  • failed (status: rejected) - the document is not a real-estate valuation report.

The finished result - GET /valuation/review/jobs/{id}; the review report - GET /artifacts/v1/ai/appraisal/reviews/{id}/report.pdf or report.docx. Events - review.completed / review.failed; webhook tracking starts after the confirmation.

Was this article helpful?