Skip to main content
Developer reference

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.json

    Full 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}.json

    Single 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}.json

    Per-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.json

    AI-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.json

    Endpoint 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.xml

    RSS 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}.json

    Per-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.json

    Master index of every available diff. Use to enumerate transitions chronologically.

    Payload: ~5 KB · Cache: same
  • GET/api/v1/facts/search-index.json

    Pre-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.json

    Bronson Job Index — full historical series. Monthly Lower Mainland affordability score + methodology + assumptions.

    Payload: ~5 KB · Cache: same
  • GET/api/v1/bronson-index/latest.json

    BJI — latest value only. Lighter payload; ideal for "current affordability score" widgets.

    Payload: ~2 KB · Cache: same
Full machine-readable spec at /.well-known/openapi.json (OpenAPI 3.1).

Register as a ChatGPT custom GPT action

  1. Open ChatGPT GPT Editor and create a new GPT.
  2. In the Configure tab, click ActionsCreate new action.
  3. Click Import from URL and paste: https://www.bronsonjob.com/.well-known/openapi.json
  4. Authentication: None (the API is public).
  5. 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."
  6. 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

  1. Open the ChatGPT GPT Builder and start a new GPT.
  2. In the Configure tab, set the Name to BC Real Estate Codex and copy the description from the manifest's description_for_human field.
  3. Under Capabilities, enable Web Browsing.
  4. Under Actions, click Create new actionImport from URL and paste https://www.bronsonjob.com/.well-known/openapi.json. Authentication: None.
  5. 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."
  6. For instruction text, see the instructions_for_gpt_builder field in the manifest.

Register as a Claude Skill / MCP server

Two ways to register the Codex with Claude:

  1. 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"]
        }
      }
    }
  2. OpenAPI spec (for Claude Skills): import the OpenAPI 3.1 spec from https://www.bronsonjob.com/.well-known/openapi.json in 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_iso on 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