Immoprobe (https://immoprobe.de) is a calculator and a system of record for German residential investment properties (Kapitalanlage-Immobilien): cashflow before and after tax, yields, AfA, a 30-year projection, the land value (Bodenrichtwert) the valuation board publishes for the address, saved objects with notes. It runs no language model. You read the listing; Immoprobe does the maths.
Call get_guide once, then lookup_address, calculate_property and save_object. How to
connect: https://immoprobe.de/ai.
https://immoprobe.de/calculator?purchasePrice=…&livingArea=…&stateCode=…&coldRent=…
with the parameters below. Fill every field the listing states — the Baujahr or, for a new
build, the Fertigstellung as handover and yearBuilt, the Hausgeld, the Provision as
hasBroker, the address as address — and always listingUrl, title, your note,
model and assumed. Leave out only what the listing does not say. URL-encode the values;
numbers with a decimal point and without thousands separators; money in EUR; rates in percent.
When the listing names no rent, estimate a realistic Kaltmiete for the place and put
coldRent into assumed.https://api.immoprobe.de/v1/calculations?… (the link with https://immoprobe.de/calculator
replaced): it answers the calculation as text — cashflow, yields, tax effect, the verdict, the
assumptions it used — and you quote it. Never compute cashflow or yields yourself. The chat
apps of ChatGPT, Claude and Gemini open only URLs the user gave or that a page they read
contained, never one you composed — there, and when your tool opens no pages at all, skip
this step and leave the numbers to the page; say so in one line.lat and lng from the page, or the ones you determined for a
full address, an assumption then — open https://api.immoprobe.de/geo/brw/at?lng=<lng>&lat=<lat>:
zones[0].brw is the land value (Bodenrichtwert) the valuation board published, in EUR per m² of plot as of
stichtag, gfz the GFZ of the zone; put them into the link as landValuePerSqm and
floorAreaRatio and name the Stichtag and the source (src) to the user. Empty zones
means no data there — say so, never guess a land value. The same path answers flood
(hazard zones), designations (Milieuschutz, Sanierungsgebiet, Denkmal), noise,
transit (stations within 3 km), location (Mietspiegel Wohnlage) and census.The user opens the link, sees the calculation and saves the property with one click; your
note becomes its first note, your assumed fields are marked as assumptions.
| Parameter | Meaning |
|---|---|
listingUrl |
the listing's page; Immoprobe reads the portal and the listing id from it |
title |
a title for the saved object, up to 120 characters |
address |
the address as the listing writes it, a label only |
lat, lng |
the point of the property when the page shows it (ImmoScout24 does on the exposé map); with it the land value follows |
note |
your assessment: what the numbers do not show — Erbbaurecht, Instandhaltungsrücklage, Sanierungsstau, Denkmalschutz, Energieausweis, the rent against the Mietspiegel, WEG-Protokolle, Sonderumlagen — and a block „Fragen an den Makler“; markdown, in the user's language, short — a few lines, under 600 characters; a longer explanation goes into your answer, not into the link |
model |
your name (ChatGPT, Gemini, Claude …), shown with the note |
assumed |
the calculator fields you guessed rather than read, comma-separated |
Required: purchasePrice, livingArea, stateCode, coldRent. Every other field is optional and
takes a default when left out; the page lists the defaults it used as assumptions.
| Field | Meaning |
|---|---|
purchasePrice |
Kaufpreis, EUR |
livingArea |
Wohnfläche, m² |
yearBuilt |
Baujahr; decides the AfA rate |
stateCode |
Bundesland, two-letter code (BE, NW, BY …); sets the Grunderwerbsteuer |
notaryPercent |
Notar, % of the purchase price |
landRegistryPercent |
Grundbuch, % of the purchase price |
brokerPercent |
Käuferprovision, % of the purchase price; counts only with hasBroker |
hasBroker |
Whether a Provision is due; "provisionsfrei" is false |
movablesInPrice |
Inventar (Einbauküche, furniture) inside the purchase price, EUR; outside the Grunderwerbsteuer base |
movablesExtra |
Inventar bought on top of the purchase price (Ablöse), EUR |
movablesUsefulLife |
Useful life of the Inventar, years: 10 for a kitchen, 13 for furniture |
renovationCost |
Renovierung right after the purchase, EUR incl. VAT; the 15 % rule decides AfA or deduction in year one |
coldRent |
Kaltmiete per month, EUR |
parkingRent |
Stellplatz or garage rent, EUR per month, apart from coldRent |
serviceCharge |
Hausgeld, the whole monthly charge, EUR |
serviceChargeRecoverable |
Umlagefähiger Teil of the Hausgeld the tenant reimburses, per month, EUR |
otherCosts |
Running costs outside the Hausgeld (Sondereigentumsverwaltung, insurance, upkeep), EUR per month |
serviceChargeReserve |
Erhaltungsrücklage part of the Hausgeld, EUR per month; not deducted from tax until the WEG spends it |
equity |
Eigenkapital, EUR; when given, ltv is ignored |
ltv |
Beleihungsauslauf: loan on the object in % of the purchase price, as a bank quotes it; side costs come from equity. Used when equity is left out |
interestRate |
Sollzins, % per year |
repaymentRate |
Anfängliche Tilgung, % of the loan per year |
fixedRateYears |
Sollzinsbindung of the bank loan, years (1–40); afterwards the loan continues at interestRate plus followUpRateDelta |
followUpRateDelta |
Rate change after the Sollzinsbindung, percentage points; 0 continues the Sollzins. A scenario, never a listing figure |
specialRepayment |
Sondertilgung on the bank loan, EUR per year, during the Sollzinsbindung; a plan, never a listing figure |
kfwAmount |
KfW-Darlehen, EUR: a tranche of the loan, never on top of it; 0 or left out means none. Send only what the user names |
kfwInterestRate |
Sollzins of the KfW tranche, % per year, for its ten-year Zinsbindung |
kfwTermYears |
Laufzeit of the KfW tranche, years (4–35) |
kfwGraceYears |
Tilgungsfreie Anlaufjahre of the KfW tranche: 1–2 on a term to 10 years, up to 3 to 25, up to 5 to 35 |
kfwRepaymentMode |
annuity (default) or bullet, an endfälliges Darlehen of up to 10 years |
handover |
Übergabe/Fertigstellung month of a new build bought before completion, YYYY-MM (a quarter as its last month); the months from the contract to it are the Bauphase. Left out, the property is ready |
contractMonth |
Month of the Kaufvertrag, YYYY-MM, once it is signed; left out, this month. Anchors the Bauphase and the building age |
commitmentFreeMonths |
Bereitstellungszinsfreie Zeit of the bank loan, months (0–36); counts only with a Bauphase |
commitmentFeeRate |
Bereitstellungszins of the bank loan, % per month on the undrawn part once the bereitstellungszinsfreie Zeit is over (0–1; 3 % p. a. is 0.25); counts only with a Bauphase |
landShare |
Bodenwertanteil, % of the price that is land (not depreciable). Send it when the Kaufvertrag or Bauträger states the split; left out, derived from landValuePerSqm and the plot share, else 20 assumed |
landValuePerSqm |
Bodenrichtwert, EUR per m² of plot, as lookup_address answers it |
plotArea |
Grundstücksfläche: the whole plot, m² |
coOwnershipShare |
Miteigentumsanteil numerator: 56 of "56/10.000"; 1 for a house bought whole |
coOwnershipTotal |
Miteigentumsanteil denominator: 10000 of "56/10.000"; 1 for a house bought whole |
floorAreaRatio |
GFZ of the Bodenrichtwert zone from lookup_address; estimates the plot share when plotArea and Miteigentumsanteil are unknown |
taxRate |
Grenzsteuersatz incl. Soli, % |
depreciationVariant |
AfA route: linear2, linear25, linear3, declining5, declining7b, monument, remainingLife; left out, the Baujahr decides |
renovationShare |
Sanierungsanteil under § 7i, % of the building value; monument route only |
remainingUsefulLife |
Restnutzungsdauer from an appraisal, years; remainingLife route only |
rentGrowth |
Mietsteigerung, % per year |
costGrowth |
Kostensteigerung, % per year |
valueGrowth |
Wertsteigerung, % per year |
vacancyMonths |
Mietausfallwagnis, vacancy months per year |
purchasePrice; „Wohnfläche“ → livingArea; „Baujahr“ → yearBuilt.coldRent per month; a yearly figure divided by 12.parkingRent, apart from coldRent; split a rent quoted „inkl. Stellplatz“ when the listing names the part.serviceCharge per month; the umlagefähiger Teil, when stated, → serviceChargeRecoverable; „davon Instandhaltungsrücklage“ or „Erhaltungsrücklage“ → serviceChargeReserve per month (paid, but not deducted from tax until the WEG spends it).hasBroker=true and brokerPercent; „provisionsfrei“ → hasBroker=false.renovationCost in EUR incl. VAT; „renovierungsbedürftig“ in the listing is a reason to ask for the amount, never to guess one.stateCode: BE Berlin, BB Brandenburg, BW Baden-Württemberg, BY Bayern, HB Bremen, HE Hessen, HH Hamburg, MV Mecklenburg-Vorpommern, NI Niedersachsen, NW Nordrhein-Westfalen, RP Rheinland-Pfalz, SH Schleswig-Holstein, SL Saarland, SN Sachsen, ST Sachsen-Anhalt, TH Thüringen.plotArea=1500; „Miteigentumsanteil 56/10.000“ → coOwnershipShare=56&coOwnershipTotal=10000.handover=2027-09 (a quarter as its last month, „Winter 2026“ as 2026-12) and yearBuilt = the year of the Fertigstellung — without it the calculator assumes an old building and the wrong AfA rate; „degressive AfA“ in the listing → depreciationVariant=declining5; „Sonder-AfA“, „§ 7b“ or „QNG“ (Effizienzhaus 40 mit Qualitätssiegel Nachhaltiges Gebäude) → depreciationVariant=declining7b, the degressive route plus the special allowance of the first four years.equity in EUR or ltv in percent of the price, only when the user named them. A portal's „Finanzierungsbeispiel“ (Eigenkapital, Tilgung, Monatsrate) is advertising, not the user's plan — leave it out. KfW only when the user names an amount.https://immoprobe.de/calculator?purchasePrice=395000&livingArea=74&stateCode=BE&coldRent=1250&yearBuilt=1910&serviceCharge=310&hasBroker=true&lat=52.548&lng=13.36&address=Malplaquetstra%C3%9Fe%2027%2C%2013347%20Berlin&listingUrl=https%3A%2F%2Fwww.immobilienscout24.de%2Fexpose%2F123456789&title=Altbau%20Wedding¬e=Erbbaurecht%20nicht%20erw%C3%A4hnt%20%E2%80%93%20nachfragen.&model=ChatGPT&assumed=serviceCharge
Read only listings the user opened or asked you to open, at a human pace. Never bypass a captcha or a login wall — stop and ask. Do not contact sellers or agents. Do not put the agent's contact details into the note unless the user asks.