Greenhouse, Ashby & Lever Jobs Scraper API (B2B Hiring Signals) avatar

Greenhouse, Ashby & Lever Jobs Scraper API (B2B Hiring Signals)

Pricing

$0.80 / 1,000 job postings

Go to Apify Store
Greenhouse, Ashby & Lever Jobs Scraper API (B2B Hiring Signals)

Greenhouse, Ashby & Lever Jobs Scraper API (B2B Hiring Signals)

Scrape live job postings, salary bands & B2B hiring signals from Greenhouse, Ashby & Lever in one unified schema ($0.80/1K). MCP & n8n ready.

Pricing

$0.80 / 1,000 job postings

Rating

0.0

(0)

Developer

Antonio Ramos Gómez

Antonio Ramos Gómez

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Security

Limited permissions

Share

What does Greenhouse, Ashby & Lever Jobs Scraper API do?

Greenhouse, Ashby & Lever Jobs Scraper API is an enterprise-grade B2B hiring intelligence and job board aggregator. It scrapes live job postings, salary bands, departments, workplace arrangements (Remote/Hybrid/On-site), and direct application URLs across the three dominant applicant tracking systems (ATS) used by tech scaleups, AI unicorns, and Fortune 500 enterprises:

  • Greenhouse (boards.greenhouse.io/<company>) — Stripe, Figma, Airbnb, Discord, Databricks, DoorDash, Pinterest, Gitlab.
  • Ashby (jobs.ashbyhq.com/<company>) — Linear, Cursor (Anysphere), Perplexity, Ramp, Vercel, Supabase, Retool.
  • Lever (jobs.lever.co/<company>) — Zoox, Mistral AI, Spotify, Netflix, Palantir, Kraken.

Instead of paying for three separate scrapers or dealing with slow, brittle headless browsers, this Actor connects directly to public ATS endpoints. You get structured, normalized hiring signals in seconds at just $0.80 per 1,000 job postings with zero start fee.


Why scrape B2B hiring signals from ATS boards?

Job postings are among the highest-intent corporate buying signals available:

  1. B2B Sales Triggers & Account Prospecting: When a target enterprise opens 10+ listings for “Data Engineer” or “AI Researcher”, they are actively allocating budget for cloud compute, data warehousing, and AI tooling.
  2. Niche & AI Job Boards: Power curated job directories (e.g., “Remote AI Jobs”, “Y Combinator Startup Careers”, “Web3 Opportunities”) with automated daily syncs.
  3. Salary & Compensation Benchmarking: Track real-time base salaries and equity bands published under pay-transparency laws (NYC, California, Colorado, EU).
  4. Competitor Growth & Attrition Monitoring: Detect when competitors scale up their sales team or downsize specific departments.
  5. Headhunter & Recruiter Lead Generation: Spot companies experiencing rapid headcount growth before recruiters on LinkedIn do.

Key Features & Comparison

FeatureThis Actor (ramgoxxx)Fragmented Single-ATS ScrapersHeadless Browser Crawlers
Supported ATS PlatformsGreenhouse + Ashby + LeverOnly 1 platform per actorInconsistent
Pricing Model$0.80 / 1,000 jobs (Pay-Per-Event)$1.50 – $3.00 / 1,000 jobsHigh compute usage ($/GB)
Free Tier Allowance6,250 free jobs / month1,000 – 2,000 jobsConsumes compute fast
Extraction SpeedDirect API (<3 seconds / board)VariesSlow (15–45s per page)
Schema NormalizationUnified single JSON schemaFragmented per ATSRequires custom parsing
Compensation / Salary BandsExtracted & parsedOften missingUnreliable regex
AI & MCP Agent ReadyYes (mcp.apify.com)Rarely supportedNo
n8n / Make.com WebhooksNative Apify IntegrationManual setupManual setup

Pay-Per-Event Pricing Math ($5.00 Free Tier)

This Actor uses Apify’s Pay-Per-Event (PPE) pricing model. You only pay for the actual job listings returned in your dataset. Platform compute usage is 100% FREE.

  • Price per job posting: $0.0008 ($0.80 / 1,000 jobs)
  • Apify Free Tier ($5.00 / month): Extract up to 6,250 live job postings every single month at $0.00 net cost.
  • 10,000 jobs: Only $8.00
  • 50,000 jobs: Only $40.00

Input Parameters

FieldTypeDefaultDescription
companiesArray<Object>[{"platform": "greenhouse", "boardToken": "stripe"}, {"platform": "ashby", "boardToken": "linear"}]Array of company targets with platform (greenhouse, ashby, or lever) and company slug.
quickTokensArray<String>[]Simple list of company slugs (e.g. ["stripe", "linear", "zoox"]) scraped using defaultPlatform.
defaultPlatformString"greenhouse"ATS engine used for quickTokens (greenhouse, ashby, lever, or auto_detect).
departmentFilterString""Case-insensitive keyword filter for department or team (e.g. "Engineering", "Sales", "Product").
locationFilterString""Filter by city, state, or workplace arrangement (e.g. "Remote", "London", "San Francisco").
maxJobsPerCompanyInteger50Maximum job postings to extract per target company board (1 to 500).
includeDescriptionBooleantrueExtract clean, plain-text job descriptions and candidate requirements.
proxyConfigurationObject{ "useApifyProxy": false }Optional Apify Proxy fallback for rate-limited corporate networks.

Output Dataset Schema

Every extracted job posting is standardized into a unified JSON structure:

