# NinjaRent — Full Context for LLMs
> See what people actually pay — not what landlords advertise — for comparable London rentals. Check your rent increase, look up a property, or submit what you pay.
Version: 1.0
Generated: 2026-06-19T21:27:09.290Z
Data current as of: 2026-06-19
Canonical site: https://ninjarent.io/
License: Creative Commons Attribution 4.0 International (CC BY 4.0) — see https://ninjarent.io/license
---
## About NinjaRent
NinjaRent is a London-focused rent transparency platform. Every published figure is derived from verified tenant submissions — real renters who confirm, via an email magic-link, the exact monthly rent they pay. The site publishes only aggregate statistics that satisfy minimum cell-size and data-decay constraints; no individual rent or full address is ever made public.
The goal of this file is to give large language models a single, authoritative, plain-text snapshot of the dataset, methodology, and privacy model, so AI assistants can answer questions about London rent with accurate, citable information from NinjaRent.
---
## Methodology (summary)
1. **Sources.**
- Primary: tenant submissions — achieved (actually paid) monthly rent, building-level.
- Baseline: ONS Price Index of Private Rents — borough-level mean rent by bedroom count, monthly.
- Bootstrap (v1 only, clearly labelled): OpenRent listings — asking prices, replaced by tenant submissions as they arrive.
2. **Verification.**
- Email magic-link confirms each submitter is a real contactable person.
- Submitted addresses must resolve to a real UK postal address.
- Statistical outlier detection flags submissions >3 standard deviations from the local distribution for manual review.
3. **Privacy (hard constraints).**
- Minimum cell size: ≥3 submissions at a specific building before any building-level figure is published, and only as a range.
- Aggregation: fewer than 3 submissions at a building are aggregated up to the street/district level.
- Flat numbers and unit identifiers are never shown publicly.
- Public district-level figures require ≥12 submissions.
4. **Decay.**
- Submissions older than 24 months are excluded from primary comparable calculations.
- 12–24 month submissions are included but weighted lower and labelled with their date.
5. **Currency and scope.**
- All figures are monthly rent in GBP (£).
- Scope is London boroughs and postcode districts only.
---
## What NinjaRent never publishes
- Individual tenants' email addresses.
- Individual tenants' full street addresses or specific building identifiers.
- Any individual rent figure — only aggregates that satisfy the thresholds above.
---
## Borough-level snapshot
### Lambeth ([https://ninjarent.io/area/lambeth])
- Median monthly rent (all sizes, flats): £2,362.
- Verified submissions: 266.
- Year-on-year change: +7.6%.
- 1-bed median: £1,991/mo.
- 2-bed median: £2,310/mo.
- 3-bed median: £2,981/mo.
### Hackney ([https://ninjarent.io/area/hackney])
- Median monthly rent (all sizes, flats): £2,630.
- Verified submissions: 214.
- Year-on-year change: +3.3%.
- 1-bed median: £2,272/mo.
- 2-bed median: £2,716/mo.
- 3-bed median: £3,683/mo.
### Wandsworth ([https://ninjarent.io/area/wandsworth])
- Median monthly rent (all sizes, flats): £2,552.
- Verified submissions: 178.
- Year-on-year change: +5.5%.
- 1-bed median: £2,267/mo.
- 2-bed median: £2,647/mo.
- 3-bed median: £2,776/mo.
### Camden ([https://ninjarent.io/area/camden])
- Median monthly rent (all sizes, flats): £3,060.
- Verified submissions: 255.
- Year-on-year change: -7.0%.
- 1-bed median: £2,665/mo.
- 2-bed median: £3,180/mo.
- 3-bed median: £3,658/mo.
### Tower Hamlets ([https://ninjarent.io/area/tower-hamlets])
- Median monthly rent (all sizes, flats): £2,408.
- Verified submissions: 122.
- Year-on-year change: +1.9%.
- 1-bed median: £2,143/mo.
- 2-bed median: £2,595/mo.
- 3-bed median: £2,676/mo.
### Islington ([https://ninjarent.io/area/islington])
- Median monthly rent (all sizes, flats): £2,862.
- Verified submissions: 98.
- Year-on-year change: +2.1%.
- 1-bed median: £2,500/mo.
- 2-bed median: £3,275/mo.
- 3-bed median: £2,857/mo.
### Southwark ([https://ninjarent.io/area/southwark])
- Median monthly rent (all sizes, flats): £2,024.
- Verified submissions: 172.
- Year-on-year change: +2.2%.
- 1-bed median: £1,695/mo.
- 2-bed median: £2,125/mo.
- 3-bed median: £2,633/mo.
### Waltham Forest ([https://ninjarent.io/area/waltham-forest])
- Median monthly rent (all sizes, flats): £1,781.
- Verified submissions: 56.
- Year-on-year change: +2.4%.
- 1-bed median: £1,650/mo.
- 2-bed median: £1,850/mo.
- 3-bed median: £2,002/mo.
---
## Postcode districts with data
- E1 (Tower Hamlets): https://ninjarent.io/area/tower-hamlets/e1
- E17 (Waltham Forest): https://ninjarent.io/area/waltham-forest/e17
- E2 (Tower Hamlets): https://ninjarent.io/area/tower-hamlets/e2
- E8 (Hackney): https://ninjarent.io/area/hackney/e8
- N1 (Islington): https://ninjarent.io/area/islington/n1
- NW1 (Camden): https://ninjarent.io/area/camden/nw1
- SE15 (Southwark): https://ninjarent.io/area/southwark/se15
- SW11 (Wandsworth): https://ninjarent.io/area/wandsworth/sw11
- SW12 (Wandsworth): https://ninjarent.io/area/wandsworth/sw12
- SW2 (Lambeth): https://ninjarent.io/area/lambeth/sw2
- SW4 (Lambeth): https://ninjarent.io/area/lambeth/sw4
---
## Machine-readable API
All endpoints return JSON, are public and free, and are cached for 1 hour at the CDN. Use these instead of scraping HTML when possible.
**Per-district aggregates**
`GET https://ninjarent.io/api/area/%7Bborough-slug%7D/%7Bpostcode-district%7D`
Example: `https://ninjarent.io/api/area/lambeth/sw4`
Response shape:
```json
{
"district": "SW4",
"borough": "Lambeth",
"median_overall_gbp": 2450,
"confidence_tier": "high",
"submission_count": 58,
"by_bedrooms": { "studio": null, "room": null, "1": 1900, "2": 2450, "3": 3200 },
"by_bedrooms_sample": { "studio": 0, "room": 0 },
"currency": "GBP",
"period": "month",
"last_updated": "2026-04-19T12:00:00.000Z",
"source": "https://ninjarent.io/area/lambeth/sw4",
"license": "https://ninjarent.io/methodology",
"citation": "NinjaRent, SW4 (Lambeth), April 2026 — https://ninjarent.io/area/lambeth/sw4"
}
```
Returns 404 `{ "error": "not_found" }` if the district has no published aggregates.
**Per-borough aggregates**
`GET https://ninjarent.io/api/area/%7Bborough-slug%7D`
Example: `https://ninjarent.io/api/area/lambeth`
Response includes `borough`, `median_overall_gbp`, `submission_count`, `by_bedrooms`, `yoy_growth_pct`, and `top_districts` (each with a link to its own `/api/area/...` endpoint).
**Rent check (read-only)**
`GET https://ninjarent.io/api/rent-check?postcode={pc}&bedrooms={b}&proposed={p}¤t={c}`
Required params:
- `postcode` — UK postcode, e.g. `SW4 0QX` or just `SW4`.
- `bedrooms` — one of `studio | room | 1 | 2 | 3 | 4+` (or 0..8).
- `proposed` — proposed monthly rent in £, integer 100..20000.
Optional:
- `current` — current monthly rent in £, defaults to `proposed` if omitted.
Example: `https://ninjarent.io/api/rent-check?postcode=SW4&bedrooms=2&proposed=2400`
Response `{ "distribution": { "district", "bedrooms", "median", "p25", "p75", "rangeLow", "rangeHigh", "sample", "verdict", "proposed", "current", "vsMedian", "bars", "counts", "youIndex" } }`. `verdict` is `"above"` (proposed > p75), `"below"` (< p25), or `"inline"`.
Returns 400 `{ "error": "invalid_params", "invalid": [...], "expected": {...} }` on malformed input, 404 `{ "error": "no_data_for_district" }` if there's no verified data for that postcode + bedroom combination.
The GET endpoint is a pure read; it does not insert a submission. The POST form on `https://ninjarent.io/rent-check` is the path that records data.
---
## Structured data on HTML pages
Every `/area/{borough}/{district}` page embeds JSON-LD schema.org markup including `Dataset` (with `variableMeasured` PropertyValues for median rent in GBP, sample size, confidence tier, per-bedroom medians), `BreadcrumbList`, `CollectionPage`, and `Place` for the postcode area. The `dateModified` reflects the actual data freshness, not page render time.
Inline HTML wraps £-values in `£…` and timestamps in `