Jobs API endpoint
Lists a UKG Pro Recruiting (formerly UltiPro) tenant's public opportunities, paged via limit/offset. tenant and board both come from the careers URL https://recruiting.ultipro.com/{tenant}/JobBoard/{board}. Each posting carries a brief description inline.
/jobs/ukg/boardLists a UKG Pro Recruiting (formerly UltiPro) tenant's public opportunities, in the shared Job shape.
Query parameters:
tenant (required) — the tenant code from the careers URL https://recruiting.ultipro.com/{tenant}/JobBoard/{board} (e.g. BUI1004BMDI).board (required) — the job-board UUID from the careers URL (e.g. 6b442184-52a5-4635-8db5-5aa4bed2a563).search (optional) — free-text keyword search.limit (optional, int) — page size, default 25, max 50.offset (optional, int) — page offset, default 0.Each posting carries a brief description inline (there is no single-job endpoint). Returns provider, company (the tenant), count, total, and jobs[] (each: provider, id, title, company, department, location, locations[], remote, employment_type, req_id, url, apply_url, posted_at, description_text, compensation, compensation_min, compensation_max, compensation_currency, compensation_period) plus source_url. UKG never returns a per-opportunity company name, so each job's company is the tenant code. UKG has no structured compensation field; the compensation_* fields are populated only when the brief description states an explicit pay figure near a salary/compensation keyword (many postings state no figure at all, in which case they stay empty).
| Field | Filled in, of 20 checked | Values in the sample |
|---|---|---|
| provider | 20 | ukg in all 20 |
| id | 20 | |
| title | 20 | “Sr Operations Manager” and 16 other values |
| company | 20 | BUI1004BMDI in all 20 |
| department | 20 | “Management” and 8 other values |
| location | 20 | “Albuquerque, NM, USA” and 9 other values |
| locations | 20 | median 1 entry |
| location_city | 20 | “Albuquerque” and 9 other values |
| location_state | 20 | CA (7), MN (5), NM (3) and 5 more |
| location_country | 20 | USA in all 20 |
| employment_type | 17 | Full-time in all 17 |
| url | 20 | recruiting.ultipro.com |
| apply_url | 20 | recruiting.ultipro.com |
| req_id | 20 | |
| posted_at | 20 | 2026-08-18 to 2026-10-12 |
| description_text | 20 | median 576 characters |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| tenant | string | Yes | UKG tenant code (careers URL) | BUI1004BMDI | |
| board | string | Yes | UKG job-board UUID (careers URL) | 6b442184-52a5-4635-8db5-5aa4bed2a563 | |
| search | string | No | Free-text keyword search | ||
| limit | integer | No | Page size, default 25, max 50 | ||
| offset | integer | No | Page offset, default 0 | ||
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/jobs/ukg/board?tenant=BUI1004BMDI&board=6b442184-52a5-4635-8db5-5aa4bed2a563&limit=10" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"provider": "ukg",
"company": "BUI1004BMDI",
"count": 10,
"total": 26,
"jobs": [
{
"provider": "ukg",
"id": "59c3b35f-eba9-47a6-8632-738fb862c370",
"title": "Installer",
"company": "BUI1004BMDI",
"department": "Construction",
"location": "Portland, OR, United States",
"remote": false,
"employment_type": "Full-time",
"req_id": "INSTA002822",
"url": "https://recruiting.ultipro.com/BUI1004BMDI/JobBoard/6b442184-52a5-4635-8db5-5aa4bed2a563/OpportunityDetail?opportunityId=59c3b35f-eba9-47a6-8632-738fb862c370",
"apply_url": "https://recruiting.ultipro.com/BUI1004BMDI/JobBoard/6b442184-52a5-4635-8db5-5aa4bed2a563/OpportunityDetail?opportunityId=59c3b35f-eba9-47a6-8632-738fb862c370",
"posted_at": "2026-07-15T18:15:44Z",
"description_text": "Window & Door Installer …"
}
],
"source_url": "https://recruiting.ultipro.com/BUI1004BMDI/JobBoard/6b442184-52a5-4635-8db5-5aa4bed2a563/JobBoardView/LoadSearchResults"
}
}Request schema
No body schema
Response schema
#/definitions/jobs.boardResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | jobs.BoardResponse | No | ||||
| data.company | string | No | Company or board name the postings belong to. | |||
| data.count | integer | No | Number of jobs returned in this response. | |||
| data.jobs | array | No | Job postings on the board, one item per posting. Job record, 32 fields: ai_tools_mentioned, apply_url, benefits_mentioned, company, company_logo_url, compensation, compensation_currency, compensation_max, compensation_min, compensation_period, department, description_html and 20 more. Described under iCIMS Single Job API. | |||
| data.provider | string | No | Applicant tracking system the board was read from, for example `greenhouse` or `lever`. | |||
| data.source_url | string | No | URL the data was read from. | |||
| data.total | integer | No | Total number of open postings on the board, when the provider reports it. | |||
| msg | string | No | OK |
| Status | Description | Schema |
|---|---|---|
| 400 | Bad Request | #/definitions/app.Response |
| 503 | Service Unavailable | #/definitions/app.Response |
Use environment variables for secrets and keep Crawlora API keys server-side.
curl -X GET "https://api.crawlora.net/api/v1/jobs/ukg/board?tenant=BUI1004BMDI&board=6b442184-52a5-4635-8db5-5aa4bed2a563&limit=10" \
-H "x-api-key: $CRAWLORA_API_KEY"