Job Posts to B2B Buying Signals
Pricing
from $15.00 / 1,000 qualified accounts
Job Posts to B2B Buying Signals
Run selected upstream job Actors or process existing job data, then turn job posts into evidence-backed B2B buying-signal accounts with cost caps, scores, personas, and outreach angles.
Pricing
from $15.00 / 1,000 qualified accounts
Rating
0.0
(0)
Developer
SignalFlow Studio
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
5 days ago
Last modified
Categories
Share
Turn job scraper outputs into evidence-backed B2B account signals.
This Actor is a sales-intelligence layer for job data. It accepts uploaded job rows, an existing Apify dataset, or one or more user-selected upstream job scraper Actors, then returns qualified companies whose hiring activity suggests an active buying need. Each result includes matched evidence, a signal score, inferred need, why-now context, recommended persona, and outreach angle.
It is not a LinkedIn scraper, Indeed scraper, or email finder. By default, it calls selected upstream job Actors using the Apify runtime token of the user who starts the run, then aggregates the returned job posts into account-level buying signals.
Who it is for
- CRM, RevOps, Salesforce, and HubSpot implementation agencies.
- Data, BI, AI, analytics, and cloud consulting teams.
- Cybersecurity, compliance, SOC, GRC, and SIEM service providers.
- Outbound agencies turning job-post datasets into weekly account lists.
- B2B sales teams that want account-level signals instead of raw job rows.
Source modes
Upstream Actor
This is the default mode. Adjust jobSearchKeyword and jobSearchLocation, optionally enable more source presets, then start the run. No manual API token input is needed on Apify because the platform provides the run token for the user who starts the Actor.
Run mechanism:
- This Actor calls each selected upstream Actor through Apify's
run-sync-get-dataset-itemsAPI. - The upstream Actor receives the source-specific
upstreamInputand returns its dataset items to this Actor. - Apify sets
APIFY_TOKENto the API token of the user who started the run, so upstream runs are started as that user, not as this Actor's owner. - Each enabled simple source or enabled
upstreamActorsitem can start one upstream Actor run. - If an upstream Actor is paid, unavailable, private, or requires rental/access, that upstream run can fail or create a separate charge according to the upstream Actor's own Pricing tab.
- This Actor passes both
maxTotalChargeUsdandmaxItemsto upstream runs.maxTotalChargeUsdcaps the upstream run charge;maxItemslimits charged result count for pay-per-result upstream Actors when supported by Apify.
Official Apify references:
- Runtime token: https://docs.apify.com/platform/actors/development/programming-interface/environment-variables
- Synchronous Actor run API: https://docs.apify.com/api/v2/act-run-sync-get-dataset-items-post
- Store pricing models: https://docs.apify.com/platform/actors/running/actors-in-store
- Pay-per-event pricing: https://docs.apify.com/platform/actors/publishing/monetize/pay-per-event
Default simple inputs:
| Field | Default |
|---|---|
jobSearchKeyword | RevOps Manager |
jobSearchLocation | United States |
maxJobsPerSource | 50; mapped per source as LinkedIn count, Indeed maxRows, and ATS API limit |
maxUpstreamChargeUsdPerSource | 1.00 |
useLinkedInJobs | true; curious_coder/linkedin-jobs-scraper, price snapshot: $1.00 / 1,000 results |
useIndeedJobs | false; borderline/indeed-scraper, price snapshot: $5.00 / 1,000 jobs |
useGreenhouseJobs | false; fantastic-jobs/greenhouse-jobs-api, price snapshot: from $1.20 / 1,000 jobs |
useLeverJobs | false; fantastic-jobs/lever-co-jobs-api, price snapshot: from $0.80 / 1,000 jobs |
useAshbyJobs | false; fantastic-jobs/ashby-jobs-api, price snapshot: from $1.20 / 1,000 jobs |
Use upstreamActors only when you need custom Actor IDs or source-specific JSON inputs.
Uploaded job rows
Paste or upload job rows directly when you already have job data.
Existing Apify dataset
Process a dataset produced by another Actor. Private datasets are read with the run user's Apify token.
Default presets and upstream price snapshot:
Snapshot checked on 2026-05-27. Upstream authors can change pricing; the upstream Actor's Pricing tab is authoritative at run time.
| Preset | Actor | Store link | Upstream price snapshot |
|---|---|---|---|
linkedin_jobs_popular | curious_coder/linkedin-jobs-scraper | https://apify.com/curious_coder/linkedin-jobs-scraper | $1.00 / 1,000 results |
indeed_jobs_popular | borderline/indeed-scraper | https://apify.com/borderline/indeed-scraper | $5.00 / 1,000 jobs |
greenhouse_jobs_api | fantastic-jobs/greenhouse-jobs-api | https://apify.com/fantastic-jobs/greenhouse-jobs-api | from $1.20 / 1,000 jobs |
lever_jobs_api | fantastic-jobs/lever-co-jobs-api | https://apify.com/fantastic-jobs/lever-co-jobs-api | from $0.80 / 1,000 jobs |
ashby_jobs_api | fantastic-jobs/ashby-jobs-api | https://apify.com/fantastic-jobs/ashby-jobs-api | from $1.20 / 1,000 jobs |
custom | Any public or accessible Actor ID | Check the custom Actor page | Check the custom Actor Pricing tab |
Simple mode maps the keyword/location fields to each upstream Actor's current input schema:
| Source | Simple input sent upstream |
|---|---|
urls=[generated LinkedIn jobs search URL], count=max(maxJobsPerSource, 10), scrapeCompany=true | |
| Indeed | query=jobSearchKeyword, location=jobSearchLocation, maxRows=maxJobsPerSource |
| Greenhouse / Lever / Ashby | titleSearch=[jobSearchKeyword], locationSearch=[jobSearchLocation], limit=max(maxJobsPerSource, 200), includeAi=false, includeLinkedIn=true |
Upstream Actor fees are separate and charged by each selected upstream Actor to the user who starts the run.
Quick start
Default run:
{"jobSearchKeyword": "RevOps Manager","jobSearchLocation": "United States","maxJobsPerSource": 50,"maxUpstreamChargeUsdPerSource": 1,"playbook": "crm_revops","jobKeywords": ["RevOps Manager", "Revenue Operations", "HubSpot"],"enableAiInsights": false,"minSignalScore": 60,"maxResults": 25}
Advanced multi-Actor override:
{"sourceMode": "upstream_actor","upstreamActors": [{"enabled": true,"label": "LinkedIn RevOps search","upstreamPreset": "linkedin_jobs_popular","upstreamInput": {"urls": ["https://www.linkedin.com/jobs/search/?keywords=RevOps+Manager&location=United+States"],"count": 100,"scrapeCompany": true}},{"enabled": true,"label": "Indeed Salesforce search","upstreamPreset": "indeed_jobs_popular","upstreamInput": {"query": "Salesforce Administrator","location": "United States","maxRows": 100}}],"playbook": "crm_revops","jobKeywords": ["RevOps Manager", "Salesforce Administrator", "HubSpot"],"maxJobsToProcess": 100,"maxResults": 25}
Inputs
| Field | Description |
|---|---|
sourceMode | Defaults to upstream_actor; can also be uploaded_job_rows or dataset. |
jobSearchKeyword | Main role, skill, or tool keyword for the default upstream job search. |
jobSearchLocation | Location passed to upstream job sources that support location search. |
maxJobsPerSource | Limit passed to each simple upstream source using that Actor's expected field. LinkedIn has minimum count=10; Greenhouse/Lever/Ashby have minimum limit=200. |
maxUpstreamChargeUsdPerSource | Maximum charge passed to each upstream Actor run as Apify maxTotalChargeUsd. Default USD 1.00 per enabled upstream source. |
useLinkedInJobs, useIndeedJobs, useGreenhouseJobs, useLeverJobs, useAshbyJobs | Simple source toggles for non-technical users. |
upstreamActors | Advanced override array for multiple custom upstream Actor configs. Leave empty to use the simple toggles. |
simulateUpstreamRun | Uses mock items instead of calling upstream Actors. Useful for testing. |
sourceDatasetId | Existing Apify dataset ID to process. |
jobRows | Uploaded job rows. |
playbook | crm_revops, data_stack, cybersecurity, or custom. |
jobKeywords | Extra job title, skill, or tool keywords to match. |
locations | Optional location keyword filters. |
postedWithinDays | Preferred recency window for jobs with dates. |
minSignalScore | Minimum score required for dataset output. |
maxJobsToProcess | Default 100, hard cap 10000. |
maxResults | Default 25, hard cap 500. |
enableAiInsights | BYOK AI-assisted insight generation; deterministic text is used without a key. |
aiProviderApiKey | Optional secret BYOK key for AI-assisted insight generation. |
Output
The default dataset contains one row per qualified account:
{"companyName": "Instrumentl","domain": "instrumentl.com","playbook": "crm_revops","signalScore": 78,"signalTier": "medium","inferredNeed": "Likely scaling CRM, sales operations, or revenue operations workflows","whyNow": "The company shows 1 matching hiring signal(s), including RevOps Manager.","recommendedPersona": "VP Sales, RevOps Lead, COO, Head of Sales Operations","outreachAngle": "Lead with CRM implementation cleanup, reporting automation, pipeline process design, and RevOps capacity support.","matchedKeywords": ["hubspot", "revops", "revops manager"],"openRolesCount": 1,"evidence": [{"source": "lever_public_job","jobTitle": "RevOps Manager","postedAt": "2026-05-20","url": "https://jobs.lever.co/Instrumentl/a2c6c454-00a1-4ab0-9c02-cddfffec17b5"}],"status": "qualified"}
The key-value store also includes:
OUTPUT: complete JSON output with summary and results.REPORT: a Markdown report for human review.
Pricing and cost model
Suggested pay-per-event model:
apify-actor-start: small automatic start fee.source_dataset_processed: charged when a source dataset is processed.upstream_actor_called: charged once per upstream Actor successfully triggered.job_normalized: charged per normalized job row processed.qualified_account: charged per evidence-backed qualified account.ai_insight: charged when BYOK AI insight generation succeeds.
There are two cost layers:
-
This Actor's PPE events:
apify-actor-start: charged automatically by Apify when the run starts.upstream_actor_called: charged once after this Actor successfully triggers an upstream Actor.job_normalized: charged per normalized job row analyzed by this Actor.qualified_account: charged per evidence-backed account emitted.ai_insight: charged only when BYOK AI generation succeeds.
-
Upstream Actor charges:
- Each selected upstream Actor has its own pricing model and may charge separately.
- This Actor passes
maxUpstreamChargeUsdPerSourceasmaxTotalChargeUsdto each upstream run. - This Actor also passes Apify
maxItemsto each upstream run to cap charged result count for PPR Actors when supported. - The default is USD 1.00 per enabled upstream source.
maxJobsPerSourceis mapped to each upstream Actor's documented input field, but upstream Actors may still interpret limits differently.
Apify Store notes that PPE Actors charge for creator-defined events and that some Actors include platform usage in event prices while others charge it separately. Always check each upstream Actor's Pricing tab before enabling it.
AI provider costs are BYOK by default. If aiProviderApiKey is empty, this Actor does not call an external AI provider and uses deterministic insight text.
Limits
Default public run:
- runs the LinkedIn Jobs preset with
RevOps ManagerandUnited States, - requests up to 50 jobs from the default LinkedIn source,
- caps each upstream Actor run at USD 1.00 through Apify
maxTotalChargeUsd, - processes up to 100 normalized job rows,
- emits up to 25 qualified accounts.
Hard caps:
maxJobsToProcess: 10000maxResults: 500
Compliance and acceptable use
Use only data you are allowed to process. Respect source website terms, upstream Actor terms, privacy laws, and outreach rules in your jurisdiction. Do not use output for spam, harassment, discriminatory targeting, or unlawful profiling.
Known limits
- Upstream Actor input schemas and output fields can change; review every selected upstream Actor before production runs.
- Default run timeout is 300 seconds. The default one-source run is designed for this; if you enable several real upstream sources, increase the run timeout in Apify run options.
- Company domain extraction depends on source data quality.
- This Actor does not guarantee personal contact data or verified emails.
- AI insight text summarizes visible evidence and should be reviewed before use.
Local development
npm installnpm run samplenpm run smokenpm run mock-upstreamnpm test
npm run mock-upstream validates multiple upstream Actor adapters using simulated upstream dataset items. It does not call any upstream Actor.
Apify deployment
This Actor is intended to be prepared privately first. Do not publish automatically.
npx apify-cli@1.6.1 push --version 0.1 --build-tag latestnpx apify-cli@1.6.1 call signalflow_studio/job-posts-to-buying-signals --input-file fixtures/cloud-smoke-input.json --memory 1024 --timeout 180 --json