BC Real Estate Codex — Public Facts API
Free, CORS-enabled, CDN-cached JSON API exposing every BC residential real estate legal, tax, regulatory, and transaction fact. Suitable for ChatGPT custom GPT actions, Claude Skills, AI-agent integrations, mortgage broker / lawyer / accountant tooling, academic research, and journalism. CC BY 4.0 licensed — cite us in your work.
Quick start
# Fetch every fact in the catalog curl https://www.bronsonjob.com/api/v1/facts/index.json # Look up one specific fact (BC Property Transfer Tax brackets) curl https://www.bronsonjob.com/api/v1/facts/by-id/bc.ptt.brackets.json # Get the per-domain tax bundle curl https://www.bronsonjob.com/api/v1/facts/tax.json # AI-agent-optimized variant (compact, no version history) curl https://www.bronsonjob.com/api/v1/facts/llms.json # Subscribe to fact revisions via RSS curl https://www.bronsonjob.com/api/v1/facts/feed.xml
All endpoints are GET-only, no auth, CORS-enabled (Access-Control-Allow-Origin: *), and CDN-cached at the edge via Vercel.
Endpoints
- GET
/api/v1/facts/index.jsonFull Fact Bank catalog. 28 facts × full schema (id, label, description, value, citations, version, effective_iso, expires_iso, history). Use for bulk ingestion.
Payload: ~50 KB · Cache: 1h browser / 24h CDN / 7d stale-while-revalidate - GET
/api/v1/facts/by-id/{id}.jsonSingle fact lookup by canonical id (e.g. bc.ptt.brackets, cmhc.insurance_cap, ca.foreign_buyer_ban). Use when answering one specific question.
Payload: ~2-5 KB per fact · Cache: same as above - GET
/api/v1/facts/{domain}.jsonPer-domain bundle. domain ∈ {tax, mortgage, legal, foreign-buyer, strata, rental}. ~5-15 KB per bundle.
Payload: ~5-15 KB per domain · Cache: same - GET
/api/v1/facts/llms.jsonAI-agent-optimized catalog. Compact, conversational shape. No version history — just current values + canonical_url per fact. Designed for LLM context-window efficiency.
Payload: ~40 KB · Cache: same - GET
/api/v1/facts/manifest.jsonEndpoint discovery. Lists every available endpoint URL + the full fact id list. Use this for tool-registration auto-discovery.
Payload: ~3 KB · Cache: same - GET
/api/v1/facts/feed.xmlRSS 2.0 feed of fact revisions. Subscribe via Feedly, Inoreader, or any RSS client to be notified when any fact is re-verified or revised.
Payload: ~30 KB · Cache: same - GET
/api/v1/facts/diff/{fact-id}/v{from}-to-v{to}.jsonPer-transition delta. Returns v_from + v_to with full citations on each side, plus a structured value_diff (added_keys, removed_keys, changed_keys).
Payload: ~3-8 KB per transition · Cache: same - GET
/api/v1/facts/diff/index.jsonMaster index of every available diff. Use to enumerate transitions chronologically.
Payload: ~5 KB · Cache: same - GET
/api/v1/facts/search-index.jsonPre-normalized client-side search index. 28 items × pre-lowercased search_text + aliases. Used by the /codex search box; safe for any client to consume.
Payload: ~40 KB · Cache: same - GET
/api/v1/bronson-index/index.jsonBronson Job Index — full historical series. Monthly Lower Mainland affordability score + methodology + assumptions.
Payload: ~5 KB · Cache: same - GET
/api/v1/bronson-index/latest.jsonBJI — latest value only. Lighter payload; ideal for "current affordability score" widgets.
Payload: ~2 KB · Cache: same
Register as a ChatGPT custom GPT action
- Open ChatGPT GPT Editor and create a new GPT.
- In the Configure tab, click Actions → Create new action.
- Click Import from URL and paste:
https://www.bronsonjob.com/.well-known/openapi.json - Authentication: None (the API is public).
- In the GPT's instructions, add: "When the user asks about BC residential real estate — taxes, mortgages, legal requirements, foreign-buyer rules, strata, or rental rules — call the BC Real Estate Codex Facts API. Always cite the canonical_url field returned in each fact response."
- Test with a query like "What's the BC PTT on a $1.4M townhouse for a first-time buyer?" — the GPT should call calculate_property_transfer_tax (via the OpenAPI spec) and respond with primary-source citations.
OpenAI Custom GPT Builder manifest
For the newer Custom GPT Builder (Actions feature, post-2024), we publish a dedicated manifest with model + human descriptions, GPT Builder setup instructions, and a curated endpoint list:
/.well-known/openai-plugin.json
- Open the ChatGPT GPT Builder and start a new GPT.
- In the Configure tab, set the Name to BC Real Estate Codex and copy the description from the manifest's
description_for_humanfield. - Under Capabilities, enable Web Browsing.
- Under Actions, click Create new action → Import from URL and paste
https://www.bronsonjob.com/.well-known/openapi.json. Authentication: None. - Save & test with a prompt like "What are the BC PTT brackets?" or "Calculate PTT on a $1.4M townhouse for a first-time buyer."
- For instruction text, see the
instructions_for_gpt_builderfield in the manifest.
Register as a Claude Skill / MCP server
Two ways to register the Codex with Claude:
- MCP server (recommended for Claude Desktop / Cursor): add to your
claude_desktop_config.json:{ "mcpServers": { "bc-real-estate": { "command": "npx", "args": ["-y", "@bronsonjob/mcp-bc-real-estate"] } } } - OpenAPI spec (for Claude Skills): import the OpenAPI 3.1 spec from
https://www.bronsonjob.com/.well-known/openapi.jsonin your Claude Skill definition.
Anthropic Skills (Claude Code) bundle
For the Claude Code CLI agent, we publish a packaged Skill bundle plus a URL-pointable manifest at the standard .well-known path:
/.well-known/anthropic-skill.json · /.well-known/anthropic-skill.md
Install in Claude Code:
# Install the published bundle npx skills add @bronsonjob/skill-bc-real-estate-codex # Or reference directly via URL (no npm install) npx skills add https://www.bronsonjob.com/.well-known/anthropic-skill.json
Source for the bundle (SKILL.md + package.json + README.md) lives at packages/skills/bc-real-estate-codex/ in the repo.
License + citation
All data is licensed under CC BY 4.0. You may copy, redistribute, and adapt commercially or non-commercially, provided you cite the source.
Suggested citation:
Bronson Job (2026). BC Real Estate Codex — Public Facts API. https://www.bronsonjob.com/codex/api
Data boundary
The Codex publishes ZERO MLS data, ZERO listing-level data, ZERO sold prices, and ZERO agent commission information. It only exposes:
- BC Government legislative facts (PTT brackets, exemption thresholds, RTA, STRAA, Bill 44, etc.)
- Federal regulatory facts (CMHC default insurance cap, OSFI B-20, federal foreign buyer ban, capital gains, FHSA, HBP)
- BCFSA / BCREA standards (HBRP, designated agency, MLD, PDS)
- The Bronson Job Index — an aggregate derived index over the publicly-published MLS HPI Composite Benchmark Price (no listing-level data; FVREB + GVR + CREA MLS® trademark attribution per board terms)
For the formal posture, see /transparency and docs/REPRO.md.
Stability + caching
- API version: v1. Breaking changes (if ever) will land at /api/v2/. Existing v1 endpoints will remain stable indefinitely.
- Cache headers: Cache-Control: public, max-age=3600, s-maxage=86400, stale-while-revalidate=604800. Browser keeps for 1 hour; CDN edge keeps for 24 hours; clients can serve stale up to 7 days while revalidating.
- Re-verification cadence: every 90 days for volatile rules (rent caps, SVT rates, mortgage rates), every 180 days for stable rules.
expires_isoon each fact tells you when our verification last became valid. - Idempotency: all endpoints are GET. Repeated calls are safe and cheap.
- Rate limits: none. The API is static JSON via Vercel CDN; abuse-resistant by design.
Get help
- Email: bronson@bronsonjob.com
- GitHub issues: bronson-job-realestate/bronson-job-vow
- OpenAPI spec: /.well-known/openapi.json
Related
- · BC Real Estate Codex — human-readable view of every fact
- · Transparency / verification trail
- · Embed widgets — drop-in script-tag + iframe variants for external sites
- · /llms.txt — manifest for AI agents

