Job Posting Monitor Clay-Ready Hiring Signal Discovery avatar

Job Posting Monitor Clay-Ready Hiring Signal Discovery

Pricing

from $17.00 / 1,000 results

Go to Apify Store
Job Posting Monitor Clay-Ready Hiring Signal Discovery

Job Posting Monitor Clay-Ready Hiring Signal Discovery

Keyword-driven job posting monitor that finds companies hiring for any role across job boards. Returns flat, Clay-ready, firmographic-enriched rows with company LinkedIn URL per posting.

Pricing

from $17.00 / 1,000 results

Rating

0.0

(0)

Developer

Mamba Labs

Mamba Labs

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

1

Monthly active users

4 days ago

Last modified

Share

๐Ÿ“‹ What can Job Posting Monitor do?

Give it role keywords and it returns the companies hiring for that role right now, one clean row per posting, with each company enriched with its domain, LinkedIn URL, employee count and industry.

This is the reverse of a domain-level ATS checker. You do not give it a company and ask "are they hiring?" You give it a role and ask "who is hiring for this?"

๐Ÿ“ฆ What you getโš™๏ธ Features and integrations
๐Ÿข Hiring companies, deduplicated to one row per posting
๐Ÿ”— Domain and LinkedIn URL resolved per company
๐Ÿงน Staffing agencies and freelance marketplaces filtered out
๐Ÿงพ 16 flat fields, snake_case, Clay-native
๐Ÿ” Google Jobs discovery via your own SerpAPI key
๐Ÿท๏ธ Company type classification on every row
๐Ÿ”„ Cross-run delta detection, only new postings
โฌ‡๏ธ Export to JSON, CSV, Excel, HTML or XML

Bought by anyone running role-triggered outbound: recruiters, staffing-adjacent vendors, and sellers whose buying signal is a specific role opening.

๐Ÿšซ The keyword list is fully generic, and the editorial default is just a preset. It ships with proofreader, copy editor and content editor because that was the first use case, but the same actor tracks engineering, sales, marketing, operations or finance by changing the keywords.

๐Ÿ’ก Why use Job Posting Monitor?

If you wantRead these fields
The hiring companycompany_name, company_domain
An outreach targetcompany_linkedin_url
To size the accountemployee_count, industry
To drop the wrong kind of companycompany_type
The role and where to applyjob_title, job_url, location, is_remote
Recency and noveltyposting_date, is_new_posting
Why this row matchedmatched_keyword, job_description_snippet

๐Ÿงน Filtering out the noise is most of the value

Raw job search results are dominated by staffing agencies and freelance marketplaces reposting the same roles. This actor filters both.

Staffing and recruitment agencies are filtered on both the company name and the job description text, because plenty of agencies do not have "recruitment" in their name. Freelance marketplaces (Upwork, Fiverr, Freelancer, Toptal and similar) are excluded by name, and the list is yours to extend.

Everything that survives is classified: direct_employer, staffing_agency, government or unknown. If you disagree with the filter, turn it off and filter on company_type yourself.

๐Ÿ”„ Re-runs only return what is new

is_new_posting and the built-in delta cache mean a scheduled run does not re-emit everything it already showed you. Pass previous_run_date if you would rather control the window yourself.

๐Ÿ“‹ What data can Job Posting Monitor extract?

16 fields per posting.

FieldWhat it holds
company_nameThe hiring company
company_domainResolved canonical domain, or null
company_linkedin_urlCompany LinkedIn page, the primary outreach field
employee_count, industryFirmographics, where the company exposes them
company_typedirect_employer, staffing_agency, government or unknown
job_titleThe role title
job_urlDirect apply or posting URL
posting_dateNormalized to ISO, best effort
source_boardgoogle_jobs, greenhouse, lever or ashby
location, is_remoteWhere the role is
job_description_snippetFirst 500 characters of the description
matched_keywordWhich of your keywords this posting matched
is_new_postingtrue when not seen in a prior run
run_dateWhen the run happened

โš ๏ธ employee_count and industry are frequently null, because the firmographic source only reports them when a company exposes them. The company_size_min and company_size_max filters therefore apply only when a size is known, and will silently keep companies of unknown size. company_linkedin_url, the field most people actually act on, resolves for the large majority.

