A company that opens ten Account Executive roles is about to spend money on its sales team. A company that just posted "Head of RevOps" is about to pick its tools. Job postings are one of the few buying signals that companies publish themselves, for free, and they update every day.
The catch is that checking 50 careers pages by hand every Monday doesn't happen. This guide sets up a weekly report that does it for you:
- Input: your list of target accounts, as names or website domains.
- Output: one row per company with open roles, new roles this week, how much of the hiring is Sales, and which leadership roles are open.
- Later runs: the roles opened and closed since the last check.
No code, about 10 minutes, and it costs cents per run.
What the data looks like
I ran it on 9 well-known software companies on November 4, 2026:
| Company | Open roles | New in last 7 days | Sales share of open roles | Titles matching "sales" / "account executive" |
|---|---|---|---|---|
| Stripe | 754 | 79 | 36% | 179 |
| Datadog | 396 | 25 | 56% | 164 |
| Ramp | 168 | 13 | 41% | 18 |
| Notion | 146 | 14 | 40% | 8 |
| Figma | 145 | 13 | 37% | 38 |
| Vercel | 88 | 4 | 35% | 12 |
| Spotify | 85 | 0 (29 in 30 days) | 20% | 6 |
| Linear | 31 | 1 | 16% | 5 |
| Hugging Face | 6 | 0 | 0% | 0 |
Each row also has a list of plain-English signals. Here's what came back for Datadog:
- 25 new roles posted in the last 7 days
- Sales is the biggest hiring area: 222 of 396 open roles (56%)
- Go-to-market hiring: 222 Sales, 13 Marketing, 31 Customer Success & Support
- Hiring leadership: Director, Enterprise Sales (SLED); Director, People Business Partner; Director, Product Design (+22 more)
- Hiring in 25 countries; top: United States (211), Japan (32), France (28)
Some things you'd never spot by skimming a careers page: more than half of Datadog's open roles are in Sales, 90% of Ramp's roles are remote, and Ramp posts a salary range on 96% of its roles.
Step 1: Open the Actor
The tool is an Apify Actor called Career Page Jobs & Hiring Signals: https://apify.com/versant_nautilus/career-page-jobs
Click Try for free. You need an Apify account, and the free plan is enough to follow along.
Disclosure: I built this Actor.
Step 2: Paste your account list
In the Companies field, add one company per line. You can mix three kinds of input:
- a website domain:
stripe.com,datadoghq.com - a company name:
Notion,Hugging Face - a careers-page URL, if you know it:
https://jobs.lever.co/spotify
For a name or domain, the Actor finds the company's job board by itself. It checks the company's own /careers page for a job-board link, then tries the name on each supported board.
Then set:
- What to return: One hiring-signals report per company
-
Job title contains any of (optional):
account executive,sales. Reports always count all of a company's open roles, and the keywords add amatchingJobscount for just the roles you care about. -
Track changes under this name: any short name, e.g.
target-accounts-weekly. This makes the Actor remember what it saw, so the next run can tell you what changed.
If you prefer JSON input:
{
"companies": ["stripe.com", "datadoghq.com", "ramp.com", "Notion", "figma.com", "vercel.com",
"https://jobs.lever.co/spotify", "linear.app", "Hugging Face"],
"outputType": "companies",
"titleKeywords": ["account executive", "sales"],
"monitorId": "target-accounts-weekly"
}
Step 3: Run it
Click Start. Nine companies take about 15 seconds. The results tab shows one row per company, and two extra files are saved with every run:
- SUMMARY: which job board was found for each company, and how it was matched.
- EXPORT.csv: a spreadsheet-ready copy of the results.
A company that isn't found is listed in SUMMARY with a reason, and you aren't charged for it.
Step 4: Make it weekly
- Click Save as a new task so your company list and settings are kept.
- Open Schedules in the left menu, create a weekly schedule (e.g. Monday 08:00) and add your task to it.
The first run saves a baseline. From the second run on, every report adds:
-
newSinceLastRunandclosedSinceLastRun, for roles opened and closed since the previous check. - A signal like "12 roles opened and 9 closed since the last check".
Step 5: Send it where you work
Under the task's Integrations tab you can send each finished run to Slack, a webhook, Zapier or Make. With Zapier or Make you can add each week's rows to a Google Sheet, which gives you a running history of your accounts' hiring.
Variation: get only new Sales roles
To get the new postings themselves instead of company reports, set What to return to One row per job and turn on Only return jobs not seen in earlier runs:
{
"companies": ["stripe.com", "datadoghq.com", "ramp.com", "Notion", "figma.com"],
"outputType": "jobs",
"titleKeywords": ["account executive", "sales development", "sdr", "bdr"],
"locationKeywords": ["united states", "remote"],
"monitorId": "new-ae-roles",
"onlyNewJobs": true,
"includeDescription": false
}
The first run returns every matching role and saves them as the baseline. After that, each run returns only roles that weren't there last time. Each job row has the title, department, seniority, location, country, remote flag, salary (when the company publishes it), posted date and apply link.
What it costs
You pay per result. There's no monthly fee from the Actor.
- $0.01 per company report. The 9-company report above costs $0.09 a run, or about $0.40 a month weekly.
- $0.002 per job row. A thousand jobs cost $2. With only-new-jobs on, a weekly run only pays for that week's new roles.
Companies that aren't found cost nothing. You can also set Max results for the whole run to cap any run.
Where it works and where it doesn't
The Actor reads the official public job-board feeds of seven applicant-tracking systems: Greenhouse, Lever, Ashby, Workable, Recruitee, Teamtailor and Breezy HR, which are common among startups and scale-ups.
It doesn't cover Workday, iCIMS, SuccessFactors, Taleo, SmartRecruiters or fully custom careers sites yet, so many large enterprises will come back as "not found". Function (Sales, Engineering…) and seniority are rule-based estimates from the job title, so treat the percentages as close, not exact.
Calling it from code
The same input works through the API. In Python:
from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("versant_nautilus/career-page-jobs").call(run_input={
"companies": ["stripe.com", "datadoghq.com", "Notion"],
"outputType": "companies",
})
for report in client.dataset(run["defaultDatasetId"]).iterate_items():
print(report["company"], report["openJobs"], report["hiringSignals"][:2])
If you try it and a company you expected isn't found, paste its careers-page URL instead. If it's on a job board the Actor doesn't support yet, tell me which one in the Actor's Issues tab. That's how I'm deciding what to add next.
Top comments (0)