{
  "data": {
    "id": "7khyQ6hldgi6HyR6F",
    "actId": "9scfzowxid31IIDsV",
    "userId": "KfI2DBXlJzyuAFqMz",
    "startedAt": "2026-09-11T14:36:12.049Z",
    "finishedAt": "2026-09-11T14:36:14.945Z",
    "status": "SUCCEEDED",
    "meta": {
      "origin": "API"
    },
    "stats": {
      "durationMillis": 2791,
      "runTimeSecs": 2.791,
      "computeUnits": 0.003101111111111111,
      "imageSizeBytes": 521165824
    },
    "options": {
      "useCache": true,
      "betaPackages": false,
      "tag": "latest",
      "memoryMbytes": 4096,
      "diskMbytes": 8192
    },
    "exitCode": 0,
    "inputSchema": "{\n  \"title\": \"LinkedIn Profile Scraper\",\n  \"description\": \"Scrape public LinkedIn profiles into rich people / B2B-lead records. Provide profile URLs (or usernames), or search by keyword, and get name, headline, current role, location, full experience, education, languages, follower & connection counts and a lead score.\",\n  \"type\": \"object\",\n  \"schemaVersion\": 1,\n  \"properties\": {\n    \"profileUrls\": {\n      \"title\": \"Profile URLs or usernames\",\n      \"type\": \"array\",\n      \"description\": \"LinkedIn profile URLs (https://www.linkedin.com/in/<username>) or bare usernames. The primary, fastest, most reliable input — paste a list exported from your CRM, Sales Navigator, or a spreadsheet.\",\n      \"editor\": \"stringList\",\n      \"prefill\": [\n        \"https://www.linkedin.com/in/williamhgates\",\n        \"satyanadella\"\n      ],\n      \"example\": [\n        \"https://www.linkedin.com/in/williamhgates\"\n      ]\n    },\n    \"startUrls\": {\n      \"title\": \"Start URLs (request list)\",\n      \"type\": \"array\",\n      \"description\": \"Alternative to Profile URLs — a standard Apify request list of LinkedIn profile URLs. Useful when chaining from another actor or integration.\",\n      \"editor\": \"requestListSources\"\n    },\n    \"discoverRelated\": {\n      \"title\": \"Discover related profiles\",\n      \"type\": \"boolean\",\n      \"description\": \"Expand each seed profile into the people LinkedIn shows under \\\"People also viewed\\\" on that profile — a reliable way to snowball a small seed list into many similar prospects (same role, network or industry). Bounded to one level of expansion and the Max profiles cap.\",\n      \"default\": false\n    },\n    \"maxRelatedPerProfile\": {\n      \"title\": \"Max related per profile\",\n      \"type\": \"integer\",\n      \"description\": \"When Discover related profiles is on, how many related people to harvest from each seed profile (before the overall Max profiles cap is applied).\",\n      \"default\": 20,\n      \"minimum\": 1,\n      \"maximum\": 50\n    },\n    \"maxProfiles\": {\n      \"title\": \"Max profiles\",\n      \"type\": \"integer\",\n      \"description\": \"Maximum number of profile records to return. Keep modest for a fast run; set 0 for no limit (explicit opt-in).\",\n      \"default\": 100,\n      \"minimum\": 0,\n      \"maximum\": 100000,\n      \"unit\": \"profiles\"\n    },\n    \"includeExperience\": {\n      \"title\": \"Include work experience\",\n      \"type\": \"boolean\",\n      \"description\": \"Extract the full work-experience list (title, company, company URL, date range, duration, location). Same page — no extra request.\",\n      \"default\": true\n    },\n    \"includeEducation\": {\n      \"title\": \"Include education\",\n      \"type\": \"boolean\",\n      \"description\": \"Extract the education list (school, school URL, degree, field, years). Same page — no extra request.\",\n      \"default\": true\n    },\n    \"includeActivity\": {\n      \"title\": \"Include recent activity\",\n      \"type\": \"boolean\",\n      \"description\": \"Also extract the profile's recent public posts / activity (text + link) when present. Same page — no extra request.\",\n      \"default\": false\n    },\n    \"monitorMode\": {\n      \"title\": \"Monitor mode (job-change detection)\",\n      \"type\": \"boolean\",\n      \"description\": \"Re-scan the same profiles on a schedule and emit a record ONLY when something changed since the last run — a new job, a title change, a company change or a headline change. Perfect for sales/recruiting buying-signals. Works alongside Apify Schedules (the schedule controls WHEN it runs; monitor mode controls WHAT is emitted). State is stored in a named key-value store.\",\n      \"default\": false\n    },\n    \"monitorStoreName\": {\n      \"title\": \"Monitor store name\",\n      \"type\": \"string\",\n      \"description\": \"Named key-value store that remembers each profile's last snapshot for monitor mode. Reuse the same name across scheduled runs.\",\n      \"default\": \"linkedin-profile-monitor\",\n      \"editor\": \"textfield\"\n    },\n    \"maxConcurrency\": {\n      \"title\": \"Max concurrency\",\n      \"type\": \"integer\",\n      \"description\": \"How many profiles to fetch in parallel. Lower = gentler on rate limits and steadier; higher = faster.\",\n      \"default\": 8,\n      \"minimum\": 1,\n      \"maximum\": 20\n    },\n    \"proxyConfiguration\": {\n      \"title\": \"Proxy configuration\",\n      \"type\": \"object\",\n      \"description\": \"LinkedIn requires residential proxies. Keep the default (Apify residential, US) for the most reliable results.\",\n      \"editor\": \"proxy\",\n      \"prefill\": {\n        \"useApifyProxy\": true,\n        \"apifyProxyGroups\": [\n          \"RESIDENTIAL\"\n        ]\n      },\n      \"default\": {\n        \"useApifyProxy\": true,\n        \"apifyProxyGroups\": [\n          \"RESIDENTIAL\"\n        ]\n      }\n    },\n    \"urlsFromFile\": {\n      \"title\": \"Import URLs from a file\",\n      \"type\": \"string\",\n      \"editor\": \"textarea\",\n      \"description\": \"Paste a list of URLs (one per line), OR one link to a .txt/.csv file, Google Sheet or Google Drive file containing them. Lets you import many Start URLs at once instead of typing each. Google Sheet/Drive share links are handled automatically.\",\n      \"prefill\": \"\"\n    }\n  }\n}",
    "readme": "# LinkedIn Profile Scraper — People, Job Changes & B2B Leads\n\n<!-- scrapesage:disclaimer:v1 -->\n> **Disclaimer:** This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by LinkedIn Corporation or any of its subsidiaries. All trademarks mentioned are the property of their respective owners. \"LinkedIn\" is referenced only to describe the publicly available website this Actor collects data from.\n\nTurn any list of **public LinkedIn profiles** into rich, structured people records — **full name, headline, current company & title, location, complete work experience, education, languages, exact follower & connection counts, and a 0–100 lead score**. Feed profile URLs (or usernames) straight from your CRM or Sales Navigator export, and optionally **expand into related profiles** (\"People also viewed\") to snowball a small seed list into hundreds of similar prospects. Then switch on **monitor mode** to get **job-change alerts** — the single strongest B2B buying signal there is.\n\nNo login, no cookies, no browser — fast, public-data extraction.\n\n## Why this LinkedIn profile scraper?\n\nMost LinkedIn scrapers either need your account cookies (risky) or return a thin record with the headline and little else. This actor merges **two sources on every public profile** — the embedded JSON-LD and the rendered page — to ship the **richest dataset in the category**, and it never asks for your login.\n\n| Data | Typical scrapers | This actor |\n|---|---|---|\n| Full name, headline, location | ✅ | ✅ |\n| Current company, title & seniority | partial | ✅ |\n| **Complete work experience** (title, company, company URL, date range, duration) | ❌ | ✅ |\n| **Education** (school, school URL, degree, years) | ❌ | ✅ |\n| **Exact follower count** (not \"12M\") | ❌ | ✅ |\n| Connection count | partial | ✅ |\n| Languages, awards, external links | ❌ | ✅ |\n| **Lead score (0–100)** per profile | ❌ | ✅ |\n| **Job-change / title-change / headline-change detection** | ❌ | ✅ monitor mode |\n| **Related-profile discovery** (\"People also viewed\") | ❌ | ✅ snowball |\n| Needs your LinkedIn cookies? | often | **❌ never** |\n\n## Use cases\n\n- **B2B lead generation & prospecting** — enrich a list of profile URLs into a complete sales record: name, title, company, seniority, location and lead score. Prioritize decision-makers (`seniorityLevel` = Owner/C-Level or VP/Director).\n- **Job-change alerts (buying signals)** — run in monitor mode on a schedule and get a record the moment a prospect changes jobs, gets promoted, or updates their headline. New-in-role buyers are the warmest leads in B2B.\n- **Recruiting & sourcing** — build candidate shortlists with full experience and education history; track when passive candidates become open to work.\n- **CRM enrichment** — keep contact records fresh with current title, company and location.\n- **Market & talent intelligence** — map who works where, seniority distribution, and follower influence across a company or industry.\n- **Influencer & creator research** — rank profiles by exact follower count and recent activity.\n\n## How to use\n\n1. [Sign up for Apify](https://console.apify.com/sign-up) — the free plan is enough to try this actor.\n2. Open the **LinkedIn Profile Scraper**, paste **Profile URLs** (or usernames) — optionally turn on **Discover related profiles** — and click **Start**.\n3. Watch results stream into the dataset table.\n4. **Export** as JSON, CSV, Excel, XML, or RSS — or pull results programmatically via the [Apify API](https://docs.apify.com/api/v2).\n\n## Input\n\n```json\n{\n    \"profileUrls\": [\n        \"https://www.linkedin.com/in/williamhgates\",\n        \"satyanadella\"\n    ],\n    \"discoverRelated\": false,\n    \"maxRelatedPerProfile\": 20,\n    \"maxProfiles\": 100,\n    \"includeExperience\": true,\n    \"includeEducation\": true,\n    \"includeActivity\": false,\n    \"monitorMode\": false\n}\n```\n\n- **profileUrls** — LinkedIn profile URLs (`https://www.linkedin.com/in/<username>`) or bare usernames. The primary, fastest, most reliable input.\n- **startUrls** — alternative request-list of profile URLs (handy when chaining from another actor).\n- **discoverRelated** *(default false)* — expand each seed profile into its **\"People also viewed\"** people (one level deep), bounded by **maxRelatedPerProfile** and **maxProfiles**. The reliable way to grow a seed list into similar prospects without supplying every URL.\n- **maxProfiles** *(default 100)* — cap the number of profiles; set `0` for no limit (explicit opt-in).\n- **includeExperience / includeEducation** *(default true)* — full experience & education lists (same page, no extra request).\n- **includeActivity** *(default false)* — recent public posts/activity when present.\n- **monitorMode** *(default false)* — emit a record only when a profile **changed** since the last run (new job / title / headline). See below.\n- **maxConcurrency** *(default 8)* — profiles fetched in parallel.\n- **proxyConfiguration** — keep the default (Apify **residential**, US); LinkedIn blocks datacenter IPs.\n\n## Output\n\nOne record per profile (`type: \"profile\"`):\n\n```json\n{\n    \"type\": \"profile\",\n    \"profileUrl\": \"https://www.linkedin.com/in/williamhgates\",\n    \"publicId\": \"williamhgates\",\n    \"fullName\": \"Bill Gates\",\n    \"firstName\": \"Bill\",\n    \"lastName\": \"Gates\",\n    \"headline\": \"Chair, Gates Foundation and Founder, Breakthrough Energy\",\n    \"currentTitle\": \"Co-chair\",\n    \"currentCompany\": \"Gates Foundation\",\n    \"currentCompanyUrl\": \"https://www.linkedin.com/company/gates-foundation\",\n    \"seniorityLevel\": \"Owner/C-Level\",\n    \"locationName\": \"Seattle, Washington, United States\",\n    \"city\": \"Seattle\",\n    \"country\": \"United States\",\n    \"about\": \"Chair of the Gates Foundation. Founder of Breakthrough Energy. Co-founder of Microsoft…\",\n    \"profilePhotoUrl\": \"https://media.licdn.com/dms/image/v2/…/profile-displayphoto.jpg\",\n    \"followerCount\": 40467271,\n    \"connectionCount\": 500,\n    \"connectionCountText\": \"500+\",\n    \"experience\": [\n        { \"title\": \"Co-chair\", \"company\": \"Gates Foundation\", \"companyUrl\": \"https://www.linkedin.com/company/gates-foundation\", \"dateRange\": \"2000 - Present\", \"durationText\": \"26 years\", \"startDate\": 2000, \"isCurrent\": true },\n        { \"title\": \"Co-founder\", \"company\": \"Microsoft\", \"dateRange\": \"1975 - Present\", \"startDate\": 1975, \"isCurrent\": true }\n    ],\n    \"experienceCount\": 3,\n    \"education\": [\n        { \"school\": \"Harvard University\", \"schoolUrl\": \"https://www.linkedin.com/school/harvard-university\", \"dateRange\": \"1973 - 1975\", \"startYear\": 1973, \"endYear\": 1975 }\n    ],\n    \"educationCount\": 2,\n    \"languages\": [\"English\"],\n    \"jobTitles\": [\"Co-chair\", \"Founder\", \"Co-founder\"],\n    \"isInfluencer\": true,\n    \"leadScore\": 92,\n    \"source\": \"url\",\n    \"scrapedAt\": \"2026-06-26T12:00:00.000Z\",\n    \"articles\": [{ \"title\": \"Reskilling the Workforce on the Road to Economic Recovery\", \"url\": \"https://www.linkedin.com/pulse/…\", \"publishedAt\": \"Jun 30, 2020\" }],\n    \"skills\": [\"Leadership\", \"Product Management\", \"Strategy\"],\n    \"recommendations\": [{ \"author\": \"Akosua Boadi-Agyemang\", \"authorUrl\": \"https://www.linkedin.com/in/akosuaba\", \"text\": \"Personally, Jeff has impacted my journey so much…\" }],\n    \"peopleAlsoViewed\": [{ \"name\": \"Rob Coppedge\", \"headline\": \"Echo Health Ventures\", \"followerCount\": 9000, \"location\": \"Portland, Oregon Metropolitan Area\", \"url\": \"https://www.linkedin.com/in/coppedge\" }]\n}\n```\n\nWhere the public profile shows them, records also carry `publications[]` (title, publisher, date, link), `volunteering[]` (role, organization, dates, cause, description) and `honorsAndAwards[]` (title, issuer, date, description). Sections a member has not filled in are simply absent.\n\n## Job-change monitoring (the killer feature)\n\nTurn on **monitorMode** and combine it with an Apify **Schedule** (e.g. weekly). On the first run every profile is emitted as `first_seen`. On later runs the actor compares each profile to its stored snapshot and emits a record **only when something changed**:\n\n```json\n{\n    \"fullName\": \"Jane Doe\",\n    \"changeType\": \"new_job\",\n    \"currentTitle\": \"VP of Marketing\",\n    \"currentCompany\": \"Acme Corp\",\n    \"previousTitle\": \"Director of Marketing\",\n    \"previousCompany\": \"Globex\",\n    \"changedFields\": [\"company\", \"title\"],\n    \"lastChangedAt\": \"2026-06-26T12:00:00.000Z\",\n    \"profileUrl\": \"https://www.linkedin.com/in/janedoe\"\n}\n```\n\nMonitor mode is **orthogonal to Apify Schedules** — the Schedule decides *when* the actor runs; monitor mode decides *what* it emits. Wire a [webhook](https://docs.apify.com/platform/integrations/webhooks) or [Zapier](https://docs.apify.com/platform/integrations/zapier) zap to push job-change alerts straight into your CRM or Slack. State is kept in a named key-value store (`monitorStoreName`).\n\n<!-- scrapesage:seo-cost:v1 -->\n## How much does it cost to scrape LinkedIn?\n\nThis Actor uses Apify's **pay-per-event** pricing: you are charged only for the results it delivers, with no monthly rental and no start fee. The events it can charge are:\n\n- **Profile scraped** - One enriched public LinkedIn profile (identity, current role, full experience & education, followers, connections, languages & lead score)\n\nThe current price of each event is shown on the **Pricing** tab of this page. Set a maximum total charge on the run if you want a hard cap on spend, and use the input limits to control how much the Actor fetches.\n\n## Automate & schedule\n\nRun this actor on autopilot and pull results into your own stack:\n\n- **[Apify API](https://docs.apify.com/api/v2)** — start runs, fetch datasets, and manage schedules over REST.\n- **[apify-client for JavaScript](https://docs.apify.com/api/client/js/)** and **[apify-client for Python](https://docs.apify.com/api/client/python/)** — official SDKs.\n- **[Schedules](https://docs.apify.com/platform/schedules)** — run hourly/daily/weekly to refresh records or watch a set of prospects for job changes.\n- **[Webhooks](https://docs.apify.com/platform/integrations/webhooks)** — trigger downstream actions (CRM import, Slack alert, email sequence) the moment a run finishes.\n\n```js\nimport { ApifyClient } from 'apify-client';\n\nconst client = new ApifyClient({ token: 'MY_APIFY_TOKEN' });\n\nconst run = await client.actor('scrapesage/linkedin-profile-scraper').call({\n    profileUrls: [\n        'https://www.linkedin.com/in/williamhgates',\n        'satyanadella',\n    ],\n    maxProfiles: 100,\n});\n\nconst { items } = await client.dataset(run.defaultDatasetId).listItems();\nconsole.log(`Got ${items.length} LinkedIn profiles`);\n```\n\n## Integrate with any app\n\nConnect the dataset to 5,000+ apps — no code required:\n\n- **[Make](https://docs.apify.com/platform/integrations/make)** — multi-step automation scenarios.\n- **[Zapier](https://docs.apify.com/platform/integrations/zapier)** — push new profiles or job-change alerts straight into your CRM.\n- **[Slack](https://docs.apify.com/platform/integrations/slack)** — get notified when a monitored prospect changes jobs.\n- **[Google Drive / Sheets](https://docs.apify.com/platform/integrations/drive)** — auto-export every run to a spreadsheet.\n- **[Airbyte](https://docs.apify.com/platform/integrations/airbyte)** — pipe results into your data warehouse.\n- **[GitHub](https://docs.apify.com/platform/integrations/github)** — trigger runs from commits or releases.\n\n## Use with AI assistants (MCP)\n\nThe output is clean, LLM-ready JSON. Call this actor from Claude, ChatGPT, or any agent framework through the **[Apify MCP server](https://docs.apify.com/platform/integrations/mcp)** — ask your assistant to \"enrich these LinkedIn URLs into a lead list and flag anyone who changed jobs this month\" and let it run this scraper for you.\n\n<!-- scrapesage:agentic-payments:v1 -->\n## Agent-ready: autonomous payments (x402 & Skyfire)\n\nThis actor is **agent-ready** — AI agents can discover it, run it, and **pay for it autonomously**, with no Apify account and no human in the loop. It uses [pay-per-event](https://docs.apify.com/platform/actors/publishing/monetize/pay-per-event) pricing and [limited permissions](https://docs.apify.com/platform/actors/development/permissions), so it qualifies for Apify's agentic-payment standards:\n\n- **[x402](https://docs.apify.com/platform/integrations/x402)** — an open, HTTP-native payment protocol. Agents pay per run in USDC on the Base network directly through the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp) — no account, no API key.\n- **[Skyfire](https://docs.apify.com/platform/integrations/skyfire)** — agent-to-service payments for fully autonomous AI-agent workflows.\n\nBuilding an AI agent, MCP tool, or autonomous data pipeline? This scraper is ready to plug in and pay as it goes.\n## More scrapers from scrapesage\n\nBuild a complete **B2B lead-gen & sales-intelligence stack**:\n\n- **[LinkedIn Company Scraper](https://apify.com/scrapesage/linkedin-company-scraper)** — firmographics & company B2B leads (size, industry, HQ, website).\n- **[LinkedIn Jobs Scraper](https://apify.com/scrapesage/linkedin-jobs-scraper)** — job postings as hiring-intent signals.\n- **[LinkedIn Ad Library Scraper](https://apify.com/scrapesage/linkedin-ad-library-scraper)** — competitor B2B ads & creatives.\n- **[Website Contact Scraper](https://apify.com/scrapesage/website-contact-scraper)** — emails, phones & socials from any domain (enrich your profile leads with contact details).\n- **[Google Maps Scraper](https://apify.com/scrapesage/google-maps-scraper)** — local business leads, emails & contacts.\n- **[Salesforce AppExchange Scraper](https://apify.com/scrapesage/salesforce-appexchange-scraper)** — ISV vendor & publisher leads.\n- **[IndiaMART Scraper](https://apify.com/scrapesage/indiamart-scraper)** — B2B supplier & product leads.\n\n## Tips\n\n- **Profile URLs are the most reliable input.** Turn on **Discover related profiles** to snowball from a handful of seeds into many similar prospects.\n- **Keep the residential proxy.** LinkedIn blocks datacenter IPs; the actor rotates a fresh residential IP per request and retries transient rate-limits automatically.\n- **For job-change monitoring**, reuse the same `monitorStoreName` across scheduled runs so snapshots persist.\n- **Cost control** — each profile is one request; lower `maxConcurrency` for steadier runs on very large lists.\n\n## FAQ\n\n**Do I need my LinkedIn account or cookies?** No. This actor reads **public** profile pages only — no login, no cookies, no browser.\n\n**Which fields can it get?** Name, headline, current company/title, seniority, location, about, profile photo, exact follower count, connection count, full work experience (with company URLs and dates), education, languages, awards, external links, and recent activity (opt-in) — plus a lead score.\n\n**Why is a field sometimes empty?** Profiles are member-filled. Sections like About, Languages, Awards or external links are `null` only when the member didn't add them (or LinkedIn doesn't expose them to logged-out visitors), never because the scraper skipped them. Skills and certifications are not shown on logged-out public profiles.\n\n**Can I discover profiles without supplying every URL?** Yes — turn on `discoverRelated` and the actor expands each seed profile into the people LinkedIn lists under \"People also viewed\" (one level deep, bounded by your caps). Start with a few good seeds and let it snowball into similar prospects.\n\n**Can I export to Google Sheets, CSV, or Excel?** Yes — one click in the dataset view, or automatically on every run via the [Google Drive integration](https://docs.apify.com/platform/integrations/drive).\n\n**Is scraping LinkedIn legal?** This actor collects only publicly available data. You are responsible for using the data in compliance with applicable laws (GDPR/CCPA for personal data) and LinkedIn's terms. Scraping of public profile data has been upheld in the U.S. (hiQ v. LinkedIn), but rules vary by jurisdiction and use case — get advice for your situation.\n\n<!-- scrapesage:data-use:v1 -->\n## Data & lawful use\n\nThis Actor reads only what LinkedIn publishes to logged-out visitors: it does not log in, use cookies or session tokens, create accounts, or reach anything behind a sign-in. Names, handles, bios and engagement figures are public, but they relate to identifiable people, so treat the output as personal data. If you are in the EU or UK you are the data controller for what you do with it: have a lawful basis (usually legitimate interest for research, marketing analytics or B2B prospecting), honour access and deletion requests, and do not use the output for spam or unsolicited messaging.\n\nUnder [Apify's Standard Actor Contract](https://docs.apify.com/legal/standard-actor-contract), which governs your use of this Actor, you are the controller of any personal data in your input and output and scrapesage acts only as your processor: that data is processed solely to run your job, written only to your own Apify storage, never used for any other purpose and never shared onward. If you need help with a data-subject request that involves this Actor's output, open an issue on the Issues tab.\n\n<!-- scrapesage:disclaimer-section:v1 -->\n## Disclaimer\n\n**This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by LinkedIn Corporation or any of its subsidiaries. All trademarks mentioned are the property of their respective owners.**\n\n\"LinkedIn\" and any related marks are the property of their respective owners and are used here only in a descriptive, nominative sense - to identify the publicly accessible website from which this Actor collects data. This Actor is not an official LinkedIn product, is not authorised or certified by LinkedIn Corporation, and does not distribute LinkedIn software. It collects only publicly available information; you are responsible for ensuring your use of that data complies with applicable laws, regulations and the terms of the source website.\n\n## Need help?\n\nOpen an issue on the actor's **Issues** tab, or visit the [Apify help center](https://help.apify.com/). Feature requests are welcome — this actor is actively maintained.\n",
    "actorDefinition": {
      "actorSpecification": 1,
      "name": "linkedin-profile-scraper",
      "title": "LinkedIn Profile Scraper — People, Job Changes & B2B Leads",
      "description": "Scrape public LinkedIn profiles into rich people records: name, headline, current company & title, location, full work experience, education, languages, follower & connection counts and a lead score. Feed profile URLs or search by keyword. Job-change monitor mode. No login, no cookies, no browser.",
      "version": "0.1",
      "buildTag": "latest",
      "input": {
        "title": "LinkedIn Profile Scraper",
        "description": "Scrape public LinkedIn profiles into rich people / B2B-lead records. Provide profile URLs (or usernames), or search by keyword, and get name, headline, current role, location, full experience, education, languages, follower & connection counts and a lead score.",
        "type": "object",
        "schemaVersion": 1,
        "properties": {
          "profileUrls": {
            "title": "Profile URLs or usernames",
            "type": "array",
            "description": "LinkedIn profile URLs (https://www.linkedin.com/in/<username>) or bare usernames. The primary, fastest, most reliable input — paste a list exported from your CRM, Sales Navigator, or a spreadsheet.",
            "editor": "stringList",
            "prefill": [
              "https://www.linkedin.com/in/williamhgates",
              "satyanadella"
            ],
            "example": [
              "https://www.linkedin.com/in/williamhgates"
            ]
          },
          "startUrls": {
            "title": "Start URLs (request list)",
            "type": "array",
            "description": "Alternative to Profile URLs — a standard Apify request list of LinkedIn profile URLs. Useful when chaining from another actor or integration.",
            "editor": "requestListSources"
          },
          "discoverRelated": {
            "title": "Discover related profiles",
            "type": "boolean",
            "description": "Expand each seed profile into the people LinkedIn shows under \"People also viewed\" on that profile — a reliable way to snowball a small seed list into many similar prospects (same role, network or industry). Bounded to one level of expansion and the Max profiles cap.",
            "default": false
          },
          "maxRelatedPerProfile": {
            "title": "Max related per profile",
            "type": "integer",
            "description": "When Discover related profiles is on, how many related people to harvest from each seed profile (before the overall Max profiles cap is applied).",
            "default": 20,
            "minimum": 1,
            "maximum": 50
          },
          "maxProfiles": {
            "title": "Max profiles",
            "type": "integer",
            "description": "Maximum number of profile records to return. Keep modest for a fast run; set 0 for no limit (explicit opt-in).",
            "default": 100,
            "minimum": 0,
            "maximum": 100000,
            "unit": "profiles"
          },
          "includeExperience": {
            "title": "Include work experience",
            "type": "boolean",
            "description": "Extract the full work-experience list (title, company, company URL, date range, duration, location). Same page — no extra request.",
            "default": true
          },
          "includeEducation": {
            "title": "Include education",
            "type": "boolean",
            "description": "Extract the education list (school, school URL, degree, field, years). Same page — no extra request.",
            "default": true
          },
          "includeActivity": {
            "title": "Include recent activity",
            "type": "boolean",
            "description": "Also extract the profile's recent public posts / activity (text + link) when present. Same page — no extra request.",
            "default": false
          },
          "monitorMode": {
            "title": "Monitor mode (job-change detection)",
            "type": "boolean",
            "description": "Re-scan the same profiles on a schedule and emit a record ONLY when something changed since the last run — a new job, a title change, a company change or a headline change. Perfect for sales/recruiting buying-signals. Works alongside Apify Schedules (the schedule controls WHEN it runs; monitor mode controls WHAT is emitted). State is stored in a named key-value store.",
            "default": false
          },
          "monitorStoreName": {
            "title": "Monitor store name",
            "type": "string",
            "description": "Named key-value store that remembers each profile's last snapshot for monitor mode. Reuse the same name across scheduled runs.",
            "default": "linkedin-profile-monitor",
            "editor": "textfield"
          },
          "maxConcurrency": {
            "title": "Max concurrency",
            "type": "integer",
            "description": "How many profiles to fetch in parallel. Lower = gentler on rate limits and steadier; higher = faster.",
            "default": 8,
            "minimum": 1,
            "maximum": 20
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "LinkedIn requires residential proxies. Keep the default (Apify residential, US) for the most reliable results.",
            "editor": "proxy",
            "prefill": {
              "useApifyProxy": true,
              "apifyProxyGroups": [
                "RESIDENTIAL"
              ]
            },
            "default": {
              "useApifyProxy": true,
              "apifyProxyGroups": [
                "RESIDENTIAL"
              ]
            }
          },
          "urlsFromFile": {
            "title": "Import URLs from a file",
            "type": "string",
            "editor": "textarea",
            "description": "Paste a list of URLs (one per line), OR one link to a .txt/.csv file, Google Sheet or Google Drive file containing them. Lets you import many Start URLs at once instead of typing each. Google Sheet/Drive share links are handled automatically.",
            "prefill": ""
          }
        }
      },
      "output": {
        "actorOutputSchemaVersion": 1,
        "title": "Output schema of LinkedIn Profile Scraper",
        "description": "Public LinkedIn people records — identity, headline, current role, location, full experience & education, languages, follower/connection counts and lead score — stored as JSON items in the default dataset.",
        "properties": {
          "results": {
            "type": "string",
            "title": "Profiles & leads",
            "description": "All scraped LinkedIn profile / people-lead records as JSON items in the default dataset.",
            "template": "{{links.apiDefaultDatasetUrl}}/items"
          }
        }
      },
      "storages": {
        "dataset": {
          "actorSpecification": 1,
          "fields": {},
          "views": {
            "profiles": {
              "title": "Profiles",
              "transformation": {
                "fields": [
                  "fullName",
                  "headline",
                  "currentTitle",
                  "currentCompany",
                  "locationName",
                  "followerCount",
                  "connectionCount",
                  "experienceCount",
                  "educationCount",
                  "leadScore",
                  "profileUrl",
                  "skills",
                  "articles"
                ]
              },
              "display": {
                "component": "table",
                "properties": {
                  "fullName": {
                    "label": "Name",
                    "format": "text"
                  },
                  "headline": {
                    "label": "Headline",
                    "format": "text"
                  },
                  "currentTitle": {
                    "label": "Title",
                    "format": "text"
                  },
                  "currentCompany": {
                    "label": "Company",
                    "format": "text"
                  },
                  "locationName": {
                    "label": "Location",
                    "format": "text"
                  },
                  "followerCount": {
                    "label": "Followers",
                    "format": "number"
                  },
                  "connectionCount": {
                    "label": "Connections",
                    "format": "number"
                  },
                  "experienceCount": {
                    "label": "Roles",
                    "format": "number"
                  },
                  "educationCount": {
                    "label": "Schools",
                    "format": "number"
                  },
                  "leadScore": {
                    "label": "Lead score",
                    "format": "number"
                  },
                  "profileUrl": {
                    "label": "Profile",
                    "format": "link"
                  },
                  "skills": {
                    "label": "Skills",
                    "format": "array"
                  },
                  "articles": {
                    "label": "Articles",
                    "format": "array"
                  }
                }
              }
            },
            "leads": {
              "title": "B2B leads",
              "transformation": {
                "fields": [
                  "fullName",
                  "currentTitle",
                  "currentCompany",
                  "currentCompanyUrl",
                  "seniorityLevel",
                  "locationName",
                  "country",
                  "headline",
                  "leadScore",
                  "profileUrl"
                ]
              },
              "display": {
                "component": "table",
                "properties": {
                  "fullName": {
                    "label": "Name",
                    "format": "text"
                  },
                  "currentTitle": {
                    "label": "Title",
                    "format": "text"
                  },
                  "currentCompany": {
                    "label": "Company",
                    "format": "text"
                  },
                  "currentCompanyUrl": {
                    "label": "Company page",
                    "format": "link"
                  },
                  "seniorityLevel": {
                    "label": "Seniority",
                    "format": "text"
                  },
                  "locationName": {
                    "label": "Location",
                    "format": "text"
                  },
                  "country": {
                    "label": "Country",
                    "format": "text"
                  },
                  "headline": {
                    "label": "Headline",
                    "format": "text"
                  },
                  "leadScore": {
                    "label": "Lead score",
                    "format": "number"
                  },
                  "profileUrl": {
                    "label": "Profile",
                    "format": "link"
                  }
                }
              }
            },
            "jobChanges": {
              "title": "Job changes (monitor)",
              "transformation": {
                "fields": [
                  "fullName",
                  "changeType",
                  "currentTitle",
                  "currentCompany",
                  "previousTitle",
                  "previousCompany",
                  "locationName",
                  "leadScore",
                  "profileUrl"
                ]
              },
              "display": {
                "component": "table",
                "properties": {
                  "fullName": {
                    "label": "Name",
                    "format": "text"
                  },
                  "changeType": {
                    "label": "Change",
                    "format": "text"
                  },
                  "currentTitle": {
                    "label": "New title",
                    "format": "text"
                  },
                  "currentCompany": {
                    "label": "New company",
                    "format": "text"
                  },
                  "previousTitle": {
                    "label": "Prev title",
                    "format": "text"
                  },
                  "previousCompany": {
                    "label": "Prev company",
                    "format": "text"
                  },
                  "locationName": {
                    "label": "Location",
                    "format": "text"
                  },
                  "leadScore": {
                    "label": "Lead score",
                    "format": "number"
                  },
                  "profileUrl": {
                    "label": "Profile",
                    "format": "link"
                  }
                }
              }
            }
          }
        }
      },
      "readme": "# LinkedIn Profile Scraper — People, Job Changes & B2B Leads\n\n<!-- scrapesage:disclaimer:v1 -->\n> **Disclaimer:** This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by LinkedIn Corporation or any of its subsidiaries. All trademarks mentioned are the property of their respective owners. \"LinkedIn\" is referenced only to describe the publicly available website this Actor collects data from.\n\nTurn any list of **public LinkedIn profiles** into rich, structured people records — **full name, headline, current company & title, location, complete work experience, education, languages, exact follower & connection counts, and a 0–100 lead score**. Feed profile URLs (or usernames) straight from your CRM or Sales Navigator export, and optionally **expand into related profiles** (\"People also viewed\") to snowball a small seed list into hundreds of similar prospects. Then switch on **monitor mode** to get **job-change alerts** — the single strongest B2B buying signal there is.\n\nNo login, no cookies, no browser — fast, public-data extraction.\n\n## Why this LinkedIn profile scraper?\n\nMost LinkedIn scrapers either need your account cookies (risky) or return a thin record with the headline and little else. This actor merges **two sources on every public profile** — the embedded JSON-LD and the rendered page — to ship the **richest dataset in the category**, and it never asks for your login.\n\n| Data | Typical scrapers | This actor |\n|---|---|---|\n| Full name, headline, location | ✅ | ✅ |\n| Current company, title & seniority | partial | ✅ |\n| **Complete work experience** (title, company, company URL, date range, duration) | ❌ | ✅ |\n| **Education** (school, school URL, degree, years) | ❌ | ✅ |\n| **Exact follower count** (not \"12M\") | ❌ | ✅ |\n| Connection count | partial | ✅ |\n| Languages, awards, external links | ❌ | ✅ |\n| **Lead score (0–100)** per profile | ❌ | ✅ |\n| **Job-change / title-change / headline-change detection** | ❌ | ✅ monitor mode |\n| **Related-profile discovery** (\"People also viewed\") | ❌ | ✅ snowball |\n| Needs your LinkedIn cookies? | often | **❌ never** |\n\n## Use cases\n\n- **B2B lead generation & prospecting** — enrich a list of profile URLs into a complete sales record: name, title, company, seniority, location and lead score. Prioritize decision-makers (`seniorityLevel` = Owner/C-Level or VP/Director).\n- **Job-change alerts (buying signals)** — run in monitor mode on a schedule and get a record the moment a prospect changes jobs, gets promoted, or updates their headline. New-in-role buyers are the warmest leads in B2B.\n- **Recruiting & sourcing** — build candidate shortlists with full experience and education history; track when passive candidates become open to work.\n- **CRM enrichment** — keep contact records fresh with current title, company and location.\n- **Market & talent intelligence** — map who works where, seniority distribution, and follower influence across a company or industry.\n- **Influencer & creator research** — rank profiles by exact follower count and recent activity.\n\n## How to use\n\n1. [Sign up for Apify](https://console.apify.com/sign-up) — the free plan is enough to try this actor.\n2. Open the **LinkedIn Profile Scraper**, paste **Profile URLs** (or usernames) — optionally turn on **Discover related profiles** — and click **Start**.\n3. Watch results stream into the dataset table.\n4. **Export** as JSON, CSV, Excel, XML, or RSS — or pull results programmatically via the [Apify API](https://docs.apify.com/api/v2).\n\n## Input\n\n```json\n{\n    \"profileUrls\": [\n        \"https://www.linkedin.com/in/williamhgates\",\n        \"satyanadella\"\n    ],\n    \"discoverRelated\": false,\n    \"maxRelatedPerProfile\": 20,\n    \"maxProfiles\": 100,\n    \"includeExperience\": true,\n    \"includeEducation\": true,\n    \"includeActivity\": false,\n    \"monitorMode\": false\n}\n```\n\n- **profileUrls** — LinkedIn profile URLs (`https://www.linkedin.com/in/<username>`) or bare usernames. The primary, fastest, most reliable input.\n- **startUrls** — alternative request-list of profile URLs (handy when chaining from another actor).\n- **discoverRelated** *(default false)* — expand each seed profile into its **\"People also viewed\"** people (one level deep), bounded by **maxRelatedPerProfile** and **maxProfiles**. The reliable way to grow a seed list into similar prospects without supplying every URL.\n- **maxProfiles** *(default 100)* — cap the number of profiles; set `0` for no limit (explicit opt-in).\n- **includeExperience / includeEducation** *(default true)* — full experience & education lists (same page, no extra request).\n- **includeActivity** *(default false)* — recent public posts/activity when present.\n- **monitorMode** *(default false)* — emit a record only when a profile **changed** since the last run (new job / title / headline). See below.\n- **maxConcurrency** *(default 8)* — profiles fetched in parallel.\n- **proxyConfiguration** — keep the default (Apify **residential**, US); LinkedIn blocks datacenter IPs.\n\n## Output\n\nOne record per profile (`type: \"profile\"`):\n\n```json\n{\n    \"type\": \"profile\",\n    \"profileUrl\": \"https://www.linkedin.com/in/williamhgates\",\n    \"publicId\": \"williamhgates\",\n    \"fullName\": \"Bill Gates\",\n    \"firstName\": \"Bill\",\n    \"lastName\": \"Gates\",\n    \"headline\": \"Chair, Gates Foundation and Founder, Breakthrough Energy\",\n    \"currentTitle\": \"Co-chair\",\n    \"currentCompany\": \"Gates Foundation\",\n    \"currentCompanyUrl\": \"https://www.linkedin.com/company/gates-foundation\",\n    \"seniorityLevel\": \"Owner/C-Level\",\n    \"locationName\": \"Seattle, Washington, United States\",\n    \"city\": \"Seattle\",\n    \"country\": \"United States\",\n    \"about\": \"Chair of the Gates Foundation. Founder of Breakthrough Energy. Co-founder of Microsoft…\",\n    \"profilePhotoUrl\": \"https://media.licdn.com/dms/image/v2/…/profile-displayphoto.jpg\",\n    \"followerCount\": 40467271,\n    \"connectionCount\": 500,\n    \"connectionCountText\": \"500+\",\n    \"experience\": [\n        { \"title\": \"Co-chair\", \"company\": \"Gates Foundation\", \"companyUrl\": \"https://www.linkedin.com/company/gates-foundation\", \"dateRange\": \"2000 - Present\", \"durationText\": \"26 years\", \"startDate\": 2000, \"isCurrent\": true },\n        { \"title\": \"Co-founder\", \"company\": \"Microsoft\", \"dateRange\": \"1975 - Present\", \"startDate\": 1975, \"isCurrent\": true }\n    ],\n    \"experienceCount\": 3,\n    \"education\": [\n        { \"school\": \"Harvard University\", \"schoolUrl\": \"https://www.linkedin.com/school/harvard-university\", \"dateRange\": \"1973 - 1975\", \"startYear\": 1973, \"endYear\": 1975 }\n    ],\n    \"educationCount\": 2,\n    \"languages\": [\"English\"],\n    \"jobTitles\": [\"Co-chair\", \"Founder\", \"Co-founder\"],\n    \"isInfluencer\": true,\n    \"leadScore\": 92,\n    \"source\": \"url\",\n    \"scrapedAt\": \"2026-06-26T12:00:00.000Z\",\n    \"articles\": [{ \"title\": \"Reskilling the Workforce on the Road to Economic Recovery\", \"url\": \"https://www.linkedin.com/pulse/…\", \"publishedAt\": \"Jun 30, 2020\" }],\n    \"skills\": [\"Leadership\", \"Product Management\", \"Strategy\"],\n    \"recommendations\": [{ \"author\": \"Akosua Boadi-Agyemang\", \"authorUrl\": \"https://www.linkedin.com/in/akosuaba\", \"text\": \"Personally, Jeff has impacted my journey so much…\" }],\n    \"peopleAlsoViewed\": [{ \"name\": \"Rob Coppedge\", \"headline\": \"Echo Health Ventures\", \"followerCount\": 9000, \"location\": \"Portland, Oregon Metropolitan Area\", \"url\": \"https://www.linkedin.com/in/coppedge\" }]\n}\n```\n\nWhere the public profile shows them, records also carry `publications[]` (title, publisher, date, link), `volunteering[]` (role, organization, dates, cause, description) and `honorsAndAwards[]` (title, issuer, date, description). Sections a member has not filled in are simply absent.\n\n## Job-change monitoring (the killer feature)\n\nTurn on **monitorMode** and combine it with an Apify **Schedule** (e.g. weekly). On the first run every profile is emitted as `first_seen`. On later runs the actor compares each profile to its stored snapshot and emits a record **only when something changed**:\n\n```json\n{\n    \"fullName\": \"Jane Doe\",\n    \"changeType\": \"new_job\",\n    \"currentTitle\": \"VP of Marketing\",\n    \"currentCompany\": \"Acme Corp\",\n    \"previousTitle\": \"Director of Marketing\",\n    \"previousCompany\": \"Globex\",\n    \"changedFields\": [\"company\", \"title\"],\n    \"lastChangedAt\": \"2026-06-26T12:00:00.000Z\",\n    \"profileUrl\": \"https://www.linkedin.com/in/janedoe\"\n}\n```\n\nMonitor mode is **orthogonal to Apify Schedules** — the Schedule decides *when* the actor runs; monitor mode decides *what* it emits. Wire a [webhook](https://docs.apify.com/platform/integrations/webhooks) or [Zapier](https://docs.apify.com/platform/integrations/zapier) zap to push job-change alerts straight into your CRM or Slack. State is kept in a named key-value store (`monitorStoreName`).\n\n<!-- scrapesage:seo-cost:v1 -->\n## How much does it cost to scrape LinkedIn?\n\nThis Actor uses Apify's **pay-per-event** pricing: you are charged only for the results it delivers, with no monthly rental and no start fee. The events it can charge are:\n\n- **Profile scraped** - One enriched public LinkedIn profile (identity, current role, full experience & education, followers, connections, languages & lead score)\n\nThe current price of each event is shown on the **Pricing** tab of this page. Set a maximum total charge on the run if you want a hard cap on spend, and use the input limits to control how much the Actor fetches.\n\n## Automate & schedule\n\nRun this actor on autopilot and pull results into your own stack:\n\n- **[Apify API](https://docs.apify.com/api/v2)** — start runs, fetch datasets, and manage schedules over REST.\n- **[apify-client for JavaScript](https://docs.apify.com/api/client/js/)** and **[apify-client for Python](https://docs.apify.com/api/client/python/)** — official SDKs.\n- **[Schedules](https://docs.apify.com/platform/schedules)** — run hourly/daily/weekly to refresh records or watch a set of prospects for job changes.\n- **[Webhooks](https://docs.apify.com/platform/integrations/webhooks)** — trigger downstream actions (CRM import, Slack alert, email sequence) the moment a run finishes.\n\n```js\nimport { ApifyClient } from 'apify-client';\n\nconst client = new ApifyClient({ token: 'MY_APIFY_TOKEN' });\n\nconst run = await client.actor('scrapesage/linkedin-profile-scraper').call({\n    profileUrls: [\n        'https://www.linkedin.com/in/williamhgates',\n        'satyanadella',\n    ],\n    maxProfiles: 100,\n});\n\nconst { items } = await client.dataset(run.defaultDatasetId).listItems();\nconsole.log(`Got ${items.length} LinkedIn profiles`);\n```\n\n## Integrate with any app\n\nConnect the dataset to 5,000+ apps — no code required:\n\n- **[Make](https://docs.apify.com/platform/integrations/make)** — multi-step automation scenarios.\n- **[Zapier](https://docs.apify.com/platform/integrations/zapier)** — push new profiles or job-change alerts straight into your CRM.\n- **[Slack](https://docs.apify.com/platform/integrations/slack)** — get notified when a monitored prospect changes jobs.\n- **[Google Drive / Sheets](https://docs.apify.com/platform/integrations/drive)** — auto-export every run to a spreadsheet.\n- **[Airbyte](https://docs.apify.com/platform/integrations/airbyte)** — pipe results into your data warehouse.\n- **[GitHub](https://docs.apify.com/platform/integrations/github)** — trigger runs from commits or releases.\n\n## Use with AI assistants (MCP)\n\nThe output is clean, LLM-ready JSON. Call this actor from Claude, ChatGPT, or any agent framework through the **[Apify MCP server](https://docs.apify.com/platform/integrations/mcp)** — ask your assistant to \"enrich these LinkedIn URLs into a lead list and flag anyone who changed jobs this month\" and let it run this scraper for you.\n\n<!-- scrapesage:agentic-payments:v1 -->\n## Agent-ready: autonomous payments (x402 & Skyfire)\n\nThis actor is **agent-ready** — AI agents can discover it, run it, and **pay for it autonomously**, with no Apify account and no human in the loop. It uses [pay-per-event](https://docs.apify.com/platform/actors/publishing/monetize/pay-per-event) pricing and [limited permissions](https://docs.apify.com/platform/actors/development/permissions), so it qualifies for Apify's agentic-payment standards:\n\n- **[x402](https://docs.apify.com/platform/integrations/x402)** — an open, HTTP-native payment protocol. Agents pay per run in USDC on the Base network directly through the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp) — no account, no API key.\n- **[Skyfire](https://docs.apify.com/platform/integrations/skyfire)** — agent-to-service payments for fully autonomous AI-agent workflows.\n\nBuilding an AI agent, MCP tool, or autonomous data pipeline? This scraper is ready to plug in and pay as it goes.\n## More scrapers from scrapesage\n\nBuild a complete **B2B lead-gen & sales-intelligence stack**:\n\n- **[LinkedIn Company Scraper](https://apify.com/scrapesage/linkedin-company-scraper)** — firmographics & company B2B leads (size, industry, HQ, website).\n- **[LinkedIn Jobs Scraper](https://apify.com/scrapesage/linkedin-jobs-scraper)** — job postings as hiring-intent signals.\n- **[LinkedIn Ad Library Scraper](https://apify.com/scrapesage/linkedin-ad-library-scraper)** — competitor B2B ads & creatives.\n- **[Website Contact Scraper](https://apify.com/scrapesage/website-contact-scraper)** — emails, phones & socials from any domain (enrich your profile leads with contact details).\n- **[Google Maps Scraper](https://apify.com/scrapesage/google-maps-scraper)** — local business leads, emails & contacts.\n- **[Salesforce AppExchange Scraper](https://apify.com/scrapesage/salesforce-appexchange-scraper)** — ISV vendor & publisher leads.\n- **[IndiaMART Scraper](https://apify.com/scrapesage/indiamart-scraper)** — B2B supplier & product leads.\n\n## Tips\n\n- **Profile URLs are the most reliable input.** Turn on **Discover related profiles** to snowball from a handful of seeds into many similar prospects.\n- **Keep the residential proxy.** LinkedIn blocks datacenter IPs; the actor rotates a fresh residential IP per request and retries transient rate-limits automatically.\n- **For job-change monitoring**, reuse the same `monitorStoreName` across scheduled runs so snapshots persist.\n- **Cost control** — each profile is one request; lower `maxConcurrency` for steadier runs on very large lists.\n\n## FAQ\n\n**Do I need my LinkedIn account or cookies?** No. This actor reads **public** profile pages only — no login, no cookies, no browser.\n\n**Which fields can it get?** Name, headline, current company/title, seniority, location, about, profile photo, exact follower count, connection count, full work experience (with company URLs and dates), education, languages, awards, external links, and recent activity (opt-in) — plus a lead score.\n\n**Why is a field sometimes empty?** Profiles are member-filled. Sections like About, Languages, Awards or external links are `null` only when the member didn't add them (or LinkedIn doesn't expose them to logged-out visitors), never because the scraper skipped them. Skills and certifications are not shown on logged-out public profiles.\n\n**Can I discover profiles without supplying every URL?** Yes — turn on `discoverRelated` and the actor expands each seed profile into the people LinkedIn lists under \"People also viewed\" (one level deep, bounded by your caps). Start with a few good seeds and let it snowball into similar prospects.\n\n**Can I export to Google Sheets, CSV, or Excel?** Yes — one click in the dataset view, or automatically on every run via the [Google Drive integration](https://docs.apify.com/platform/integrations/drive).\n\n**Is scraping LinkedIn legal?** This actor collects only publicly available data. You are responsible for using the data in compliance with applicable laws (GDPR/CCPA for personal data) and LinkedIn's terms. Scraping of public profile data has been upheld in the U.S. (hiQ v. LinkedIn), but rules vary by jurisdiction and use case — get advice for your situation.\n\n<!-- scrapesage:data-use:v1 -->\n## Data & lawful use\n\nThis Actor reads only what LinkedIn publishes to logged-out visitors: it does not log in, use cookies or session tokens, create accounts, or reach anything behind a sign-in. Names, handles, bios and engagement figures are public, but they relate to identifiable people, so treat the output as personal data. If you are in the EU or UK you are the data controller for what you do with it: have a lawful basis (usually legitimate interest for research, marketing analytics or B2B prospecting), honour access and deletion requests, and do not use the output for spam or unsolicited messaging.\n\nUnder [Apify's Standard Actor Contract](https://docs.apify.com/legal/standard-actor-contract), which governs your use of this Actor, you are the controller of any personal data in your input and output and scrapesage acts only as your processor: that data is processed solely to run your job, written only to your own Apify storage, never used for any other purpose and never shared onward. If you need help with a data-subject request that involves this Actor's output, open an issue on the Issues tab.\n\n<!-- scrapesage:disclaimer-section:v1 -->\n## Disclaimer\n\n**This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by LinkedIn Corporation or any of its subsidiaries. All trademarks mentioned are the property of their respective owners.**\n\n\"LinkedIn\" and any related marks are the property of their respective owners and are used here only in a descriptive, nominative sense - to identify the publicly accessible website from which this Actor collects data. This Actor is not an official LinkedIn product, is not authorised or certified by LinkedIn Corporation, and does not distribute LinkedIn software. It collects only publicly available information; you are responsible for ensuring your use of that data complies with applicable laws, regulations and the terms of the source website.\n\n## Need help?\n\nOpen an issue on the actor's **Issues** tab, or visit the [Apify help center](https://help.apify.com/). Feature requests are welcome — this actor is actively maintained.\n"
    },
    "buildNumber": "0.1.20",
    "actVersion": {
      "sourceType": "SOURCE_FILES",
      "buildTag": "latest",
      "versionNumber": "0.1"
    },
    "usage": {
      "ACTOR_COMPUTE_UNITS": 0.003101111111111111
    }
  }
}