Kadrin Docs Kadrin Batch

Submarket report

The submarket report describes how the area around each place is doing: whether jobs are growing, who works there, what people earn and what they pay for housing, compared with the county, the state and the US. Use it to size up a real estate submarket, such as the area around an office building or an apartment site.

What's in it

Group Measures
Job growth Change in jobs over 5 years, Change in jobs over 5 years, as a percent, Change in jobs over 10 years, Change in jobs over 10 years, as a percent
Jobs in the area Jobs, Jobs paying $1,250 a month or less, Jobs paying $1,251 to $3,333 a month, Jobs paying more than $3,333 a month, Jobs in farming, forestry and fishing, Jobs in mining, oil and gas, Jobs in utilities, Jobs in construction, Jobs in manufacturing, Jobs in wholesale trade, Jobs in retail, Jobs in transportation and warehousing, Jobs in information and media, Jobs in finance and insurance, Jobs in real estate and rental, Jobs in professional, scientific and technical services, Jobs in management of companies, Jobs in administrative support and waste services, Jobs in education, Jobs in health care and social assistance, Jobs in arts, entertainment and recreation, Jobs in hotels and food service, Jobs in other services, Jobs in public administration
Residents at work Labor force, Unemployment rate
Population and age Population, People under 5, People 5 to 17, People 18 to 24, People 25 to 34, People 35 to 44, People 45 to 54, People 55 to 64, People 65 to 74, People 75 to 84, People 85 and over, Median age
Household income Median household income, Average household income, Income per person
Homes, vacancy and ownership Homes, Vacancy rate, Homes lived in by their owners, Homes lived in by renters
Home values and rents Median home value, Median gross rent

Compared with: each number for its county, its state and the US, and for rates and medians, where the place ranks among census tracts (neighborhood-sized areas of about 4,000 people).

Usual area: a 3-mile radius around each place (everywhere within 3 miles in a straight line). You can choose another.

Cost: 7 credits a place for its 7 groups.

Job growth

Job growth is the change in the number of jobs located in the area over the last 5 and 10 years, as a number and as a percent. The years count back from the newest year of jobs data in the release, so today they're 2018 to 2023 and 2013 to 2023; each answer's vintage names both years. Jobs come from the U.S. Census Bureau's LEHD Origin-Destination Employment Statistics (LODES), which count jobs where people work.

If an area had no jobs at the start, there's no percent change: the warning no_base says so. If a state's jobs data is missing for one of the years, the change has no value and the warning partial_coverage says why.

Run it in Kadrin Batch

Choose New request, pick your file of places, and choose Submarket report. Batch suggests a 3-mile radius around each place. The Batch quickstart goes through it step by step.

Run it with the API

Send "preset": "submarket_report" to /enrich, with the area around each place. Here is a 3-mile radius around Kendall Square in Cambridge, Massachusetts:

curl https://api.kadrindata.com/v1/enrich \
  -H "Authorization: Bearer $KADRIN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "areas": [{"id": "kendall-square",
               "geometry": {"type": "buffer", "center": [-71.0862, 42.3625], "radius": 3, "unit": "mi"}}],
    "preset": "submarket_report"
  }'
import os

import requests

r = requests.post(
    "https://api.kadrindata.com/v1/enrich",
    headers={"Authorization": f"Bearer {os.environ['KADRIN_API_KEY']}"},
    json={
        "areas": [{"id": "kendall-square",
                   "geometry": {"type": "buffer", "center": [-71.0862, 42.3625], "radius": 3, "unit": "mi"}}],
        "preset": "submarket_report",
    },
)
r.raise_for_status()
values = r.json()["results"][0]["values"]
for measure in ("labor.growth.jobs_change_5yr", "labor.growth.jobs_change_5yr_pct"):
    v = values[measure]
    print(f"{measure} ({v['vintage']}): {v['value']}")
const r = await fetch("https://api.kadrindata.com/v1/enrich", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${process.env.KADRIN_API_KEY}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    areas: [{ id: "kendall-square",
              geometry: { type: "buffer", center: [-71.0862, 42.3625], radius: 3, unit: "mi" } }],
    preset: "submarket_report",
  }),
});
if (!r.ok) throw new Error(await r.text());
const { values } = (await r.json()).results[0];
for (const measure of ["labor.growth.jobs_change_5yr", "labor.growth.jobs_change_5yr_pct"]) {
  console.log(`${measure} (${values[measure].vintage}): ${values[measure].value}`);
}

With a live key this costs 7 credits. For a whole spreadsheet of places, send it as a file: see Send a file of places.

Reading it