# Cornerstone Jobs API: Getting Cornerstone Job Listings as Data

> Cornerstone OnDemand career sites have no public jobs API; their job JSON is tied to a browser session. What the job data holds and how to get it.

Source: https://cleanjobdata.com/articles/how-to-scrape-cornerstone-job-listings
Published: 2026-11-01

TL;DR: Cornerstone OnDemand career sites live at {company}.csod.com/ux/ats/careersite/{id}/home, and their job search JSON only works inside the career page's browser session, so a plain curl or fetch returns no jobs. Cornerstone's documented REST APIs are for its customers and use credentials created in the customer's own portal. Its job data has structured locations with ISO alpha-2 country codes and M/D/YYYY posting dates, a shortened description in search results with the full ad per job, and no salary, remote or employment-type field.

Cornerstone OnDemand has no public jobs API: its career sites load job data as JSON, but only inside the browser session the career page sets up, so a plain `curl` or `fetch` gets no jobs. To get Cornerstone job listings as data, you either use Cornerstone's authenticated customer APIs as the employer, or use a job data API that already collects and normalizes them.

CleanJobData collects jobs from Cornerstone career sites along with other ATS platforms and serves them in one schema, with structured locations and full descriptions. See the [Jobs API docs](https://cleanjobdata.com/docs/api/jobs).

## At a Glance

| | |
|---|---|
| Public jobs API | None |
| Career site | `https://{company}.csod.com/ux/ats/careersite/{careerSiteId}/home` |
| Job page | `https://{company}.csod.com/ux/ats/careersite/{careerSiteId}/home/requisition/{id}?c={company}` |
| Job JSON | Tied to the career page's browser session |
| Official API | Customer REST APIs, credentials from the customer's portal |
| Location | Structured city, state and ISO alpha-2 country |
| Dates | `M/D/YYYY` |
| Salary / remote / employment type | No fields |

## What Cornerstone Is

Cornerstone OnDemand (often shortened to CSOD) is a talent management suite best known for learning and training software, with a recruiting module that includes hosted career sites. Its customers are mostly large organizations: universities, banks, airlines, construction firms, retailers and manufacturers. It's used worldwide, and we've seen tenants in the US, Latin America, the UK and continental Europe, many with career sites in languages other than English.

## What a Cornerstone Career Site Looks Like

Each customer has its own subdomain on `csod.com`, and the career site sits under a numbered path:

```
https://acme.csod.com/ux/ats/careersite/4/home
        └ tenant ┘                      └ career site ID
```

Two values identify a board:

- **Tenant.** The subdomain, usually the employer's name or an abbreviation.
- **Career site ID.** A small number that differs by employer and can't be guessed from the tenant. Some employers have several career sites, for example one for external candidates and one for internal ones.

Some employers still link to an older URL such as `acme.csod.com/ats/careersite/search.aspx`. In the cases we checked, the same tenant also served the current `/ux/ats/careersite/` site. Individual jobs open at `.../home/requisition/{id}?c={tenant}`.

## Why a Plain Request Doesn't Return Jobs

A Cornerstone career site is a client-side application. Once it loads, it asks Cornerstone's servers for jobs, and those requests are only accepted as part of the browser session the page has started. Copied into `curl` on their own, they're rejected.

These are internal endpoints for Cornerstone's own front end, not a public API. They're undocumented, they can change without notice, and Cornerstone's terms govern how its sites are used. We don't publish a way around that, and it's not a stable base for a product.

## The Official Route: Cornerstone's REST APIs

Cornerstone publishes REST APIs for its customers, covering areas such as users, learning and recruiting. Access uses OAuth 2.0 client credentials that an administrator creates in the customer's own Cornerstone portal, so each set of credentials only reaches that customer's data. If you build tools for an employer that runs Cornerstone, that's the supported way to read its requisitions. It doesn't give you other employers' jobs.

## What Cornerstone Job Data Contains

- **Locations are structured.** Each job lists one or more locations with a city, a state or region, and an ISO alpha-2 country code such as `US`, `CL` or `BR`. There's no country-name lookup to do.
- **Dates are `M/D/YYYY`.** That's true even on Latin American and European tenants, where you might expect day-first dates. A posting has an effective date and an expiration date.
- **Search results carry a shortened description.** It's plain text, and on the board we compared it left out whole sections such as minimum and preferred qualifications. The full job ad is a separate, per-job record.
- **The full ad is one HTML block.** It's usually a table of label/value rows, and the labels depend on the employer and even on the job category within one employer: one university's staff postings had 22 rows, its student-worker postings 13. Some tenants supply a plain-text description instead.
- **A "location" on the job ad isn't always a place.** On some tenants it's a department or facility label like "Facilities Maintenance (215E2)". Use the structured locations for geography.
- **No salary, remote or employment-type field.** Pay and work arrangements, when mentioned, are in the description.

## What a Normalized Cornerstone Job Looks Like

Here's a Cornerstone job as it comes back from CleanJobData, trimmed (values illustrative):

```json
{
  "id": 51377214,
  "title": "Research Program Coordinator",
  "location": "Albuquerque, NM, US",
  "locations": [
    {
      "kind": "city_state_country",
      "city_name": "Albuquerque",
      "state_name": "New Mexico",
      "state_code": "NM",
      "country_code": "US",
      "is_primary": true
    }
  ],
  "published": "2026-10-20T00:00:00.000Z",
  "application_url": "https://acme.csod.com/ux/ats/careersite/4/home/requisition/1187?c=acme",
  "has_remote": false,
  "employment_type": null,
  "salary_min": null,
  "company": { "name": "Acme University" },
  "employer_id": "a1B2c3"
}
```

The description is the full job ad rather than the shortened search-result text; request it with `extra_fields=description`. Salary is only filled when the ad states pay in text; see the [salary extraction guide](https://cleanjobdata.com/guides/salary-data-extraction).

## Getting Cornerstone Jobs from CleanJobData

Cornerstone jobs come back in the same schema as every other source:

```bash
curl "https://api.cleanjobdata.com/jobs?title=coordinator&location=US&limit=20" \
  -H "Authorization: Bearer $CLEANJOBDATA_API_KEY"
```

Each Cornerstone employer has its own `csod.com` subdomain, so use `company_website_url` or `employer_id` to scope to one employer, and page with the cursor in `pagination.next_page`. Coverage depends on which employers are in the dataset, so check that the companies you care about appear before you rely on it. For how Cornerstone compares with other platforms, see the [ATS public job postings API list](https://cleanjobdata.com/articles/ats-public-job-postings-api-list).

- [Jobs API reference](https://cleanjobdata.com/docs/api/jobs) for every filter and response field
- [Playground](https://cleanjobdata.com/playground) to run queries without writing code
- [Pricing](https://cleanjobdata.com/pricing) — the Trial is free with no card required

## FAQ

### Does Cornerstone OnDemand have a public jobs API?

No. Cornerstone career sites load jobs from JSON that only works inside the career page's browser session, and Cornerstone's documented REST APIs need OAuth credentials created in the customer's own portal.

### What is the career site ID in a Cornerstone URL?

It's the number after `/ux/ats/careersite/` in the career site URL. It differs by employer, and one employer can have more than one career site.

### Do Cornerstone job postings include salary?

There's no structured salary field in Cornerstone's job data. When an employer publishes pay, it's written into the job ad.

### What date format does Cornerstone use?

Posting dates are `M/D/YYYY`, month first, on every tenant we've checked, including ones in Latin America and Europe.
