Jobs

Workplace vs residence jobs, industry, commute. Same starters as /demographics.

Endpoint:GET /api/v1/jobs

Query

Exactly one starter. Omit all to use the caller IP.

NameRequiredDescription
ipOne ofPublic IPv4 or IPv6. Omit all parameters to use the caller.
zipOne of5-digit U.S. ZIP (ZCTA workplace and residence).
lat, lngOne of Decimal degrees. Tract if the point is inside one, then ZCTA, place, or county. lon accepted.
city, stateOne ofU.S. place. state is a two-letter code or full name.
addressOne ofU.S. street address. Geocoded to rooftop tract when 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. Dual jobholders count twice. Earnings bands (monthly): low ≤ $1,250, mid $1,251–$3,333, high above $3,333. Firm size is private jobs (JT02). Alaska 2016, Michigan 2021.

FieldReturns
workplaceJobs in the geography — industry, earnings, firm size.
residenceJobs held by residents of the geography.
daytime_indexWorkplace jobs ÷ resident jobs.
commute.intoTop origin areas for workers here.
commute.outTop destination areas for residents.

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"
  }
}

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