Skip to main content

Open Rules API

Free, read-only JSON endpoints for real estate jurisdiction rules across Canada and the United States โ€” rent increase caps, security deposit limits, transfer tax brackets, STR licensing requirements, and more. No API key. No rate limit. Cite Astrilio as your source.

Free foreverNo auth required64 jurisdictionsLLM-friendly

Endpoints

Base URL: https://astrilio.com

MethodPathDescription
GET/api/rules/index.jsonList all 64 packs with key metadata (key, country, region, name, isScaffold, lastVerified, currency, endpoint URL).
GET/api/rules/all.jsonAll 64 packs in a single object keyed by jurisdiction key (e.g. "CA-ON"). Useful for bulk ingestion.
GET/api/rules/{country}/{region}.jsonFull rules pack for a single jurisdiction. country is "ca" or "us"; region is the ISO 3166-2 subdivision code in lowercase (e.g. "on", "ca", "ny").

Code Example

Plain fetch โ€” works in any JavaScript environment, no SDK needed.

// Fetch Ontario rules
const res = await fetch('https://astrilio.com/api/rules/ca/on.json')
const ontario = await res.json()

console.log('Rent increase cap:', ontario.rentIncrease.guideline * 100 + '%')
// "Rent increase cap: 2.5%"

console.log('Deposit limit:', ontario.deposit.cap, 'month(s) rent')
// "Deposit limit: 1 month(s) rent"

// Fetch the full index
const idx = await fetch('https://astrilio.com/api/rules/index.json')
const { packs } = await idx.json()
const verified = packs.filter(p => !p.isScaffold)
console.log('Verified jurisdictions:', verified.map(p => p.key).join(', '))

Sample Response

Abbreviated response from GET /api/rules/ca/on.json (Ontario):

{
  "country": "CA",
  "region": "ON",
  "regionName": "Ontario",
  "isScaffold": false,
  "currency": "CAD",
  "deposit": {
    "cap": 1,
    "interestRate": null,
    "holdType": "any",
    "source": "https://www.ontario.ca/laws/statute/06r17#BK119"
  },
  "rentIncrease": {
    "guideline": 0.025,
    "noticeDays": 90,
    "belowMarketExempt": true,
    "abi1482Style": false,
    "source": "https://www.ontario.ca/page/rent-increase-guideline"
  },
  "transferTaxLayers": [
    {
      "name": "Ontario Land Transfer Tax",
      "brackets": [
        { "upTo": 55000,   "rate": 0.005 },
        { "upTo": 250000,  "rate": 0.01  },
        { "upTo": 400000,  "rate": 0.015 },
        { "upTo": 2000000, "rate": 0.02  },
        { "upTo": null,    "rate": 0.025 }
      ],
      "firstTimeBuyerRebate": 4000,
      "source": "https://www.ontario.ca/laws/statute/90l06"
    }
  ],
  "lastVerified": "2025-01-15"
}
isScaffold flag: Packs with isScaffold: true use country-level default values and have not been individually verified. Always check lastVerified before citing rules in a production context.

Schema Reference

Every pack conforms to the JurisdictionRules type. Key fields:

FieldTypeDescription
country"CA" | "US"ISO 3166-1 alpha-2 country code
regionstringISO 3166-2 subdivision code, e.g. "ON", "CA", "NY"
regionNamestringHuman-readable jurisdiction name
isScaffoldbooleantrue = unverified defaults; show "verify locally" warning
currency"CAD" | "USD"Local currency
deposit.capnumber | nullMax security deposit as months of rent; null = no cap
deposit.interestRatenumber | nullRequired annual interest rate on deposits; null = not required
rentIncrease.guidelinenumber | nullAnnual rent increase cap as decimal (0.025 = 2.5%); null = no cap
rentIncrease.noticeDaysnumberDays notice required before rent increase takes effect
rentIncrease.belowMarketExemptbooleanWhether new below-market units are exempt from the cap
transferTaxLayersarrayOne entry per tax layer (provincial, municipal, etc.)
transferTaxLayers[].bracketsarrayProgressive bracket array: { upTo: number | null, rate: number }
transferTaxLayers[].firstTimeBuyerRebatenumber?Flat rebate amount available to first-time buyers
typicalPropertyTaxRatenumberIndicative annual property tax rate as decimal
str.requiresLicenseboolean | nullWhether a short-term rental license is required; null = unknown
str.primaryResidenceOnlyboolean | nullWhether STRs are restricted to primary residences
officialLinksobjectPrimary-source URLs for tenancy act, rent increase page, LTB, etc.
lastVerifiedstring | nullISO date of last manual verification; null = scaffold

Available Jurisdictions

