Jobs

ACS is who lives here. LODES is who works here. Same starters as demographics — workplace jobs, resident workers, industry mix, and commute flows from Census LEHD / OnTheMap.

Endpoint:GET /api/v1/jobs

Query

Provide exactly one starter. Omit every parameter to look up the caller IP.

NameRequiredDescription
ipOne of Public IPv4 or IPv6 address. Omit every parameter to use the caller.
zipOne ofA 5-digit U.S. ZIP code (ZCTA workplace and residence).
lat, lngOne of Decimal degrees. Prefers the census tract containing the point, then ZCTA, place, or county. lon is accepted.
city, stateOne of A U.S. place. state is a two-letter code or full name.
addressOne of A U.S. street address. Geocoded to the tract of that rooftop when one is available.

Request

curl "https://speckinsights.netlify.app/api/v1/jobs?zip=10001" \
  -H "Authorization: Bearer sk_live_YOUR_KEY"
curl "https://speckinsights.netlify.app/api/v1/jobs?address=350%20Fifth%20Avenue%2C%20New%20York%2C%20NY%2010118" \
  -H "Authorization: Bearer sk_live_YOUR_KEY"
curl "https://speckinsights.netlify.app/api/v1/jobs?city=New%20York&state=NY" \
  -H "Authorization: Bearer sk_live_YOUR_KEY"

Response

Counts are jobs, not people. A dual jobholder counts twice. Self-employed and some federal/military work are undercounted. Earnings bands are monthly: low ≤ $1,250, mid $1,251–$3,333, high above $3,333. Firm size is among private jobs (JT02), not all jobs. Alaska uses 2016 and Michigan uses 2021 — the latest years with workplace files.

FieldWhat it includes
workplaceJobs located in the geography — daytime workforce, industry, earnings, firm size.
residenceJobs held by people who live in the geography — nighttime workers.
daytime_indexWorkplace jobs ÷ resident jobs. Above 1 is a job center.
commute.intoTop origin areas for people who work here.
commute.outTop destination areas for people who live here.

Example

{
  "ip": null,
  "geo": {
    "ip": null,
    "city": "New York",
    "region": "New York",
    "region_code": "NY",
    "country": "United States",
    "country_code": "US",
    "postal_code": "10001",
    "latitude": 40.7506,
    "longitude": -73.9971,
    "timezone": null,
    "isp": null,
    "org": null,
    "network": {
      "household": true,
      "hosting": false,
      "vpn": false,
      "proxy": false,
      "tor": false,
      "relay": false,
      "anycast": false
    }
  },
  "jobs": {
    "zipcode": "10001",
    "geography": "zcta",
    "geography_id": "10001",
    "name": "10001, NY",
    "vintage": "2023",
    "workplace": {
      "jobs": 84210,
      "age": {
        "under_30": 22140,
        "age_30_54": 49280,
        "age_55_plus": 12790
      },
      "earnings": {
        "low": 6840,
        "mid": 14820,
        "high": 62550
      },
      "industry": {
        "agriculture": 40,
        "mining": 10,
        "utilities": 180,
        "construction": 1420,
        "manufacturing": 4100,
        "wholesale": 1680,
        "retail": 3920,
        "transportation": 2110,
        "information": 24680,
        "finance": 1890,
        "real_estate": 980,
        "professional": 22140,
        "management": 2640,
        "administrative": 3870,
        "education": 2140,
        "health_care": 4680,
        "arts": 720,
        "accommodation_food": 4120,
        "other_services": 1420,
        "public_admin": 1470
      },
      "firm_size": {
        "private_jobs": 78120,
        "employees_0_19": 8420,
        "employees_20_49": 7360,
        "employees_50_249": 14880,
        "employees_250_499": 6120,
        "employees_500_plus": 41340
      }
    },
    "residence": {
      "jobs": 14210,
      "age": {
        "under_30": 5120,
        "age_30_54": 11680,
        "age_55_plus": 3040
      },
      "earnings": {
        "low": 1680,
        "mid": 4120,
        "high": 14040
      },
      "industry": {
        "agriculture": 20,
        "mining": 0,
        "utilities": 80,
        "construction": 540,
        "manufacturing": 1680,
        "wholesale": 420,
        "retail": 1240,
        "transportation": 480,
        "information": 4120,
        "finance": 860,
        "real_estate": 310,
        "professional": 5240,
        "management": 420,
        "administrative": 780,
        "education": 980,
        "health_care": 1420,
        "arts": 210,
        "accommodation_food": 980,
        "other_services": 360,
        "public_admin": 700
      },
      "firm_size": null
    },
    "daytime_index": 13.02,
    "commute": {
      "into": [
        {
          "geography": "zcta",
          "geography_id": "94040",
          "name": "94040, CA",
          "jobs": 4120,
          "share": 4.9
        },
        {
          "geography": "zcta",
          "geography_id": "94041",
          "name": "94041, CA",
          "jobs": 3680,
          "share": 4.4
        },
        {
          "geography": "zcta",
          "geography_id": "94087",
          "name": "94087, CA",
          "jobs": 2910,
          "share": 3.5
        }
      ],
      "out": [
        {
          "geography": "zcta",
          "geography_id": "94043",
          "name": "94043, CA",
          "jobs": 6240,
          "share": 31.5
        },
        {
          "geography": "zcta",
          "geography_id": "94041",
          "name": "94041, CA",
          "jobs": 1880,
          "share": 9.5
        },
        {
          "geography": "zcta",
          "geography_id": "94301",
          "name": "94301, CA",
          "jobs": 1420,
          "share": 7.2
        }
      ]
    }
  },
  "notes": [],
  "resolution": {
    "input": "zip",
    "geography": "zcta",
    "geography_id": "10001",
    "tract": null,
    "confidence": "high"
  }
}

Illustrative payload. /demographics also returns jobs when a U.S. geography is found.