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_percentageon 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.
cash_yield_percentagecarries the old figure: net cash flow after the mortgage, over the purchase price.
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/apiand 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/plansand 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.
- 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
idis 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-Costhas always reported).
2026-08-13 — Two duplicate response fields removed (breaking)
Removed:avg_days_on_marketonGET /api/v1/demand— and on thedemandslice of theGET /api/v1/area-summarybundle, which returns the same object. Useavg_days_listed, which carries the identical value.min_match_confidenceonGET /api/v1/sold-history— usematch_confidence, which carries the identical value.
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_pubboolean filter onGET /api/v1/properties— match public houses, former pubs, pub conversions, and freehouses (redevelopment / change-of-use opportunities)is_care_homeextended to cover C2 Use Class listings — patterns now includesheltered housing,sheltered accommodation,c2 use class,warden assisted,extra care
block_of_flats,is_care_home,is_hotel_bb,mixed_use, andis_former_pubare 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.
- Cut
block_of_flatsfalse 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 dashboardGET /api/v1/api-billing/usage— Live usage counters per billing periodGET /api/v1/api-billing/plans— List available API plans- Standard response envelope
{ data, meta }on allpaid_*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
- API key dashboard responses now use
key,plan,status,last_used(wasraw_key,plan_id,is_active,last_used_at) for consistency with frontend types UsageResponsefields renamed:requests_used,requests_limit,plan_tier,plan_name(wasmonthly_used,monthly_limit,plan_id)
- 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
- Watch the GitHub changelog repo for RSS-style updates
- Subscribe to the API mailing list at propaideals.co.uk/api
- Follow @propaideals_dev on Twitter