Field NameTypeDescriptionExample
atsPlatformStringATS source engine"greenhouse", "ashby", or "lever"
companyStringTarget company slug or board token"stripe", "linear", "zoox"
jobIdStringUnique requisition identifier"8172487"
titleStringOfficial job title"Senior Staff Machine Learning Engineer"
locationStringLocation or city/country"San Francisco, CA", "Europe", "Remote"
workplaceTypeStringWorkplace classification"Remote", "Hybrid", "On-site"
departmentStringPrimary department or organization"Engineering", "Product", "Security Analytics"
teamStringSub-team or specialty unit"Core Platform", "Growth Infrastructure"
employmentTypeStringFull-time, contract, or internship"Full-time"
publishedAtStringFirst published timestamp"2026-10-29T10:42:09-04:00"
updatedAtStringLast modified timestamp"2026-11-02T14:15:00-04:00"
urlStringCanonical job board URL"https://jobs.ashbyhq.com/linear/d3bc1ced-..."
applyUrlStringDirect candidate application link"https://stripe.com/jobs/search?gh_jid=8172487"
compensationStringExtracted salary range or total comp"$185,000 - $240,000 USD + Equity"
descriptionTextStringCleaned, plain-text job overview"About the team: We are looking for an engineer..."

Integration Code Examples

1. Python SDK (apify-client)

from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run_input = {
"companies": [
{"platform": "greenhouse", "boardToken": "stripe"},
{"platform": "ashby", "boardToken": "linear"},
{"platform": "lever", "boardToken": "zoox"}
],
"departmentFilter": "Engineering",
"locationFilter": "Remote",
"maxJobsPerCompany": 50,
"includeDescription": True
}
# Run the Actor and wait for it to finish
run = client.actor("ramgoxxx/greenhouse-ashby-lever-jobs-scraper").call(run_input=run_input)
# Fetch all extracted job postings
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(f"[{item['atsPlatform'].upper()}] {item['company']} - {item['title']} ({item['location']})")
if item['compensation']:
print(f" Compensation: {item['compensation']}")
print(f" Apply: {item['applyUrl']}")

2. Node.js / TypeScript (apify-client)

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });
async function scrapeHiringSignals() {
const run = await client.actor('ramgoxxx/greenhouse-ashby-lever-jobs-scraper').call({
companies: [
{ platform: 'ashby', boardToken: 'linear' },
{ platform: 'greenhouse', boardToken: 'figma' }
],
maxJobsPerCompany: 100
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(`Extracted ${items.length} jobs.`);
}
scrapeHiringSignals();

3. cURL & Direct REST API

curl -X POST "https://api.apify.com/v2/acts/ramgoxxx~greenhouse-ashby-lever-jobs-scraper/runs?token=YOUR_APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"companies": [
{"platform": "ashby", "boardToken": "perplexity"},
{"platform": "greenhouse", "boardToken": "databricks"}
],
"maxJobsPerCompany": 25
}'

Model Context Protocol (MCP) & AI Agent Integration

This Actor connects directly with Claude Desktop, Cursor, and any MCP-compliant autonomous AI agents via Apify MCP.

Add to your claude_desktop_config.json or cursor_mcp.json:

{
"mcpServers": {
"apify": {
"command": "npx",
"args": ["-y", "@apify/mcp-server"],
"env": {
"APIFY_TOKEN": "YOUR_APIFY_TOKEN"
}
}
}
}

Now prompt Claude or your autonomous agent directly:

"Use Apify to check current AI engineering job openings at Linear and Stripe. Return titles, remote status, and salary ranges."


n8n & Make.com Automation Workflows

Automate B2B lead generation without writing code:

  1. Trigger: Schedule trigger (e.g., every Monday at 08:00 AM).
  2. Apify Node: Select Run Actor -> ramgoxxx/greenhouse-ashby-lever-jobs-scraper.
  3. Input JSON: Pass list of target enterprise accounts.
  4. Filter Node: Filter for new roles containing "Head of", "Director", or "Founding Engineer".
  5. Slack / CRM Action: Post hot hiring signals to #sales-triggers or update HubSpot/Salesforce accounts.

Frequently Asked Questions (FAQ)

How do I find a company's board token or slug?

Look at the URL of the company's career page:

  • Greenhouse: boards.greenhouse.io/{boardToken} or job-boards.greenhouse.io/{boardToken}. (Example: boards.greenhouse.io/stripe -> stripe).
  • Ashby: jobs.ashbyhq.com/{boardToken}. (Example: jobs.ashbyhq.com/linear -> linear).
  • Lever: jobs.lever.co/{boardToken}. (Example: jobs.lever.co/zoox -> zoox).

Can I scrape multiple ATS engines in a single run?

Yes. Simply pass companies using different platforms in the companies list. The Actor normalizes all records into the same standardized schema.

How often are job postings updated?

The Actor queries public ATS endpoints in real time. Whenever a company publishes, edits, or closes a position on their ATS, your next run reflects that change immediately.

Are full job descriptions included?

Yes. By default (includeDescription: true), the Actor cleans HTML tags, strips boilerplate headers, and returns clean plain-text job descriptions ready for LLM summarization, semantic search, or vector embedding.


Compliance, Terms & GDPR Notice

This Actor extracts exclusively publicly available job vacancy information published by employers for public recruitment. It does not collect private personal employee data, bypass authentication or CAPTCHAs, or scrape password-protected internal portals. When utilizing extracted job data, users must adhere to applicable local regulations, employment law, and GDPR guidelines regarding personal candidate contacts.