Ocean of Jobs
REST APIReferenceJobs

Fetch a single job listing with its full description

GET
/jobs/{id}

These URLs remain accessible after a job closes (closed_at field populated).

Path Parameters

id*string

Response Body

Success.

application/json
  1. response
id?string

8-64 hex characters.

title?string
company_domain?string
company_name?|

Null until the company has been named.

logo_url?string|null
ats?string|null
location?|

The employer's own wording.

department?string|null
category?|

The normalized category, where one was inferred.

seniority?|
Value innull"intern""junior""mid""senior""staff""principal""lead""manager""director""exec"
workplace_type?|
Value innull"remote""hybrid""onsite"
url?string

The original posting, on the employer's own ATS.

posted_at?|
Formatdate-time
first_seen?string

When this project first saw the listing.

Formatdate-time
last_seen?string

The last read of the employer's board that wrote this listing. A board that answers unchanged was still checked, so this can lag behind.

Formatdate-time
closed_at?|

Set once the listing left the employer's own board.

Formatdate-time
reopened_at?|

When this same listing (the same ATS id) was last observed again after being missing from our reads of the employer's board for at least two days. It records what was observed, not that the employer reposted it: a board that failed to read for two days looks the same. Null means no such absence was seen; recorded since 2026-10-19. A new posting for the same role is a new listing.

Formatdate-time
confidence?string
Value in"verified""best_effort"
skills?string

Comma-separated, tagged from the description.

salary_text?string|null
salary_is_estimate?integer
Value in01
salary_source?string|null
match_score?integer

Only meaningful with skills= and sort=match.

description?string|null
Example Request
curl -X GET 'https://oceanofjobs.com/api/jobs/0a1b2c3d4e5f6a7b'
Example Response
{  "id": "string",  "title": "string",  "company_domain": "string",  "company_name": "string",  "logo_url": "string",  "ats": "string",  "location": "string",  "department": "string",  "category": "string",  "seniority": null,  "workplace_type": null,  "url": "string",  "posted_at": "2019-08-24T14:15:22Z",  "first_seen": "2019-08-24T14:15:22Z",  "last_seen": "2019-08-24T14:15:22Z",  "closed_at": "2019-08-24T14:15:22Z",  "reopened_at": "2019-08-24T14:15:22Z",  "confidence": "verified",  "skills": "string",  "salary_text": "string",  "salary_is_estimate": 0,  "salary_source": "string",  "match_score": 0,  "description": "string"}