Linkedin Open Profile Status avatar

Linkedin Open Profile Status

Pricing

from $3.99 / 1,000 results

Go to Apify Store
Linkedin Open Profile Status

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

ScraperForge

Maintained by Community

Actor stats

0

Bookmarked

4

Total users

1

Monthly active users

3 days ago

Last modified

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?

FieldWhat it tells you
open_to_worktrue when the badge is publicly visible, false when it is not, null when the profile could not be read
urlThe profile that was checked
data.open_to_workThe same value nested, for API consumers expecting an object
proxy_modeWhich connection tier answered: direct, datacenter or residential
messageok, or the failure reason
debugProxy 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

  1. Collect the LinkedIn profile URLs you want to check.
  2. Paste them into Profile URLs (bulk), one per line.
  3. (Recommended) Paste your li_at cookie to reduce blocks.
  4. Click Start — rows appear in the Output tab as each profile is checked.
  5. 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

FieldTypeDefaultDescription
startUrlsarray— (required)LinkedIn profile URLs, one per line, e.g. https://www.linkedin.com/in/ajjames.
liAtCookiestringYour LinkedIn li_at session cookie. Recommended — it materially reduces blocks on larger lists. Stored as a secret input.
proxyConfigurationobjectdirectDefault 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_at is 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.

null is not false. false means the badge is genuinely absent; null means 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 ApifyClient
client = 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.
  • null means unreadable, not "not looking" — always handle the three states separately.
  • A li_at cookie 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.

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.


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.