Linkedin Open Profile Status
Pricing
from $3.99 / 1,000 results
Linkedin Open Profile Status
🔎 LinkedIn Open Profile Status helps you verify who’s open to profile viewing—faster outreach, smarter lead targeting, and better networking visibility. 🚀 Ideal for sales, recruiting & B2B research.
Pricing
from $3.99 / 1,000 results
Rating
0.0
(0)
Developer
ScraperForge
Maintained by CommunityActor stats
0
Bookmarked
4
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
LinkedIn Open Profile Status — Bulk "Open to Work" Badge Checker
Check, in bulk, whether LinkedIn profiles are publicly displaying the "Open to work" badge. Paste a list of profile URLs and get back a decisive table: one row per profile, true / false / unknown, plus the exact reason whenever a profile could not be read.
One question, answered fast and cheaply, across hundreds of profiles — the timing signal recruiters and sales teams care about most.
What is LinkedIn Open Profile Status?
This Actor does one thing deliberately well: it tells you whether a LinkedIn profile is publicly signalling that its owner is open to new opportunities.
That single flag changes how you approach someone. A candidate showing the badge is inviting recruiter contact; a prospect showing it may be about to change jobs, which affects whether a deal is worth pursuing now.
Checking it by hand means opening profiles one at a time. This Actor takes a list and returns a spreadsheet, saving rows to the dataset in real time so you can watch the table fill up while the run is still going.
What data can you extract?
| Field | What it tells you |
|---|---|
open_to_work | true when the badge is publicly visible, false when it is not, null when the profile could not be read |
url | The profile that was checked |
data.open_to_work | The same value nested, for API consumers expecting an object |
proxy_mode | Which connection tier answered: direct, datacenter or residential |
message | ok, or the failure reason |
debug | Proxy mode and diagnostic details for the attempt |
Why teams check open-to-work status in bulk
For recruiters
A candidate list where you know who is openly looking is a prioritised list. Contact the true rows first — response rates are not comparable.
For talent pipeline monitoring
Re-check a saved talent pool weekly. Anyone flipping from false to true just became available, and being first to that signal is most of the advantage.
For sales teams
A champion signalling a job change is a risk to an open deal and an opportunity at their next employer. Either way you want to know before the change happens, not after.
For competitor attrition tracking
Run a competitor's employee list and count how many are signalling availability. A rising ratio is a visible early indicator of internal problems.
For recruitment market research
Across a role or region, the share of profiles openly on the market is a useful measure of labour-market slack.
For list hygiene
The null rows tell you which profile URLs in your database are stale, wrong or unreachable — worth cleaning regardless of the badge.
How to check open-to-work status step by step
- Collect the LinkedIn profile URLs you want to check.
- Paste them into Profile URLs (bulk), one per line.
- (Recommended) Paste your
li_atcookie to reduce blocks. - Click Start — rows appear in the Output tab as each profile is checked.
- Export as CSV, Excel or JSON.
⬇️ Input
Example input
{"startUrls": ["https://www.linkedin.com/in/ajjames","https://www.linkedin.com/in/candidate-two"],"liAtCookie": "<YOUR_LI_AT_COOKIE>"}
Input reference
| Field | Type | Default | Description |
|---|---|---|---|
startUrls | array | — (required) | LinkedIn profile URLs, one per line, e.g. https://www.linkedin.com/in/ajjames. |
liAtCookie | string | — | Your LinkedIn li_at session cookie. Recommended — it materially reduces blocks on larger lists. Stored as a secret input. |
proxyConfiguration | object | direct | Default is a direct connection. The Actor falls back to Apify Proxy automatically when blocked; configure a group or country here if you need to. |
⚠️
li_atis a credential. It grants access to your LinkedIn account. Prefer a dedicated secondary account, and note that heavy automated activity can lead LinkedIn to restrict accounts.
⬆️ Output
Example output — success
{"url": "https://www.linkedin.com/in/ajjames","open_to_work": true,"data": { "open_to_work": true },"proxy_mode": "residential","message": "ok","debug": { "proxy_mode": "residential", "details": "badge matched" }}
Example output — unreadable profile
{"url": "https://www.linkedin.com/in/does-not-exist","open_to_work": null,"data": { "open_to_work": null },"proxy_mode": "residential","message": "Failed to fetch profile. Last=…","debug": { "proxy_mode": "residential" }}
Illustrative values — a live run returns current LinkedIn data.
nullis notfalse.falsemeans the badge is genuinely absent;nullmeans the profile could not be read. Treating them as the same thing is the most common mistake with this kind of check, which is why they are kept distinct.
Usage recipes
Prioritise a candidate shortlist
{"startUrls": ["https://www.linkedin.com/in/candidate-one","https://www.linkedin.com/in/candidate-two","https://www.linkedin.com/in/candidate-three"],"liAtCookie": "<YOUR_LI_AT_COOKIE>"}
Sort the export by open_to_work and start with the true rows.
Weekly availability monitor
Save your talent pool as a Task, attach a weekly Schedule, and compare open_to_work between runs. Every false → true transition is a new opportunity, and a Slack integration turns it into an alert.
Chain after a profile finder
Use a LinkedIn profile or employee scraper to turn names into URLs, then feed those URLs straight into this Actor as a qualification step.
Clean your database
Filter the export for open_to_work: null — those URLs are unreachable, wrong or were blocked. Re-run just those with a li_at cookie set.
Measure competitor attrition
Run a competitor's employee list monthly and track the percentage showing the badge over time.
How does this compare to LinkedIn's official API?
LinkedIn's Talent Solutions APIs are partner-gated — access requires a commercial agreement and an approved application, and open-to-work status is not exposed as a general lookup for arbitrary profiles. LinkedIn Recruiter surfaces the signal inside its own interface, but does not let you export a bulk yes/no list against your own URL set.
This Actor checks the publicly displayed badge on the profile page — exactly what any visitor sees — and returns it as data you can join to your own records.
Integrate and automate
Python
from apify_client import ApifyClientclient = ApifyClient("<YOUR_APIFY_API_TOKEN>")run = client.actor("scraperforge/linkedin-open-profile-status").call(run_input={"startUrls": ["https://www.linkedin.com/in/ajjames"],"liAtCookie": "<YOUR_LI_AT_COOKIE>",})for row in client.dataset(run["defaultDatasetId"]).iterate_items():print(row["url"], "->", row["open_to_work"], "|", row["message"])
JavaScript
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: '<YOUR_APIFY_API_TOKEN>' });const run = await client.actor('scraperforge/linkedin-open-profile-status').call({startUrls: ['https://www.linkedin.com/in/ajjames'],});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
REST API
curl -X POST "https://api.apify.com/v2/acts/scraperforge~linkedin-open-profile-status/runs?token=<YOUR_APIFY_API_TOKEN>" \-H "Content-Type: application/json" \-d '{"startUrls":["https://www.linkedin.com/in/ajjames"]}'
n8n, Make, Zapier and AI agents
Call the Actor from n8n, Make, Zapier or an MCP-capable agent as a qualification step inside a larger sourcing workflow.
Schedules and webhooks
A weekly Schedule plus a Slack webhook turns this into an automatic "who just became available" alert for your talent pool.
Pricing and what you are charged for
Pay-per-event: a small Actor-start charge plus a charge per profile row delivered to your dataset. Because each row is a single boolean check, screening large lists stays inexpensive.
Current rates are on the Pricing tab of this Actor's page, and Apify shows an estimate before and during every run. If the run escalates to Apify Residential proxies, that traffic is billed separately by the platform.
Limits, reliability and blocking
- The badge is a public signal, not private data. Members who share "Open to work" only with recruiters do not display a public badge and will correctly return
false. That is a real limitation of any public check, including this one. nullmeans unreadable, not "not looking" — always handle the three states separately.- A
li_atcookie makes a large difference to success rate on lists beyond a handful of profiles. - Proxy escalation is deliberate and sticky: direct → datacenter → residential with 3 retries, and after the first direct block the Actor stays on residential for the remaining URLs rather than re-testing a route that already failed.
- Two detection paths are used — a fast HTTP check first, then a real browser render if that is inconclusive — so accuracy does not depend on how LinkedIn happens to serve the page.
- This Actor answers one question. It does not extract names, headlines or work history; pair it with a profile scraper for those.
- Default run options are 4 GB memory and a 1-hour timeout; raise the timeout for very long URL lists.
Is it legal to check LinkedIn open-to-work status?
This Actor reads a publicly displayed profile badge — the same thing any visitor sees on the profile page. It does not log in with someone else's credentials, access private data, or read recruiter-only signals.
Profile URLs and job-seeking status are personal data, and job-seeking status is sensitive in context — it can reveal that someone is looking to leave their employer. Handle it accordingly: have a lawful basis under GDPR and comparable regimes, keep the data secure and access-controlled, do not disclose it to a person's current employer, honour objection requests, and comply with LinkedIn's User Agreement. If you supply a cookie, you are responsible for that account.
❓ Frequently asked questions
Do I need a LinkedIn account?
Not strictly — the Actor starts anonymously. But supplying a li_at cookie significantly reduces blocks and is recommended for anything beyond a few URLs.
What exactly counts as "open to work"?
The publicly visible Open to work badge on the profile. If a member has restricted that signal to recruiters only, it is not public and returns false.
Why is open_to_work null for some rows?
That profile could not be fetched — blocked, deleted, or a bad URL. message and debug say which.
Do I need to configure proxies?
No. The Actor starts direct and escalates automatically. Configure the proxy section only if you need a specific country or group.
Can I check hundreds of profiles at once?
Yes — that is the intended use. Add a li_at cookie and expect the run to settle on residential proxies partway through.
Does it return names or job titles?
No. It answers the open-to-work question only. Combine it with a LinkedIn profile scraper for full details.
Can I run it on a schedule?
Yes, and that is where it is most valuable — the signal matters most the week it changes.
Which export format should I use?
CSV or Excel — the rows are flat and small.
🔗 Related scrapers
- LinkedIn Company Employees Scraper — build the profile-URL list this Actor qualifies.
- LinkedIn Network Scraper — check availability across your own connections.
- LinkedIn Company Scraper with Firmographics & Funding Data — qualify the employer alongside the person.
- Indeed Scraper — the demand side: who is hiring for the roles your candidates fit.
Browse the full collection on the ScraperForge profile.
💬 Feedback
Need extra signals, richer profile data, or a custom recruiting pipeline? Open an issue on the Issues tab of this Actor.