← Back to map
Endpoints
GET /rental-investment/api/zctas Filter & paginate all scored ZCTAs
ParameterTypeDefaultDescription
stateoptionalstringFilter by state abbreviation (e.g. TX)
min_scoreoptionalnumber 0–1Minimum investment score
max_scoreoptionalnumber 0–1Maximum investment score
metro_onlyoptionalbooleanfalseOnly return ZCTAs inside a CBSA / metro area
min_popoptionalintegerMinimum ZCTA population
max_ptroptionalnumberMaximum price-to-rent ratio
limitoptionalinteger50Results per page (max 200)
offsetoptionalinteger0Pagination offset
library(httr2) request("https://stanis.xyz/rental-investment/api/zctas") |> req_url_query(state = "TX", min_score = 0.62, limit = 25) |> req_perform() |> resp_body_json(simplifyVector = TRUE)
GET /rental-investment/api/zctas/:zcta Full data for a single ZCTA
ParameterTypeDefaultDescription
zctarequiredstring5-digit ZCTA code (path segment, not query param)
request("https://stanis.xyz/rental-investment/api/zctas/75201") |> req_perform() |> resp_body_json()
GET /rental-investment/api/top Top markets re-scored by preset profile
ParameterTypeDefaultDescription
profileoptionalstringbalancedbalanced, cash_flow, section_8, value_add, conservative
stateoptionalstringRestrict to one state
limitoptionalinteger25Number of results (max 100)
# Top 10 Florida markets for cash flow request("https://stanis.xyz/rental-investment/api/top") |> req_url_query(profile = "cash_flow", state = "FL", limit = 10) |> req_perform() |> resp_body_json(simplifyVector = TRUE) |> _$results
GET /rental-investment/api/score Custom-weight score for one ZCTA
ParameterTypeDefaultDescription
zctarequiredstring5-digit ZCTA to score
w_yieldoptionalnumberPer-component weights. Any subset can be passed; weights are auto-normalized to sum to 1. Valid keys: w_price, w_yield, w_fmr, w_voucher, w_rehab, w_crime, w_landlord, w_tax, w_climate, w_eviction, w_pop_growth, w_market_size, w_unemployment, w_rental_vacancy, w_appreciation, w_rent_growth. Omit all to use the balanced profile.
w_crimeoptionalnumber
w_...optionalnumber
# Score ZCTA 75201 heavily weighted toward yield and low crime request("https://stanis.xyz/rental-investment/api/score") |> req_url_query( zcta = "75201", w_yield = 0.40, w_crime = 0.25, w_fmr = 0.20, w_tax = 0.15 ) |> req_perform() |> resp_body_json()
GET /rental-investment/api/states State-level aggregate summaries

No parameters. Returns all 50 states + DC sorted by average investment score.

request("https://stanis.xyz/rental-investment/api/states") |> req_perform() |> resp_body_json(simplifyVector = TRUE)
Try It

Live Request