Greenhouse & Lever Jobs Scraper - Hiring Signals
Pricing
from $3.00 / 1,000 jobs
Greenhouse & Lever Jobs Scraper - Hiring Signals
Scrape public Greenhouse and Lever job boards into one dataset. Filter roles, track new openings, and review per-job hiring signals with source links. No ATS login or key.
Pricing
from $3.00 / 1,000 jobs
Rating
0.0
(0)
Developer
Group Oject
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
23 days ago
Last modified
Categories
Share
Scrape current job postings from public Greenhouse and Lever career boards into one structured dataset. Give the Actor board URLs or provider:slug entries, filter the roles you care about, and export job titles, departments, locations, descriptions, apply links, and salary fields when published. Schedule repeat runs to identify newly seen openings.
Each job also gets a heuristic hiringSignalScore, role category, likely business needs, and an outreach angle for account research. These fields help prioritize review; they do not prove a company has budget, buying intent, or a particular decision-maker. The original job URL is included so you can verify the signal.
No Greenhouse or Lever login or API key is needed for public boards. An Apify account is required to run the Actor or call it through the Apify API.
Run the Actor | View input fields | See live pricing | Browse example tasks
How this ATS jobs scraper works
- Read the public Greenhouse or Lever JSON feed behind each board you provide.
- Normalize postings to a common schema and apply keyword, location, department, seniority, remote, date, and score filters.
- Write one dataset item per matching job, with
sourceAts,jobUrl, andapplyUrlfor verification. - Optionally remember job IDs across runs and mark or output only newly seen jobs for the same monitor.
It does not discover an employer's ATS from an arbitrary company website. It supports Greenhouse and Lever boards, not LinkedIn, Indeed, Ashby, Workday, or private applicant tracking systems.
What You Get
- Live jobs from Greenhouse and Lever career pages
- Normalized job title, ATS source, company slug, locations, department, seniority, role category, URLs, and dates
- Plain-text job descriptions, with optional raw HTML
- Remote, hybrid, and location detection
- Salary range fields when the ATS exposes compensation data
hiringSignalScorefrom 0 to 100hiringSignalTieras Low, Medium, or High- Lead-generation tags such as
new-role,urgent-hiring,go-to-market-hiring, andstrategic-technical-hiring - Likely business needs such as CRM, developer tooling, cloud infrastructure, security, data, marketing automation, or recruiting
- Suggested target buyer by department
- A concise, evidence-based outreach angle for personalized prospecting
signalEvidencecombining role, department, location, and the source URL- Monitor mode for scheduled runs that mark new roles
Common Use Cases
- Find companies actively hiring engineers, sales reps, marketers, or data teams
- Track startup hiring signals before outreach
- Build account-research lists from openings by department
- Monitor competitors and portfolio companies
- Feed job-change signals into a CRM, spreadsheet, data warehouse, or AI workflow
Ready-to-run examples
- B2B Buying Signal Job Monitor - sales, marketing, and growth hiring.
- New Jobs Alert - Greenhouse & Lever - an only-new-postings workflow.
- Remote Tech Jobs Monitor - remote technology roles.
- SaaS Startup Hiring Signals - startup account research.
These are saved task configurations. Check each task's companies and filters before using it for your own account list.
Works well with MCP and AI agents
Apify Actors can be discovered and run from the Apify MCP server, which makes this Actor a useful building block for AI agents that need fresh hiring data. The output is compact JSON with evidence URLs, role categories, seniority, departments, locations, salary fields when available, and a scored hiringSignalScore.
Good agent workflows:
- Sales research agent - find companies hiring for roles that may indicate a need for new tooling, then verify the context.
- Recruiting market agent - track remote, AI, data, engineering, and GTM openings across target companies.
- Competitor intelligence agent - monitor department growth and new strategic roles.
- Weekly account research - append fresh hiring signals into CRM notes before outbound or sales calls.
Scrape Greenhouse jobs
Use a board URL such as https://boards.greenhouse.io/stripe or a provider-prefixed slug such as greenhouse:stripe. The Actor reads Greenhouse's public board feed and can return the role title, department, location, job link, description, and compensation metadata when provided by that board.
Greenhouse's updated_at field is used for postedAt; it is not necessarily the original publication date. Consequently, postedWithinDays may include an older role updated recently.
Scrape Lever jobs
Use a board URL such as https://jobs.lever.co/palantir or a prefixed slug such as lever:palantir. The Actor reads Lever's public postings feed and maps its department, location, commitment, created date, salary range when supplied, and application URL into the same dataset schema.
You can mix Greenhouse and Lever sources in one run. A bare company name is ambiguous; use the board URL or the greenhouse: / lever: prefix.
How do I find a company's board URL or slug?
Open the company's public careers page and follow its job listings link. A URL beginning with boards.greenhouse.io/ or job-boards.greenhouse.io/ identifies a Greenhouse board; a URL beginning with jobs.lever.co/ identifies a Lever board. The first path segment is normally the board slug, for example stripe in https://boards.greenhouse.io/stripe. You can paste the full supported URL, which is less error-prone than typing a slug. The Actor does not search a company domain to discover its board.
Some employers use a custom careers page that embeds Greenhouse or Lever, and some move to another ATS. If a saved slug stops returning jobs, verify the employer's current careers link before assuming the Actor failed. A public board can also exist with zero open roles.
Input Examples
Use full career URLs:
{"careerUrls": ["https://boards.greenhouse.io/stripe","https://jobs.lever.co/palantir"],"keywords": [],"maxJobsPerCompany": 20,"maxTotalJobs": 30}
The board must exist and expose public jobs at run time. maxJobsPerCompany and maxTotalJobs are ceilings, not guaranteed counts. Start without keyword filters, inspect a few rows, then narrow the search. The default total cap is 100 jobs.
AI Agent Hiring Intelligence Feed
{"companySlugs": ["greenhouse:anthropic","greenhouse:databricks","greenhouse:stripe","lever:shieldai"],"keywords": ["engineer", "sales", "partnerships", "security"],"maxTotalJobs": 100,"includeDescription": false,"monitorMode": true,"onlyNewJobs": false,"stateKey": "ai-agent-hiring-intel"}
B2B Buying Signal Job Monitor
{"companySlugs": ["greenhouse:stripe","greenhouse:airbnb","lever:gohighlevel","lever:Flex"],"keywords": ["sales", "account executive", "marketing", "growth", "customer success", "partnerships"],"departments": ["Sales", "Marketing", "Customer Success", "Growth"],"maxJobsPerCompany": 40,"maxTotalJobs": 100,"monitorMode": true,"onlyNewJobs": true,"stateKey": "b2b-buying-signal-jobs"}
Or use provider-prefixed slugs:
{"companySlugs": ["greenhouse:stripe", "lever:palantir"],"remoteOnly": true,"monitorMode": true,"onlyNewJobs": true,"stateKey": "remote-saas-hiring-signals"}
Filter by role, location, and department
Use keywords for role terms such as data engineer, account executive, or security. Use locations for text matches such as London or Remote; departments and seniorities narrow the returned rows further. The text filters match any value within each list, while separate filter groups must all pass. remoteOnly keeps roles detected as remote.
{"companySlugs": ["greenhouse:stripe", "lever:palantir"],"keywords": ["engineer", "data"],"locations": ["Remote", "New York"],"minHiringSignalScore": 0,"maxTotalJobs": 100}
Set minHiringSignalScore above zero only after reviewing the scores in your niche. Salary and remote fields can be empty or inferred when the board omits them. Setting includeDescription: false omits plain-text descriptions and can reduce the text available to some filters and classifications.
Monitor new Greenhouse and Lever jobs
Save a focused input as an Apify task, run it once to establish a baseline, then schedule it. Keep monitorMode: true and the same stateKey on each run. Set onlyNewJobs: true when you want the dataset to contain only job IDs the monitor has not seen before.
The first monitor run treats matching roles as new. Later runs can legitimately return an empty dataset when no unseen matching jobs are found. Use a separate stateKey per campaign; changing sources or filters while reusing a key changes what that monitor considers previously seen. This Actor detects newly seen job IDs, not closed roles, net hiring velocity, or a verified posting date. It does not send alerts itself; connect an Apify schedule to a webhook or downstream automation if you need notifications.
Output: one row per job
The default dataset can be exported through Apify as JSON, CSV, or Excel. Each job item can include:
titlecompanySlugsourceAtsdepartmentroleCategorysenioritylocationlocationsremoteTypeemploymentTypesalaryMinsalaryMaxsalaryCurrencypostedAtisNewhiringSignalScorehiringSignalTierurgencyTagsmatchedKeywordsmatchedLocationsmatchedDepartmentsjobUrlapplyUrldescription
sourceAts identifies Greenhouse or Lever. postedAt comes from the source and has different semantics between providers. hiringSignalScore, hiringSignalTier, likelyBusinessNeeds, targetBuyer, and outreachAngle are rule-based research aids, not verified firmographic facts. signalEvidence includes the role, department, location, and URL so you can check the original posting.
The run's key-value store also contains SUMMARY and SOURCES records. Check SOURCES for per-board fetch counts and errors: a run can finish successfully even when one board fails and another produces jobs. Zero rows can mean no open roles, filters that removed all jobs, no new IDs in monitor mode, or an unavailable board.
Example job record
This shortened record illustrates the shape of the output; the company, role, score, and salary below are examples, not a claim about a current vacancy:
{"companySlug": "exampleco","sourceAts": "greenhouse","jobId": "123456","title": "Senior Data Engineer","department": "Engineering","location": "Remote - US","remoteType": "Remote","salaryMin": null,"salaryMax": null,"hiringSignalScore": 68,"hiringSignalTier": "Medium","isNew": true,"jobUrl": "https://boards.greenhouse.io/exampleco/jobs/123456","applyUrl": "https://boards.greenhouse.io/exampleco/jobs/123456"}
When monitorMode is off, isNew does not mean a posting was recently created. Use monitor mode and a stable state key to compare IDs across runs. companyName is formatted from the board slug, so it may not match the employer's official brand name.
Run this jobs scraper through the Apify API
Use the Apify API to trigger a run from your application. Store your Apify token in APIFY_TOKEN; do not put it in a public repository or URL:
curl -X POST \'https://api.apify.com/v2/acts/groupoject~hiring-signal-jobs-scraper/runs' \-H "Authorization: Bearer $APIFY_TOKEN" \-H 'Content-Type: application/json' \-d '{"companySlugs":["greenhouse:stripe"],"maxTotalJobs":10}'
The response includes a run ID and default dataset ID. Wait for the run to finish, then fetch that dataset's items. For scheduled delivery, save the input as a task and connect the completed run to a webhook, n8n, Make, or your own pipeline. An Apify API token is required for these account operations even though the public Greenhouse and Lever feeds do not require their own keys.
Pricing and billing
Base result price checked September 26, 2026: $3.00 per 1,000 dataset items ($0.003 each). 100 result items cost $0.30 in result fees.
The separate Actor start event is $0.00005 per billable start unit, with one unit per GB of configured memory and a minimum of one. It applies even when a run returns no results.
Each job row is a dataset item. Department, seniority and hiring scores are derived classifications, not verified company purchase intent. Start with the default limit of 100 jobs.
The live Pricing tab is authoritative for current rates, tier discounts and any separately charged usage. Set a maximum run charge and inspect a small sample before scaling.
Frequently asked questions
Do I need Greenhouse or Lever API credentials?
No. The Actor reads public job-board endpoints. You need an Apify account to run it, and an Apify API token for programmatic calls.
Can I paste a company's homepage instead of its careers board?
No. Supply a Greenhouse or Lever board URL or a provider:slug value. The Actor does not discover the ATS behind an arbitrary website.
Does the score mean a company will buy my product?
No. The score and suggested business needs are heuristic interpretations of a public job. They are not verified budgets, contacts, or purchase intent.
Does the monitor report closed or removed jobs?
No. It marks newly seen matching job IDs and can emit only new ones. It does not output removed jobs or calculate hiring velocity.
Why are salary, remote, or date fields missing?
The source board may omit them. Remote classification can be inferred from location and job text; salary is not fabricated. Greenhouse's date is an update timestamp, while Lever supplies a created date when available.
Why did my run succeed with zero results?
Check SUMMARY and SOURCES, then remove filters and try one known public board with a small cap. A source may have no jobs, no new matches, or an error recorded in SOURCES. Neither a successful Actor run nor an output cap guarantees results from a third-party board.
Why did a run succeed when one board failed?
The Actor processes boards independently so a broken or unavailable source does not discard jobs from other boards. The SOURCES record lists each board's fetch count, kept count, and error when present. Review it before treating a partial dataset as complete.
Why does a keyword search miss a role I can see on the careers page?
Filters are applied to the fields the public ATS feed supplies. Try the board with keywords: [], departments: [], and minHiringSignalScore: 0 first. If you set includeDescription: false, text found only in a description is unavailable to the keyword matcher. The per-company cap may also stop before the role you expect.