Give your agent job data it can cite
Building a job-search agent, a sourcing assistant, or retrieval over labour-market data? Every row carries field_sources, which marks each field published (the employer said it) or inferred (we derived it). Your agent can then tell the two apart instead of presenting guesses as facts. Closed roles stay in the ledger with a closure date, so an agent can say “this role closed on 12 September” instead of sending someone to a dead link.
Start with llms.txt or the worked examples, which include tool definitions for Claude and GPT. Honest limit: there is no MCP server today; use the OpenAPI spec or plain HTTP. 1,000 records a month are free, no card.
Explore is free forever, no card: 1,000 records a month against every endpoint. Outgrow that and Starter is €29 / month for 10,000 records, or Growth is €80 / month for 60,000 records with the incremental delta feed — both self-serve, no call required. See the full ladder →
GET https://api.jobopportunitiesapi.org/public/facetsLoading live counts…
One job row, as a key returns it. A real row captured on 2026-08-03, shown as an example, not a live call. The counts above are what you can check without one.
{
"data": [
{
"id": "8f2c…", "slug": "backend-engineer-8f2c1a4b",
"title": "Backend Engineer", "company": "Nordbridge Labs",
"company_slug": "nordbridge-labs",
"category": "Engineering", "category_confidence": 0.82,
"country": "DE", "city": "Berlin",
"remote": "hybrid", "remote_inferred": false,
"employment_type": "Full-time", "seniority": "Senior",
"posted_at": "2026-07-12T09:00:00Z",
"last_verified_at": "2026-08-03T04:00:00Z",
"status": "live", "closed_at": null, "closed_reason": null,
"source": "greenhouse",
"source_type": "ats", "provider_type": "employer_ats",
"has_description": true,
"description": "We're looking for a backend engineer to join our platform team, "
+ "building the services that route millions of jobs a day. You'll work mostly in "
+ "Go, own a service end to end, and be on a small rotation for on-call. Remote "
+ "within the EU, or hybrid from our Berlin office two days a week.",
"field_sources": {
"remote": "published", "employment_type": "published",
"category": "inferred", "seniority": "inferred",
"salary": "absent", "location": "published",
"posted_at": "published", "description": "published",
"source_type": "inferred"
}
}
],
"next_cursor": null,
"has_more": true
}Keyless requests return the ledger’s shape: counts, coverage and freshness. Job and company rows need a key. A free Explore key takes about a minute, needs no card, and gives you 1,000 records a month that never expire.
Get a free key →- Enter your email.
- Click the link we send.
- Press “Create a free Explore key”. No card, and nothing to cancel.
field_sources marks every field published, inferred or absent — an agent that has to decide how much to trust a field can read the answer instead of guessing it.closed_at and closed_reason, so an agent can report what happened instead of following a link to nothing.GET /public/ai-prompt returns a live, keyless, machine-generated brief covering the shape of the data, the gates and how to page it — paste it straight into a system prompt. Try it: api.jobopportunitiesapi.org/public/ai-prompt.Honest limit, stated plainly: there is no MCP server today. Integrate through the OpenAPI spec or plain HTTP. If you specifically need one for Claude Desktop or Cursor, tell us — it is the most-requested integration and we are tracking real demand before we build it.