ATS Hiring Signals — Greenhouse, Lever & Ashby avatar

ATS Hiring Signals — Greenhouse, Lever & Ashby

Pricing

from $4.00 / 1,000 job results

Go to Apify Store
ATS Hiring Signals — Greenhouse, Lever & Ashby

ATS Hiring Signals — Greenhouse, Lever & Ashby

Monitor new job postings from Greenhouse, Lever, and Ashby across up to 100 companies. Detect recent hiring signals, filter by title, department, location, or remote status, and export normalized job data to your CRM, Slack, spreadsheet, or API.

Pricing

from $4.00 / 1,000 job results

Rating

0.0

(0)

Developer

Johnn Mottin

Johnn Mottin

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

17 days ago

Last modified

Share

Turn new job postings into B2B hiring signals

A company opening new roles can reveal where it is investing next.

A company hiring developers may be expanding its product or infrastructure.
A company hiring SDRs may be increasing its sales investment.
A company rapidly adding new roles may be entering a growth phase.

This Actor monitors the official public job-board APIs of Greenhouse, Lever, and Ashby across your target companies and returns the jobs published within your chosen time window — normalized into one consistent dataset.

Instead of manually checking dozens of careers pages, run your account list automatically and turn new job postings into actionable signals for sales, recruiting, competitive intelligence, and market research.

Key features

  • Monitor up to 100 companies per run
  • Greenhouse, Lever & Ashby support
  • Automatic ATS detection
  • Only return jobs published in the last N days
  • Filter by job title, department, location, or remote status
  • Full job-board export mode when needed
  • Normalized output across all three ATS platforms
  • Built-in run health checks
  • CRM, Slack, spreadsheet, webhook, and API workflows
  • No ATS account or API key required
  • No login, browser automation, or LinkedIn required
  • Pay only for jobs actually written to the dataset

Not affiliated with, sponsored by, or endorsed by Greenhouse, Lever, Ashby, or any company whose job board is queried. All data comes from the official public job-board APIs those companies expose and remains subject to their terms.


Why hiring signals matter

Job postings are more than recruiting data — they can indicate where a company is allocating resources.

Examples:

  • New engineering roles can signal product, infrastructure, or technical expansion.
  • New sales roles can signal increased go-to-market investment.
  • New marketing roles can indicate upcoming demand-generation initiatives.
  • New specialist roles can reveal emerging operational or technology needs.
  • Rapid changes in hiring activity can help track company expansion or strategic shifts.

Hiring signals do not prove that a company will purchase a specific product or service, but they can help prioritize accounts and identify better timing for outreach.


Who it's for

B2B sales and outbound teams

Monitor your target accounts and identify companies that recently started hiring in departments relevant to what you sell.

Example:

"Which of my 80 target accounts opened new engineering positions this week?"

Route those signals automatically to your CRM, Slack, spreadsheet, or workflow.

Recruiting agencies

Track client and prospect job boards for new openings and identify potential recruiting mandates earlier.

Competitive intelligence

Track competitor hiring activity by company and use new job postings as one signal of expansion, investment, or organizational change.

Founders and analysts

Monitor hiring activity across companies or market segments without manually visiting every careers page.


How it works

You provide company board slugs.

Example:

stripe
gitlab
spotify

The slug is the company identifier found in its public careers URL.

Examples:

boards.greenhouse.io/<slug>
jobs.lever.co/<slug>
jobs.ashbyhq.com/<slug>

For every company, the Actor queries the official API of its ATS.

You can specify the ATS manually or let the Actor auto-detect it by trying:

  1. Greenhouse
  2. Lever
  3. Ashby

Unknown slugs do not break the entire batch. They become controlled NOT_FOUND results in STATS.companySummary.


Two operating modes

Hiring Signal mode

This is the default and recommended mode for recurring monitoring.

Set:

{
"newWithinDays": 7
}

The Actor returns only jobs first published within the last 7 days.

The window is calculated again at runtime, so a saved Apify Task never becomes stale.

