# BrassRing Jobs API: Getting BrassRing Job Listings as Data

> IBM Kenexa BrassRing has no public jobs API, and its job JSON only works inside a browser session. What its job data holds and how to get it normalized.

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

TL;DR: BrassRing, long sold as IBM Kenexa BrassRing, hosts career sites on sjobs.brassring.com, identified by a partnerid (the employer) and a siteid (the board). Its job search JSON only works inside the career page's browser session, so a plain curl or fetch returns no jobs, and the official integrations are set up for the employer and its approved vendors. Each employer defines its own job fields, so title, location and description sit in different fields per tenant, the only date is a last-updated date, and there is no salary field.

BrassRing 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` returns no jobs. To get BrassRing job listings as data, you either go through the employer's own BrassRing integration, or use a job data API that already collects and normalizes them.

CleanJobData collects jobs from BrassRing career sites along with other ATS platforms and serves them in one schema, with each employer's custom fields mapped to the same title, location and description fields as every other source. See the [Jobs API docs](https://cleanjobdata.com/docs/api/jobs).

## At a Glance

| | |
|---|---|
| Public jobs API | None |
| Career site | `https://sjobs.brassring.com/TGnewUI/Search/Home/Home?partnerid={partnerId}&siteid={siteId}` |
| Identifiers | `partnerid` (employer) and `siteid` (board) |
| Job JSON | Tied to the career page's browser session |
| Official route | Integrations set up for the employer and its approved vendors |
| Fields | Defined per employer; no fixed location field |
| Date | Last updated only; no posted date |
| Salary | No field |
| Remote | No flag |

## What BrassRing Is

BrassRing is an enterprise applicant tracking system with a long history: it was part of Kenexa, which IBM acquired in 2012, and for years it was sold as IBM Kenexa BrassRing. It's built for large, high-volume employers: big retailers, defense and manufacturing companies, universities and public-sector organizations. One customer can have tens of thousands of open jobs.

## What a BrassRing Career Site Looks Like

BrassRing career sites share one host, `sjobs.brassring.com`, and the tenant is carried entirely in two query parameters:

```
https://sjobs.brassring.com/TGnewUI/Search/Home/Home?partnerid=12345&siteid=5678
                                                      │                │
                                                      employer         board
```

- **`partnerid`** identifies the employer (BrassRing's "client").
- **`siteid`** identifies one career site for that employer. Many employers run several: external and internal boards, separate brands, or different languages.

Job pages are deep links on the same host with `PageType=JobDetails` and a `jobid` added. Follow the employer's careers link and note both numbers.

## Why a Plain Request Doesn't Return Jobs

The career site is a single-page application. After it loads, it requests job data from BrassRing's servers, and those requests only succeed within the browser session the page has set up. Sent on their own from `curl` or a script, they don't return jobs.

These are undocumented internal endpoints for BrassRing's own front end, not a public API. They can change without notice, the site's terms govern their use, and we don't publish a way around that.

## The Official Route

BrassRing's integration options are set up for its client companies and their approved vendors, with access tied to the employer's account and contract. If you're building something for an employer that uses BrassRing, work with that employer to get access. It isn't a way to read other employers' jobs.

## What BrassRing Job Data Contains

The defining feature of BrassRing data is that **every employer designs its own job fields.** BrassRing gives each tenant a set of generic custom fields and lets the employer decide what each one means. The employer's title, location and description can live in differently named fields from one tenant to the next. Across the tenants we've looked at:

- **Location has no fixed shape.** One employer splits it into city, state and country fields. Another has a single "store - city" string with no state. Others give only a city, or only a country.
- **Neighboring fields aren't always places.** The fields shown next to a job title can hold a street address, a subsidiary's legal name or an employment class code such as "NC-Exempt", so you can't just join them into a location.
- **The only date is "last updated."** There's no separate posted date in BrassRing's job data. On the tenants we checked, last-updated dates were spread over months with day-to-day variation, so they're a usable proxy, but an edited job can look newer than it is.
- **Date formats vary by locale.** `25-Sep-2026`, `09 Oct 2026` and `09/25/2026` all appear, and a Portuguese-language board writes "Out" for October.
- **No salary field, no remote flag.** Pay and remote status, when mentioned at all, are in the description text.
- **Employment type depends on the employer.** It's only there if the employer created a field for it.

Paging is offset-based, and sorting on fields with many ties, such as a shared date or a common title like "Cashier", can make jobs drop between pages. A board that doesn't exist also looks the same as a real board with no jobs, so an empty result isn't proof that a tenant is gone.

## What a Normalized BrassRing Job Looks Like

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

```json
{
  "id": 51298730,
  "title": "Systems Engineer II",
  "location": "Huntsville, AL, US",
  "locations": [
    {
      "kind": "city_state_country",
      "city_name": "Huntsville",
      "state_name": "Alabama",
      "state_code": "AL",
      "country_code": "US",
      "is_primary": true
    }
  ],
  "published": "2026-10-27T00:00:00.000Z",
  "employment_type": "FULL_TIME",
  "has_remote": false,
  "salary_min": null,
  "salary_max": null,
  "company": { "name": "Acme Defense" },
  "employer_id": "a1B2c3"
}
```

Values that don't resolve to a real city, state or country are dropped, so a legal entity name never becomes a location. `published` is BrassRing's last-updated date, and salary is only filled when the description states pay. See the [location normalization guide](https://cleanjobdata.com/guides/job-location-normalization).

## Getting BrassRing Jobs from CleanJobData

BrassRing jobs come back in the same schema as every other source, so there's no per-tenant field handling on your side:

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

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. To see how BrassRing compares with the other platforms, read 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 BrassRing have a public jobs API?

No. BrassRing career sites load jobs from JSON that only works inside the career page's browser session, and BrassRing's integrations are set up for the employer and its approved vendors.

### What are partnerid and siteid in a BrassRing URL?

`partnerid` identifies the employer, and `siteid` identifies one of its career sites. You need both to point at a specific BrassRing job board.

### Why do BrassRing jobs have different fields for each employer?

BrassRing lets each employer define what its custom job fields mean, so title, location and description can live in different fields per tenant. Location in particular may be one combined field, several separate ones, or just a country.

### Does BrassRing show when a job was posted?

Not directly. The only date in BrassRing's job data is the last-updated date, which works as a rough proxy for the posting date.
