# Changelog of Dayforce Jobs Scraper — Company Job Boards (`adderleydata/dayforce-jobs-scraper`) Actor

- **URL**: https://apify.com/adderleydata/dayforce-jobs-scraper/changelog.md
- **Full Actor documentation**: https://apify.com/adderleydata/dayforce-jobs-scraper.md

## Changelog

### 0.1 — first version, 27 Sep 2026

- Any number of Dayforce job boards per run, by link (`https://jobs.dayforcehcm.com/en-US/acme/CANDIDATEPORTAL`, or the link of any posting on the board), by client and board code (`acme/CANDIDATEPORTAL`), or by client name alone, which is tried with the board code `CANDIDATEPORTAL`.
- Each board's settings are read first — the employer's name, the board's languages — then its list of postings, 25 to a page, from the same public JSON Dayforce's own job boards read. Every posting that will be saved then gets one request for its own record: its pay, employment type, job function and text.
- Each search carries the anonymous anti-forgery token Dayforce's board page fetches for every visitor, with no account and no login. A token request that is answered with a challenge page fails the run with a message that says so; the Actor never tries to get past a challenge.
- Output in the Adderley Data `job.v1` schema: every location as Dayforce formats it, with the first one's city, state or province code, postcode (where the address writes it after the state code) and ISO country; remote for a virtual-only location, and remote, hybrid or on-site from the employer's Telecommute Percentage where set; pay from the Hiring Rate, or the Hiring Min and Max Rate, in the posting's currency, hourly for a pay type of Hourly and with no period for Salary, the fields' own labels kept in `salary.raw`; employment types from the words of the Employment Indicator; the Job Function and Job Family as categories; start, closing and last-modified dates.
- Search terms use Dayforce's own search; location filters keep postings by place, country or a virtual location, and are applied to the list, so a posting they leave out costs no request.
- Incremental mode: `changeType` of NEW, UPDATED, REAPPEARED or EXPIRED; unchanged postings skipped, not charged and not requested. A change is a new title, location, virtual location or wording on the board's list; an edit only to pay, employment type or job function is not reported. A list that moves while it is read is read once more, and a run that still cannot read it whole declares nothing expired.
- Optional full descriptions from the posting's record — the board's opening and closing paragraphs around the posting's own text — with email addresses and phone numbers redacted by default and link addresses and images dropped from the HTML.
- A board Dayforce does not have is named once in the log and the run summary and not retried; a board its employer has switched off is reported the same way. Neither is counted as a block, and the other boards in the run are kept.
- The run's output is declared for Console's Output tab, the Run API and AI agents: postings in the default dataset, the run summary in the default key-value store.
- No recruiter names, emails or phone numbers in any field. The board's accessibility contact and correspondence address are never read, and `job.v1` has nowhere to put a person.
- 28 Sep 2026, before publication: the first run on Apify saved none of its five rows. Each row's `postedAt`, read from the board's list, came back from Apify's request queue as a date object rather than text, so the row failed the `job.v1` contract, and the run still ended as a success. The engine now stores that data as text, and a test puts it through the same conversion. A run in which every row fails the contract now fails with a message that names the first fault, and in incremental mode a posting whose row is not saved is not recorded as seen.
- 28 Sep 2026: contact details in descriptions. United Kingdom phone numbers written in their own formats — "07123 456789", "01234 567890", "+44 7700 900123", or eleven digits with no spaces — are now redacted like other phone numbers, and a number written after a country code and a one-digit area code ("+61 2 9123 4567") is redacted whole, where before "+61 2" was left in front of "\[redacted]". A figure after a pound or euro sign is never taken for a phone number. Only `description.text` and `description.html` change, and no posting is reported as UPDATED because of it.
