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/v1Endpoints
Endpoints
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/v1/professions | Paginated 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/skills | Skills 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/salaries | Salary summary — p25/p50/p75 bands per public source, with documented bias notes. |
| GET | /api/v1/cities | City demand — 10 US cities with weekly series, risk_demand and top professions. |
| GET | /api/v1/trends | Weekly 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/meta | Dataset 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
- 10 requests/hour per IP, global across all of /api/v1 (not per endpoint). No authentication.
- Successful responses include X-RateLimit-Limit: 10 and X-RateLimit-Remaining.
- Over the limit: HTTP 429 with X-RateLimit-Remaining: 0 and Retry-After (seconds until the oldest request leaves the window).
- /api/docs, /api/openapi.json and /health do not count; CORS preflight (OPTIONS) does not count either.
- Your IP is stored only as a SHA-256 hash — never raw.
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:
- Raw data, provenance, source_ref or external_ref — ADR-006/0012: only aggregates, never the source.
- Internal pipeline processes — job_query, skills_source, mock trend series, scraping boards or internal metrics.
- Per-city/per-state salary detail — /salaries returns the published per-source summary only.
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