If you schedule the Actor every Monday with:

{
"newWithinDays": 7
}

each Monday's run automatically checks the previous seven days.

Ideal for:

  • B2B sales signals
  • Weekly account monitoring
  • Recruiting
  • Competitive intelligence
  • Market monitoring

Full Dump mode

Set:

{
"fullDump": true
}

The Actor returns every job currently available on the selected company boards and ignores the recent-job date window.

Ideal for:

  • One-time exports
  • Job-market research
  • Recruiting datasets
  • Company hiring analysis
  • Building an initial dataset

Input

Weekly hiring-signal example

{
"companies": [
{ "slug": "stripe" },
{ "slug": "gitlab", "ats": "greenhouse" },
{ "slug": "spotify", "ats": "lever" }
],
"newWithinDays": 7,
"titleKeywords": ["engineer", "developer", "data"],
"remoteOnly": false
}

Input fields

FieldTypeDefaultDescription
companiesarrayrequired1–100 {slug, ats?} objects. ats: greenhouse, lever, ashby, or auto (default). Unknown slugs become controlled NOT_FOUND results. Duplicates are skipped.
newWithinDaysint 1–3657Only jobs first published within the last N days. Greenhouse uses first_published, Lever uses createdAt, and Ashby uses publishedAt. Ignored when fullDump is enabled.
fullDumpbooleanfalseReturn every job currently available on each board instead of only recent postings.
titleKeywordsstring[][]Match any keyword against the job title, case-insensitive.
departmentsstring[][]Filter by department or team substring. Greenhouse automatically performs the heavier content fetch when required.
locationsstring[][]Filter by location substring, e.g. "london", "remote", "brazil".
remoteOnlybooleanfalseReturn only explicitly remote jobs. Ashby and Lever provide native signals; Greenhouse uses location text on a best-effort basis.
includeDescriptionbooleanfalseInclude the full job description. Produces larger records.
maxJobsPerCompanyint 1–2000500Maximum jobs processed per company, newest first.
maxResultsint 1–50001000Hard result limit for the entire run.

Filter before you pay

Jobs removed because of your:

  • date window,
  • title filters,
  • department filters,
  • location filters,
  • remote filter,
  • or result caps

are not written to the dataset and are not billed as job results.

You are charged only for jobs that are actually written to the dataset.

This makes newWithinDays especially useful for recurring monitoring because a weekly signal run typically returns only the new jobs relevant to that period.


Output

The Actor writes one normalized record per job, using the same key structure across Greenhouse, Lever, and Ashby.

Missing values are returned as null or [] rather than invented.

Example output

Real Greenhouse public job-board record:

{
"atsSource": "greenhouse",
"companyIndex": 1,
"companySlug": "gitlab",
"jobId": "8115023002",
"title": "Account Executive - Italy",
"department": null,
"team": null,
"employmentType": null,
"location": "Remote, Italy",
"secondaryLocations": [],
"isRemote": true,
"workplaceType": null,
"url": "https://job-boards.greenhouse.io/gitlab/jobs/8115023002",
"publishedAt": "2026-06-11T20:23:44.000Z",
"publishedAtRaw": "2026-06-11T16:23:44-04:00",
"updatedAt": "2026-07-17T12:48:22.000Z",
"compensation": null,
"description": null,
"scrapedAt": "2026-07-30T12:00:00.000Z"
}

Output fields

Field groupFieldsNotes
CorrelationatsSource, companyIndex, companySlugConnects every job back to your input company list.
JobjobId, title, department, team, employmentType, urlCore job information.
Locationlocation, secondaryLocations[], isRemote, workplaceTypeRemote status is native on Ashby and Lever; Greenhouse uses a text heuristic.
DatespublishedAt, publishedAtRaw, updatedAtNormalized ISO timestamps. updatedAt is Greenhouse-only.
Extrascompensation, descriptionCompensation is available from Ashby when exposed by the company. Description is opt-in.

Built-in data quality checks

