A company that is hiring for a role is usually about to buy what that role needs. A new "Head of RevOps" means a CRM project. Five open "Data Engineer" roles mean a data stack budget. That is why hiring is one of the most used buying signals in outbound.
Clay can run any Apify Actor as an enrichment, so you can add live job data to every row of an account list. This post shows two setups with two small pay-per-use Actors I built:
- Your accounts are known. Get every open job, plus what changed since last week, from each company's own careers page.
- Your accounts are not known yet. Search Google Jobs for a role in a city and get the companies hiring for it.
Setup 1: open jobs for each company in your table
The ATS Job Scraper takes a company domain, finds its job board (Greenhouse, Lever, Ashby, Workable, Recruitee, SmartRecruiters) and returns a one-row summary:
{
"record_type": "company_summary",
"company_domain": "linear.app",
"total_active_jobs": 31,
"new_jobs": 2,
"new_job_titles": ["Senior Product Engineer", "Enterprise Account Executive"],
"jobs_by_department": { "GTM": 15, "Product": 13, "Operations": 3 },
"top_locations": { "North America": 19, "Europe": 8 },
"top_technologies": { "React": 8, "TypeScript": 8 }
}
(Example of the output format.)
In Clay:
- In your account table, click Add enrichment, search for Apify and pick Run Apify Actor.
- Connect your Apify account (API token from the Apify console, Integrations page).
- Choose the Actor
hirepulse/ats-job-pulse. - Enter the input as JSON and insert your domain column as the value:
{
"companies": ["<your Domain column>"],
"output_mode": "summary_only"
}
- Map
total_active_jobs,jobs_by_departmentandnew_job_titlesinto columns.
Now you can filter: "has 3+ open sales roles", "opened an engineering role this month", "hires in Europe".
Cost: $0.05 per company found. Companies whose job board cannot be found are free. 500 accounts cost at most $25.
Weekly changes: add "track_diff": true and a fixed "state_id". Each run then reports new_jobs and closed_jobs since the previous run with the same state_id, which is the real signal: a company that just started hiring.
Setup 2: find companies hiring for a role
The Google Jobs Scraper searches Google Jobs, which collects listings from LinkedIn, Indeed and company career sites:
{
"queries": ["revops manager", "salesforce administrator"],
"country": "US",
"location": "Austin,Texas",
"max_jobs_per_query": 100
}
Each job comes back with company, title, location, salary (parsed into salary_min and salary_max when shown), posted_ago and apply_url. When the apply link is on a company job board such as Workday, the full description is included too.
Run it once from the Apify console or from Clay with a single-row table, then import the dataset into Clay (Clay can pull the results of an Apify Actor run as a source). De-duplicate on company, and you have a list of companies that need what you sell, in the city you cover.
Cost: $0.005 per search that returns jobs plus $0.001 per job. 200 jobs cost about $0.21.
Tips
- Start with
summary_onlyin Setup 1. One row per company keeps Clay credits and Apify costs low. - Filter by title in the Actor, not in Clay:
"title_keywords": ["sales", "account executive"]returns only the jobs you care about. - You can test both on Apify's free plan before you commit. The Google Jobs Actor returns a 10-job preview there; full results need a paid Apify plan.
Limitations
- Setup 1 works for companies that use one of the six supported job boards. Companies on Workday, iCIMS or Taleo, or with a custom careers site, come back as not found and are not charged.
- Google Jobs results are what Google shows at search time; many listings are reposted on several boards, so de-duplicate by company and title.
Questions or a job board you need? Ask in the comments.
Top comments (0)