# 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 `