Career Page Jobs: careers page or domain in, jobs out | $1/1K
Pricing
$1.00 / 1,000 job rows
Career Page Jobs: careers page or domain in, jobs out | $1/1K
Paste careers page URLs or domains; get open jobs from the board each page links (Greenhouse, Lever, Ashby, Workday, Workable, Breezy HR, Personio, Rippling) or, if none, one matched to its domain. $0.001 per job row; unreadable pages and ATSes we don't read are free. Names: use Company Jobs.
Pricing
$1.00 / 1,000 job rows
Rating
0.0
(0)
Developer
Siftsmith
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
17 hours ago
Last modified
Categories
Security
Limited permissionsShare
Career Page Jobs
Paste a company's careers page URL or domain, get its open jobs. Career Page Jobs reads the job board the company's own page links (Greenhouse, Lever, Ashby, Workday, Workable, Breezy HR, Personio or Rippling) or, when it links none, a board matched to its domain, and returns its open jobs in one schema.
$1 per 1,000 job rows ($0.001 each), no subscription, no start fee. Pages we can't read, pages that list several employers' jobs, and ATSes we don't read are free. You need no ATS account, API key or proxy.
Built for recruiters and staffing agencies, job boards, and sales teams tracking which accounts are hiring.
Free coverage check: open an issue on this Actor's Issues tab with up to 20 careers page URLs or domains. We run them through this Actor for free and reply in the issue with the result for each: the job board and how many open jobs it lists, or the reason no jobs come back. Issues are public, so list only employers, not personal details.
Have company names instead of pages? A name on its own gets a free status row here that points you to Company Jobs, which takes names, domains and board URLs, at the same price.
How it works
- Give careers pages or domains, one per line:
https://figma.com/careers,https://www.notion.com/careers,vercel.com. Rows pasted from a spreadsheet work too, when they have a website or careers page column (Figma https://figma.com/careers). - The page's own link comes first. We read the page you gave, one listing page it links and the company's homepage (for a domain: its homepage, the careers page it links and one listing page), and collect the job boards they link.
- A linked board is charged only when it ties back to the company. Its website or job links are on the company's site, or the board's name is the domain's or the name the company's homepage gives itself. Each job row says how:
matchConfidence(highormedium) andmatchedBy: "careersPageLink". - No board link at all? The company is matched by its domain, as Company Jobs does (
matchedByis thennameorsite, notcareersPageLink).
Every input also gets one free status row (type company): found or not, why not, the board, openJobs and the jobs posted in the last 30 days.
How often it finds jobs: in a random sample of 50 single-employer careers pages and domains (October 2026), 17 returned jobs: 7 from the board the page links and 10 by matching the domain. The other 33 got a free status row saying why: for 19 we found no board on an ATS we read, 7 had a board we couldn't tie to the company, 4 had a page we couldn't read, 2 use an ATS we don't read, and 1 redirected off the company's site.
What it doesn't cover
- Careers pages on ATSes we don't read: iCIMS, Oracle Recruiting, SAP SuccessFactors, Taleo, UKG, Jobvite and SmartRecruiters (its job API's robots.txt asks automated tools not to read it). Each gets a free status row that names it (
unsupportedAts). A page that links a supported board as well is read, and its status row lists the others inalsoLinks. - Self-hosted job pages with no ATS behind them, and pages that load their board only in the browser: these fall back to matching by domain, which can miss. Ashby and Rippling boards are charged only when a page links them or you give the board.
- A page we can't read (its robots.txt asks us not to read it or can't be read, it is not found (404), it answers 403 or another error, a bot challenge blocks it with a 403 or 503, or it times out) gets a free status row with the reason in
notRead. We don't work around a block, and we don't guess the company from a page we couldn't read. Give the bare domain to have it matched by domain instead. - Pages that link several employers' boards (job aggregators, a VC portfolio board's own page, an ATS vendor's customer page, agencies): free, with the boards listed in
linkedBoardsso you can pass the right one explicitly (greenhouse:figma). A portfolio board given as the root of the firm's own careers host (https://jobs.firstround.com/) is read as the firm's domain, like any root address. It returns the firm's own open jobs, if its site links its board, and never the portfolio's. A real employer whose page links a board under another name (a subsidiary or old brand) with nothing tying it to the company's site is free too: that is the price of never charging for another company's jobs. - Workday boards past 1,000 jobs and Rippling boards past 1,000 listings: the first 1,000, as in Company Jobs.
- Company names, ready-made company lists and the XML job feed: those are in Company Jobs.
Input
| Field | What it does |
|---|---|
careerPages | Careers page URLs or company domains, one per line. A board you give explicitly (greenhouse:figma, a board URL) is read as given. A root address such as https://jobs.acme.com/ is read as the domain acme.com. |
minMatchConfidence | medium (default) or high. A linked board below it returns no jobs and costs nothing. |
titleKeywords, excludeTitleKeywords, locationKeywords, departmentKeywords, remoteOnly, countries, postedWithinDays, requirePostedDate | Filters, applied before charging: a job that doesn't pass is never charged. With postedWithinDays, Workday jobs listed as posted 30+ days ago are left out when the window is 30 days or less; with a longer window they count as undated (see requirePostedDate). |
onlyNewJobs, stateKey | For scheduled runs: return (and charge) only jobs an earlier run with the same state key didn't return. |
maxJobsPerCompany, maxItems | Caps per company and per run. The Console form starts at 10 per company; an API call with no cap gets up to 1,000 per company. |
includeDescription | Adds the job description where the board gives one. In Workday descriptions, email addresses, phone numbers and labelled recruiter or contact lines are removed automatically. The scrub matches patterns, so a contact written an unusual way, such as a name inside a sentence, can remain. Check descriptions if your board must show none. Descriptions from other ATSes are delivered as the employer wrote them. |
Output
Job rows (type job) and status rows (type company) are in the run's dataset, split by the Jobs and Companies (status) views. A job row has the same fields as in Company Jobs: title, location, country, remote, department, posted date, job URL, the ATS and board, and matchConfidence and matchedBy.
On a Greenhouse board that gives a work mode instead of a place (Hybrid, Distributed, N/A), the place and country come from the board's own office list, which can differ from the job's description (we don't read descriptions for places). The mode is in workplaceType, and a locationKeywords search matches it.
A status row adds what the page said: careersPage (the page the board was linked from), notRead (why a page couldn't be read), unsupportedAts and alsoLinks, or linkedBoards for a page that lists several employers.
How much does it cost?
$0.001 per job row returned, and nothing else. A company with 40 open jobs, all returned, costs $0.04. Status rows, companies not found, pages we couldn't read, multi-employer pages, unsupported ATSes, low-confidence matches and duplicate jobs are free. Set maxItems or the run's maximum charge to cap the spend.
If a run restarts (Apify moves it to another server, it is rebooted, or you resurrect it), it carries on from its own dataset: jobs already in it are not returned or charged again, and a company that already has its status row is not looked up again. That includes companies marked skipped or timedOut and companies whose jobs were cut short (jobsTruncated), so resurrecting a run that hit maxItems, its maximum charge or its timeout returns nothing new for them. To get the rest, start a new run with those companies. If a restarted run can't read its earlier rows in full, it stops with a message before charging anything more, so nothing is charged twice.
Related tools
- Workday Jobs: for companies on Workday, takes career site URLs, names or domains and lets Workday's own filters (countries, job families, time types, remote types, where the site offers them) narrow a large site. Same $0.001 per job row.
Support
Open an issue on this Actor's Issues tab with the input and what you expected; we read every one.