๐Ÿ› ๏ธ How to find companies hiring for a role

  1. Open the Input tab and put your role titles in keywords.
  2. Paste a SerpAPI key into serpapi_key, or set a SERPAPI_KEY environment variable on the actor.
  3. Set country and lookback_days to scope the search.
  4. Leave the staffing and freelance filters on.
  5. Click Start, then work the rows where company_type is direct_employer.

๐Ÿงช Using it in Clay

Point a Clay table at this actor's dataset, one Clay row per output row. The key columns are company_name, company_domain, company_linkedin_url, job_title and posting_date.

Use company_linkedin_url as the input to a LinkedIn step, and posting_date plus is_new_posting to prioritize fresh signals.

Schedule the actor and rely on the built-in delta cache, or pass previous_run_date, so each refresh only ingests new postings.

๐Ÿ”‘ The SerpAPI key

Discovery runs on the SerpAPI google_jobs engine, which covers Indeed, LinkedIn, Glassdoor, ZipRecruiter and company career pages. You bring your own key; the free tier covers 250 searches per month.

The actor reads the key from the serpapi_key input first, then falls back to the SERPAPI_KEY environment variable. Without either, discovery returns nothing.

๐Ÿ’ต How much does it cost to monitor job postings?

A result is one deduplicated, firmographic-enriched job posting.

PlanPer postingPer 1,000 postings
Free$0.020$20.00
Bronze$0.019$19.00
Silver$0.018$18.00
Gold$0.017$17.00

There is also an Actor start event at $0.00005, charged once per run per GB of memory.

๐Ÿ’ณ Two other costs sit outside this price, and you should budget for both. Enrichment sub-actors bill through your own Apify account at each sub-actor's own rate, standard for a fleet orchestrator. Google Jobs discovery is billed by SerpAPI against your own key. Free Apify plans include 25 result rows per month. max_companies is the lever that bounds the sub-actor spend.

๐Ÿงพ What a run really costs, measured end to end

Sub-actor charges are usually larger than people expect, so here is a real run rather than an estimate. Measured 2026-08-12 on a run that returned 27 postings.

Charged to your Apify accountSub-actor runsCost
This actor, 27 results plus the start eventn/a$0.5401
company-identity-resolver, one run per company, $0.007 each40$0.2820
company-firmographic-enricher, 39 domains in one run, $0.004 each1$0.1560
domain-to-linkedin-url-resolver, one run per company, $0.006 each11$0.0665
Total for that run52$1.0446

The three sub-actors were 48% of that bill. The effective price was $0.039 per posting, not the $0.020 in the table above.

The ratio is not fixed. One enrichment run is started per unique company discovered, so a search that finds many companies with one posting each costs proportionally more than a search that finds a few companies hiring heavily. max_companies bounds the sub-actor spend directly and is the first input to reach for if the bill matters more than the coverage.

โŒจ๏ธ Input

Everything is on the Input tab. The options worth explaining:

FieldTypeDefaultWhat it does
keywordsarrayeditorial presetRole titles to search for. Any role works.
serpapi_keystringnoneYour SerpAPI key. Required unless SERPAPI_KEY is set on the actor.
countrystringUnited StatesGeographic filter.
lookback_daysinteger30Only return postings newer than this.
company_size_min, company_size_maxintegernoneDrop companies outside the range, when size is known.
exclude_staffing_agenciesbooleantrueFilter staffing and recruitment postings.
exclude_freelance_marketplacesbooleantrueFilter Upwork, Fiverr and similar.
freelance_marketplacesarray7 defaultsOverride or extend the marketplace list.
remote_onlybooleanfalseOnly return remote postings.
previous_run_datestringnoneISO date; only emit postings newer than this.
max_resultsinteger100Raw postings scanned before filtering.
max_companiesinteger40Cap on unique companies enriched per run. Bounds sub-actor cost.

๐Ÿ“ค Output

One flat row per posting, exportable as JSON, CSV, Excel, HTML or XML.

{
"company_name": "Stripe",
"company_domain": "stripe.com",
"company_linkedin_url": "https://www.linkedin.com/company/stripe",
"employee_count": 8000,
"industry": "Financial Services",
"company_type": "direct_employer",
"job_title": "Senior Software Engineer",
"job_url": "https://boards.greenhouse.io/example/jobs/123",
"posting_date": "2026-06-25",
"source_board": "google_jobs",
"location": "San Francisco, CA",
"is_remote": true,
"job_description_snippet": "We are seeking a backend engineer to...",
"matched_keyword": "software engineer",
"is_new_posting": true,
"run_date": "2026-07-01T14:06:22.297Z"
}

