Jobs API endpoint
Searches a company's public Phenom People career site (a white-labeled domain such as careers.whataburger.com or jobs.cvshealth.com). domain is the tenant's careers domain from its careers URL. Paged via offset/limit; limit is a best-effort page-size hint some tenants ignore, so count always reflects what actually came back.
/jobs/phenom/boardQuery parameters:
domain (required) — the tenant's careers domain from its careers URL (e.g. careers.whataburger.com, jobs.cvshealth.com). Must be a bare hostname; its resolved address is checked to exclude private/internal IPs.keywords (optional) — free-text keyword search.location (optional) — filter: location contains.category (optional) — filter: category contains.sort (optional) — sort order, default relevant. One of relevant, recent.offset (optional, int) — page offset, default 0.limit (optional, int) — page-size hint, default 10, max 100. Some tenants honor this exactly; others ignore it and return their own configured page size regardless — count in the response always reflects what actually came back, never the requested limit.Returns provider, company (the domain), count, total, and jobs[] (each: provider, id, title, company, company_logo_url, department, location, location_city, location_state, location_country, remote, employment_type, url, apply_url, req_id, posted_at, description_text, compensation, compensation_min, compensation_max, compensation_currency, compensation_period) plus source_url. Use /api/v1/jobs/phenom/job for the full HTML description. Phenom has no structured compensation field; the compensation_* fields are populated only when the description states an explicit pay figure near a salary/compensation keyword.
| Field | Filled in, of 20 checked | Values in the sample |
|---|---|---|
| provider | 20 | phenom in all 20 |
| id | 20 | |
| title | 20 | “Restaurant Shift Leader - Unit 492” and 19 other values |
| company | 20 | Whataburger in all 20 |
| company_logo_url | 20 | google.com |
| department | 20 | Restaurant Shift Leader in all 20 |
| location | 20 | “Fort Worth, TX, United States of America” and 17 other values |
| location_city | 20 | “Fort Worth” and 17 other values |
| location_state | 20 | TX (14), FL (3), LA (1) and 2 more |
| location_country | 20 | United States of America in all 20 |
| employment_type | 20 | Full time in all 20 |
| url | 20 | careers.whataburger.com |
| apply_url | 20 | whataburger.wd5.myworkdayjobs.com |
| req_id | 20 | |
| posted_at | 20 | 2026-03-31 to 2026-06-06 |
| description_text | 20 | median 303 characters |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| domain | string | Yes | Phenom tenant careers domain (careers URL) | careers.whataburger.com | |
| keywords | string | No | Free-text keyword search | ||
| location | string | No | Filter: location contains | ||
| category | string | No | Filter: category contains | ||
| sort | string | No | Sort order, default relevant Allowed values: relevant, recent. | ||
| offset | integer | No | Page offset, default 0 | ||
| limit | integer | No | Page size hint, default 10, max 100 (some tenants ignore this and return their own configured page size regardless) | ||
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/jobs/phenom/board?domain=careers.whataburger.com&sort=relevant&limit=10" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"provider": "phenom",
"company": "careers.whataburger.com",
"count": 10,
"total": 4773,
"jobs": [
{
"provider": "phenom",
"id": "JR10002958",
"title": "Restaurant Team Member, Overnight Shift - Unit 78",
"company": "Whataburger Restaurants",
"department": "Restaurant Team Member",
"location": "College Station, TX, United States of America",
"location_city": "College Station",
"location_state": "TX",
"location_country": "United States of America",
"employment_type": "Part time",
"url": "https://careers.whataburger.com/us/en/job/JR10002958",
"apply_url": "https://whataburger.wd5.myworkdayjobs.com/WAB_CAREERS/job/105-Dominik-Dr-College-Station-TX-77840-3314/Restaurant-Team-Member--Overnight-Shift---Unit-78_JR10002958/apply",
"req_id": "JR10002958",
"posted_at": "2026-08-21T00:00:00Z",
"description_text": "Welcome to Whataburger Careers…"
}
],
"source_url": "https://careers.whataburger.com/us/en/search-results?from=0&s=0&size=10"
}
}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/phenom/board?domain=careers.whataburger.com&sort=relevant&limit=10" \
-H "x-api-key: $CRAWLORA_API_KEY"