Jobs API endpoint
Returns a single Phenom People job with its full HTML/text description, category, and apply URL. domain is the tenant's careers domain (as in the board endpoint); id is the jobId/reqId from a board listing (e.g. JR10002958).
/jobs/phenom/jobQuery parameters:
domain (required) — the tenant's careers domain (as in the board endpoint).id (required) — the job id from a board listing (e.g. JR10002958).Returns a single Job object: 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_html, description_text, compensation, compensation_min, compensation_max, compensation_currency, compensation_period. 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 | In the sample | Value in the sample |
|---|---|---|
| provider | Has a value | “phenom” |
| id | Has a value | |
| title | Has a value | “Restaurant Shift Leader - Unit 492” |
| company | Has a value | “Whataburger Restaurants” |
| company_logo_url | Has a value | google.com |
| department | Has a value | “Restaurant Shift Leader” |
| location | Has a value | “Fort Worth, TX, United States of America” |
| location_city | Has a value | “Fort Worth” |
| location_state | Has a value | “TX” |
| location_country | Has a value | “United States of America” |
| employment_type | Has a value | “Full time” |
| url | Has a value | careers.whataburger.com |
| apply_url | Has a value | whataburger.wd5.myworkdayjobs.com |
| req_id | Has a value | |
| posted_at | Has a value | 2026-03-31 |
| description_html | Has a value | 5,509 characters |
| description_text | Has a value | 4,661 characters |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| domain | string | Yes | Phenom tenant careers domain | careers.whataburger.com | |
| id | string | Yes | Phenom job id from a board listing | JR10002958 | |
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/jobs/phenom/job?domain=careers.whataburger.com&id=JR10002958" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"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",
"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_html": "<div><p>Welcome to Whataburger Careers</p></div>…",
"description_text": "Welcome to Whataburger Careers…"
}
}Request schema
No body schema
Response schema
#/definitions/jobs.jobResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | jobs.Job | No | ||||
| data.ai_tools_mentioned | array | No | AITools lists canonical AI tool and platform names mentioned in the job title or description, such as "ChatGPT" or "GitHub Copilot". | |||
| data.apply_url | string | No | Link to the application page for the job. | |||
| data.benefits_mentioned | array | No | Benefits, Clearance, and Education contain canonical requirements and offerings mentioned in the job title or description. | |||
| data.company | string | No | Name of the hiring company. | |||
| data.company_logo_url | string | No | URL of the company's logo. | |||
| data.compensation | string | No | Compensation is the raw provider summary; the *Min/*Max/*Currency fields are parsed from it when the summary contains a recognizable pay range/amount. CompensationPeriod is the pay period ("hourly", "daily", "weekly", "monthly", "yearly") when the summary states one explicitly; empty when no period is stated (most single "$150K – $190K"-style ranges are implicitly annual but that is never asserted here). | |||
| data.compensation_currency | string | No | Currency code of the pay range, for example `USD`. | |||
| data.compensation_max | number | No | Upper end of the pay range stated in the posting. | |||
| data.compensation_min | number | No | Lower end of the pay range stated in the posting. | |||
| data.compensation_period | string | No | Pay period the posting states: `hourly`, `daily`, `weekly`, `monthly` or `yearly`. Omitted when the posting names none. | |||
| data.department | string | No | Department the job belongs to. | |||
| data.description_html | string | No | Job description as HTML. | |||
| data.description_text | string | No | Job description as plain text. | |||
| data.education_level_required | array | No | Education levels mentioned in the job title or description. | |||
| data.employment_type | string | No | Employment type the provider lists, such as full-time or contract. | |||
| data.id | string | No | Posting id within the provider. Use it with the provider's job endpoint. | |||
| data.location | string | No | Primary job location as the provider shows it. | |||
| data.location_city | string | No | LocationCity/State/Country are the structured components behind Location when the provider exposes them (or once the geo-enrich worker has resolved them from the free-text Location string) -- present only for the primary/first location, matching Location itself. | |||
| data.location_country | string | No | Country of the primary location. | |||
| data.location_state | string | No | State or region of the primary location. | |||
| data.locations | array | No | All locations listed for the job. | |||
| data.posted_age_text | string | No | Workday relative age ("Posted Today") | |||
| data.posted_at | string | No | RFC3339 / date when the provider gives one | |||
| data.provider | string | No | Applicant tracking system the posting comes from, for example `greenhouse` or `lever`. | |||
| data.remote | boolean | No | True when the posting is marked as remote. | |||
| data.req_id | string | No | Requisition id the company uses for the job. | |||
| data.security_clearance_required | array | No | Security clearances mentioned in the job title or description. | |||
| data.skills_mentioned | array | No | Skills lists canonical ESCO skill labels mentioned in the job title or description. | |||
| data.team | string | No | Team the job belongs to. | |||
| data.title | string | No | Job title as the company posted it. | |||
| data.url | string | No | Link to the job posting page. | |||
| data.workplace_type | string | No | Workplace arrangement the provider lists, such as remote, hybrid or on-site. | |||
| msg | string | No | OK |
| Status | Description | Schema |
|---|---|---|
| 400 | Bad Request | #/definitions/app.Response |
| 404 | Not Found | #/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/job?domain=careers.whataburger.com&id=JR10002958" \
-H "x-api-key: $CRAWLORA_API_KEY"