Conventions
Errors are JSON
Every error from api2.propbar.co.uk, including a wrong path, answers with a JSON body, never an HTML error page. Branch on code: it is stable, whereas error and message are prose and may be reworded.
{
"error": "Not Found",
"code": "NOT_FOUND",
"message": "Route /nonexistent not found",
"status": 404,
"docs": "https://propbar.co.uk/developers"
}
Rate limits
Limits vary by endpoint and by the caller's tier, so read them from the response rather than hard-coding a number. A refused request answers 429 and carries:
Retry-After: seconds to wait before retrying. Honour it; retrying sooner will simply be refused again. RateLimit-Limit: the budget for the window that refused you.RateLimit-Remaining: 0 on a 429, by definition.RateLimit-Reset: seconds until the window resets.
Retry-After is the standard field (RFC 9110) and the one to honour. The three RateLimit-* headers are the widely used names rather than a standard; they are sent for clients that already parse them.
Verified search-engine and AI crawlers are exempt from these limits when their identity confirms against the network their operator publishes.
Markdown
Send Accept: text/markdown to this page, the homepage, /mcp or /property-data-api and you get the page as Markdown at the same URL, no HTML parsing required. Both variants send Vary: Accept.
/data-sources is HTML-only on purpose: its per-source licence and attribution text is the reason the page exists, and a summary must not stand in for it.
What you may access
Crawlers and unauthenticated callers receive exactly what a signed-out visitor sees on the website. Paid depth requires an authenticated caller entitled to it: sale prices, comparables, the valuation and full risk detail. There is no crawler bypass.
Bulk and commercial access to the underlying platform is licensed separately; see Property Data API . Provenance and licensing for every field is listed on Data sources , and machine-readable crawling policy is at /robots.txt and /llms.txt.