๐Ÿ’ก Tips

  • Work company_type: "direct_employer" first. It is the reason the filtering exists.
  • Tighten lookback_days before raising max_results. Fresh postings convert better than deep ones.
  • max_companies is your cost control. It bounds how much enrichment a run can trigger.
  • Schedule it and filter on is_new_posting to turn this into a standing feed rather than a one-time list.
  • Extend freelance_marketplaces with whatever else clutters your vertical.

โš ๏ธ Known limits

Discovery depth is bounded by max_results. Very high-volume keywords may need multiple runs or a tighter lookback_days.

Company enrichment is capped per run by max_companies, deliberately, to bound sub-actor cost.

Enrichment depends on name-to-domain resolution. Ambiguous or very small companies may not resolve, and those rows come back with a null domain and null firmographics rather than being dropped.

employee_count and industry coverage varies and is frequently null. The size filters apply only when a size is known.

Google Jobs coverage excludes some regions where the widget is disabled, including the EU.

Posting dates from aggregated boards are often relative, for example "25 days ago", and are normalized to a best-effort ISO date.

A SerpAPI key is required. Without one, discovery returns nothing.

โ“ FAQ

Do I need a SerpAPI key?

Yes. Discovery runs on the SerpAPI google_jobs engine. The free tier covers 250 searches per month.

Why did a run return nothing?

Usually no key, or a keyword and country combination Google Jobs does not serve. The run logs a warning, emits zero rows and exits cleanly rather than erroring.

Are staffing agencies really filtered out?

They are filtered on both company name and job description text, and anything that survives is labeled in company_type. If you would rather judge for yourself, turn the filter off and filter on that field.

Will a scheduled run keep showing me the same postings?

No. Cross-run delta detection means re-runs only emit postings you have not seen. is_new_posting carries the flag.

What happens if the enrichment sub-actors fail?

The row is still emitted with null enrichment fields and a structured error is logged. Discovery is never lost to an enrichment failure.

๐Ÿงฉ Want other GTM data?

Mamba Labs builds custom actors for B2B go-to-market teams. The public versions of that work live here on the Store, so our users get the same tooling we build under contract.

๐Ÿง‘โ€๐Ÿ’ผ GTM Hiring Signal Scraper๐Ÿงฑ Tech Stack Detector
๐Ÿ“ก B2B Buying Signals Aggregator๐Ÿ”‘ Job Board Keyword Scanner
๐Ÿ”— Domain to LinkedIn URL Resolver๐ŸŽฏ ICP Fit Scorer
๐Ÿ“ฌ Domain Deliverability Checker๐Ÿข Company Firmographic Enricher
๐ŸŒ Company Social Presence Mapper๐Ÿชช Company Identity Resolver
๐Ÿ’ฐ Funding and Press Signal Scanner๐Ÿ”„ Company Change-Event Feed
๐Ÿ‘ค People Finder and Email Verifier๐Ÿš€ Prospect Engine
๐Ÿค– AI Tooling Detector๐Ÿ“ฎ Outbound Stack Detector
๐Ÿ“ Publishing Frequency Trackerโœ‰๏ธ Work Email Waterfall Finder
โฉ Sequencer Lead Push๐Ÿ… Workplace Program Detector
๐Ÿ‘ฅ Team Page People Extractor๐Ÿงญ Company Discovery List Builder

Every actor in the suite takes a domain or a company and returns one flat row, so they stack in the same Clay table without reshaping anything.

๐Ÿ› ๏ธ Need something custom built for you or your team? Tell us what you are trying to find and we will build it. Talk to Mamba Labs.

๐Ÿ†˜ Support

Something wrong, or a company misclassified? Open an issue on the Issues tab with the keyword and the row, and we will look at it.

โ„น๏ธ Sourcing and legal. Job postings come from the SerpAPI google_jobs engine against your own key, and from public job board APIs. Company enrichment comes from Mamba Labs fleet actors reading public company data. The actor stores no personal data: it returns companies, roles and postings, not people. You are responsible for how you use the output.

Built by Mamba Labs.