Pay Transparency Compliance Monitor avatar

Pay Transparency Compliance Monitor

Pricing

from $20.00 / 1,000 posting checked (initial or changed)s

Go to Apify Store
Pay Transparency Compliance Monitor

Pay Transparency Compliance Monitor

Screen every posting on Greenhouse, Lever and Ashby boards for potential pay-transparency issues under US state and city laws, then re-check on a schedule and get alerted when a pay range is removed or a new posting has none. Potential issues for human review, not legal advice. By Steadfeed.

Pricing

from $20.00 / 1,000 posting checked (initial or changed)s

Rating

0.0

(0)

Developer

Steadfeed

Steadfeed

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

21 hours ago

Last modified

Features

Limited permissions

Share

Screen every job posting on a company's careers page for potential pay-transparency issues against US state and city laws (plus Canadian provinces and the EU directive as a note), then re-check on a schedule and get told when a pay range disappears, a new posting appears without one, or a flagged item is resolved. Every flagged item is a potential issue that needs human review, not a determination of non-compliance.

Works from the public job feeds behind Greenhouse, Lever and Ashby boards. No login, no access to your systems, no ATS integration.

Read this first. This Actor screens public posting text and lists potential issues. It does not decide whether any employer violated any law. Whether a law applies depends on facts it cannot see (employer size, where the worker will be based, internal vs. external posting, exemptions), and a pay range shown only on a rendered page or in an attachment cannot be seen. Treat every item as a prompt to look at the live posting; you and your counsel decide. Not legal advice.

Who it is for

  • Recruiting agencies and HR consultants checking many clients' boards (one watchlist per client).
  • HR and TA teams that want a weekly "did anyone publish a posting without a range?" alert.
  • Developers and automation builders who need a posting-compliance check as an API step (Apify API, MCP, webhooks).

What you get per run

OutputWhere
One audit row per posting: status potential_issue, review_suggested, no_issue_found, no_law_identified or unchecked, with findings (each with reviewPriority and requiresHumanReview: true), laws screened and source linksDataset (view Posting audits)
Change rows since the previous run: pay_range_removed, became_potential_issue, new_posting_potential_issue, resolved, pay_range_changed, posting_closedDataset (view Changes)
Digest with alerts, per-company table and a review list with wording to considerKey-value store DIGEST_HTML, DIGEST_MD
Webhook-ready report JSON (steadfeed.pay-posting-review-report/1)Key-value store REPORT, optional webhookUrl POST
Run summaryKey-value store SUMMARY

What it checks

  • Pay range present in the posting (structured ATS fields first, then the description text), including single figures and open-ended "from / up to" amounts.
  • Applicable laws from the location text. Remote US roles are screened against the states you hire in (hiringStates), or every in-force state law if you leave it empty, and reported once per problem with the list of states.
  • Benefits description where the law asks for it (for example CO, WA, IL, MD, NJ, MN) and the application close date (Colorado). On remote roles these are low review priority.
  • Range width: wide spreads (2x or more) are a "good-faith estimate" review flag, never a problem on its own.
  • Employer size (employeeCount): laws with higher thresholds are skipped and listed as skipped.
  • Laws not yet in force are skipped (for example Delaware starts 2027-09-26).

Statuses are deliberately cautious: unclear wording is review_suggested (unclear wording to look at), a failed lookup is unchecked (never counted as a potential issue and never billed), and a board that could not be read is reported as a board problem, never as missing ranges or closed postings.

How to read the results

StatusMeaning
potential_issueA high-priority item was found (for example no pay range in the data we can read). Open the live posting and confirm before acting.
review_suggestedWording is unclear (for example only a single figure, or an unparseable pay line) or a lower-priority item was found.
no_issue_foundNothing was flagged by this screen. This is not a statement that the posting complies.
no_law_identifiedNo pay-transparency law could be matched from the location text. Not a finding that none applies.
uncheckedThe lookup failed. Never billed, never counted.

reviewPriority (high, medium, low) orders what to look at first. Remote roles list, per state, why that state's law may or may not reach the role (remoteApplicability), taken from the state's own guidance where available.

