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
Path Parameters
idnumberRequiredThe unique numeric identifier of the job.
Example:
40652107What 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
PrimaryidnumberUnique identifier for the job listing.
titlestringThe official job title.
locationstring | nullNullableA human-readable location string (e.g., 'San Francisco, CA; Remote').
locationsarray | nullNullableStructured location rows resolved from `location` — city/state/country IDs, coordinates, and a per-row remote flag. See the Location object below.
publishedstringISO 8601 timestamp of when the job was published.
descriptionstring | nullNullableFull HTML description of the job.
application_urlstringThe direct URL to apply for the job.
employment_typestring | nullNullableValues: FULL_TIME, PART_TIME, CONTRACT, INTERN, TEMPORARY, FREELANCE, APPRENTICESHIP, VOLUNTEER, PER_DIEM, or OTHER.
experience_levelstring | nullNullablePrimary seniority level: EN (Entry), MI (Mid), SE (Senior), or EX (Executive).
has_remotebooleanWhether the job has any remote option at all. For finer-grained remote type, see remote_type below.
remote_typestring | nullNullablePresent when has_remote is true. Values: fully_remote, remote_country, remote_region, hybrid.
is_activebooleanIndicates if the job listing is currently active.
expired_atstring | nullNullableISO 8601 timestamp of when the job listing expired (if applicable).
languagestring | nullNullableThe primary language of the job listing (e.g., 'en', 'de').
salary_minnumber | nullNullableMinimum annual or hourly salary (if available).
salary_maxnumber | nullNullableMaximum annual or hourly salary (if available).
salary_currencystring | nullNullableISO currency code (e.g., USD, EUR).
salary_textstring | nullNullableHuman-readable salary string (e.g., '$120k - $150k').
experience_levelsarrayAn array of all detected experience levels for this job.
companyobject | nullNullableThe employer's company profile — name, logo, website, socials, headcount, and more. See the Company object below.
employer_idstringThis 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
NestedVerified 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.namestringLegal name of the company.
company.logostring | nullNullableURL to the company's logo image.
company.website_urlstring | nullNullablePrimary website URL.
company.descriptionstring | nullNullableA brief overview of the company.
company.industrystring | nullNullableThe primary sector (e.g., 'Fintech', 'SaaS').
company.employee_countstring | nullNullableEstimated size range (e.g., '11-50', '5001-10000').
company.linkedin_urlstring | nullNullableDirect link to the company's LinkedIn profile.
company.twitter_urlstring | nullNullableDirect link to the company's Twitter/X profile.
company.github_urlstring | nullNullableDirect link to the company's GitHub organization.
company.facebook_urlstring | nullNullableDirect link to the company's Facebook page.
company.instagram_urlstring | nullNullableDirect link to the company's Instagram profile.
company.youtube_urlstring | nullNullableDirect link to the company's YouTube channel.
company.teamarrayAn 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 ItemEach item in the locations[] array is a fully resolved geographic entity.
locations[].kindstring | nullNullableThe 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, orcountry: Single level resolved.
locations[].display_labelstring | nullNullableFormatted name, e.g., 'San Francisco, CA, US'.
locations[].city_namestring | nullNullableThe name of the city.
locations[].city_idnumber | nullNullableThe unique ID for the city (if available).
locations[].state_namestring | nullNullableThe name of the state or province.
locations[].state_idnumber | nullNullableThe unique ID for the state (if available).
locations[].state_codestring | nullNullableShort code for the state (e.g., 'CA').
locations[].country_namestring | nullNullableThe name of the country.
locations[].country_idnumber | nullNullableThe unique ID for the country (if available).
locations[].country_codestring | nullNullableISO 3166-1 alpha-2 country code.
locations[].timezonestring | nullNullableThe IANA timezone ID (e.g., 'America/Los_Angeles').
locations[].is_remotebooleanIndicates if this specific location entry represents a remote setting.
locations[].is_primarybooleanTrue 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"