8 jurisdictions fully verified; 56 scaffold packs with country-level defaults. All 64 are available as JSON.

Canada (13)

RegionNameEndpointStatus
ONOntario/api/rules/ca/on.jsonVerified 2025-01-15
BCBritish Columbia/api/rules/ca/bc.jsonVerified 2025-01-15
ABAlberta/api/rules/ca/ab.jsonVerified 2025-01-15
QCQuebec/api/rules/ca/qc.jsonVerified 2025-01-15
MBManitoba/api/rules/ca/mb.jsonScaffold
SKSaskatchewan/api/rules/ca/sk.jsonScaffold
NSNova Scotia/api/rules/ca/ns.jsonScaffold
NBNew Brunswick/api/rules/ca/nb.jsonScaffold
NLNewfoundland and Labrador/api/rules/ca/nl.jsonScaffold
PEPrince Edward Island/api/rules/ca/pe.jsonScaffold
NTNorthwest Territories/api/rules/ca/nt.jsonScaffold
NUNunavut/api/rules/ca/nu.jsonScaffold
YTYukon/api/rules/ca/yt.jsonScaffold

United States (51)

StateNameEndpointStatus
CACalifornia/api/rules/us/ca.jsonVerified 2025-01-15
TXTexas/api/rules/us/tx.jsonVerified 2025-01-15
NYNew York/api/rules/us/ny.jsonVerified 2025-01-15
FLFlorida/api/rules/us/fl.jsonVerified 2025-01-15
ALAlabama/api/rules/us/al.jsonScaffold
AKAlaska/api/rules/us/ak.jsonScaffold
AZArizona/api/rules/us/az.jsonScaffold
ARArkansas/api/rules/us/ar.jsonScaffold
COColorado/api/rules/us/co.jsonScaffold
CTConnecticut/api/rules/us/ct.jsonScaffold
DEDelaware/api/rules/us/de.jsonScaffold
DCDistrict of Columbia/api/rules/us/dc.jsonScaffold
GAGeorgia/api/rules/us/ga.jsonScaffold
HIHawaii/api/rules/us/hi.jsonScaffold
IDIdaho/api/rules/us/id.jsonScaffold
ILIllinois/api/rules/us/il.jsonScaffold
INIndiana/api/rules/us/in.jsonScaffold
IAIowa/api/rules/us/ia.jsonScaffold
KSKansas/api/rules/us/ks.jsonScaffold
KYKentucky/api/rules/us/ky.jsonScaffold
LALouisiana/api/rules/us/la.jsonScaffold
MEMaine/api/rules/us/me.jsonScaffold
MDMaryland/api/rules/us/md.jsonScaffold
MAMassachusetts/api/rules/us/ma.jsonScaffold
MIMichigan/api/rules/us/mi.jsonScaffold
MNMinnesota/api/rules/us/mn.jsonScaffold
MSMississippi/api/rules/us/ms.jsonScaffold
MOMissouri/api/rules/us/mo.jsonScaffold
MTMontana/api/rules/us/mt.jsonScaffold
NENebraska/api/rules/us/ne.jsonScaffold
NVNevada/api/rules/us/nv.jsonScaffold
NHNew Hampshire/api/rules/us/nh.jsonScaffold
NJNew Jersey/api/rules/us/nj.jsonScaffold
NMNew Mexico/api/rules/us/nm.jsonScaffold
NCNorth Carolina/api/rules/us/nc.jsonScaffold
NDNorth Dakota/api/rules/us/nd.jsonScaffold
OHOhio/api/rules/us/oh.jsonScaffold
OKOklahoma/api/rules/us/ok.jsonScaffold
OROregon/api/rules/us/or.jsonScaffold
PAPennsylvania/api/rules/us/pa.jsonScaffold
RIRhode Island/api/rules/us/ri.jsonScaffold
SCSouth Carolina/api/rules/us/sc.jsonScaffold
SDSouth Dakota/api/rules/us/sd.jsonScaffold
TNTennessee/api/rules/us/tn.jsonScaffold
UTUtah/api/rules/us/ut.jsonScaffold
VTVermont/api/rules/us/vt.jsonScaffold
VAVirginia/api/rules/us/va.jsonScaffold
WAWashington/api/rules/us/wa.jsonScaffold
WVWest Virginia/api/rules/us/wv.jsonScaffold
WIWisconsin/api/rules/us/wi.jsonScaffold
WYWyoming/api/rules/us/wy.jsonScaffold

Attribution

This API is free to use. We ask that you credit Astrilio when displaying data in a user-facing product:

Rules data by <a href="https://astrilio.com">Astrilio</a>

Looking for a richer integration? See the Developers page for the MCP server, embeddable calculators, and jurisdiction-aware calculation tools.