LinkedIn Company Jobs Monitor — New, Changed & Closed Roles
Pricing
from $7.00 / 1,000 company monitoreds
LinkedIn Company Jobs Monitor — New, Changed & Closed Roles
Monitor public LinkedIn company job pages and turn them into a reliable change feed: new openings, edits, reopenings, and safely confirmed closures. No LinkedIn login or cookies required. Optionally add official apply URLs, live status, verification confidence, and ghost-job risk.
Pricing
from $7.00 / 1,000 company monitoreds
Rating
0.0
(0)
Developer
Kamer Ozkan
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
an hour ago
Last modified
Categories
Share
Monitor public LinkedIn company job pages and turn them into a reliable change feed: new openings, edits, reopenings, and safely confirmed closures. Optionally add the official application URL, current job status, verification confidence, and ghost-job risk to the same row.
No LinkedIn login or cookies are required from the user. Apify Proxy is enabled by default to isolate company sessions and improve reliability.
What you get
new— first time a job is seenchanged— title, location, company, URL, or posting date changedreopened— a previously closed job reappearedclosed— absent from the configured number of complete scanscurrent— unchanged open job when full-snapshot mode is enabled- official apply URL and ATS provider when verification is enabled
low,review,high, orunknownghost-job risk- signed HTTPS webhook delivery for Slack relays, Make, Zapier, n8n, CRMs, and data pipelines
Unlike snapshot scrapers, repeated runs only return changes. State is preserved per watchlist so the dataset is ready for alerts, recruiting intelligence, sales triggers, and hiring-market research.
Set emitCurrentSnapshot: true when a full open-jobs snapshot is more useful than a
changes-only feed.
Quick start
{"companies": ["https://www.linkedin.com/company/tiny-spec-inc/"],"stateNamespace": "auto","closureConfirmationScans": 2,"verifyApplyLinks": true,"verificationMaxTotalChargeUsd": 2}
Accepted company inputs:
https://www.linkedin.com/company/tiny-spec-inc/- LinkedIn company jobs/search URLs containing
f_C - numeric LinkedIn company IDs such as
30920
Use the company's current canonical LinkedIn URL. If LinkedIn silently redirects an obsolete slug to an unrelated company, the Actor rejects it instead of returning a valid-looking dataset for the wrong organization.
Saved Tasks using stateNamespace: "auto" are isolated automatically. API callers
should set one stable, unique namespace per independent watchlist.
Each run accepts up to 100 companies. Split larger portfolios across Tasks with
different namespaces so every shard has an independent state and reliability score.
Companies with 1,000 or more open LinkedIn jobs are not supported by this version;
the Actor fails clearly instead of returning a misleading partial inventory.
One dataset, including verification
Official apply-link verification no longer creates a disconnected final result. The verification Actor runs as an enrichment step and the selected fields are merged into this Actor's default dataset:
{"eventType": "new","detectedAt": "2026-07-26T10:00:00.000Z","companyId": "30920","companyName": "Slack","companyUrl": "https://www.linkedin.com/company/tiny-spec-inc/","jobId": "4440979323","title": "Circular Center Program Manager","jobTitle": "Circular Center Program Manager","location": "United States","jobUrl": "https://www.linkedin.com/jobs/view/4440979323","postedAt": "2026-07-25","firstSeenAt": "2026-07-26T10:00:00.000Z","lastSeenAt": "2026-07-26T10:00:00.000Z","changedFields": [],"source": "linkedin_public_jobs","verificationStatus": "completed","officialApplyUrl": "https://jobs.example.com/apply/123","applyMethod": "OFFSITE","jobStatus": "ACTIVE","safeToPublish": true,"reviewRequired": false,"verificationConfidence": 0.98,"sourceProvider": "greenhouse","companyWebsite": "https://example.com/","verifiedAt": "2026-07-26T10:01:00.000Z","verificationEvidence": ["official_inventory_match"],"ghostJobRisk": "low"}
Closed rows use verificationStatus: "not_applicable". If verification is disabled,
rows use not_requested; failures and cost-limit skips are also explicit.
When verification is enabled, at least 95% of submitted jobs must receive a result
by default. Otherwise the run fails without committing state, webhooks, or
company-scan billing, allowing a safe retry of the same events.
Verification is performed by
kamerozkan/linkedin-job-apply-link-verifier, which currently charges $0.004
per completed job decision. maxJobsToVerify and verificationMaxTotalChargeUsd
are hard cost guards; verification is off by default.
Pricing
- Company monitored: $0.01 per company scan
- Dataset output: $0.00001 per event row
- Actor start: $0.00005
- Optional verification child Actor: $0.004 per completed job decision
Platform usage for this monitoring Actor is included in its event pricing.
Daily monitoring
For production:
- Configure the companies and save the input as an Apify Task.
- Schedule the Task hourly or daily.
- Leave
stateNamespaceonautoto isolate each saved Task, or set a stable custom value. - Use a unique namespace when testing so production history is not changed.
Daily is the best default. Hourly runs suit fast sales or recruiting alerts. Runs sharing the same state store and namespace are protected by a renewable, crash-safe lease. If schedules overlap, the later run waits briefly for the first; if the lease stays busy, it exits before scanning, company charging, emitting events, or touching state. A hard crash releases the lease automatically within 90 seconds.
Webhook delivery
Set webhookUrl to an HTTPS endpoint. Every non-empty run sends enriched events in
batches. Add webhookSecret to receive an HMAC-SHA256 signature:
x-hiring-signals-signature: sha256=<hex digest of the exact request body>
The webhook retries each batch three times. A failed batch remains in a durable
outbox inside the watchlist state store and is replayed with the same delivery ID,
body, and signature on the next run. Delivery status and pending batch counts are
included in the OUTPUT summary. A webhook failure never deletes dataset output
or silently drops an alert.
Closure safety and pagination
LinkedIn's public guest endpoint can return variable page sizes. This Actor:
- reads the public search page's reported total as a coverage target
- forces LinkedIn's Worldwide scope instead of inheriting the crawler IP's country
- captures the larger first-page result set before requesting fragments
- keeps a stable cookie jar and proxy session for each company
- advances by the page size actually returned
- bypasses stale edge-cache fragments so pagination offsets are honored
- confirms an empty terminal page twice
- retries repeated or no-progress pages
- retries transient company failures up to eight times with a fresh network session
- uses all eight attempts when necessary to seek a closure-safe inventory
- fails fast on permanent invalid/removed company URLs instead of wasting retry sessions
- rejects canonical slug mismatches instead of silently scanning a different company
- unions complementary retry inventories so transient page shifts do not create gaps
- treats challenge pages and unverified empty HTML as incomplete, never as zero jobs
- marks capped or unstable scans as incomplete
- never closes a missing job after an incomplete scan
- does not charge the primary company-scan event for incomplete scans
- charges completed company scans only after dataset, outbox, and watchlist state commit
- requires two complete missing scans by default before emitting
closed - fails the run quality gate below 95% usable company coverage while preserving partial output
- enforces a 95% fully closure-safe gate by default with
strictClosureQualityGate
This favors false-negative closures over false positives.
The run-level success rate accepts a terminal snapshot only when it is complete or
has at least 98% of LinkedIn's reported inventory. A 98–99.99% snapshot is useful
for additions and analytics but remains complete: false, so it can never advance
missing-job counters or emit closures. closureSafeRate reports the stricter
fully-complete rate separately.
Privacy-minimized output
The output schema excludes recruiter names, personal profile links, emails, phone numbers, applicant identities, and raw job descriptions. It processes company job listings and job lifecycle facts.
This is privacy-minimized by design, not a blanket legal guarantee. Users remain responsible for applicable law, contractual terms, and how they use the output.
Run summary
The OUTPUT key-value-store record reports:
- requested, successful, failed, complete, and incomplete company scans
- completion rate, total scan attempts, fetched pages, and retry recoveries
- jobs seen and events emitted by type
- verification run and merged-result counts
- webhook delivery counts and failures
- durable webhook outbox pending/replayed counts
- state-lease ownership
- rolling 30-day scan and closure-safe SLOs; the window becomes mature after seven samples spanning at least six days
- pay-per-event billing counters
Local development
npm installnpm run checknpx apify-cli validate-schema