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://job-radar-hub.example/health
→ {"status": "ok"}

GET /jobs

Returns matching listings. All query parameters are optional.

ParamMeaning
companyExact company name match
sourceExact source/ATS name match
title_containsSubstring match on title
location_containsSubstring match on location
active1 (default) or 0 -- inactive listings are ones no longer seen in the source's latest scrape
limitDefault 50, max 200
offsetDefault 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"
    }
  ]
}

MCP

The same data, over the Model Context Protocol, for MCP-aware agent clients.

Endpointhttp://136.65.194.129:5301/mcp
TransportStreamable HTTP
AuthSame bearer token as the REST API
Toolssearch_jobs -- 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.