Job Radar Hub API
A public, tokengated read API of generic job-listing data.
Machine-readable spec: /openapi.json (OpenAPI 3.0). Source: github.com/woskam/job-radar-hub.
Getting an API key
No self-serve signup yet. Keys are issued by hand while this is small. Open an issue on job-radar-hub to request one, with a short note on what you're building.
Authentication
Every request needs a bearer token:
Authorization: Bearer <your_api_key>
Requests are rate-limited per key (set at issuance, typically 100/hour to start).
Endpoints
GET /health
No auth required. Liveness check.
curl https://hub.12getajob.com/health
→ {"status": "ok"}
GET /jobs
Returns matching listings. All query parameters are optional.
| Param | Meaning |
|---|---|
company | Exact company name match |
source | Exact source/ATS name match |
title_contains | Substring match on title |
location_contains | Substring match on location |
category | Exact match, e.g. fintech (same vocabulary as /companies) |
segment | Exact match, currently just startup or omitted |
active | 1 (default) or 0. Inactive listings are ones no longer seen in the source's latest scrape |
limit | Default 50, max 200 |
offset | Default 0 |
curl "https://hub.12getajob.com/jobs?company=Adyen&location_contains=Amsterdam" \
-H "Authorization: Bearer $API_KEY"
→ {
"count": 1,
"results": [
{
"source": "greenhouse",
"external_id": "5431973",
"title": "Backend Engineer",
"company": "Adyen",
"location": "Amsterdam, Netherlands",
"url": "https://...",
"description": "...",
"scraped_at": "2026-09-18T08:00:00+00:00",
"category": "tech",
"segment": null,
"last_seen_at": "2026-09-21T08:00:00+00:00"
}
]
}
MCP
The same data, over the Model Context Protocol, for MCP-aware agent clients.
| Endpoint | https://mcp.12getajob.com/mcp |
|---|---|
| Transport | Streamable HTTP |
| Auth | Same bearer token as the REST API |
| Tools | search_jobs, with the same filters as GET /jobs above |
Server card: /.well-known/mcp/server-card.json
What's not in here
No relevance scores, no application status, no letters or CVs. That's all personal data that stays on whichever Job Radar instance is pushing listings in. This API only ever sees the generic listing fields.
No "apply" or "send" endpoint, and there never will be one. This API stops at "here's the listing data". Whatever you do with it (draft something, apply, ignore it) happens entirely on your end.