JRIJob Risk Index

Public API

Job Risk Index — Public API

Machine-readable data for LLMs and agents.

The same public data published on this site — 83 professions, 165 skills, salaries, city demand and weekly trends — served as JSON. No authentication. One simple protection: a rate limit of 10 requests/hour per IP.

Base URL

Base URL

All endpoints below live under this root:

https://jobriskindex.com/api/v1

Endpoints

Endpoints

MethodEndpointDescription
GET/api/v1/professionsPaginated list of professions — id, title, category, risk_score, timeline and public URL. Accepts limit (1–50, default 20) and offset (≥0).
GET/api/v1/professions/{id}Full public profile for one profession (title, aliases, skills, entry route, FAQs, sources, stats) — no internal fields.
GET/api/v1/skillsSkills catalog — slug, label, profession_count and URL, ordered like the /skills/ index.
GET/api/v1/skills/{slug}One skill plus the professions that require it to build (skills_to_acquire) and to enter (skills_to_enter).
GET/api/v1/salariesSalary summary — p25/p50/p75 bands per public source, with documented bias notes.
GET/api/v1/citiesCity demand — 10 US cities with weekly series, risk_demand and top professions.
GET/api/v1/trendsWeekly trends — rising and falling professions with deltas between the two latest complete weeks.
GET/api/v1/search?q=…Search professions by id, title or aliases — max 3 results (built for LLM lookups).
GET/api/v1/metaDataset metadata — updated date, counts, documentation links and rate-limit policy.

Examples

Examples

List professions

$ curl "https://jobriskindex.com/api/v1/professions?limit=3"
{
  "professions": [
    {
      "id": "data-entry-clerk",
      "title": "Data Entry Clerk",
      "category": "admin",
      "risk_score": 98,
      "timeline": "0-2 years",
      "url": "https://jobriskindex.com/profession/data-entry-clerk/"
    },
    {
      "id": "bank-teller",
      "title": "Bank Teller",
      "category": "finance",
      "risk_score": 95,
      "timeline": "0-2 years",
      "url": "https://jobriskindex.com/profession/bank-teller/"
    }
  ],
  "total": 83,
  "limit": 3,
  "offset": 0
}

Dataset metadata

$ curl https://jobriskindex.com/api/v1/meta
{
  "dataset": "Job Risk Index public dataset (exported web/src/data/*.json)",
  "updated": "2026-08-10",
  "counts": {
    "professions": 83,
    "skills": 165,
    "cities": 10
  },
  "docs": {
    "openapi": "https://jobriskindex.com/api/openapi.json",
    "swagger": "https://jobriskindex.com/api/docs"
  },
  "rate_limit": {
    "limit_per_hour": 10,
    "window": "1h",
    "scope": "per IP, across all /api/v1 endpoints (no auth)",
    "excluded": ["/api/docs", "/api/openapi.json", "/health", "OPTIONS preflight"]
  },
  "site": "https://jobriskindex.com"
}

One skill with its professions

$ curl https://jobriskindex.com/api/v1/skills/python
{
  "slug": "python",
  "label": "Python",
  "demand": "high",
  "profession_count": 12,
  "build": [
    {
      "id": "computer-network-architect",
      "title": "Computer Network Architect",
      "demand": "high",
      "url": "https://jobriskindex.com/profession/computer-network-architect/"
    },
    {
      "id": "data-engineer",
      "title": "Data Engineer",
      "demand": "high",
      "url": "https://jobriskindex.com/profession/data-engineer/"
    }
  ],
  "enter": []
}

Rate limit

Rate limit

Data policy

Data policy

The API serves only the public aggregated data already published on the website (the same exported datasets that feed the data hub andthe profession pages). It never exposes:

Public citations on each profile (O*NET, BLS, Anthropic) are kept — they are already published attributes of the page. Data freshness and counts are available inGET /api/v1/meta. The dataset changelog lives at/data/changes/.

Interactive docs

Interactive docs

Browse and try every endpoint in the Swagger UI, or fetch the machine-readable OpenAPI specification:

Related pages: skills index · weekly trends · cities · methodology