/health Public Check availability
Returns the current API version. Useful for health checks and deployment verification.
https://api.hiddenjobs.dev/v1/health Search remote tech jobs from your own product, agent, or workflow. Job descriptions are available through the API. Original application links stay protected by your Hidden Jobs Access subscription.
https://api.hiddenjobs.dev/v1 Start here
Create a key in the dashboard, add it as a bearer token, and call the jobs endpoint.
curl -G "https://api.hiddenjobs.dev/v1/jobs" \
--data-urlencode "q=typescript" \
--data-urlencode "remoteLocation=Europe" \
--data-urlencode "limit=10" \
-H "Authorization: Bearer hj_live_..." {
"data": {
"jobs": [
{
"id": "job-uuid",
"slug": "senior-typescript-engineer",
"title": "Senior TypeScript Engineer",
"description": "Full job description...",
"company": "Example Co",
"location": "Europe",
"hasApplicationLink": true
}
],
"totalCount": 1,
"page": 1,
"limit": 10,
"hasMore": false
}
} Security
Send your Hidden Jobs key in the Authorization header on every protected API request.
Sign in to Hidden Jobs and open the API keys dashboard. You can set a name, a per-minute limit, and an optional monthly limit.
Go to API keysAuthorization: Bearer hj_live_... jobs:read application-links:read account:read REST API
All REST paths below are relative to https://api.hiddenjobs.dev/v1.
/health Public Returns the current API version. Useful for health checks and deployment verification.
https://api.hiddenjobs.dev/v1/health /jobs jobs:read Search the Hidden Jobs board. Results include the title, description, company, location, skills, and a boolean indicating whether an application link exists. The original URL is never included here.
qKeywords, role, skills, or company.categoryJob category.employmentTypeEmployment type.jobTypeJob type.remoteLocationFor example Europe or Germany.page default 1Page number.limit 1–50Results per page.https://api.hiddenjobs.dev/v1/jobs?q=typescript&limit=10 /jobs/{idOrSlug} jobs:read Load the public details and full description for one job using its UUID or slug. The response contains hasApplicationLink, never the original application URL.
https://api.hiddenjobs.dev/v1/jobs/{idOrSlug} /jobs/{idOrSlug}/application-link Subscription This is the only endpoint that returns the original offer URL. It requires the application-links:read scope and an active Hidden Jobs Access subscription for the API key owner.
curl -X POST \
"https://api.hiddenjobs.dev/v1/jobs/{idOrSlug}/application-link" \
-H "Authorization: Bearer hj_live_..." Without an active subscription, the API returns 402 subscription_required. Job details and descriptions remain available. Only the original link is gated.
/me account:read Returns the key identity, scopes, and configured request limits.
https://api.hiddenjobs.dev/v1/me /me/usage account:read Returns monthly usage, the monthly limit, the per-minute limit, and the current usage month.
https://api.hiddenjobs.dev/v1/me/usage Troubleshooting
Errors use a JSON body with an error message and, where useful, a stable code.
401Missing, invalid, revoked, or expired API key.Send a valid hj_live_... bearer token.402Active subscription required for an application link.Ask the key owner to activate Hidden Jobs Access.403The key does not have the required scope.Update the key scopes from the dashboard.404Job or application link not found.Check the UUID or slug.429Per-minute or monthly limit reached.Respect Retry-After or increase the key limit.Want an AI-native integration?
Connect an MCP-compatible client to search jobs and read descriptions with natural language.