Skip to content
RealRents
Transparency

Privacy and methodology

This project only works if those who report feel safe. There are no accounts: your email and your report never touch each other.

This is a translation; the Portuguese version prevails.

What we store

Table "report credits"

  • A keyed hash of the email (HMAC with a secret key stored outside the database) — never the email
  • The month from which a new report is allowed
  • A single-use code (only its hash), deleted after use
  • Nothing else: no email, no name, no password

Table "reports"

  • Parish and street (no door number: if you give it, it is used once to place the point and then deleted)
  • Accommodation type, total monthly rent, part paid off the books and declared amount
  • Contract type, registration with Finanças (yes, no or don't know), receipts and payment method
  • People, rooms, m², conditions and situations (checkboxes)
  • Year the contract started
  • The report month (first day of the month, no day or time)
  • An optional note of 140 characters, reviewed by a person before publication and deleted if rejected
  • A map position already shifted 50–100 m at random
  • A fingerprint (hash) of the report key, so you can delete it

No column links the two tables, not a user ID, IP, session, or date and time. Reports are published in a single daily batch at 06:00, and the table is rewritten in random order every day, so not even the row order reveals who reported when.

We never store: report counts, report identifiers, IP addresses in reports, landlord names or exact addresses, nor the email or the door number. We do not use analytics, advertising, trackers, or third-party scripts or fonts. Request logs never store the IP on report submissions and are kept for 7 days. The rate limit uses a hash of the IP that changes every day.

How we ensure anonymity

  1. 1

    You fill in the report on the map. The street is required. The door number is optional: it is only used to place the point and is deleted right after.

  2. 2

    You confirm your email with a code. We send a 6-digit code. From the email we only keep a keyed hash, to allow 1 report every 12 months. The email itself is never stored.

  3. 3

    Report saved without an author. The report is dated to the month only and keeps just a fingerprint of your report key. Nothing links it to your email.

  4. 4

    Daily publication. It appears in the next publication, at 06:00, together with all the reports from that day. The table is rewritten in random order.

  5. 5

    Encrypted in transit and in backups. Everything travels encrypted (HTTPS). Backups are encrypted and deleted after 30 days.

The site is hosted on a server in the European Union (Hetzner Online GmbH). Our host can see network traffic, as any operator can, but report records never include IP addresses. Maps come from OpenFreeMap (OpenStreetMap data): your browser loads the map images from there, so OpenFreeMap sees your IP address, as any website that serves content does. The verification email is sent through an email delivery provider: [FORNECEDOR DE E-MAIL].

Map rules

  • Shifted points. Each point is shifted at random within the parish (or up to ~100 m along the street, when we know its geometry) and stays fixed, so reloading the page does not allow averaging.
  • Streets with 3+ reports. The street name only appears with 3 or more reports.
  • Parishes with 5+ reports. A parish's values are only shown with 5 or more reports.
  • Limited zoom. Zoom stops at block level.
  • Bands, not values. Dots only show a rent band (one of 6 colours), never the exact value.
  • Rounded to €10. Public values are rounded to €10.
  • Flags. Anyone can flag a report. With 5 flags from different people, the report is hidden until a moderator reviews it.

Methodology

We use medians and percentiles, never averages.

Reports older than 24 months are left out of the current values (but still count in the "by contract year" chart).

Values outside 3× the parish's interquartile range are held for human review before they are published.

Each email can only report once every 12 months (we only store a keyed hash).

Reports are voluntary and contracts are not verified. That is why every figure always comes with its n.

The "vs. listings" comparison uses values copied by hand from public listing portals.

Open data

We publish a CSV aggregated by parish, street (with 3+ reports) and accommodation type, updated every day after publication, under the CC BY 4.0 licence. We never publish individual records.

API documentation

The JSON API has the same thresholds, open CORS, a 1-hour cache and a rate limit.

  • GET /api/v1/parishes?unit=room|t0_t1|t2_plus|all
  • GET /api/v1/parishes/:slug
  • GET /api/v1/map?unit=room|t0_t1|t2_plus
  • GET /data/latest.csv

Your rights

There are no accounts to delete. You can delete your own report with your report key, under "My reports".

If you lose the key, we cannot delete the report for you, because nothing links it to you. That is what protects you.

To stop having data under the limit of 1 report per year, contact us: we only store a hash of the email, not the address. You may also file a complaint with the CNPD (National Data Protection Commission).

Data controller: [ASSOCIATION NAME] · [CONTACT EMAIL]. Legal basis: the consent you give when you publish a report.

Contact

Data controller: [ASSOCIATION NAME] · [CONTACT EMAIL].

Found a security problem? Report it responsibly — see /.well-known/security.txt.