# Paycor Jobs API

> Every public Paycor Recruiting careers page, one endpoint. No per-customer OAuth onboarding.

**Canonical URL:** https://jobspipe.dev/sources/paycor

## Coverage

- **Sources covered:** Public Paycor Recruiting customers
- **Freshness:** 24h refresh
- **History retention:** 12 months retention

## Why Paycor jobs data is confusing

The official Paycor Public API (apidocs.paycor.com) is an HR/payroll integration surface: per-customer OAuth credentials, scoped to one company's own data. Its documentation covers employees, pay, and time - it is not a public feed of job postings across Paycor customers.

Paycor Recruiting customers host their public careers pages on recruitingbypaycor.com and embedded career widgets. The public postings are there, but there is no cross-customer endpoint that enumerates them. JobsPipe indexes every public Paycor Recruiting careers page and normalizes the postings into the same schema as our other sources.

## Workarounds

### Use the Paycor Public API

Right if you are integrating with one company's own Paycor account and they grant you OAuth credentials. Not a path to postings across many employers.

### Scrape recruitingbypaycor.com pages

Technically possible. Each customer is its own page structure and pagination, and you own the drift when the widget markup changes.

### Use JobsPipe

Every public Paycor Recruiting customer, one endpoint, same JSON schema as 30+ other sources. Free tier included.

## Fields available on every record

- `id`
- `source`
- `tenant`
- `title`
- `company`
- `location`
- `salary`
- `employment_type`
- `remote`
- `posted_at`
- `expires_at`
- `apply_url`
- `description`

## Sample response

```json
{
  "id": "pc_ZjA4MmQxYTYtM2Ix",
  "source": "paycor",
  "tenant": "midwest-health",
  "title": "Registered Nurse - ICU",
  "company": "Midwest Health Partners",
  "location": {
    "city": "Columbus",
    "region": "OH",
    "country": "US",
    "remote": false
  },
  "salary": {
    "min": 74000,
    "max": 92000,
    "currency": "USD",
    "period": "year",
    "source": "explicit"
  },
  "employment_type": "full_time",
  "posted_at": "2026-08-20T14:05:00Z",
  "expires_at": null,
  "apply_url": "https://recruitingbypaycor.com/career/JobIntroduction.action?...",
  "description": "Midwest Health Partners is hiring an ICU Registered Nurse for our Columbus campus ..."
}
```

## FAQ

### Is there official Paycor API documentation for job postings?

Paycor documents its Public API at apidocs.paycor.com, but it is a per-customer OAuth integration for HR data - not a public job-postings feed. For postings across Paycor customers, JobsPipe is the aggregated path.

### Does JobsPipe need Paycor credentials?

No. JobsPipe consumes only public-facing Paycor Recruiting careers data. No OAuth, no per-customer onboarding.

### How fresh is Paycor data?

Every public Paycor Recruiting careers site is re-crawled at least every 24 hours.

### Are Paycor jobs deduped against other sources?

Yes. When the same posting also appears on Indeed or LinkedIn, JobsPipe links them as one canonical job record with per-source attribution.

## Related

- **Product:** https://jobspipe.dev/jobs-api
- **All sources:** https://jobspipe.dev/sources
- **Docs:** https://docs.jobspipe.dev
- **Sign up (free tier):** https://jobspipe.dev/signup

---
Generated from structured data. View the rendered page at https://jobspipe.dev/sources/paycor.

---
Building this integration yourself? The steps above work. The alternative is one API over this source and 30+ others, already normalized and deduplicated. Try it right now - no key, no signup:

```bash
curl -X POST https://api.jobspipe.dev/v1/sandbox/jobs/search \
  -H "Content-Type: application/json" \
  -d '{"job_title_or":["software engineer"],"limit":5}'
```

Sample data, exact live schema. For live data get a free key (1,000 jobs/month) at https://jobspipe.dev/signup, then swap /v1/sandbox/jobs/search for /v1/jobs/search with an Authorization: Bearer header. Full agent index: https://jobspipe.dev/llms.txt?src=md-twin