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

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

## Changelog

### 0.1 — first public version

- Any number of Recruitee careers sites per run, by company name (`acme`) or by any `acme.recruitee.com` link: the careers site, a job, its apply page or the API. One request per board returns the whole board, every job's text and structured pay included.
- A company's own careers domain (`careers.example.com`) is refused with a message asking for its `recruitee.com` name: the domain does not say which Recruitee account is behind it, and no request is sent to a domain Recruitee does not run.
- Output in the Adderley Data `job.v1` schema: the company name Recruitee gives with each job; the department as category; Recruitee's own location label and every other place the job is open in, with city, region and postcode from the primary location and Recruitee's ISO country code; employment type from Recruitee's employment type code; work arrangement from the remote, hybrid and on-site options, the most flexible ticked when there are several; published, last-modified and closing dates in UTC.
- Pay from Recruitee's structured salary: minimum, maximum, currency and period, with `salary.raw` worded as Recruitee's careers page prints a range (`€115,000 - €130,000 per year`). A currency and period with no numbers, or a range of 0 to 0, is no salary. Where Recruitee's salary is empty and the job's text states a range, the range is read from that sentence. No range, no salary.
- Filters on title keywords; location, country or work arrangement (every location a job lists counts); department; and days since the job was published.
- Incremental mode: `changeType` of NEW, UPDATED, REAPPEARED or EXPIRED; unchanged jobs skipped and not charged. A change is found by comparing the job's fields and a hash of its text; a formatting change alone is not an update, and neither is a new `updatedAt` or board position on its own.
- Optional full descriptions — the job description, then the job requirements — from the same request as the listing, with email addresses, phone numbers and personal profile addresses redacted by default. `description.html` keeps each link's words and drops its address, and drops images.
- A name Recruitee does not know fails that board's request once, with a message saying so, and is never counted as a block. The other boards in the run are kept, and nothing is declared expired. A run in which every board is missing ends with an empty dataset and a message naming them.
- The run's output is declared for Console's Output tab, the Run API and AI agents: jobs in the default dataset, the run summary in the default key-value store.
- No recruiter names, emails or phone numbers in any field: the application mailbox address, the application form's questions and the cover and sharing images in Recruitee's feed are never read, and `job.v1` has nowhere to put a person.