The Actor monitors essential fields so broken upstream data does not silently enter your workflow.

Core fields include:

  • title
  • url
  • publishedAt
  • atsSource
  • companySlug

If more than 50% of returned records are missing a monitored core field, the run fails explicitly with:

DEAD_FIELDS

and identifies the affected field.

This helps detect upstream API or extraction changes instead of silently producing a damaged dataset.


Run health and diagnostics

The default key-value store includes STATS with per-company outcomes.

Possible company statuses include:

OK
NO_JOBS
NOT_FOUND
FAILED
INVALID_COMPANY
DUPLICATE_SKIPPED
SKIPPED_MAX_RESULTS

When ATS auto-detection is used, detectedAts is also recorded.

STATS contains:

  • company summaries
  • HTTP counters
  • retries
  • jobs discarded by date
  • jobs discarded by filters
  • jobs discarded by limits
  • jobs discarded because no publication date was available

ERRORS uses stable error codes such as:

INVALID_INPUT
NOT_FOUND
HTTP_UNAVAILABLE
HTTP_TIMEOUT
HTTP_RATE_LIMITED
API_CONTRACT_CHANGED
DEAD_FIELDS
ALL_COMPANIES_FAILED

A week with no new jobs on a quiet company board is a valid monitoring result and is recorded through:

STATS.legitimateNoNewJobs

If no company in the entire batch completes successfully, the run fails explicitly with:

ALL_COMPANIES_FAILED

Availability by ATS

Some fields are exposed differently by each ATS.

FieldGreenhouseLeverAshby
Job titleYesYesYes
Job URLYesYesYes
Publication dateYesYesYes
Department/teamAvailable with content fetchYesYes
Remote signalBest-effort from location textNativeNative
CompensationNoNoWhen exposed by company
Updated dateYesNoNo

The Actor preserves the original publication-date semantics used by each ATS while normalizing them into publishedAt.


Recruiting mandate radar example

Track sales and marketing openings at selected companies:

{
"companies": [
{ "slug": "ramp" },
{ "slug": "linear" }
],
"newWithinDays": 14,
"departments": ["sales", "marketing"]
}

Weekly target-account monitoring

A typical B2B workflow might contain 50–100 target companies.

Save them as an Apify Task:

{
"companies": [
{ "slug": "company-one" },
{ "slug": "company-two" },
{ "slug": "company-three" }
],
"newWithinDays": 7
}

Schedule the Task weekly.

Each execution recalculates the relative date window automatically and returns only the newest hiring activity.

You can then route the dataset into:

  • Slack
  • Google Sheets
  • CRM systems
  • Webhooks
  • automation workflows
  • internal data pipelines

using Apify integrations or the API.


Schedule it

Recurring monitoring is one of the main intended uses of this Actor.

Use Apify Schedules, not a local scheduler.

The Actor runs in the cloud whether your computer is on or off.

Example weekly setup

  1. Save your target-company input as a Task.
  2. Go to Console → Schedules → Create schedule.
  3. Add the Task.
  4. Run it every Monday morning.

Example cron:

0 6 * * 1

With:

{
"newWithinDays": 7
}

the date range is recalculated automatically on every execution.


API usage

Run the Actor and retrieve dataset items in one request:

curl -s "https://api.apify.com/v2/acts/<YOUR_USERNAME>~ats-hiring-signals-monitor/run-sync-get-dataset-items?token=<YOUR_TOKEN>" \
-X POST \
-H "Content-Type: application/json" \
-d '{"companies":[{"slug":"stripe"}],"newWithinDays":7}'

This makes the Actor suitable for integration into:

  • CRM enrichment workflows
  • account-prioritization systems
  • sales-intelligence pipelines
  • recruiting workflows
  • dashboards
  • internal applications
  • automated alerts

Pricing

This Actor uses Pay Per Event pricing.

You are billed per job written to the dataset.

Jobs discarded by:

  • the date window,
  • filters,
  • or result caps

are not billed as job results.