Scheduled monitoring

  1. Run once with a watchlist name (for example acme-careers). That run is the baseline.
  2. Schedule the same input (Apify Schedules) weekly or daily. Each run compares with the previous one, kept in a named storage pay-monitor-<watchlist> in your account.
  3. Optionally set webhookUrl to receive the report JSON when there are alerts (Slack/Zapier/Make/n8n/your endpoint).

Changing the location, country, remote or title filters starts a new baseline so filtered-out postings are not reported as closed. Boards that were not fully listed (cap reached) never close postings.

Input

FieldMeaning
boardUrlsPublic Greenhouse, Lever or Ashby board or job links (up to 50 URLs, 20 boards)
watchlistIdName of this watchlist (history is kept per name)
trackChangesCompare with the previous run (default true)
hiringStatesStates you hire in, for remote roles (for example ["CA","NY","WA","NYC"])
employeeCountSkip laws above your size
locations, countries, remoteOnly, titleKeywordsOptional filters
maxJobsPerCompanyCap per board (default 100)
webhookUrl, webhookOnlyWhenAlertsOptional report delivery to a public https URL

Example: {"boardUrls":["https://job-boards.greenhouse.io/yourcompany"],"watchlistId":"yourcompany","hiringStates":["CA","NY","WA","CO"],"employeeCount":60}

Limits and honest caveats

  • Reads the company's own ATS feed, not Indeed, LinkedIn or copies on other boards (those copies can differ). When the feed shows no range, the Actor also reads the posting's own public page once (plain HTTP, no JavaScript rendering) and reports where it found a range (pay.pageCheck: found_on_page, confirmed_missing or page_unavailable). Pages that need JavaScript, a login or that block automated requests cannot be read, so open a flagged posting and confirm before acting.
  • Workday, iCIMS and custom career pages are not supported yet.
  • A range shown only as an image, a PDF or a gated page cannot be read. Wording such as "competitive salary" with no figures is reported as missing or needs review.
  • Law summaries were checked against statute or agency pages on 2026-11-09 (see each entry's source link; entries not checked against a primary source say so). Laws change, thresholds and remote-work rules differ. Uncertain entries are flagged in the output (ruleCaveat): Virginia's effective date and employer threshold could not be confirmed from a primary source, and the California, Illinois and Washington penalty and cure details come from public trackers (secondary sources). Verify with the linked sources.
  • This Actor is a screening aid. It makes no promise that a posting, an employer or a law check is complete or correct, and "no issue found" is never a statement of compliance.
  • Heuristic text checks (benefits, close date) can miss unusual wording, which is why they are review items, not conclusions.

Pricing

Pay per event, no subscription. You pay only for postings actually checked:

EventPriceWhen
Initial posting check (posting-audited)$0.02The first time a posting is checked in a watchlist, and any time a posting has changed since its last check (text, location, pay figures or the resulting assessment). A changed posting gets a fresh assessment.
Unchanged recheck (posting-rechecked)$0.005A posting whose content fingerprint and assessment outcome are identical to its last paid check. The posting text is still re-read and re-screened every run, so a pay range that was removed or edited always shows up and is billed as a change, never as a recheck.
Actor start$0.00005 per GB of memory startedStandard Apify start event (256 MB default).

Free: postings that could not be checked (unchecked), change rows, digests, report JSON and webhook delivery.

How "unchanged" is decided: each run keeps a snapshot of every posting (a fingerprint of the posting text and extracted fields, plus the assessment outcome) in the named storage pay-monitor-<watchlist> in your account. A posting is billed at the recheck rate only if its fingerprint and outcome match that snapshot. With Track changes off, or on the first run of a watchlist, there is no snapshot, so every posting is billed as an initial check. Changing the watchlist name starts a new snapshot.

Cost examples (illustrative, before Apify's own platform usage, which is a small fraction of a cent per run): a 100-posting board is $2.00 for the first check; a weekly recheck with nothing changed is $0.50 per week; if 5 postings change, $0.50 + 5 x $0.015 more. Weekly monitoring is the recommended default; daily runs are supported and are billed the same way, so mostly unchanged postings cost $0.005 each per day. Set a maximum cost per run in Apify and the Actor stops cleanly at it.

Support

Issues and requests: use the Issues tab on this Actor page. Built by Steadfeed.