# Paycom Jobs API: Getting Paycom Job Listings as Data

> Paycom career pages have no public jobs API; their job JSON only works inside the page's browser session. What Paycom job data holds and how to get it.

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

TL;DR: Paycom career pages live at paycomonline.net/v4/ats/web.php/jobs?clientkey={clientkey}, where the clientkey is a 32-character hex ID for the employer. The job JSON behind them is tied to the career page's browser session, so a plain curl or fetch returns no jobs, and Paycom has no public developer API for job postings. Paycom's job data is fairly rich: search results carry a shortened description, while each job has the full text, a structured address, a remote type, a position type and, on many postings, a pay range with a currency.

Paycom has no public jobs API: its career pages load job data as JSON, but only inside the browser session the page sets up, so a plain `curl` or `fetch` gets no jobs back. To get Paycom job listings as data, you either work through the employer's own Paycom account, or use a job data API that already collects and normalizes them.

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

## At a Glance

| | |
|---|---|
| Public jobs API | None |
| Career page | `https://www.paycomonline.net/v4/ats/web.php/jobs?clientkey={clientkey}` |
| Job page | `https://www.paycomonline.net/v4/ats/web.php/portal/{clientkey}/jobs/{id}` |
| Identifier | `clientkey`, a 32-character hex string |
| Job JSON | Tied to the career page's browser session |
| Official API | No public developer API for job postings |
| Salary | Pay range and currency on many jobs |
| Remote | Remote type on each job |

## What Paycom Is

Paycom is a US payroll and HR software company based in Oklahoma City. It sells one system for payroll, HR, time tracking, benefits and recruiting, mostly to small and mid-sized US employers. Applicant tracking is part of that system, so an employer that runs payroll on Paycom often posts its jobs there too.

## What a Paycom Career Page Looks Like

Every Paycom career page sits on one shared host, and the employer is identified by a query parameter:

```
https://www.paycomonline.net/v4/ats/web.php/jobs?clientkey=A1B2C3D4E5F60718293A4B5C6D7E8F90
                                                          └ employer's clientkey
```

The **`clientkey`** is a 32-character hexadecimal string. It isn't derived from the company name, so you can't guess it; follow the "Careers" or "Apply" link from the employer's own website and copy it from the URL.

Each job has its own page under the same host, of the form `.../web.php/portal/{clientkey}/jobs/{id}`. Candidates can filter the search by position type, work environment, education level, category, shift and travel, which gives you a sense of the attributes Paycom stores per job.

## Why a Plain Request Doesn't Return Jobs

The career page loads, then asks Paycom's servers for its jobs. Those requests are only accepted as part of the browser session that page load creates. Sent on their own from `curl` or a script, they're rejected.

That's an internal endpoint for Paycom's own front end, not a public API. It's undocumented, it can change without notice, and Paycom's terms govern how its site is used. We don't publish a way around it, and it isn't a stable base for a product.

## The Official Route

Paycom doesn't offer a public, self-serve developer API for job postings. Integrations with Paycom data are arranged through the employer's own Paycom account. If you work with a specific Paycom employer, talk to them about what Paycom can provide. There's no official way to read other employers' jobs.

## What Paycom Job Data Contains

- **Two levels of detail.** Search results carry the title, a location string, the position type and a description cut to roughly 150 characters. Each job's full record has the complete description and everything below.
- **A structured address.** The full record includes a city, a region code and a country, so you aren't left parsing a free-text location. Some jobs also list secondary locations as plain strings.
- **Pay on many postings.** When the employer publishes pay, there's a minimum, a maximum and a currency, plus a human-readable salary range string.
- **Remote type.** Jobs carry a remote type, so remote and hybrid postings are labeled rather than inferred from text.
- **Position type.** Full time, part time and similar values are stored per job.
- **A posted date.** The full record includes the date the job was posted.
- **The employer name, not its website.** The hiring organization's name is included. The logo it carries is hosted by Paycom, so it doesn't tell you the employer's real domain.

## What a Normalized Paycom Job Looks Like

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

```json
{
  "id": 51402288,
  "title": "Warehouse Associate - 2nd Shift",
  "location": "Tulsa, OK, US",
  "locations": [
    {
      "kind": "city_state_country",
      "city_name": "Tulsa",
      "state_name": "Oklahoma",
      "state_code": "OK",
      "country_code": "US",
      "is_primary": true
    }
  ],
  "published": "2026-10-29T14:05:00.000Z",
  "application_url": "https://www.paycomonline.net/v4/ats/web.php/portal/A1B2C3D4E5F60718293A4B5C6D7E8F90/jobs/123456",
  "employment_type": "FULL_TIME",
  "has_remote": false,
  "salary_min": 38000,
  "salary_max": 44000,
  "salary_currency": "USD",
  "salary_text": "$38,000 - $44,000 per year",
  "company": { "name": "Acme Logistics" },
  "employer_id": "a1B2c3"
}
```

The description is the full text, not the shortened search-result version; add `extra_fields=description` to include it. See the [salary extraction guide](https://cleanjobdata.com/guides/salary-data-extraction) for how pay fields are handled and the [location normalization guide](https://cleanjobdata.com/guides/job-location-normalization) for reading `locations`.

## Getting Paycom Jobs from CleanJobData

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

```bash
curl "https://api.cleanjobdata.com/jobs?title=warehouse&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. For how Paycom 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 Paycom have a public jobs API?

No. Paycom career pages load jobs from JSON that only works inside the page's own browser session, and Paycom doesn't offer a public developer API for job postings.

### What is a Paycom clientkey?

It's the 32-character hexadecimal ID in a Paycom career page URL that identifies the employer. You find it by following the careers link on the employer's own website.

### Do Paycom job postings include salary?

Many do. When the employer publishes pay, Paycom stores a minimum, a maximum and a currency for the job, plus a salary range string.

### Why does a Paycom job description look cut off?

Paycom's search results only include the first part of each description, roughly 150 characters. The full text is in each job's own record.
