TerraCore
Location Intelligence API
Enrich any US coordinate, address, ZIP code, or GEOID with structured demographic, economic, and location intelligence signals — including accessibility, amenity proximity, and percentile-ranked composite indices — at census block group resolution.
Introduction
TerraCore resolves any supported US location — coordinate, address, ZIP code, or GEOID — to census block group resolution and returns structured, analysis-ready neighborhood intelligence.
Responses combine demographic context, economic indicators, composite percentile-ranked indices, and location intelligence metrics such as accessibility and amenity proximity — delivered in a consistent, flattened JSON format.
Applications can request only the field groups they need, enabling high-resolution neighborhood context for use cases including site selection, market analysis, logistics planning, risk modeling, real estate evaluation, and location-based segmentation.
All endpoints accept a fields parameter to control which field groups are returned. Field groups span core metrics (population, income, housing, employment, education), composite indices, and TerraCore Location Intelligence Metrics such as walkability, retail density, grocery access, transit access, recreation, and healthcare proximity.
Key Capabilities
| Lookup Type | Input | Resolution |
|---|---|---|
| Coordinate lookup | Latitude & longitude | Census block group (spatial containment) |
| ZIP code lookup | 5-digit ZIP | Population-weighted aggregate of intersecting block groups |
| GEOID lookup | 12-digit Census GEOID | Exact census block group |
| Address lookup | Free-form address string | Geocoded → block group |
Authentication
All requests require an API key passed in the X-API-Key header. API keys are available
through your Airelit account dashboard or via RapidAPI.
X-API-Key: YOUR_API_KEY
Content-Type: application/json
Base URL & Format
All TerraCore endpoints use POST with a JSON request body.
https://api.airelit.com/v1/terracore
| Endpoint | Path |
|---|---|
| By Coordinates | /v1/terracore/coordinates |
| By ZIP Code | /v1/terracore/zipcode |
| By GEOID | /v1/terracore/geoid |
| By Address | /v1/terracore/address |
Code Examples
Ready-to-run TerraCore API examples are available on GitHub. The repository includes complete request examples for:
- Node.js
- Python
- curl
Each example demonstrates authenticated POST requests for all TerraCore endpoints, including address, coordinates, ZIP code, and GEOID lookups.
curl -X POST https://api.airelit.com/v1/terracore/address \
-H "X-API-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"address":"10700 Escondido Canyon Rd, Agua Dulce, CA 91390", "fields": ["summary", "income"]}'
The GitHub repository includes runnable scripts for each endpoint and language.
Field Groups
The fields parameter accepts an array of field group names.
Only the requested groups are returned, keeping responses efficient and predictable.
If omitted, only the summary group is returned.
Field groups represent logical categories of related metrics. The exact fields returned may differ depending on the spatial level queried. Block Group endpoints return detailed census variables, while ZIP code endpoints return aggregated versions of those metrics along with additional ZIP-exclusive environment and amenity fields.
See the Field Reference section for the complete list of fields returned for each group and endpoint type.
Field groups are organized into four categories: Core Metrics, Composite Indices, Location Intelligence Metrics, and ZIP-Exclusive Fields.
{
"lat": 32.7767,
"lon": -96.7970,
"fields": ["summary", "income", "indices", "walkability"]
}
Pass ["all"] to request every field group permitted by your subscription tier.
walkability, grocery_access, etc.)
are only available for Block Group queries. ZIP code lookups return
aggregated environment metrics in the ZIP-exclusive groups below.
By Coordinates
Enriches a latitude/longitude by resolving the point to its containing census block group and returning structured demographic and Location Intelligence data.
Request Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
lat |
float | required | Latitude. Must be between -90 and 90. Must fall within US territorial bounds. |
lon |
float | required | Longitude. Must be between -180 and 180. Must fall within US territorial bounds. |
fields |
array | optional | Array of field group names to return. Defaults to ["summary"]. Pass ["all"] for all permitted groups. |
{
"lat": 32.7767,
"lon": -96.7970,
"fields": ["summary", "income"]
}
curl -X POST https://api.airelit.com/v1/terracore/coordinates \
-H "X-API-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"lat": 32.7767, "lon": -96.7970, "fields": ["summary", "income"]}'
{
"meta": {
"geoid": "481130201001",
"state_abbr": "TX",
"state_name": "Texas",
"county_name": "Dallas County",
"dataset_version": "2026.03",
"fields_returned": ["summary", "income"],
"query_type": "coordinates"
},
"data": {
"total_population": 3842,
"population_density": 4210.55,
"median_age": 34.2,
"land_area_sq_miles": 0.9124,
"latitude": 32.7769,
"longitude": -96.7965,
"median_household_income": 68400,
"per_capita_income": 31200,
"aggregate_household_income": 82540000,
"pct_below_poverty": 9.4,
"pct_income_under_25k": 18.2,
"pct_income_25k_to_50k": 24.1,
"pct_income_50k_to_100k": 31.8,
"pct_income_over_100k": 25.9
// ... additional income bracket fields
}
}
By ZIP Code
Returns ZIP-level demographic and Location Intelligence metrics aggregated across intersecting census block groups using population-weighted aggregation. ZIP code responses also include ZIP-exclusive fields — environment scores, raw amenity counts, per-capita ratios, and composite indices — not available at the Block Group level.
contributing_block_groups field indicates how many
block groups contributed to the result.
Request Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
zipcode |
string | required | 5-digit US ZIP code. Must be exactly 5 numeric digits (e.g. "75201", not "75201-1234"). |
fields |
array | optional | Array of field group names. Defaults to ["summary"]. |
{
"zipcode": "75201",
"fields": ["summary", "housing", "income"]
}
curl -X POST https://api.airelit.com/v1/terracore/zipcode \
-H "X-API-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"zipcode": "75201", "fields": ["summary", "housing", "income"]}'
{
"meta": {
"geoid": null,
"zipcode": "75201",
"state_abbr": "TX",
"state_name": "Texas",
"county_name": null,
"dataset_version": "2026.03",
"fields_returned": ["summary", "housing", "income"],
"query_type": "zipcode",
"contributing_block_groups": 14
},
"data": {
"total_population": 12540,
"population_density": 8840.20,
"median_age": 31.8,
"median_home_value": 385000,
"median_gross_rent": 1640,
"affordability_index": 0.72,
"pct_owner_occupied": 28.4,
"pct_renter_occupied": 71.6,
"vacancy_rate": 7.2,
"median_household_income": 72800,
"per_capita_income": 48100,
"pct_below_poverty": 11.3
}
}
By GEOID
Returns demographic and Location Intelligence metrics for a specific census block group using its 12-digit GEOID.
GEOID Structure
// 12-digit Census Block Group GEOID breakdown
"481130201001"
^^ State FIPS (48 = Texas)
^^^ County FIPS (113 = Dallas County)
^^^^^^ Census Tract (020100)
^ Block Group (1)
Request Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
geoid |
string | required | Exactly 12 numeric digits. Must be a valid US Census block group GEOID. |
fields |
array | optional | Array of field group names. Defaults to ["summary"]. |
{
"geoid": "481130201001",
"fields": ["summary", "race", "education"]
}
curl -X POST https://api.airelit.com/v1/terracore/geoid \
-H "X-API-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"geoid": "481130201001", "fields": ["summary", "race", "education"]}'
{
"meta": {
"geoid": "481130201001",
"state_abbr": "TX",
"state_name": "Texas",
"county_name": "Dallas County",
"dataset_version": "2026.03",
"fields_returned": ["summary", "race", "education"],
"query_type": "geoid"
},
"data": {
"total_population": 3842,
"population_density": 4210.55,
"median_age": 34.2,
"land_area_sq_miles": 0.9124,
"pct_white": 38.4,
"pct_hispanic": 31.2,
"pct_black": 18.9,
"pct_asian": 7.8,
"diversity_index": 0.7241,
"pct_bachelors_or_higher": 52.3,
"education_index": 68.4,
"pct_high_school_or_higher": 84.6
}
}
By Address
Accepts a free-form US address string, resolves it to coordinates, and returns block group–level demographic and Location Intelligence data.
resolved_address field contains the canonical address returned by the geocoder
after matching and normalization. This may differ from the submitted input.
Request Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
address |
string | required | Free-form US address. Between 5 and 500 characters. Include street number, street name, city, and state for best results. |
fields |
array | optional | Array of field group names. Defaults to ["summary"]. |
{
"address": "1600 Pennsylvania Avenue NW, Washington, DC",
"fields": ["summary", "income", "housing"]
}
curl -X POST https://api.airelit.com/v1/terracore/address \
-H "X-API-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"address": "1600 Pennsylvania Avenue NW, Washington, DC", "fields": ["summary", "income"]}'
{
"meta": {
"geoid": "110010062001",
"state_abbr": "DC",
"state_name": "District of Columbia",
"county_name": "District of Columbia",
"dataset_version": "2026.03",
"fields_returned": ["summary", "income"],
"query_type": "address",
"resolved_address": "1600 Pennsylvania Avenue NW, Washington, DC",
"resolved_latitude": 38.8977,
"resolved_longitude": -77.0365
},
"data": {
"total_population": 1284,
"population_density": 9820.40,
"median_age": 38.1,
"median_household_income": 118400,
"per_capita_income": 84600,
"pct_below_poverty": 4.2
}
}
Response Format
All successful responses use a consistent two-key envelope.
The meta object contains resolution context and geographic identifiers.
The data object contains the requested enrichment fields as a flat, analysis-ready structure.
x-request-id.
Example: x-request-id: 1c67f2f1-f44d-48a4-a595-82ac37aee7f7
Success Envelope
coordinates, zipcode, geoid, or address./v1/).
New fields may be added, but existing fields will not be renamed or removed without a version change.
Error Envelope
All errors use a consistent format regardless of endpoint:
{
"error": true,
"code": "NOT_FOUND",
"message": "No census block group found for these coordinates"
}
Field Reference
Complete listing of every field returned per group. All percentage fields are expressed as values from 0–100. Monetary values are in US dollars (not adjusted for inflation).
All fields listed below appear inside the data object of the response. Geographic
identifiers such as geoid, state_fips, state_name,
state_abbr, and county identifiers are returned in the meta object.
Core Metrics
summary Free
| Field | Type | Description |
|---|---|---|
total_population | integer | Total population count. |
population_density | decimal | Population per square mile of land area. |
median_age | decimal | Median age of the population. |
land_area_sq_miles | decimal | Land area in square miles (excludes water). |
latitude | decimal | Block group interior centroid latitude.* |
longitude | decimal | Block group interior centroid longitude.* |
* The latitude and longitude fields represent the centroid of the block group,
not the specific address location. For address queries, the geocoded latitude and longitude can
be found in the meta object as resolved_latitude and resolved_longitude.
demographics Basic
| Field | Type | Description |
|---|---|---|
male_total | integer | Total male population. |
female_total | integer | Total female population. |
under_18 | integer | Population under 18. |
age_18_to_34 | integer | Population aged 18–34. |
age_25_to_44 | integer | Population aged 25–44. |
age_45_to_64 | integer | Population aged 45–64. |
over_65 | integer | Population 65 and older. |
working_age_pop | integer | Population aged 18–64 (working-age population). |
pct_male | decimal | Percent male. |
pct_female | decimal | Percent female. |
pct_under_18 | decimal | Percent of population under 18. |
pct_18_to_34 | decimal | Percent of population aged 18–34. |
pct_25_to_44 | decimal | Percent of population aged 25–44. |
pct_45_to_64 | decimal | Percent of population aged 45–64. |
pct_65_over | decimal | Percent of population 65 and older. |
pct_working_age | decimal | Percent of population aged 18–64. |
race Basic
| Field | Type | Description |
|---|---|---|
white_alone_not_hispanic | integer | White alone, not Hispanic or Latino. |
black_alone_not_hispanic | integer | Black or African American alone, not Hispanic. |
asian_alone_not_hispanic | integer | Asian alone, not Hispanic. |
hispanic_latino_any_race | integer | Hispanic or Latino of any race. |
native_alone_not_hispanic | integer | American Indian or Alaska Native alone, not Hispanic. |
pacific_islander_not_hispanic | integer | Native Hawaiian or Other Pacific Islander, not Hispanic. |
two_or_more_races_not_hispanic | integer | Two or more races, not Hispanic. |
other_race_not_hispanic | integer | Some other race alone, not Hispanic. |
pct_white | decimal | Percent White alone, not Hispanic. |
pct_black | decimal | Percent Black or African American. |
pct_asian | decimal | Percent Asian. |
pct_hispanic | decimal | Percent Hispanic or Latino. |
pct_native | decimal | Percent American Indian or Alaska Native. |
pct_pacific_islander | decimal | Percent Pacific Islander. |
pct_two_or_more | decimal | Percent two or more races. |
diversity_index | decimal | Probability (0–1) that two randomly selected people are of different races or ethnicities. Higher values indicate greater diversity. |
total_pop_race | integer | Total population used as race denominator. |
income Basic
| Field | Type | Description |
|---|---|---|
median_household_income | integer | Median household income (USD). |
per_capita_income | decimal | Per capita income (USD). |
aggregate_household_income | integer | Sum of all household incomes in the block group (USD). Block-group lookups only. |
income_households_total | integer | Total households used as income denominator. Block-group lookups only. |
pct_income_under_25k | decimal | Percent of households with income under $25,000. |
pct_income_25k_to_50k | decimal | Percent of households $25,000–$49,999. |
pct_income_50k_to_100k | decimal | Percent of households $50,000–$99,999. |
pct_income_over_100k | decimal | Percent of households $100,000 and above. |
pct_below_poverty | decimal | Percent of population below the federal poverty line. |
tract_poverty_count | integer | Count of persons below poverty. ZIP aggregation uses tract population-share allocation. |
tract_poverty_universe | integer | Population for whom poverty status is determined. ZIP aggregation uses the same tract population-share allocation method. |
education Basic
| Field | Type | Description |
|---|---|---|
education_index | decimal | Composite education attainment score (0–100). Higher values indicate higher educational attainment relative to other areas nationally. |
pct_high_school_or_higher | decimal | Percent with high school diploma or higher (age 25+). |
pct_bachelors_or_higher | decimal | Percent with bachelor's degree or higher (age 25+). |
no_schooling | integer | Count: no schooling completed. Block-group only. |
high_school_diploma | integer | Count: high school diploma. Block-group only. |
ged_equivalent | integer | Count: GED or alternative credential. Block-group only. |
associates_degree | integer | Count: associate's degree. Block-group only. |
bachelors_degree | integer | Count: bachelor's degree. Block-group only. |
bachelors_or_higher | integer | Count: bachelor's degree or higher. |
masters_degree | integer | Count: master's degree. Block-group only. |
professional_degree | integer | Count: professional school degree (JD, MD, etc.). Block-group only. |
doctorate_degree | integer | Count: doctoral degree. Block-group only. |
education_universe_25plus | integer | Population 25 and older used as the denominator for education attainment metrics. |
employment Basic
| Field | Type | Description |
|---|---|---|
unemployment_rate | decimal | Unemployment rate as a percentage of the civilian labor force. |
labor_force_participation | decimal | Percent of civilian non-institutional population in the labor force. |
employed | integer | Employed civilian population. |
unemployed | integer | Unemployed civilian population. |
not_in_labor_force | integer | Population not in the labor force. |
in_labor_force | integer | Total in civilian labor force. |
civilian_labor_force | integer | Civilian labor force total. |
employment_universe | integer | Total population used as employment denominator. Block-group only. |
housing Basic
| Field | Type | Description |
|---|---|---|
median_home_value | integer | Median owner-occupied home value (USD). |
median_gross_rent | integer | Median gross rent per month (USD). ZIP aggregation uses renter-weighted averages across contributing block groups. |
affordability_index | decimal | Housing affordability ratio (annual income / annual rent). Higher = more affordable relative to income. |
gross_rent_yield | decimal | Annualized rent as a percent of median home value ((monthly rent × 12) / home value × 100). Raw yield metric for real estate investors. For ZIP queries, yield is calculated using the ZIP-level rent and home value estimates. |
total_housing_units | integer | Total housing units. |
occupied_units | integer | Occupied housing units. |
vacant_units | integer | Vacant housing units. |
owner_occupied | integer | Owner-occupied units. |
renter_occupied | integer | Renter-occupied units. |
pct_owner_occupied | decimal | Percent of occupied units that are owner-occupied. |
pct_renter_occupied | decimal | Percent of occupied units that are renter-occupied. |
vacancy_rate | decimal | Percent of total housing units that are vacant. |
total_households | integer | Total households. |
family_households | integer | Family households. |
nonfamily_households | integer | Non-family households. |
pct_family_households | decimal | Percent of all households that are family households. |
pct_single_family_detached | decimal | Percent of total housing units that are single-family detached structures. |
single_family_detached | integer | Single-family detached structures. Block-group only. |
single_family_attached | integer | Single-family attached (townhomes). Block-group only. |
units_2 | integer | 2-unit structures (duplexes). Block-group only. |
units_10_to_19 | integer | Buildings with 10–19 units. Block-group only. |
mobile_home | integer | Mobile homes. Block-group only. |
housing_type_universe | integer | Total housing units used as the denominator for housing type breakdowns. |
occupancy_universe | integer | Total housing units used as the denominator for occupancy status breakdowns. |
jurisdictions Basic
Political and civic jurisdiction identifiers derived from spatial overlay of census block group centroids against authoritative boundary datasets.
| Field | Type | Description |
|---|---|---|
timezone | string | IANA timezone identifier for the location (e.g. America/Chicago). |
congressional_district | string | Congressional district number. |
congressional_district_name | string | Full name of the US congressional district. |
state_senate_district | string | State senate district number. |
state_senate_district_name | string | Full name of the state senate district. |
state_house_district | string | State house (lower chamber) district number. |
state_house_district_name | string | Full name of the state house district. |
school_district_name | string | Name of the unified or elementary school district serving the location. |
school_district_type | string | School district classification (e.g. unified, elementary, secondary). |
commute Pro
| Field | Type | Description |
|---|---|---|
mean_commute_time | decimal | Average commute time in minutes for workers 16+. |
worked_from_home | integer | Workers who worked from home. |
drove_alone | integer | Workers who drove alone to work. |
public_transit | integer | Workers using public transportation. |
walked | integer | Workers who walked to work. |
pct_worked_from_home | decimal | Percent working from home. |
pct_drove_alone | decimal | Percent driving alone. |
pct_public_transit | decimal | Percent using public transit. |
pct_walked | decimal | Percent walking to work. |
commute_universe | integer | Workers 16+ used as commute denominator. |
internet Pro
| Field | Type | Description |
|---|---|---|
has_internet | integer | Households with any internet subscription. |
pct_with_internet | decimal | Percent of households with internet access. |
internet_universe | integer | Total households surveyed for internet access. |
insurance Pro
| Field | Type | Description |
|---|---|---|
insured_total | integer | Total population with health insurance coverage. |
uninsured_total | integer | Total population without health insurance coverage. |
pct_insured | decimal | Percent with health insurance coverage. |
insurance_universe | integer | Total civilian non-institutional population surveyed. |
raw_counts Pro Block-group lookups only
Raw integer counts for the expanded age buckets. Useful when you need the underlying population counts rather than the percentages returned in demographics. Not available for ZIP code queries.
| Field | Type | Description |
|---|---|---|
income_under_10k … income_over_200k | integer | Household count in each income bracket. Block-group lookups only. 17 brackets from under $10K to over $200K. |
Composite Indices
indices Pro
TerraCore Composite Indices translate multi-variable demographic and economic signals into percentile-ranked, decision-ready scores. Each index combines independently percentile-normalized components to preserve scale consistency across heterogeneous inputs (income, rates, densities, etc.).
| Field | Type | Description | Target Buyers |
|---|---|---|---|
household_stability_index |
numeric | Composite stability score. Higher values indicate more established, lower-risk neighborhoods. Components include owner-occupancy rate, vacancy rate (inverted), poverty rate (inverted), percent income under $25K (inverted), and median home value. | Real estate investors, lenders, insurers |
family_orientation_index |
numeric | Composite family-centricity score. Higher values indicate stronger family presence. Components include percent under 18, percent family households, owner-occupancy rate, and single-family detached housing share. | Home builders, childcare services, education providers, youth franchises |
economic_strength_index |
numeric | Affluence and economic capacity score. Higher values indicate stronger purchasing power and employment base. Components include median household income, percent income over $100K, unemployment rate (inverted), labor force participation, poverty rate (inverted), and percent bachelor's degree or higher. | Retail expansion, franchise site selection, advertising platforms |
growth_potential_index |
numeric | Composite growth potential score reflecting indicators commonly associated with neighborhood appreciation. Components include percent bachelor's degree or higher, percent population aged 25–44, percent working from home, commute time (inverted), and median home value. | Real estate investors, builders, STR operators, private equity |
workforce_quality_index |
numeric | Skilled labor availability score. Higher values indicate stronger and more accessible workforce quality. Components include percent bachelor's degree or higher, percent high school or higher, labor force participation, unemployment rate (inverted), and commute time (inverted). | Corporate site selection, logistics firms, industrial developers |
insurance_risk_index |
numeric | Population insurance coverage and risk profile score. Higher values indicate lower socioeconomic risk and stronger insurance coverage. Components include percent insured, poverty rate (inverted), percent income under $25K (inverted), and owner-occupancy rate. | Insurance carriers, risk modeling firms, healthcare networks |
investor_yield_index |
numeric | Rental investment fundamentals score. Higher values indicate stronger rental demand and yield environment. Components include gross rent yield, renter occupancy rate, vacancy rate (inverted), median household income, and percent income over $100K. | Landlords, STR operators, real estate syndicates |
(inv.) denotes an inverted component where higher raw
values (for example vacancy or unemployment) contribute negatively to the final score.
Location Intelligence Metrics
Location Intelligence Metrics describe access to everyday amenities — groceries, transit, parks, healthcare, schools, walkable retail, and community resources. Composite scores are normalized within peer zone classes (urban / suburban / rural) so comparisons are meaningful across geography types. Zone class is determined algorithmically based on population density and built-environment structure — not ZIP code heuristics — ensuring like-for-like benchmarking across geographies.
The enrichment_meta group provides data quality indicators for any Location Intelligence
Metrics response, including a data_confidence field (high, medium,
or low). Low confidence suggests sparse coverage for the area; scores may be underestimated.
walkability Pro
Pedestrian-range access to daily-use amenities measured within 0.25–1 mile radial buffers.
| Field | Type | Description |
|---|---|---|
cnt_restaurant_05mi | integer | Number of restaurants, fast food, and cafes within half a mile. |
cnt_retail_05mi | integer | Number of retail shops within half a mile. |
cnt_transit_stop_025mi | integer | Number of bus stops within a quarter mile (walkable transit). |
cnt_grocery_1mi | integer | Number of grocery stores and supermarkets within 1 mile. |
den_restaurant_1mi | decimal | Restaurant density per square mile within a 1-mile radius. |
score_walkability | integer | Composite walkability score (0–100), percentile-ranked within zone class. |
grocery_access Pro
Proximity and availability of grocery stores and supermarkets.
| Field | Type | Description |
|---|---|---|
dist_grocery_nearest | decimal | Distance in miles to the nearest grocery store or supermarket. |
cnt_grocery_1mi | integer | Number of grocery stores within 1 mile. |
cnt_grocery_3mi | integer | Number of grocery stores within 3 miles. |
score_grocery_access | integer | Composite grocery access score (0–100), percentile-ranked within zone class. |
healthcare_access Pro
Access to clinics, urgent care facilities, and hospitals.
| Field | Type | Description |
|---|---|---|
dist_clinic_nearest | decimal | Distance in miles to the nearest clinic, doctor's office, or urgent care. |
cnt_clinic_3mi | integer | Number of clinics and urgent care facilities within 3 miles. |
dist_hospital_nearest | decimal | Distance in miles to the nearest hospital. |
score_healthcare_access | integer | Composite healthcare access score (0–100), percentile-ranked within zone class. |
transit_access Pro
Walkable bus stop access plus proximity to rail and tram stations.
| Field | Type | Description |
|---|---|---|
cnt_transit_stop_025mi | integer | Number of bus stops within a quarter mile. |
cnt_transit_stop_05mi | integer | Number of bus stops within half a mile. |
dist_transit_station_nearest | decimal | Distance in miles to the nearest rail or tram station. |
score_transit_access | integer | Composite transit access score (0–100), percentile-ranked within zone class. |
retail Pro
Commercial retail density and walkable shop access.
| Field | Type | Description |
|---|---|---|
cnt_retail_05mi | integer | Number of retail shops within half a mile. |
cnt_retail_1mi | integer | Number of retail shops within 1 mile. |
den_retail_1mi | decimal | Retail shops per square mile within a 1-mile radius. |
score_retail_density | integer | Composite retail density score (0–100), percentile-ranked within zone class. |
school_access Pro
Proximity to K-12 schools and higher education institutions.
| Field | Type | Description |
|---|---|---|
cnt_school_1mi | integer | Number of schools, colleges, and universities within 1 mile. |
dist_school_nearest | decimal | Distance in miles to the nearest school or university. |
score_school_access | integer | Composite school access score (0–100), percentile-ranked within zone class. |
recreation Pro
Access to parks, nature areas, and nearby entertainment venues.
| Field | Type | Description |
|---|---|---|
dist_park_nearest | decimal | Distance in miles to the nearest park or nature reserve. |
park_area_sqmi_1mi | decimal | Total park polygon area (sq miles) within 1 mile of the block group anchor. |
cnt_park_1mi | integer | Number of parks and nature reserves within 1 mile. |
cnt_entertainment_5mi | integer | Number of entertainment venues (cinemas, theatres, bowling alleys, etc.) within 5 miles. |
dist_entertainment_nearest | decimal | Distance in miles to the nearest entertainment venue. |
score_recreation | integer | Composite recreation score (0–100), percentile-ranked within zone class. |
community_access Pro
Proximity and density of community gathering places and places of worship.
| Field | Type | Description |
|---|---|---|
cnt_worship_1mi | integer | Number of places of worship within 1 mile (all religions). |
den_worship_1mi | decimal | Worship location density per square mile within a 1-mile radius. |
score_religious_density | integer | Composite religious/community access score (0–100), percentile-ranked within zone class. |
enrichment_meta Pro
Data quality and coverage indicators for Location Intelligence Metrics.
| Field | Type | Description |
|---|---|---|
data_confidence | string | Overall enrichment data quality indicator: high, medium, or low. Low values suggest sparse local coverage; enrichment scores may be underestimated. Confidence classification is derived from amenity density thresholds and regional mapping completeness heuristics. |
osm_feature_density | decimal | Local mapping completeness proxy — active amenity features per square mile within 1 mile of the block group anchor. |
amenity_count_raw | integer | Total amenity count across all categories used in scoring confidence classification. |
ZIP-Exclusive Fields
The following fields are only returned for ZIP code queries (/v1/terracore/zipcode).
They do not exist at the Block Group level. Block Group documentation remains unchanged.
median_gross_rent — Previously: population-weighted avg of BG median rents. Now: weighted by
renter_occupied × area_weight. BGs with NULL rent excluded from both
numerator and denominator. Weighting by total population diluted values with homeowner-dominated BGs.
gross_rent_yield — Previously: population-weighted avg of BG yield ratios. Now: derived directly as
(median_gross_rent × 12) / median_home_value × 100 from ZIP-level
values. Averaging ratios ≠ ratio of averages; the new method guarantees internal consistency.
tract_poverty_count / tract_poverty_universe / pct_below_poverty — Previously: area-weighted sum of tract values across BG rows (caused severe overcounting — universe could exceed ZIP population). Now: each tract's poverty values are allocated proportionally by estimated population share in that tract.
ZIP-Exclusive · Environment Scores
zip_environment_scores Pro
Population-weighted averages of Block Group-level environment scores, aggregated to the ZIP. Weight = estimated population from area intersection. BGs with NULL scores are excluded from both numerator and denominator.
| Field | Type | Description |
|---|---|---|
score_walkability_zip_avg | decimal | Population-weighted avg of BG walkability scores (0–100). |
score_transit_access_zip_avg | decimal | Population-weighted avg of BG transit access scores (0–100). |
score_grocery_access_zip_avg | decimal | Population-weighted avg of BG grocery access scores (0–100). |
ZIP-Exclusive · Nearest POI Distance Averages
zip_poi_distances Pro
Population-weighted averages of BG-level nearest-POI distances. NULLs excluded from both numerator and denominator. Units: miles (same as BG source fields).
| Field | Type | Description |
|---|---|---|
dist_grocery_nearest_zip_avg | decimal | Pop-weighted avg nearest grocery store distance (miles). |
dist_hospital_nearest_zip_avg | decimal | Pop-weighted avg nearest hospital distance (miles). |
dist_clinic_nearest_zip_avg | decimal | Pop-weighted avg nearest clinic distance (miles). |
dist_transit_station_nearest_zip_avg | decimal | Pop-weighted avg nearest transit station distance (miles). |
dist_park_nearest_zip_avg | decimal | Pop-weighted avg nearest park distance (miles). |
dist_entertainment_nearest_zip_avg | decimal | Pop-weighted avg nearest entertainment venue distance (miles). |
ZIP-Exclusive · Raw Amenity Counts
zip_amenity_counts Pro
Sourced directly from env.zip_environment — OSM features aggregated within the ZIP boundary. Not rolled up from Block Groups. NULL when no environment data exists for a ZIP.
| Field | Type | Description |
|---|---|---|
cnt_restaurant | integer | Total restaurants in ZIP. |
cnt_fast_food | integer | Fast food locations. |
cnt_bar | integer | Bars. |
cnt_dessert | integer | Dessert/café venues. |
cnt_grocery | integer | Grocery stores. |
cnt_pharmacy | integer | Pharmacies. |
cnt_clinic | integer | Clinics. |
cnt_hospital | integer | Hospitals. |
cnt_fitness | integer | Fitness centers. |
cnt_bank | integer | Banks. |
cnt_atm | integer | ATMs. |
cnt_fuel | integer | Fuel/gas stations. |
cnt_school | integer | Schools. |
cnt_childcare | integer | Childcare facilities. |
cnt_worship | integer | Places of worship. |
cnt_transit_stop | integer | Transit stops. |
cnt_transit_station | integer | Transit stations. |
cnt_park | integer | Parks. |
cnt_entertainment | integer | Entertainment venues. |
cnt_retail | integer | Retail locations. |
total_features | integer | Total OSM features in ZIP. |
env_data_confidence | string | Data confidence rating for environment data: high, medium, or low. |
ZIP-Exclusive · Per-Capita Amenity Ratios
zip_amenity_ratios Pro
Derived from ZIP amenity counts divided by ZIP total population. NULL when population is 0 or env data is absent.
| Field | Type | Formula | Description |
|---|---|---|---|
restaurants_per_1k_pop | decimal | cnt_restaurant / population × 1000 | Restaurants per 1,000 residents. |
grocery_per_1k_pop | decimal | cnt_grocery / population × 1000 | Grocery stores per 1,000 residents. |
transit_stops_per_1k_pop | decimal | cnt_transit_stop / population × 1000 | Transit stops per 1,000 residents. |
parks_per_1k_pop | decimal | cnt_park / population × 1000 | Parks per 1,000 residents. |
clinics_per_10k_pop | decimal | cnt_clinic / population × 10000 | Clinics per 10,000 residents. |
amenities_per_1k_pop | decimal | (cnt_restaurant + cnt_grocery + cnt_retail + cnt_entertainment) / population × 1000 | Broad amenity density per 1,000 residents. |
ZIP-Exclusive · Composite Indices
zip_indices Pro
Composite indices derived from ZIP-level metrics and normalized using national percentile ranking across all ~33,000 US ZIP codes. Scores range from 0–100 where higher values indicate stronger performance relative to other ZIP codes nationally.
| Field | Type | Description |
|---|---|---|
neighborhood_livability_index_zip_avg |
decimal | Composite livability score derived from walkability, transit access, grocery access, park proximity, amenity density, and remote-work prevalence. Higher = more walkable and accessible neighborhood environment. |
retail_opportunity_index_zip_avg |
decimal | Retail opportunity score measuring potential demand versus competition. Combines economic strength, population density, restaurant competition density (inverted), commute patterns, and household income. |
neighborhood_livability_zip_rank |
decimal | National percentile rank for the livability index (0–100). A value of 80 means the ZIP ranks higher than 80% of ZIP codes nationally. |
retail_opportunity_zip_rank |
decimal | National percentile rank for the retail opportunity index (0–100). Higher scores indicate stronger potential for retail demand relative to competition. |
50 (neutral midpoint)
to prevent incomplete data from suppressing index output.
Error Codes
All errors return a JSON object with error: true, a machine-readable code, and a human-readable message.
| Code | HTTP | Description |
|---|---|---|
NOT_FOUND |
404 | No data found for the given input. The coordinates may be in a water area, the ZIP code may not exist in our dataset, or the GEOID may be invalid. |
INVALID_PARAMS |
400 | Input validation failed. Check that lat/lon are valid numbers, zip is exactly 5 digits, and geoid is exactly 12 digits. |
OUT_OF_BOUNDS |
422 | Coordinates fall outside supported US coverage (50 states, DC, Puerto Rico). |
TIER_REQUIRED |
403 | One or more requested field groups require a higher subscription tier. Upgrade your plan or remove the restricted groups from your fields array. (Applies to RapidAPI customers) |
INVALID_JSON |
400 | The request body is not valid JSON. Ensure Content-Type: application/json is set and the body is well-formed. |
UNAUTHORIZED |
401 | Missing or invalid API key. Check the X-API-Key header. |
QUOTA_EXCEEDED |
429 | You have exceeded your plan's request quota. Quota enforcement may be handled by the Airelit platform or by the RapidAPI gateway depending on how the API is accessed. |
INTERNAL_ERROR |
500 | Unexpected server error. Retry the request. If the issue persists, contact support with the returned request_id. |
{
"error": true,
"code": "TIER_REQUIRED",
"message": "Requested field group(s) require a higher tier: commute, internet"
}
Data Sources & Coverage
TerraCore is powered by the US Census Bureau American Community Survey (ACS) 5-Year Estimates, currently using the 2024 ACS 5-Year vintage (2020–2024 survey period). ACS 5-Year data provides the most statistically reliable demographic estimates available for small geographies such as census block groups.
TerraCore extends census demographic data with spatial enrichment layers including amenity density, accessibility metrics, and derived neighborhood intelligence indices. These enrichment datasets are processed through AireLit's spatial analysis pipeline prior to API delivery to ensure consistent response latency and reproducible scoring across the United States.
| Dataset | Coverage | Records |
|---|---|---|
| Block Group Resolution | All 50 states, the District of Columbia, and Puerto Rico | 242,000+ census block groups |
| ZIP Code Resolution (ZCTA) | All US ZIP Code Tabulation Areas (ZCTAs), the Census Bureau's geographic representation of ZIP codes | ~33,000 ZIP codes |
Primary Demographic Data
The American Community Survey (ACS) is an ongoing statistical survey conducted by the US Census Bureau. The 5-Year dataset pools survey responses collected over five years, enabling reliable demographic estimates for small geographic areas such as census block groups.
Census block groups typically contain between 600 and 3,000 residents and are designed to represent relatively homogeneous neighborhoods with respect to demographic, economic, and housing characteristics. TerraCore uses block groups as its foundational geographic unit for demographic enrichment.
Spatial & Infrastructure Data
TerraCore Location Intelligence Metrics are derived from normalized geospatial infrastructure datasets including amenity locations, transportation infrastructure, healthcare facilities, parks, schools, and retail features. These datasets are spatially indexed and aggregated using AireLit's enrichment engine to produce neighborhood-level accessibility metrics and percentile-ranked scores.
| Dataset | Provider | License / Terms | Typical Update Cadence |
|---|---|---|---|
| American Community Survey (ACS) 5-Year Estimates | US Census Bureau | Public domain (US government data) | Annual release (typically December) |
| TIGER/Line Geographies | US Census Bureau | Public domain (US government data) | Annual release aligned with ACS updates |
| OpenStreetMap — Amenity & Infrastructure Data | OpenStreetMap contributors | © OpenStreetMap contributors, ODbL | Continuously updated by contributors; TerraCore ingests refreshed extracts monthly |
| OpenAddresses — Geospatial Address Data | OpenAddresses project | Various open licenses per jurisdiction; see openaddresses.io | Updated by contributing jurisdictions; TerraCore ingests refreshes monthly |
| Proprietary Enrichment Datasets | AireLit | Proprietary | Updated on internal schedules |
dataset_version field in every response identifies
the TerraCore dataset release currently in production.