Get Job Detail

Retrieve one job by its numeric ID. You get the same job fields as in list responses, always including the full description. This endpoint does not support the fields / extra_fields query parameters—use list jobs if you need to trim the payload.

GET
https://api.cleanjobdata.com/jobs/:id

Path Parameters

idnumberRequired
The unique numeric identifier of the job.
Example: 40652107
What you get back
Same job payload as GET /jobs, with the full HTML/text description included. company and each item in locations only include keys we have for that employer and place—many listings are slimmer than the example below.
application_url may be omitted on some plans
On the Solo MCP developer plan, application_url is left out of every job response — use GET /jobs/:id/apply to unlock it for a specific job. Every other plan gets it directly, as shown below.
TypeScript

JobsApiJobDetail and JobDetailResponse are documented on the API types (TypeScript)

Response Schema

Returns one job object (not wrapped in data).

Example response
{
"id": 40652107,
"title": "Senior Full Stack Engineer (AI/Node.js)",
"location": "San Francisco, CA; Remote",
"locations": [1 items],
"description": "<h1>Job Description</h1><p>We are looking for a Senior Full Stack Engineer with experience in React, Node.js, and AI integrations...</p>",
"company": {18 keys},
"published": "2024-05-07T12:00:00.000Z",
"application_url": "https://stripe.com/jobs/listing/123",
"has_remote": true,
"is_active": true,
"expired_at": null,
"language": "en",
"employment_type": "FULL_TIME",
"experience_level": "SE",
"experience_levels": [1 items],
"salary_min": 180000,
"salary_max": 240000,
"salary_currency": "USD",
"salary_text": "$180,000 - $240,000 per year"
}

The Job Object

Primary
idnumber
Unique identifier for the job listing.
titlestring
The official job title.
locationstring | nullNullable
A human-readable location string (e.g., 'San Francisco, CA; Remote').
locationsarray | nullNullable
Structured location rows resolved from `location` — city/state/country IDs, coordinates, and a per-row remote flag. See the Location object below.
publishedstring
ISO 8601 timestamp of when the job was published.
descriptionstring | nullNullable
Full HTML description of the job.
application_urlstring
The direct URL to apply for the job.
employment_typestring | nullNullable
Values: FULL_TIME, PART_TIME, CONTRACT, INTERN, TEMPORARY, FREELANCE, APPRENTICESHIP, VOLUNTEER, PER_DIEM, or OTHER.
experience_levelstring | nullNullable
Primary seniority level: EN (Entry), MI (Mid), SE (Senior), or EX (Executive).
has_remoteboolean
Whether the job has any remote option at all. For finer-grained remote type, see remote_type below.
remote_typestring | nullNullable
Present when has_remote is true. Values: fully_remote, remote_country, remote_region, hybrid.
is_activeboolean
Indicates if the job listing is currently active.
expired_atstring | nullNullable
ISO 8601 timestamp of when the job listing expired (if applicable).
languagestring | nullNullable
The primary language of the job listing (e.g., 'en', 'de').
salary_minnumber | nullNullable
Minimum annual or hourly salary (if available).
salary_maxnumber | nullNullable
Maximum annual or hourly salary (if available).
salary_currencystring | nullNullable
ISO currency code (e.g., USD, EUR).
salary_textstring | nullNullable
Human-readable salary string (e.g., '$120k - $150k').
experience_levelsarray
An array of all detected experience levels for this job.
companyobject | nullNullable
The employer's company profile — name, logo, website, socials, headcount, and more. See the Company object below.
employer_idstring
This employer's stable ID. Not requestable via fields/extra_fields, but always present — capture it from any job to filter future /jobs queries to this exact employer via the employer_id param.

The Company Object

Nested

Verified metadata about the hiring organization, stored on the job object. Not every key is present for every listing—treat optional fields as nullable/missing.

company.namestring
Legal name of the company.
company.logostring | nullNullable
URL to the company's logo image.
company.website_urlstring | nullNullable
Primary website URL.
company.descriptionstring | nullNullable
A brief overview of the company.
company.industrystring | nullNullable
The primary sector (e.g., 'Fintech', 'SaaS').
company.employee_countstring | nullNullable
Estimated size range (e.g., '11-50', '5001-10000').
company.linkedin_urlstring | nullNullable
Direct link to the company's LinkedIn profile.
company.twitter_urlstring | nullNullable
Direct link to the company's Twitter/X profile.
company.github_urlstring | nullNullable
Direct link to the company's GitHub organization.
company.facebook_urlstring | nullNullable
Direct link to the company's Facebook page.
company.instagram_urlstring | nullNullable
Direct link to the company's Instagram profile.
company.youtube_urlstring | nullNullable
Direct link to the company's YouTube channel.
company.teamarray
An array of key team members. Each object contains:
  • name: Full name of the team member.
  • title: Job title or role (nullable).
  • linkedin_url: Link to their professional profile (nullable).
  • photo_url: URL to their profile photo (nullable).

The Location Object

Array Item

Each item in the locations[] array is a fully resolved geographic entity.

locations[].kindstring | nullNullable
The resolution granularity of this location.
  • city_state_country: Fully resolved.
  • city_country: City and country resolved.
  • state_country: State and country resolved, no specific city named.
  • city, state, or country: Single level resolved.
locations[].display_labelstring | nullNullable
Formatted name, e.g., 'San Francisco, CA, US'.
locations[].city_namestring | nullNullable
The name of the city.
locations[].city_idnumber | nullNullable
The unique ID for the city (if available).
locations[].state_namestring | nullNullable
The name of the state or province.
locations[].state_idnumber | nullNullable
The unique ID for the state (if available).
locations[].state_codestring | nullNullable
Short code for the state (e.g., 'CA').
locations[].country_namestring | nullNullable
The name of the country.
locations[].country_idnumber | nullNullable
The unique ID for the country (if available).
locations[].country_codestring | nullNullable
ISO 3166-1 alpha-2 country code.
locations[].timezonestring | nullNullable
The IANA timezone ID (e.g., 'America/Los_Angeles').
locations[].is_remoteboolean
Indicates if this specific location entry represents a remote setting.
locations[].is_primaryboolean
True if this is the primary location for the job.

Example Request

cURL
curl -X GET "https://api.cleanjobdata.com/jobs/40652107" \
  -H "Authorization: Bearer YOUR_API_KEY"