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.
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.
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).
GET /healthNo auth required. Liveness check.
curl https://job-radar-hub.example/health
→ {"status": "ok"}
GET /jobsReturns 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 |
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://job-radar-hub.example/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"
}
]
}
The same data, over the Model Context Protocol, for MCP-aware agent clients.
| Endpoint | http://136.65.194.129:5301/mcp |
| Transport | Streamable HTTP |
| Auth | Same bearer token as the REST API |
| Tools | search_jobs -- same filters as GET /jobs above |
Server card: /.well-known/mcp/server-card.json
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.