Build with Hidden Jobs.

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.

Base URL
https://api.hiddenjobs.dev/v1
RESTAPI keys
JOBSSearch & detail
JSONOpenAPI 3.1

Start here

Make your first request

Create a key in the dashboard, add it as a bearer token, and call the jobs endpoint.

Search jobscurl
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_..."
Example response200 JSON
{
  "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

Authenticate with an API key

Send your Hidden Jobs key in the Authorization header on every protected API request.

01

Create a key

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 keys
02

Send the bearer token

Authorization: Bearer hj_live_...
Available scopes jobs:read application-links:read account:read

REST API

Endpoints

All REST paths below are relative to https://api.hiddenjobs.dev/v1.

GET /health Public

Check availability

Returns the current API version. Useful for health checks and deployment verification.

https://api.hiddenjobs.dev/v1/health
GET /jobs jobs:read

Search jobs

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
GET /jobs/{idOrSlug} jobs:read

Get a job

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}
GET /me account:read

Inspect the current key

Returns the key identity, scopes, and configured request limits.

https://api.hiddenjobs.dev/v1/me
GET /me/usage account:read

Read usage

Returns monthly usage, the monthly limit, the per-minute limit, and the current usage month.

https://api.hiddenjobs.dev/v1/me/usage

Troubleshooting

Errors and limits

Errors use a JSON body with an error message and, where useful, a stable code.

StatusMeaningWhat to do
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?

Use MCP instead.

Connect an MCP-compatible client to search jobs and read descriptions with natural language.

Read MCP docs