Homecastr Forecasts API
Probabilistic home value forecasts at every geographic level
Probabilistic home value forecasts at every geographic level
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/homecastr-com:homecastr-com-forecasts-api"
curl "https://apis.io/api/v1/apis?limit=25"
Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: Homecastr Forecasts API
version: 1.12.0
description: Probabilistic home value forecasts and canonical public-data resources for US addresses and geographies. Public read endpoints allow anonymous demo access. An API key provides higher limits and account features. Catalog records distinguish metadata, samples, queryable rows, bulk downloads, restricted assets, and unavailable assets.
contact:
name: Homecastr Support
url: https://www.homecastr.com/support
email: support@homecastr.com
termsOfService: https://www.homecastr.com/legal
license:
name: Proprietary
url: https://www.homecastr.com/legal
servers:
- url: https://www.homecastr.com
description: Production
tags:
- name: Forecasts
description: Probabilistic home value forecasts at every geographic level
paths:
/api/v1/forecast:
get:
operationId: forecastByAddress
summary: Forecast by street address
description: 'Geocodes a US address to an H3 cell and returns probabilistic value forecasts. Best coverage: Houston metro. Returns P10/P50/P90 and a 5-year fan chart.'
security: []
tags:
- Forecasts
parameters:
- name: address
in: query
required: true
schema:
type: string
example: 5000 Westheimer Rd Houston TX 77056
- name: year
in: query
required: false
schema:
type: integer
minimum: 2026
maximum: 2030
default: 2030
responses:
'200':
description: Forecast data
content:
application/json:
schema:
type: object
'400':
description: Missing or invalid parameters
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: No forecast for address
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'429':
description: Rate limit exceeded (demo tier)
/api/v1/forecast/lot:
get:
operationId: forecastByParcel
summary: Forecast by tax parcel
description: 'Lot-level probabilistic forecasts by county assessor account number. Coverage: Florida statewide + Houston metro.'
security: []
tags:
- Forecasts
parameters:
- name: acct
in: query
required: true
schema:
type: string
description: County tax parcel account number.
example: 00404328020003500
responses:
'200':
description: Parcel forecast
content:
application/json:
schema:
type: object
'400':
description: Invalid request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: Resource not found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/forecast/unit:
get:
operationId: forecastByUnit
summary: Forecast by condo/unit
description: 'Individual unit-level forecasts. Optionally returns all sibling units in the same condo building. Coverage: Florida statewide + Houston metro.'
security: []
tags:
- Forecasts
parameters:
- name: acct
in: query
required: true
schema:
type: string
- name: include_siblings
in: query
required: false
schema:
type: boolean
default: false
responses:
'200':
description: Unit forecast
content:
application/json:
schema:
type: object
'400':
description: Invalid request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: Resource not found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/forecast/tabblock:
get:
operationId: forecastByTabblock
summary: Forecast by Census tabulation block
description: 'Sub-neighborhood probabilistic forecasts. 15-digit GEOID20. Coverage: NYC (32K tabblocks) + Houston metro (34K tabblocks).'
security: []
tags:
- Forecasts
parameters:
- name: geoid
in: query
required: true
schema:
type: string
minLength: 15
maxLength: 15
example: '360050002000001'
responses:
'200':
description: Tabblock forecast
content:
application/json:
schema:
type: object
'400':
description: Invalid request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: Resource not found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/forecast/tract:
get:
operationId: forecastByTract
summary: Forecast by Census tract
description: 'Neighborhood-level probabilistic forecasts. 11-digit GEOID20. Coverage: FL + Houston via jurisdiction model; all ~82K US tracts via ACS nationwide model.'
security: []
tags:
- Forecasts
parameters:
- name: geoid
in: query
required: true
schema:
type: string
minLength: 11
maxLength: 11
example: '48201231400'
responses:
'200':
description: Tract forecast
content:
application/json:
schema:
type: object
'400':
description: Invalid request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: Resource not found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/forecast/zcta:
get:
operationId: forecastByZcta
summary: Forecast by ZIP code (ZCTA)
description: ZIP-level probabilistic forecasts. ~20,000 ZCTAs nationwide with 6-year horizon.
security: []
tags:
- Forecasts
parameters:
- name: zcta
in: query
required: true
schema:
type: string
minLength: 5
maxLength: 5
example: '77056'
responses:
'200':
description: ZCTA forecast
content:
application/json:
schema:
type: object
'400':
description: Invalid request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: Resource not found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/forecast/zip3:
get:
operationId: forecastByZip3
summary: Forecast by ZIP3
description: ZIP3-level forecasts (first 3 digits of ZIP code). 6,210 areas nationwide.
security: []
tags:
- Forecasts
parameters:
- name: zip3
in: query
required: true
schema:
type: string
minLength: 3
maxLength: 3
example: '770'
responses:
'200':
description: ZIP3 forecast
content:
application/json:
schema:
type: object
'400':
description: Invalid request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: Resource not found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/forecast/county:
get:
operationId: forecastByCounty
summary: Forecast by county
description: County-level probabilistic forecasts. Nationwide coverage. Returns P10/P25/P50/P75/P90 fan chart with growth % and growth $ fields.
security: []
tags:
- Forecasts
parameters:
- name: fips
in: query
required: true
schema:
type: string
minLength: 5
maxLength: 5
example: '48201'
description: 5-digit county FIPS (state 2 + county 3).
responses:
'200':
description: County forecast
content:
application/json:
schema:
type: object
properties:
fips:
type: string
level:
type: string
enum:
- county
origin_year:
type: integer
current_value:
type:
- integer
- 'null'
fan_chart:
type: array
items:
$ref: '#/components/schemas/FanChartPoint'
_links:
type: object
'400':
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: Not found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/forecast/state:
get:
operationId: forecastByState
summary: Forecast by state
description: State-level probabilistic forecasts. All 50 US states covered.
security: []
tags:
- Forecasts
parameters:
- name: fips
in: query
required: true
schema:
type: string
minLength: 2
maxLength: 2
example: '48'
description: 2-digit state FIPS. TX=48, FL=12, NY=36, CA=06.
responses:
'200':
description: State forecast
content:
application/json:
schema:
type: object
'400':
description: Invalid request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: Resource not found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/forecast/hex:
get:
operationId: forecastByH3Cell
summary: Forecast by H3 hex cell (legacy)
description: Neighborhood-level forecasts by H3 cell ID at resolution 8. Houston metro only. Prefer forecast/tabblock or forecast/tract for new integrations.
security: []
tags:
- Forecasts
parameters:
- name: h3_id
in: query
required: true
schema:
type: string
example: 882a100c65fffff
- name: year
in: query
required: false
schema:
type: integer
responses:
'200':
description: H3 forecast
content:
application/json:
schema:
type: object
'400':
description: Invalid request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: Resource not found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/outlook/county:
get:
operationId: getCountyOutlook
summary: County outlook metrics
description: 'Pre-computed county outlook: median appreciation, highest-upside estimate, median home value, and a value trajectory array. Updated weekly.'
security: []
tags:
- Forecasts
parameters:
- name: fips
in: query
required: true
schema:
type: string
minLength: 5
maxLength: 5
example: '48201'
responses:
'200':
description: County outlook
content:
application/json:
schema:
type: object
properties:
fips:
type: string
median_appreciation:
type:
- number
- 'null'
highest_upside:
type:
- number
- 'null'
median_value:
type:
- integer
- 'null'
trajectory:
type:
- array
- 'null'
items:
type: number
last_updated:
type:
- string
- 'null'
format: date-time
_links:
type: object
'400':
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: Not found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
components:
schemas:
FanChartPoint:
type: object
properties:
year:
type: integer
example: 2027
horizon_months:
type: integer
example: 24
p10:
type:
- integer
- 'null'
p25:
type:
- integer
- 'null'
p50:
type:
- integer
- 'null'
p75:
type:
- integer
- 'null'
p90:
type:
- integer
- 'null'
growth_pct:
type:
- number
- 'null'
growth_dollar:
type:
- integer
- 'null'
ErrorResponse:
type: object
properties:
error:
type: string
tip:
type: string
example:
type: string
required:
- error
securitySchemes:
ApiKeyAuth:
type: apiKey
in: header
name: x-api-key
description: Include your Homecastr API key. Omit (or use `hc_demo_public_readonly`) for the free demo tier (50 req/hr per IP). Get a free key and integration docs at https://www.homecastr.com/docs