Hiring Signal avatar

Hiring Signal

Pricing

from $1.00 / 1,000 results

Go to Apify Store
Hiring Signal

Hiring Signal

Pricing

from $1.00 / 1,000 results

Rating

0.0

(0)

Developer

Mahruf Hossain

Mahruf Hossain

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Categories

Share

v0.3 fix (October 2026)

Fixes the false failure encountered with 193 live job listings: Apify's dataset metadata itemCount can lag behind newly written items for up to five seconds. The Actor now checks actual stored dataset items using paginated reads before deciding whether to commit a monitoring snapshot. Genuine incomplete dataset writes still fail safely, without advancing monitoring state.

Hiring Signals — deployable Apify Actor v0.2

This Actor reads published job listings from official public Greenhouse and Lever APIs. It supports two modes:

  • scan (default, stateless and suitable for public use): returns all current postings as changeType=current. Does not retain the user's watchlist or state.
  • monitor (private scheduled use): compare successive successful scans using a user-generated private UUID v4; first run emits a baseline and later runs emit new, updated, and confirmed removed listings. Removal requires two successful scans, because job feeds can be temporarily incomplete. The snapshots live in a named Apify KV store owned by the Actor publisher.

Prerequisites

  • An Apify account, Node.js and the Apify CLI.
  • Python 3.12+ for local runs (optional; cloud builds install Python).
  • No AI API key and no Greenhouse/Lever password needed.

Local tests (offline, do not need API access)

$python -m unittest discover -s tests -v

Deploy from your computer

  1. Unzip project into its own folder (keep .actor/ and src/ inside).
  2. Open a terminal in that folder, run npm install -g apify-cli.
  3. Run apify login (login using your own account; never share tokens in chats).
  4. Run apify push. This creates/builds the Actor in your account.
  5. In Apify Console, open Development > My Actors > Hiring Signals; review the build log, then run it using SAMPLE_INPUT_SCAN.json with the example H1 (Lever) and IMC (Greenhouse) boards, then replace them with boards you want to monitor.
  6. Inspect the output Dataset and SUMMARY record in the default key-value store.

SAMPLE_INPUT_SCAN.json includes real employer board slugs (H1 on Lever and IMC on Greenhouse) observed from public employer pages on October 9, 2026. Sources can change or block access; if a board fails, inspect the run log and confirm its public URL before changing the token.

For monitor mode, create a private watchlist UUID on your PC:

$python -c "import uuid; print(uuid.uuid4())"

Use the generated value as monitorId in SAMPLE_INPUT_MONITOR.json; keep it unchanged on each run. Do not share it publicly. Save the complete input as an Apify Task, run once to establish baseline, then schedule that task daily. Don't run the same monitor concurrently. The first run outputs current jobs unless you set includeBaseline=false.

Quality/safety

  • Invalid board tokens and network failures leave prior state unchanged. Suspiciously empty or drastically smaller responses do not trigger removals in monitor mode.
  • Removals are reported only after two successful consecutive checks of the board that both lack the same posting. They mean the posting disappeared, not proof it was filled.
  • The Actor exports only information supplied by job boards, never invents salary/location fields.
  • Dataset record completeness is checked by actually reading stored item pages (not the delayed dataset metadata counter). If an Apify run's maximum spending budget genuinely truncates billed dataset output, the Actor does not advance the monitoring snapshot; partial output can still be billed and reappear next run, so set spending limits appropriately.
  • Production use of shared monitor mode by unrelated paying customers needs a fully tenant-isolated state design. Do not publish monitor mode as a customer-data service without that redesign. Public paid users should use scan mode until tenant isolation is in place.

Monetization

Use Apify Console → Actor → Publishing → Monetization → Pay per event. Set only apify-default-dataset-item as a paid result event (start by testing $0.002 per scan result (and confirm you cover compute costs)), and disable or price apify-actor-start at $0 if you intend only per-row charges. The SDK automatically bills default-dataset items for this synthetic event. A 1,000-result scan at $0.002/item incurs $2 in gross user charges; calculate platform fees and run costs before publishing. Do not promise results or income.

The Actor is not publicly live until you finish Apify's publishing steps and account requirements. Payouts follow Apify's schedule, not instant cash.

Official docs: Actor deployment · Actor schedules · Pay per event · Publishing · Greenhouse · Lever