To monitor company career pages for new jobs, enter public employer websites or supported career-board URLs into the Company Careers Jobs Scraper. Export current postings first, review employer coverage, then save a Task in Hiring changes mode. Repeat that Task to detect published openings and changes.
Here, hiring research means watching companies' public job postings. It can help you maintain a job feed, research employer activity or identify accounts expanding a particular team. The Actor does not collect applicants, provide employee contact details or tell you whom a company actually hired.
Choose a supported public career board
The Actor supports Greenhouse, Lever, Ashby, Workable, Recruitee and Personio. A direct public board URL is the most reliable input. When you enter a company homepage, the Actor performs bounded discovery for supported career links; JavaScript-only pages or unrelated systems can remain unresolved.
| Input | What happens |
|---|---|
| Supported ATS board URL | Collects that employer board directly. |
| Company website or career page | Attempts to find a supported linked board. |
| Recognized example-company name | Uses the documented verified directory mapping. |
| Unrecognized name alone | Requests a website instead of guessing an ATS identifier. |
A supported job-detail URL can select its entire employer board, rather than just one posting. Workable links shaped /j/shortcode do not identify the employer board; use its company board URL or website. Personio requires the employer's public XML feed to be enabled.
Export current jobs before setting up monitoring
- Open the Actor, choose Try for free, sign in and open the editable Input form.
- Fill Company websites or career pages with one public board to begin. Use Bulk edit for several entries.
- Choose Current jobs and set Maximum results to 20 for a small review.
- Leave filters empty until you have checked the board and its published fields.
- Review pricing and set a Run options spending cap, then start.
- Open the Run report, review source coverage and inspect the posting and application links.
- Download Flat CSV for imports or JSON for nested locations and salary ranges.

This image shows the public read-only reference. Edit values in Apify Console. The following JSON uses a board from the Actor documentation; replace it with your chosen employer's public board.
{
"companies": ["https://jobs.lever.co/applydigital"],
"mode": "export",
"maxResults": 20
}The normal form does not add demo employers automatically. If using an old Task, check its existing startUrls and companyDomains: those legacy lists merge with Companies. Remove unwanted old examples before running.
Filter jobs using published facts
Use literal title phrases, description phrases, locations, countries, work arrangements, employment types or department keywords. Different fields combine with AND. Multiple values in one field usually mean ANY; title matching can explicitly require ALL.
| Filter | How it works |
|---|---|
| Title keywords | Case-insensitive literal phrases. Boolean operators are not a special query language. |
| Countries and workplace type | Use structured source values. Unknown values stay unknown. |
| Posted within N days | Uses source publication time when supplied, not observation time. |
| Minimum salary | Requires currency and period. No currency conversion or annualization. |
For example, engineer plus remote plus USD yearly salary constraints can exclude postings whose source lacks structured remote or salary fields. That does not prove those roles are unsuitable. Inspect the report's exclusion reasons, and explicitly include unknown values where the filter supports it.
Remote classification does not establish worldwide work eligibility. A city label is not automatically a structured country. firstSeenAt is your monitor's first observation, not necessarily the date the employer opened the role.
Understand your export and preserve source identity
One row represents a published source posting, not necessarily one unique role or one planned hire. Employers can publish similar roles for several offices. Preserve source identity instead of deduplicating everything with the same title.
| Purpose | Keep these fields |
|---|---|
| Upsert the same source posting | jobKey, jobId, provider, boardId |
| Read and apply | title, description, url, applyUrl |
| Employer and geography | companyName, companyDomain, locations, countries |
| Pay and timing | salaryRanges, currency/period, source dates and checkedAt |
| Monitor changes | changeType, changedFields, previousValues, matchesFilter |
Missing scalar facts remain null. Several geographic salary tiers are retained separately; they are not merged into a fabricated range. The flat CSV contains readable location and salary text, while JSON preserves arrays. An ATS migration can change posting identity; no automatic cross-platform deduplication is promised.
Continue larger exports and check every employer
The global cap is delivered rows, not a guarantee of available jobs. A large early employer can fill it. For export sampling, maxResultsPerCompany can cap each board after filters, but intentionally omitted matches are not delivered later. Start a fresh collection without that cap for full inventory.
- Read
REPORT,RUN_SUMMARYandSOURCE_CHECKSfor visited boards, incomplete sources and pending rows. - Open Next batch input and copy
PAGINATION.nextInputinto a new run after its predecessor finishes. - Let that input restore sources and filters. Do not add Companies or a new example collection to the continuation.
- Save each batch's dataset and combine results by source identity.
- Check retry timing before repeatedly attempting a failing source.
Continuation completes the retained collection; a fresh collection performs a new live check. Failed sources may have retryNotBefore delays. Free accounts allow up to five source inputs and 100 delivered rows per collection across continuations. Paid input accepts up to 200 sources and 50,000 delivered rows per run within other limits.
Monitor new postings and changes automatically
Choose Hiring changes, equivalent to mode: "changes". Save a Task and attach an Apify schedule. A Task supplies its identity; manual or API polls should reuse a stable monitorId. The monitor creates its own baseline, separate from your earlier export.
| Event | Meaning |
|---|---|
CURRENT | Matching postings in the first successful baseline. |
NEW / REOPENED | New source appearance or an observed return of the retained same ID. |
CHANGED | Tracked published fields changed. |
ENTERED / EXITED | A posting entered or left your filter; it can still be open. |
REMOVED | A posting disappeared from a complete successful board check. |
For a feed, upsert CURRENT, NEW, REOPENED, ENTERED and CHANGED by jobKey; remove that key on EXITED or REMOVED. A role aging beyond a date filter can generate EXITED. That is different from disappearing from the employer board.
A failed or incomplete board check preserves its last successful snapshot and does not create false removals. Removal still does not establish that someone was hired. Monitor mode rejects nonzero per-company sampling caps. Complete queued work through continuation before treating a poll as finished.
Keep the same sources and filters. Changing them creates a new baseline. Overlapping runs of one monitor are rejected. Monitor pricing includes successful board checks as well as delivered change rows, so an unchanged or silent baseline check can cost money.
Run the career-page workflow through Apify MCP
Connect a compatible AI agent to https://mcp.apify.com and authorize Apify using the MCP setup instructions. Supply an employer board and ask the agent to review coverage before creating a repeating monitor.
Inspect x_guru/company-careers-jobs-scraper
using Apify MCP. Use this public board:
https://jobs.lever.co/applydigital
Export current jobs with maxResults 20.
Set callOptions.maxTotalChargeUsd to 0.25.
Read REPORT, RUN_SUMMARY and SOURCE_CHECKS.
Export all dataset pages to CSV and retain
jobKey, applyUrl and source dates.
Explain incomplete boards and nextInput.
Do not call missing jobs closed. Do not
start a schedule without my review.Use your own board URL. The agent should inspect with fetch-actor-details, launch with call-actor, follow status with get-actor-run, read reports with get-key-value-store-record and paginate get-dataset-items. For later monitor checks, retain the agreed identity and filter scope.
For your own application, follow the Actor API and Dataset export guide. If a direct integration is enough, the public Greenhouse Job Board API and Lever Postings API document those sources. The Actor directory covers other independent workflows.



