Skip to main content

Changelog

This page lists user-visible changes to the Prop AI Deals API. We follow SemVer at the API level — breaking changes are versioned (/api/v2/) and announced at least 90 days in advance.

2026-09-29 — net_yield_percentage is net yield before finance (breaking)

Changed:
  • net_yield_percentage on the HMO, serviced-accommodation and BRRR calculations under /api/v1/investment/* now means net yield before finance: rent less operating costs, over the purchase price. It used to subtract the mortgage too, which is the cash yield, not the net yield.
New:
  • cash_yield_percentage carries the old figure: net cash flow after the mortgage, over the purchase price.
Migration: if you relied on the after-finance figure, read cash_yield_percentage instead. For a financed purchase, net_yield_percentage is now higher by roughly the annual mortgage cost over the price. Why: “net yield” is before finance everywhere else in UK property and everywhere else in this API and the app, so the same name meant two things. The same exception to the notice period as 2026-08-13 applies.

2026-08-14 — Free tier, two new plans, and a rename

New:
  • Free plan — 200 credits/month at 2 req/s, no card required, granted to every account. Scopes: properties:read, market-data:read, areas:read, epc:read. Create a key at /dashboard/api and start calling — the paywall in front of key creation is gone.
  • Starter (from £29/mo — 2,500 credits, 5 req/s) and Growth (from £59/mo — 7,500 credits, 10 req/s, 25 AI chats) — two lower-priced tiers between Free and the £99 plan. They are rolling out now and appear in GET /api/v1/api-billing/plans and at checkout as they go live.
  • MCP server — connect Claude (claude.ai, Claude Desktop, or Claude Code) to the property data directly at https://api.propaideals.co.uk/mcp. OAuth 2.1; seven tools; credits shared with your REST keys.
Changed:
  • The £99 plan is renamed Starter → Advanced. Price, limits (20,000 credits, 10 req/s, 100 AI chats), and scopes are unchanged, and its machine id is stable — existing subscriptions and integrations are unaffected. The rename frees the Starter name for the new £29 entry tier.
  • Docs now describe quotas in credits (1 credit = 1 standard request; heavier endpoints cost more per call, exactly as X-Request-Cost has always reported).

2026-08-13 — Two duplicate response fields removed (breaking)

Removed:
  • avg_days_on_market on GET /api/v1/demand — and on the demand slice of the GET /api/v1/area-summary bundle, which returns the same object. Use avg_days_listed, which carries the identical value.
  • min_match_confidence on GET /api/v1/sold-history — use match_confidence, which carries the identical value.
Why: in both cases the endpoint returned one number under two names from the same constructor — avg_days_on_market=days_listed, avg_days_listed=days_listed and match_confidence=weakest, min_match_confidence=weakest. A duplicate is not free when the two names disagree about what they mean. avg_days_on_market reads as time-to-sell, but the figure is the mean age of listings that have not sold yet; sold listings are not in the average at all, so a fast-moving market reads low because its stock turns over quickly, not because the field measures turnover. min_match_confidence implied match_confidence was a maximum or a mean, when it is already the weakest record in the set. Keeping the misleading half of each pair meant shipping a field whose name licenses a conclusion the number does not support — for avg_days_on_market, a valuation input read straight off a survivorship-biased sample. Migration: rename the field in your client. No value, type or nullability changed — avg_days_on_market → avg_days_listed and min_match_confidence → match_confidence are pure renames of the same computed number. On the 90-day notice policy: this is a deliberate exception, not an oversight. The public API has no meaningful subscriber base yet — self-serve key issuance only opened in August 2026 — so the cost of this break is the lowest it will ever be, and carrying two names for one number into a growing integration base is the more expensive option. Once volume exists we hold to the notice period stated at the top of this page.

2026-04-29 — Specialty property type filters

New:
  • is_former_pub boolean filter on GET /api/v1/properties — match public houses, former pubs, pub conversions, and freehouses (redevelopment / change-of-use opportunities)
  • is_care_home extended to cover C2 Use Class listings — patterns now include sheltered housing, sheltered accommodation, c2 use class, warden assisted, extra care
Changed:
  • block_of_flats, is_care_home, is_hotel_bb, mixed_use, and is_former_pub are now extracted from listing title and key features only — not body description. Regular flats described as “set within an apartment block” and houses described as “opposite the care home” are no longer mis-tagged. Active inventory has been re-extracted.
Fixed:
  • Cut block_of_flats false positives from ~74% to baseline (5,630 → 1,455 properties tagged) by tightening patterns and dropping weak signals (apartment block, flat block, entire block)

2026-04-14 — Public API beta launch

New:
  • Public API key authentication (paid_* bearer tokens)
  • POST/GET/DELETE /api/v1/api-keys — Manage your API keys from the dashboard
  • GET /api/v1/api-billing/usage — Live usage counters per billing period
  • GET /api/v1/api-billing/plans — List available API plans
  • Standard response envelope { data, meta } on all paid_* requests
  • Rate-limit headers: X-RateLimit-Limit, X-RateLimit-Remaining, X-Request-Cost, X-Monthly-Usage, X-Monthly-Limit
  • Comprehensive docs, llms.txt for AI agents
Changed:
  • API key dashboard responses now use key, plan, status, last_used (was raw_key, plan_id, is_active, last_used_at) for consistency with frontend types
  • UsageResponse fields renamed: requests_used, requests_limit, plan_tier, plan_name (was monthly_used, monthly_limit, plan_id)
Fixed:
  • API key creation now correctly returns the raw key field to the dashboard so it can be displayed once and copied

How to subscribe to changes