The Pricing tab on this Actor page is always the authoritative source for current pricing and any per-run fee.

Cost-control options

Use:

newWithinDays

to control how much recent activity is returned.

You can also control output using:

maxJobsPerCompany
maxResults
titleKeywords
departments
locations
remoteOnly

Signal mode usually produces far fewer results than a full job-board export.


Honest limits

You provide the company list

The Actor does not discover every company using Greenhouse, Lever, or Ashby.

You provide the board slugs from your own target-account list.

Example URLs:

boards.greenhouse.io/<slug>
jobs.lever.co/<slug>
jobs.ashbyhq.com/<slug>

No ATS provides a complete public directory of all customer job boards.

Coverage is currently Greenhouse, Lever, and Ashby

Companies using platforms such as:

  • Workday
  • SmartRecruiters
  • iCIMS
  • other unsupported ATS platforms

will return NOT_FOUND when auto-detection is used.

Additional ATS integrations are a possible future expansion.

Publication dates differ slightly by ATS

The Actor uses:

  • Greenhouse → first publication
  • Lever → creation timestamp
  • Ashby → publication timestamp

The original values are preserved.

Greenhouse department filtering requires additional data

Greenhouse requires a heavier content fetch for department information.

The Actor triggers it automatically only when needed, such as when:

  • filtering by department;
  • or requesting descriptions.

Greenhouse remote detection is best-effort

Lever and Ashby expose native remote information.

Greenhouse remote detection uses the location text and therefore remains best-effort.

API-friendly request behavior

The Actor intentionally uses conservative API behavior:

  • 2 concurrent requests
  • pacing
  • exponential backoff on 429 and 5xx
  • maximum 100 companies per run

FAQ

Do I need an account or API key for Greenhouse, Lever, or Ashby?

No.

The Actor reads the official public job-board APIs exposed by those platforms without logging in.

Does it use LinkedIn?

No.

The Actor does not require or access LinkedIn.

Does it use browser automation?

No.

It queries the public job-board APIs directly.

Where do I find a company's slug?

Look at the company's public careers URL.

Examples:

boards.greenhouse.io/<slug>
jobs.lever.co/<slug>
jobs.ashbyhq.com/<slug>

The <slug> portion is the value you provide to the Actor.

Can the Actor automatically detect the ATS?

Yes.

When ats is set to auto, the Actor attempts:

Greenhouse → Lever → Ashby

What happens if one company is invalid?

It does not kill the entire batch.

The company receives an appropriate status such as:

NOT_FOUND
INVALID_COMPANY
FAILED

while valid companies continue processing.

Can I retrieve every current job instead of only new jobs?

Yes.

Use:

{
"fullDump": true
}

This ignores the recent-job window and returns all currently available jobs from the company board.

Can I monitor only remote jobs?

Yes.

Set:

{
"remoteOnly": true
}

Remote detection is native for Lever and Ashby and best-effort for Greenhouse.

Can I monitor specific departments?

Yes.

Example:

{
"departments": ["engineering", "sales"]
}

Can I search specific job titles?

Yes.

Example:

{
"titleKeywords": ["engineer", "developer", "data"]
}

Any supplied keyword may match the job title.

What exactly am I charged for?

Jobs actually written to the dataset.

Jobs discarded by date windows, filters, or caps are not billed as job results.

Check the Pricing tab for current rates and any run-start fee.

Can I schedule it?

Yes.

Recurring monitoring is one of the primary use cases.

Save your input as an Apify Task and run it through Apify Schedules.


Data source and affiliation

This Actor uses the official public job-board APIs exposed by:

  • Greenhouse
  • Lever
  • Ashby

It is an unofficial community Actor and is not affiliated with, sponsored by, or endorsed by Greenhouse, Lever, Ashby, or any company whose board is queried.

All source data remains subject to the respective platform and publisher terms.


Part of the JM Forge suite

Also from the same developer:

Support

Report issues in the Issues tab of this actor — I respond within 24h. Feature requests welcome.