{
  "data": {
    "id": "WDs9scgT65D52RM71",
    "actId": "jrHjjzAmPZdshRzij",
    "userId": "KYbLUBQ8jShxiJzA0",
    "startedAt": "2026-10-14T16:41:59.204Z",
    "finishedAt": "2026-10-14T16:42:35.189Z",
    "status": "SUCCEEDED",
    "meta": {
      "origin": "CLI"
    },
    "stats": {
      "durationMillis": 35891,
      "runTimeSecs": 35.891,
      "computeUnits": 0.03987888888888889,
      "imageSizeBytes": 555802624
    },
    "options": {
      "useCache": true,
      "betaPackages": false,
      "memoryMbytes": 4096,
      "diskMbytes": 8192
    },
    "exitCode": 0,
    "inputSchema": "{\n  \"$schema\": \"https://apify.com/schemas/v1/input.ide.json\",\n  \"title\": \"LinkedIn public profile input\",\n  \"type\": \"object\",\n  \"schemaVersion\": 1,\n  \"properties\": {\n    \"profileUrls\": {\n      \"title\": \"Profile URLs or identifiers\",\n      \"type\": \"array\",\n      \"description\": \"Public LinkedIn profile URLs or identifiers to extract, e.g. satyanadella. Country subdomains are normalized to www.linkedin.com.\",\n      \"editor\": \"stringList\",\n      \"items\": {\n        \"type\": \"string\"\n      },\n      \"prefill\": [\n        \"https://www.linkedin.com/in/satyanadella\",\n        \"https://www.linkedin.com/in/williamhgates\"\n      ],\n      \"sectionCaption\": \"Profiles\",\n      \"sectionDescription\": \"Which public LinkedIn profiles to extract.\"\n    },\n    \"maxItems\": {\n      \"title\": \"Maximum profiles\",\n      \"type\": \"integer\",\n      \"description\": \"Maximum number of unique profile rows to return, 1-1000, default 50. Hidden or blocked profiles count towards this limit.\",\n      \"minimum\": 1,\n      \"prefill\": 2,\n      \"default\": 50,\n      \"maximum\": 1000\n    },\n    \"includePosts\": {\n      \"title\": \"Include posts\",\n      \"type\": \"boolean\",\n      \"description\": \"Include recent posts and articles found in the public page JSON-LD.\",\n      \"default\": true,\n      \"sectionCaption\": \"Output options\",\n      \"prefill\": true\n    },\n    \"includeSimilarProfiles\": {\n      \"title\": \"Include similar profiles\",\n      \"type\": \"boolean\",\n      \"description\": \"Include public profile URLs shown in People also viewed; these URLs are not crawled.\",\n      \"default\": true\n    },\n    \"enrich\": {\n      \"title\": \"Derive enrichment\",\n      \"type\": \"boolean\",\n      \"description\": \"Derive seniority, department, name parts, company slug and years of experience from the extracted fields (rule-based, no AI). Costs extra per result. Default false.\",\n      \"default\": false,\n      \"prefill\": false\n    },\n    \"maxRetries\": {\n      \"title\": \"Maximum retries\",\n      \"type\": \"integer\",\n      \"description\": \"Retry HTTP 999, 429, or server errors this many times with fresh proxy sessions.\",\n      \"minimum\": 0,\n      \"maximum\": 10,\n      \"default\": 4,\n      \"sectionCaption\": \"Connection\"\n    },\n    \"proxyConfiguration\": {\n      \"title\": \"Proxy configuration\",\n      \"type\": \"object\",\n      \"description\": \"Use Apify residential proxy for logged-out LinkedIn pages; datacenter IPs often receive HTTP 999.\",\n      \"editor\": \"proxy\",\n      \"default\": {\n        \"useApifyProxy\": true,\n        \"apifyProxyGroups\": [\n          \"RESIDENTIAL\"\n        ],\n        \"apifyProxyCountry\": \"US\"\n      },\n      \"prefill\": {\n        \"useApifyProxy\": true,\n        \"apifyProxyGroups\": [\n          \"RESIDENTIAL\"\n        ],\n        \"apifyProxyCountry\": \"US\"\n      }\n    }\n  },\n  \"required\": [\n    \"profileUrls\"\n  ]\n}",
    "readme": "# LinkedIn Profile Scraper\n\n**Returns:** one row per LinkedIn profile with fullName, headline, location, about, currentPositions, experience, education, followers.\n**Input:** `{\"profileUrls\": [\"https://www.linkedin.com/in/satyanadella\"], \"maxItems\": 1}`\n**Best for:** CRM enrichment, lead lists from known profiles, checking that speaker or candidate profiles are still public.\n\n```json\n{\"id\": \"satyanadella\", \"fullName\": \"Satya Nadella\", \"firstName\": \"Satya\", \"lastName\": \"Nadella\", \"headline\": \"Chairman and CEO at Microsoft\", \"location\": \"Redmond, Washington, United States\", \"followers\": 12195507, \"currentCompany\": \"Microsoft\", \"currentTitle\": \"Chairman and CEO\", \"currentPositions\": [{\"company\": \"Microsoft\"}]}\n```\n\n## What does LinkedIn Profile Scraper do?\n\nLinkedIn Profile Scraper reads the public, logged-out page of each LinkedIn profile you give it and returns one structured dataset row per unique profile. You provide `/in/` profile URLs or bare public identifiers such as `satyanadella`, and the Actor returns the name, headline, location, about text, current positions, experience, education, follower count, recent posts and the \"People also viewed\" links that the page exposes.\n\nThe Actor needs no LinkedIn account, no cookies and no session token. It only requests the profile pages you list. It does not use LinkedIn search, it does not crawl company pages, and it does not open the suggested profiles it finds; those URLs are returned as output values only. Duplicate identifiers in your input are fetched once. Country sub-domains, query strings and trailing slashes are normalised to `https://www.linkedin.com/in/<identifier>`.\n\nTypical uses include enriching a CRM list with headlines and current employers, checking that a list of speaker or candidate profiles is still public, building lead lists from profiles you already know, and collecting public professional background for research. This Actor is independent and has no affiliation with LinkedIn.\n\nTwo things are worth knowing before you start.\n\n**Hidden or missing profiles.** Some profiles return HTTP 999 on every attempt, usually because they are hidden from logged-out visitors or do not exist. After the retries run out, the Actor pushes a row for that profile with an `error` value of `not_public_or_blocked` (or `not_found`) and does not charge for it. If no profile at all could be extracted, the run still ends successfully with 0 results and a status message that explains what to change.\n\n**Limited profiles.** LinkedIn sometimes serves a reduced public page with masked values. Those rows are flagged with `isLimitedProfile: true`. The Actor never tries to reveal masked values.\n\n## What data can you get?\n\nEach row contains the fields below. Scalar fields that the page does not expose are `null`, and list fields that are unavailable are empty arrays.\n\n| Field | Type | Description |\n|---|---|---|\n| `id` | string | Stable public identifier, the same as `publicIdentifier`. |\n| `sourceUrl` | string | The profile page that was requested. |\n| `url` | string | Normalised public profile URL. |\n| `firstName` | string or null | First word of `fullName`. |\n| `lastName` | string or null | Remaining words of `fullName`. |\n| `currentCompany` | string or null | Company of the first entry in `currentPositions`. |\n| `currentCompanyUrl` | string or null | LinkedIn company URL of that entry, when the page links one. |\n| `currentTitle` | string or null | First job title from the page's structured data. |\n| `publicIdentifier` | string | The identifier from the `/in/` URL. |\n| `fullName` | string | Name shown on the public profile. |\n| `headline` | string | Headline under the name. |\n| `location` | string | Location text shown on the profile. |\n| `countryCode` | string | Country code from structured profile data, when present. |\n| `about` | string | Summary or about text. |\n| `profilePictureUrl` | string | Public profile picture URL. |\n| `followers` | integer | Follower count when shown. |\n| `connections` | string | Connection count text such as `500+`. |\n| `badges` | string | Short badge or descriptor text, when present. |\n| `currentPositions` | array | Current employers with company, company URL, location and start date. |\n| `jobTitles` | array | Job titles listed in structured data. |\n| `experience` | array | Past and present roles with title, company, dates, location and description. |\n| `education` | array | Schools with degree text and dates. |\n| `pastOrganizations` | array | Organisations the person is an alumnus of. |\n| `languages` | array | Languages listed. |\n| `awards` | array | Awards listed. |\n| `websites` | array | External websites listed on the profile. |\n| `recentPosts` | array | Recent posts found in the page's structured data. |\n| `articles` | array | Articles found in the page's structured data. |\n| `alsoViewed` | array | Profile URLs shown in \"People also viewed\". |\n| `isLimitedProfile` | boolean | True when the page contained masked values. |\n| `enrichment` | object | Present only when `enrich` is true, see below. |\n| `error` | string | Present only on rows that could not be extracted. |\n| `scrapedAt` | string | ISO timestamp of the extraction. |\n\n**Optional enrichment.** With `enrich: true`, each extracted row gets an `enrichment` object with `seniority`, `department`, `firstName`, `lastName`, `currentCompanySlug` and `totalYearsExperience`. These are computed by rules from the fields above, with no extra requests. Enrichment does not use any AI service and sends no profile data to a third party.\n\n## How to use LinkedIn Profile Scraper\n\n1. Open the Actor in Apify Console and go to the Input tab.\n2. Paste one or more LinkedIn profile URLs or public identifiers into **Profile URLs or identifiers**.\n3. Set **Maximum profiles** to the number of rows you want.\n4. Leave the proxy setting on Apify residential proxy. LinkedIn commonly answers datacenter addresses with HTTP 999.\n5. Turn on **Derive enrichment** if you want the extra `enrichment` object; it costs extra per result.\n6. Click Start. When the run finishes, open the Output tab to view, filter and download the dataset as JSON, CSV, Excel or HTML.\n\nThe Actor keeps a modest pace: it waits at least one second between requests and retries with exponential backoff and a fresh proxy session when it sees HTTP 999, 429 or a server error.\n\n## Input\n\n| Field | Type | Description |\n|---|---|---|\n| `profileUrls` | array of strings | Public profile URLs or identifiers to extract. Accepts full URLs, URLs without `https://`, URLs with tracking parameters or sub-pages such as `/details/experience`, and bare identifiers like `williamhgates`. Entries that are not LinkedIn profiles are skipped with a warning; the run fails only if none is usable. |\n| `maxItems` | integer | Maximum number of unique profile rows to return, 1-1000, default 50. Hidden or blocked profiles count towards this limit. |\n| `includePosts` | boolean | Include recent posts and articles found in the page's structured data. Default true. |\n| `includeSimilarProfiles` | boolean | Include the \"People also viewed\" profile URLs in `alsoViewed`. They are not crawled. Default true. |\n| `enrich` | boolean | Derive `seniority`, `department`, name parts, company slug and years of experience (rule-based, no AI). Costs extra per result. Default false. |\n| `maxRetries` | integer | Retries for HTTP 999, 429 and server errors, 0 to 10. Default 4. |\n| `proxyConfiguration` | object | Apify Proxy settings. Residential proxy is the default. |\n\n```json\n{\n    \"profileUrls\": [\"https://www.linkedin.com/in/satyanadella\", \"williamhgates\"],\n    \"maxItems\": 2,\n    \"includePosts\": true,\n    \"includeSimilarProfiles\": true,\n    \"enrich\": false\n}\n```\n\n## Output\n\nThis is a real row from a run on linkedin.com/in/satyanadella (lists shortened):\n\n```json\n{\n    \"id\": \"satyanadella\",\n    \"sourceUrl\": \"https://www.linkedin.com/in/satyanadella\",\n    \"url\": \"https://www.linkedin.com/in/satyanadella\",\n    \"publicIdentifier\": \"satyanadella\",\n    \"fullName\": \"Satya Nadella\",\n    \"headline\": \"Chairman and CEO at Microsoft\",\n    \"location\": \"Redmond, Washington, United States\",\n    \"countryCode\": \"US\",\n    \"about\": \"As chairman and CEO of Microsoft, I define my mission and that of my company as empowering every person and every organization on the planet to achieve more.\",\n    \"profilePictureUrl\": \"https://media.licdn.com/dms/image/v2/C5603AQHHUuOSlRVA1w/profile-displayphoto-shrink_200_200/profile-displayphoto-shrink_200_200/0/1579726625398?e=2147483647&v=beta&t=Rr7WT9uBM0byOij0oT_KirejIMVE4HK4r8NGIp0zjdI\",\n    \"followers\": 12195507,\n    \"connections\": \"500+\",\n    \"badges\": \"Creator, Top Voice\",\n    \"currentPositions\": [\n        {\n            \"company\": \"Microsoft\",\n            \"companyUrl\": \"https://www.linkedin.com/company/microsoft\",\n            \"location\": \"Greater Seattle Area\",\n            \"startDate\": null\n        },\n        {\n            \"company\": \"University of Chicago\",\n            \"companyUrl\": \"https://www.linkedin.com/school/uchicago/\",\n            \"location\": null,\n            \"startDate\": null\n        }\n    ],\n    \"jobTitles\": [\n        \"Chairman and CEO\",\n        \"Member Board Of Trustees\"\n    ],\n    \"experience\": [\n        {\n            \"title\": \"Chairman and CEO\",\n            \"subtitle\": \"Microsoft\",\n            \"startDate\": \"Feb 2014\",\n            \"endDate\": \"Present\",\n            \"duration\": \"12 years 8 months\",\n            \"location\": \"Greater Seattle Area\",\n            \"description\": null,\n            \"companyUrl\": \"https://www.linkedin.com/company/microsoft\"\n        },\n        {\n            \"title\": \"Member Board Of Trustees\",\n            \"subtitle\": \"University of Chicago\",\n            \"startDate\": \"2018\",\n            \"endDate\": \"Present\",\n            \"duration\": \"8 years\",\n            \"location\": null,\n            \"description\": null,\n            \"companyUrl\": \"https://www.linkedin.com/school/uchicago/\"\n        }\n    ],\n    \"education\": [\n        {\n            \"title\": \"The University of Chicago Booth School of Business\",\n            \"subtitle\": null,\n            \"startDate\": \"1994\",\n            \"endDate\": \"1996\",\n            \"companyUrl\": \"https://www.linkedin.com/school/universityofchicagoboothschoolofbusiness/\"\n        },\n        {\n            \"title\": \"Manipal Institute of Technology, Manipal\",\n            \"subtitle\": \"Bachelor’s Degree Electrical Engineering\",\n            \"startDate\": null,\n            \"endDate\": null,\n            \"companyUrl\": \"https://www.linkedin.com/school/manipal-institute-of-technology/\"\n        }\n    ],\n    \"pastOrganizations\": [\n        {\n            \"name\": \"Starbucks\",\n            \"url\": \"https://www.linkedin.com/company/starbucks\",\n            \"type\": \"Organization\",\n            \"startDate\": null,\n            \"endDate\": null\n        },\n        {\n            \"name\": \"The Business Council U.S.\",\n            \"url\": \"https://www.linkedin.com/company/the-business-council-us\",\n            \"type\": \"Organization\",\n            \"startDate\": null,\n            \"endDate\": null\n        }\n    ],\n    \"languages\": [],\n    \"awards\": [],\n    \"websites\": [\n        \"https://snscratchpad.com/\"\n    ],\n    \"recentPosts\": [\n        {\n            \"url\": \"https://www.linkedin.com/posts/satyanadella_the-motivation-behind-the-new-copilot-intelligence-activity-7509276499837902849-DFP-\",\n            \"text\": \"The motivation behind the new Copilot: intelligence is accelerating fast. Now we need to diffuse it everywhere.\",\n            \"datePublished\": \"2026-09-25T15:43:53.171Z\",\n            \"likes\": 922\n        }\n    ],\n    \"articles\": [\n        {\n            \"url\": \"https://www.linkedin.com/pulse/how-do-we-build-frontier-intelligence-ecosystem-satya-nadella-73jhc\",\n            \"headline\": \"How do we build a frontier intelligence ecosystem?\",\n            \"datePublished\": \"2026-06-02T19:41:31.000+00:00\",\n            \"likes\": 2538\n        }\n    ],\n    \"alsoViewed\": [\n        \"https://www.linkedin.com/in/tony-bates-679227a5\",\n        \"https://www.linkedin.com/in/charlesphillips1\"\n    ],\n    \"isLimitedProfile\": false,\n    \"scrapedAt\": \"2026-09-30T18:09:57.142Z\"\n}\n```\n\nRows for `experience` take `location` only from the location line of each card and use `null` when the card has none. Company and school URLs are returned without tracking parameters.\n\nA profile that is hidden or missing produces a short row like this (illustrative), and it is not charged:\n\n```json\n{\n    \"id\": \"example-person\",\n    \"sourceUrl\": \"https://www.linkedin.com/in/example-person\",\n    \"url\": \"https://www.linkedin.com/in/example-person\",\n    \"publicIdentifier\": \"example-person\",\n    \"fullName\": null,\n    \"isLimitedProfile\": false,\n    \"scrapedAt\": \"2025-01-15T12:00:00.000Z\",\n    \"error\": \"not_public_or_blocked\"\n}\n```\n\nThe dataset has an overview view with the most useful columns, and you can export it in any format Apify supports.\n\n## How much does it cost to scrape LinkedIn profiles?\n\nThe Actor uses pay-per-event pricing. The `result` event is charged once for each extracted profile row, whether it is a full or a limited profile. The `enriched-result` event is charged once for each row that gets an `enrichment` object, only when `enrich` is true. Rows with an `error` are never charged. See the Pricing tab for current rates. If a run reaches the maximum cost you set for it, the Actor stops before the next profile and says so in the run's status message. Platform usage such as proxy traffic and compute is shown in your run's cost summary.\n\n## Use with the API\n\nYou can start the Actor from code with the Apify API clients or plain HTTP.\n\n**Python**\n\n```python\nimport os\n\nfrom apify_client import ApifyClient\n\nclient = ApifyClient(os.environ[\"APIFY_TOKEN\"])\nrun = client.actor(\"axiomworks/linkedin-profile-scraper\").call(\n    run_input={\"profileUrls\": [\"satyanadella\"], \"maxItems\": 1}\n)\nfor item in client.dataset(run[\"defaultDatasetId\"]).iterate_items():\n    print(item[\"fullName\"], item[\"headline\"])\n```\n\n**JavaScript**\n\n```javascript\nimport { ApifyClient } from 'apify-client';\n\nconst client = new ApifyClient({ token: process.env.APIFY_TOKEN });\nconst run = await client.actor('axiomworks/linkedin-profile-scraper').call({\n    profileUrls: ['satyanadella'],\n    maxItems: 1,\n});\nconst { items } = await client.dataset(run.defaultDatasetId).listItems();\nprocess.stdout.write(JSON.stringify(items, null, 2));\n```\n\n**cURL**\n\n```bash\ncurl -X POST \"https://api.apify.com/v2/acts/axiomworks~linkedin-profile-scraper/run-sync-get-dataset-items\" \\\n  -H \"Authorization: Bearer $APIFY_TOKEN\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"profileUrls\": [\"satyanadella\"], \"maxItems\": 1}'\n```\n\nYou can also schedule runs, send results to Google Sheets, or connect the Actor to Zapier, Make and webhooks with Apify integrations.\n\n## Use with AI agents (MCP)\n\nYou can call this Actor from any MCP client through the Apify MCP server. Add this to your client configuration:\n\n```json\n{\n    \"mcpServers\": {\n        \"apify\": {\n            \"url\": \"https://mcp.apify.com?tools=axiomworks/linkedin-profile-scraper\"\n        }\n    }\n}\n```\n\nExample prompts:\n\n- \"Get the headline, location and current company for linkedin.com/in/satyanadella.\"\n- \"Extract these five public LinkedIn profiles and tell me which ones list an education entry.\"\n- \"Scrape this profile with enrich set to true and summarise its enrichment block.\"\n\n## FAQ\n\n**Does this need a LinkedIn account?** No. It requests publicly visible pages without login or cookies, and it cannot see anything that requires a login.\n\n**Why is a field empty?** LinkedIn may serve a limited public profile, omit that field, or change its page markup. The Actor does not reveal masked values.\n\n**Why did a profile return an error row?** HTTP 999 on every attempt usually means the profile is hidden from logged-out visitors or does not exist. Raising `maxRetries` rarely helps for hidden profiles. Confirm the URL opens in a private browser window.\n\n**Does it fetch company pages or the suggested profiles?** No. Company and suggested profile URLs are returned as values only.\n\n**Can I search by keyword or company?** No. The Actor takes profile URLs or identifiers that you already have.\n\n**How many profiles can I run at once?** Profiles are fetched one after another at a polite pace, so large lists take longer. Split very large lists across several runs.\n\n**Does enrichment use AI?** No. It uses fixed rules on the extracted fields and makes no extra requests.\n\n## Is it legal to scrape LinkedIn?\n\nThis Actor is not affiliated with or endorsed by LinkedIn; it is an independent tool. This Actor only reads information that LinkedIn shows to anyone without logging in, and it does not bypass logins or CAPTCHAs. Data about people can still be personal data. Use it for a legitimate purpose, follow the privacy law that applies to you, such as GDPR, and check LinkedIn's terms of service and your own legal requirements before you rely on the results. This is general information and not legal advice.\n\n## Feedback\n\nIf a field is empty when the profile page clearly shows it, or you want another field added, open an issue from the Actor's Issues tab and include the profile URL and the run ID.\n",
    "actorDefinition": {
      "$schema": "https://apify.com/schemas/v1/actor.ide.json",
      "actorSpecification": 1,
      "name": "linkedin-profile-scraper",
      "title": "LinkedIn Profile Scraper",
      "description": "Scrape public LinkedIn profiles without login: name, headline, location, about, current positions, experience, education, followers, posts and People also viewed links. Optional rule-based enrichment adds seniority, department and name parts.",
      "version": "0.1",
      "buildTag": "latest",
      "meta": {
        "templateId": "ts-empty",
        "generatedBy": "Codex GPT-6"
      },
      "input": {
        "$schema": "https://apify.com/schemas/v1/input.ide.json",
        "title": "LinkedIn public profile input",
        "type": "object",
        "schemaVersion": 1,
        "properties": {
          "profileUrls": {
            "title": "Profile URLs or identifiers",
            "type": "array",
            "description": "Public LinkedIn profile URLs or identifiers to extract, e.g. satyanadella. Country subdomains are normalized to www.linkedin.com.",
            "editor": "stringList",
            "items": {
              "type": "string"
            },
            "prefill": [
              "https://www.linkedin.com/in/satyanadella",
              "https://www.linkedin.com/in/williamhgates"
            ],
            "sectionCaption": "Profiles",
            "sectionDescription": "Which public LinkedIn profiles to extract."
          },
          "maxItems": {
            "title": "Maximum profiles",
            "type": "integer",
            "description": "Maximum number of unique profile rows to return, 1-1000, default 50. Hidden or blocked profiles count towards this limit.",
            "minimum": 1,
            "prefill": 2,
            "default": 50,
            "maximum": 1000
          },
          "includePosts": {
            "title": "Include posts",
            "type": "boolean",
            "description": "Include recent posts and articles found in the public page JSON-LD.",
            "default": true,
            "sectionCaption": "Output options",
            "prefill": true
          },
          "includeSimilarProfiles": {
            "title": "Include similar profiles",
            "type": "boolean",
            "description": "Include public profile URLs shown in People also viewed; these URLs are not crawled.",
            "default": true
          },
          "enrich": {
            "title": "Derive enrichment",
            "type": "boolean",
            "description": "Derive seniority, department, name parts, company slug and years of experience from the extracted fields (rule-based, no AI). Costs extra per result. Default false.",
            "default": false,
            "prefill": false
          },
          "maxRetries": {
            "title": "Maximum retries",
            "type": "integer",
            "description": "Retry HTTP 999, 429, or server errors this many times with fresh proxy sessions.",
            "minimum": 0,
            "maximum": 10,
            "default": 4,
            "sectionCaption": "Connection"
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Use Apify residential proxy for logged-out LinkedIn pages; datacenter IPs often receive HTTP 999.",
            "editor": "proxy",
            "default": {
              "useApifyProxy": true,
              "apifyProxyGroups": [
                "RESIDENTIAL"
              ],
              "apifyProxyCountry": "US"
            },
            "prefill": {
              "useApifyProxy": true,
              "apifyProxyGroups": [
                "RESIDENTIAL"
              ],
              "apifyProxyCountry": "US"
            }
          }
        },
        "required": [
          "profileUrls"
        ]
      },
      "output": {
        "actorOutputSchemaVersion": 1,
        "title": "LinkedIn public profiles",
        "description": "Public LinkedIn profile extraction results",
        "properties": {
          "dataset": {
            "type": "string",
            "title": "Results",
            "description": "Dataset of public profile rows",
            "template": "{{links.apiDefaultDatasetUrl}}/items"
          }
        }
      },
      "storages": {
        "dataset": {
          "actorSpecification": 1,
          "fields": {
            "$schema": "http://json-schema.org/draft-07/schema#",
            "type": "object",
            "properties": {
              "id": {
                "title": "ID",
                "type": [
                  "string",
                  "null"
                ],
                "description": "Stable public identifier",
                "example": "example-person"
              },
              "sourceUrl": {
                "title": "Source URL",
                "type": [
                  "string",
                  "null"
                ],
                "description": "LinkedIn profile page requested",
                "example": "https://www.linkedin.com/in/example-person"
              },
              "url": {
                "title": "URL",
                "type": [
                  "string",
                  "null"
                ],
                "description": "Normalized public profile URL",
                "example": "https://www.linkedin.com/in/example-person"
              },
              "publicIdentifier": {
                "title": "Public identifier",
                "type": [
                  "string",
                  "null"
                ],
                "description": "Public profile identifier",
                "example": "example-person"
              },
              "fullName": {
                "title": "Full name",
                "type": [
                  "string",
                  "null"
                ],
                "description": "Name shown on the public profile",
                "example": "Example Person"
              },
              "headline": {
                "title": "Headline",
                "type": [
                  "string",
                  "null"
                ],
                "description": "Public profile headline",
                "example": "Director at Example Company"
              },
              "location": {
                "title": "Location",
                "type": [
                  "string",
                  "null"
                ],
                "description": "Location shown on the profile",
                "example": "San Francisco, California"
              },
              "countryCode": {
                "title": "Country code",
                "type": [
                  "string",
                  "null"
                ],
                "description": "Country code from structured profile data",
                "example": "US"
              },
              "about": {
                "title": "About",
                "type": [
                  "string",
                  "null"
                ],
                "description": "Public profile summary",
                "example": "Works in product development."
              },
              "profilePictureUrl": {
                "title": "Profile picture URL",
                "type": [
                  "string",
                  "null"
                ],
                "description": "Profile picture URL; image is not fetched",
                "example": "https://media.licdn.com/example.jpg"
              },
              "followers": {
                "title": "Followers",
                "type": [
                  "integer",
                  "null"
                ],
                "description": "Follower count from structured data",
                "example": 1234
              },
              "connections": {
                "title": "Connections",
                "type": [
                  "string",
                  "null"
                ],
                "description": "Connection count text",
                "example": "500+"
              },
              "badges": {
                "title": "Badges",
                "type": [
                  "string",
                  "null"
                ],
                "description": "Public profile badge description",
                "example": "Creator"
              },
              "currentPositions": {
                "title": "Current positions",
                "type": [
                  "array",
                  "null"
                ],
                "description": "Current organizations in structured data",
                "example": [
                  {
                    "company": "Example Company",
                    "companyUrl": "https://www.linkedin.com/company/example-company",
                    "location": "San Francisco",
                    "startDate": "2020"
                  }
                ],
                "items": {
                  "type": "object",
                  "properties": {
                    "company": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "nullable": true,
                      "title": "company",
                      "description": "company value",
                      "example": "Example Company"
                    },
                    "companyUrl": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "nullable": true,
                      "title": "companyUrl",
                      "description": "companyUrl value",
                      "example": "https://www.linkedin.com/company/example-company"
                    },
                    "location": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "nullable": true,
                      "title": "location",
                      "description": "location value",
                      "example": "San Francisco"
                    },
                    "startDate": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "nullable": true,
                      "title": "startDate",
                      "description": "startDate value",
                      "example": "2020"
                    }
                  },
                  "required": [],
                  "additionalProperties": true
                }
              },
              "jobTitles": {
                "title": "Job titles",
                "type": [
                  "array",
                  "null"
                ],
                "description": "Job titles in structured data",
                "example": [
                  "Director"
                ],
                "items": {
                  "type": "string"
                }
              },
              "experience": {
                "title": "Experience",
                "type": [
                  "array",
                  "null"
                ],
                "description": "Experience entries shown on the public page",
                "example": [
                  {
                    "title": "Director",
                    "subtitle": "Example Company",
                    "startDate": "2020",
                    "endDate": "Present",
                    "duration": "6 years",
                    "location": "San Francisco",
                    "description": "Product leadership",
                    "companyUrl": "https://www.linkedin.com/company/example-company"
                  }
                ],
                "items": {
                  "type": "object",
                  "properties": {
                    "title": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "nullable": true,
                      "title": "title",
                      "description": "title value",
                      "example": "Director"
                    },
                    "subtitle": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "nullable": true,
                      "title": "subtitle",
                      "description": "subtitle value",
                      "example": "Example Company"
                    },
                    "startDate": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "nullable": true,
                      "title": "startDate",
                      "description": "startDate value",
                      "example": "2020"
                    },
                    "endDate": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "nullable": true,
                      "title": "endDate",
                      "description": "endDate value",
                      "example": "Present"
                    },
                    "duration": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "nullable": true,
                      "title": "duration",
                      "description": "duration value",
                      "example": "6 years"
                    },
                    "location": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "nullable": true,
                      "title": "location",
                      "description": "location value",
                      "example": "San Francisco"
                    },
                    "description": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "nullable": true,
                      "title": "description",
                      "description": "description value",
                      "example": "Product leadership"
                    },
                    "companyUrl": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "nullable": true,
                      "title": "companyUrl",
                      "description": "companyUrl value",
                      "example": "https://www.linkedin.com/company/example-company"
                    }
                  },
                  "required": [],
                  "additionalProperties": true
                }
              },
              "education": {
                "title": "Education",
                "type": [
                  "array",
                  "null"
                ],
                "description": "Education entries shown on the public page",
                "example": [
                  {
                    "title": "Example University",
                    "subtitle": "BS",
                    "startDate": "2010",
                    "endDate": "2014",
                    "companyUrl": "https://www.linkedin.com/school/example-university"
                  }
                ],
                "items": {
                  "type": "object",
                  "properties": {
                    "title": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "nullable": true,
                      "title": "title",
                      "description": "title value",
                      "example": "Example University"
                    },
                    "subtitle": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "nullable": true,
                      "title": "subtitle",
                      "description": "subtitle value",
                      "example": "BS"
                    },
                    "startDate": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "nullable": true,
                      "title": "startDate",
                      "description": "startDate value",
                      "example": "2010"
                    },
                    "endDate": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "nullable": true,
                      "title": "endDate",
                      "description": "endDate value",
                      "example": "2014"
                    },
                    "companyUrl": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "nullable": true,
                      "title": "companyUrl",
                      "description": "companyUrl value",
                      "example": "https://www.linkedin.com/school/example-university"
                    }
                  },
                  "required": [],
                  "additionalProperties": true
                }
              },
              "pastOrganizations": {
                "title": "Past organizations",
                "type": [
                  "array",
                  "null"
                ],
                "description": "Past organizations in structured data",
                "example": [
                  {
                    "name": "Example University",
                    "url": "https://www.linkedin.com/school/example-university",
                    "type": "EducationalOrganization",
                    "startDate": "2010",
                    "endDate": "2014"
                  }
                ],
                "items": {
                  "type": "object",
                  "properties": {
                    "name": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "nullable": true,
                      "title": "name",
                      "description": "name value",
                      "example": "Example University"
                    },
                    "url": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "nullable": true,
                      "title": "url",
                      "description": "url value",
                      "example": "https://www.linkedin.com/school/example-university"
                    },
                    "type": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "nullable": true,
                      "title": "type",
                      "description": "type value",
                      "example": "EducationalOrganization"
                    },
                    "startDate": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "nullable": true,
                      "title": "startDate",
                      "description": "startDate value",
                      "example": "2010"
                    },
                    "endDate": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "nullable": true,
                      "title": "endDate",
                      "description": "endDate value",
                      "example": "2014"
                    }
                  },
                  "required": [],
                  "additionalProperties": true
                }
              },
              "languages": {
                "title": "Languages",
                "type": [
                  "array",
                  "null"
                ],
                "description": "Languages in structured data",
                "example": [
                  "English"
                ],
                "items": {
                  "type": "string"
                }
              },
              "awards": {
                "title": "Awards",
                "type": [
                  "array",
                  "null"
                ],
                "description": "Awards in structured data",
                "example": [
                  "Example award"
                ],
                "items": {
                  "type": "string"
                }
              },
              "websites": {
                "title": "Websites",
                "type": [
                  "array",
                  "null"
                ],
                "description": "External website links shown on the page",
                "example": [
                  "https://example.com"
                ],
                "items": {
                  "type": "string"
                }
              },
              "recentPosts": {
                "title": "Recent posts",
                "type": [
                  "array",
                  "null"
                ],
                "description": "Recent posts in structured data when enabled",
                "example": [
                  {
                    "url": "https://www.linkedin.com/posts/example-person_example-123",
                    "text": "Example post",
                    "datePublished": "2025-01-15T12:00:00Z",
                    "likes": 12
                  }
                ],
                "items": {
                  "type": "object",
                  "properties": {
                    "url": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "nullable": true,
                      "title": "url",
                      "description": "url value",
                      "example": "https://www.linkedin.com/posts/example-person_example-123"
                    },
                    "text": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "nullable": true,
                      "title": "text",
                      "description": "text value",
                      "example": "Example post"
                    },
                    "datePublished": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "nullable": true,
                      "title": "datePublished",
                      "description": "datePublished value",
                      "example": "2025-01-15T12:00:00Z"
                    },
                    "likes": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "nullable": true,
                      "title": "likes",
                      "description": "likes value",
                      "example": 12
                    }
                  },
                  "required": [],
                  "additionalProperties": true
                }
              },
              "articles": {
                "title": "Articles",
                "type": [
                  "array",
                  "null"
                ],
                "description": "Articles in structured data when enabled",
                "example": [
                  {
                    "url": "https://www.linkedin.com/pulse/example",
                    "headline": "Example article",
                    "datePublished": "2025-01-15T12:00:00Z",
                    "likes": 12
                  }
                ],
                "items": {
                  "type": "object",
                  "properties": {
                    "url": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "nullable": true,
                      "title": "url",
                      "description": "url value",
                      "example": "https://www.linkedin.com/pulse/example"
                    },
                    "headline": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "nullable": true,
                      "title": "headline",
                      "description": "headline value",
                      "example": "Example article"
                    },
                    "datePublished": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "nullable": true,
                      "title": "datePublished",
                      "description": "datePublished value",
                      "example": "2025-01-15T12:00:00Z"
                    },
                    "likes": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "nullable": true,
                      "title": "likes",
                      "description": "likes value",
                      "example": 12
                    }
                  },
                  "required": [],
                  "additionalProperties": true
                }
              },
              "alsoViewed": {
                "title": "People also viewed",
                "type": [
                  "array",
                  "null"
                ],
                "description": "Other profile URLs shown on the page when enabled",
                "example": [
                  "https://www.linkedin.com/in/another-person"
                ],
                "items": {
                  "type": "string"
                }
              },
              "isLimitedProfile": {
                "title": "Limited profile",
                "type": [
                  "boolean",
                  "null"
                ],
                "description": "Whether structured data contains masked profile values",
                "example": false
              },
              "scrapedAt": {
                "title": "Scraped at",
                "type": [
                  "string",
                  "null"
                ],
                "description": "UTC time of extraction",
                "example": "2025-01-15T12:00:00.000Z"
              },
              "enrichment": {
                "title": "Enrichment",
                "type": [
                  "object",
                  "null"
                ],
                "description": "Derived seniority, department, name parts, company slug, and experience years",
                "example": {
                  "seniority": "Director",
                  "department": "Engineering",
                  "firstName": "Example",
                  "lastName": "Person",
                  "currentCompanySlug": "example-company",
                  "totalYearsExperience": 6
                },
                "properties": {
                  "seniority": {
                    "type": [
                      "string",
                      "null"
                    ],
                    "nullable": true,
                    "title": "seniority",
                    "description": "Derived seniority value",
                    "example": "Director"
                  },
                  "department": {
                    "type": [
                      "string",
                      "null"
                    ],
                    "nullable": true,
                    "title": "department",
                    "description": "Derived department value",
                    "example": "Engineering"
                  },
                  "firstName": {
                    "type": [
                      "string",
                      "null"
                    ],
                    "nullable": true,
                    "title": "firstName",
                    "description": "Derived firstName value",
                    "example": "Example"
                  },
                  "lastName": {
                    "type": [
                      "string",
                      "null"
                    ],
                    "nullable": true,
                    "title": "lastName",
                    "description": "Derived lastName value",
                    "example": "Person"
                  },
                  "currentCompanySlug": {
                    "type": [
                      "string",
                      "null"
                    ],
                    "nullable": true,
                    "title": "currentCompanySlug",
                    "description": "Derived currentCompanySlug value",
                    "example": "example-company"
                  },
                  "totalYearsExperience": {
                    "type": [
                      "integer",
                      "null"
                    ],
                    "nullable": true,
                    "title": "totalYearsExperience",
                    "description": "Derived totalYearsExperience value",
                    "example": 6
                  }
                },
                "required": [],
                "additionalProperties": true
              },
              "error": {
                "title": "Error",
                "type": [
                  "string",
                  "null"
                ],
                "description": "Error code when the public profile could not be extracted",
                "example": "not_public_or_blocked"
              },
              "firstName": {
                "title": "First name",
                "type": [
                  "string",
                  "null"
                ],
                "description": "First word of the full name",
                "example": "Satya"
              },
              "lastName": {
                "title": "Last name",
                "type": [
                  "string",
                  "null"
                ],
                "description": "Remaining words of the full name",
                "example": "Nadella"
              },
              "currentCompany": {
                "title": "Current company",
                "type": [
                  "string",
                  "null"
                ],
                "description": "Name of the first current position company",
                "example": "Microsoft"
              },
              "currentCompanyUrl": {
                "title": "Current company URL",
                "type": [
                  "string",
                  "null"
                ],
                "description": "LinkedIn company URL of the first current position",
                "example": "https://www.linkedin.com/company/microsoft"
              },
              "currentTitle": {
                "title": "Current job title",
                "type": [
                  "string",
                  "null"
                ],
                "description": "First job title from the public profile data",
                "example": "Chairman and CEO"
              }
            },
            "required": [],
            "additionalProperties": true
          },
          "views": {
            "overview": {
              "title": "Overview",
              "description": "Public profile details",
              "transformation": {
                "fields": [
                  "url",
                  "fullName",
                  "headline",
                  "location",
                  "followers",
                  "currentPositions",
                  "jobTitles",
                  "experience",
                  "education",
                  "isLimitedProfile",
                  "error"
                ]
              },
              "display": {
                "component": "table",
                "properties": {
                  "url": {
                    "label": "URL",
                    "format": "link"
                  },
                  "fullName": {
                    "label": "Full name",
                    "format": "text"
                  },
                  "headline": {
                    "label": "Headline",
                    "format": "text"
                  },
                  "location": {
                    "label": "Location",
                    "format": "text"
                  },
                  "followers": {
                    "label": "Followers",
                    "format": "number"
                  },
                  "currentPositions": {
                    "label": "Current positions",
                    "format": "array"
                  },
                  "jobTitles": {
                    "label": "Job titles",
                    "format": "array"
                  },
                  "experience": {
                    "label": "Experience",
                    "format": "array"
                  },
                  "education": {
                    "label": "Education",
                    "format": "array"
                  },
                  "isLimitedProfile": {
                    "label": "Limited profile",
                    "format": "boolean"
                  },
                  "error": {
                    "label": "Error",
                    "format": "text"
                  }
                }
              }
            }
          }
        },
        "keyValueStore": {
          "actorKeyValueStoreSchemaVersion": 1,
          "title": "Profile evidence",
          "description": "Verification snapshots when requested",
          "collections": {
            "snapshots": {
              "title": "Snapshots",
              "description": "Source text for the first ten rows",
              "key": "SNAPSHOTS",
              "contentTypes": [
                "application/json"
              ]
            }
          }
        }
      },
      "dockerfile": "../Dockerfile",
      "defaultRunOptions": {
        "timeoutSecs": 3600,
        "memoryMbytes": 256
      },
      "readme": "# LinkedIn Profile Scraper\n\n**Returns:** one row per LinkedIn profile with fullName, headline, location, about, currentPositions, experience, education, followers.\n**Input:** `{\"profileUrls\": [\"https://www.linkedin.com/in/satyanadella\"], \"maxItems\": 1}`\n**Best for:** CRM enrichment, lead lists from known profiles, checking that speaker or candidate profiles are still public.\n\n```json\n{\"id\": \"satyanadella\", \"fullName\": \"Satya Nadella\", \"firstName\": \"Satya\", \"lastName\": \"Nadella\", \"headline\": \"Chairman and CEO at Microsoft\", \"location\": \"Redmond, Washington, United States\", \"followers\": 12195507, \"currentCompany\": \"Microsoft\", \"currentTitle\": \"Chairman and CEO\", \"currentPositions\": [{\"company\": \"Microsoft\"}]}\n```\n\n## What does LinkedIn Profile Scraper do?\n\nLinkedIn Profile Scraper reads the public, logged-out page of each LinkedIn profile you give it and returns one structured dataset row per unique profile. You provide `/in/` profile URLs or bare public identifiers such as `satyanadella`, and the Actor returns the name, headline, location, about text, current positions, experience, education, follower count, recent posts and the \"People also viewed\" links that the page exposes.\n\nThe Actor needs no LinkedIn account, no cookies and no session token. It only requests the profile pages you list. It does not use LinkedIn search, it does not crawl company pages, and it does not open the suggested profiles it finds; those URLs are returned as output values only. Duplicate identifiers in your input are fetched once. Country sub-domains, query strings and trailing slashes are normalised to `https://www.linkedin.com/in/<identifier>`.\n\nTypical uses include enriching a CRM list with headlines and current employers, checking that a list of speaker or candidate profiles is still public, building lead lists from profiles you already know, and collecting public professional background for research. This Actor is independent and has no affiliation with LinkedIn.\n\nTwo things are worth knowing before you start.\n\n**Hidden or missing profiles.** Some profiles return HTTP 999 on every attempt, usually because they are hidden from logged-out visitors or do not exist. After the retries run out, the Actor pushes a row for that profile with an `error` value of `not_public_or_blocked` (or `not_found`) and does not charge for it. If no profile at all could be extracted, the run still ends successfully with 0 results and a status message that explains what to change.\n\n**Limited profiles.** LinkedIn sometimes serves a reduced public page with masked values. Those rows are flagged with `isLimitedProfile: true`. The Actor never tries to reveal masked values.\n\n## What data can you get?\n\nEach row contains the fields below. Scalar fields that the page does not expose are `null`, and list fields that are unavailable are empty arrays.\n\n| Field | Type | Description |\n|---|---|---|\n| `id` | string | Stable public identifier, the same as `publicIdentifier`. |\n| `sourceUrl` | string | The profile page that was requested. |\n| `url` | string | Normalised public profile URL. |\n| `firstName` | string or null | First word of `fullName`. |\n| `lastName` | string or null | Remaining words of `fullName`. |\n| `currentCompany` | string or null | Company of the first entry in `currentPositions`. |\n| `currentCompanyUrl` | string or null | LinkedIn company URL of that entry, when the page links one. |\n| `currentTitle` | string or null | First job title from the page's structured data. |\n| `publicIdentifier` | string | The identifier from the `/in/` URL. |\n| `fullName` | string | Name shown on the public profile. |\n| `headline` | string | Headline under the name. |\n| `location` | string | Location text shown on the profile. |\n| `countryCode` | string | Country code from structured profile data, when present. |\n| `about` | string | Summary or about text. |\n| `profilePictureUrl` | string | Public profile picture URL. |\n| `followers` | integer | Follower count when shown. |\n| `connections` | string | Connection count text such as `500+`. |\n| `badges` | string | Short badge or descriptor text, when present. |\n| `currentPositions` | array | Current employers with company, company URL, location and start date. |\n| `jobTitles` | array | Job titles listed in structured data. |\n| `experience` | array | Past and present roles with title, company, dates, location and description. |\n| `education` | array | Schools with degree text and dates. |\n| `pastOrganizations` | array | Organisations the person is an alumnus of. |\n| `languages` | array | Languages listed. |\n| `awards` | array | Awards listed. |\n| `websites` | array | External websites listed on the profile. |\n| `recentPosts` | array | Recent posts found in the page's structured data. |\n| `articles` | array | Articles found in the page's structured data. |\n| `alsoViewed` | array | Profile URLs shown in \"People also viewed\". |\n| `isLimitedProfile` | boolean | True when the page contained masked values. |\n| `enrichment` | object | Present only when `enrich` is true, see below. |\n| `error` | string | Present only on rows that could not be extracted. |\n| `scrapedAt` | string | ISO timestamp of the extraction. |\n\n**Optional enrichment.** With `enrich: true`, each extracted row gets an `enrichment` object with `seniority`, `department`, `firstName`, `lastName`, `currentCompanySlug` and `totalYearsExperience`. These are computed by rules from the fields above, with no extra requests. Enrichment does not use any AI service and sends no profile data to a third party.\n\n## How to use LinkedIn Profile Scraper\n\n1. Open the Actor in Apify Console and go to the Input tab.\n2. Paste one or more LinkedIn profile URLs or public identifiers into **Profile URLs or identifiers**.\n3. Set **Maximum profiles** to the number of rows you want.\n4. Leave the proxy setting on Apify residential proxy. LinkedIn commonly answers datacenter addresses with HTTP 999.\n5. Turn on **Derive enrichment** if you want the extra `enrichment` object; it costs extra per result.\n6. Click Start. When the run finishes, open the Output tab to view, filter and download the dataset as JSON, CSV, Excel or HTML.\n\nThe Actor keeps a modest pace: it waits at least one second between requests and retries with exponential backoff and a fresh proxy session when it sees HTTP 999, 429 or a server error.\n\n## Input\n\n| Field | Type | Description |\n|---|---|---|\n| `profileUrls` | array of strings | Public profile URLs or identifiers to extract. Accepts full URLs, URLs without `https://`, URLs with tracking parameters or sub-pages such as `/details/experience`, and bare identifiers like `williamhgates`. Entries that are not LinkedIn profiles are skipped with a warning; the run fails only if none is usable. |\n| `maxItems` | integer | Maximum number of unique profile rows to return, 1-1000, default 50. Hidden or blocked profiles count towards this limit. |\n| `includePosts` | boolean | Include recent posts and articles found in the page's structured data. Default true. |\n| `includeSimilarProfiles` | boolean | Include the \"People also viewed\" profile URLs in `alsoViewed`. They are not crawled. Default true. |\n| `enrich` | boolean | Derive `seniority`, `department`, name parts, company slug and years of experience (rule-based, no AI). Costs extra per result. Default false. |\n| `maxRetries` | integer | Retries for HTTP 999, 429 and server errors, 0 to 10. Default 4. |\n| `proxyConfiguration` | object | Apify Proxy settings. Residential proxy is the default. |\n\n```json\n{\n    \"profileUrls\": [\"https://www.linkedin.com/in/satyanadella\", \"williamhgates\"],\n    \"maxItems\": 2,\n    \"includePosts\": true,\n    \"includeSimilarProfiles\": true,\n    \"enrich\": false\n}\n```\n\n## Output\n\nThis is a real row from a run on linkedin.com/in/satyanadella (lists shortened):\n\n```json\n{\n    \"id\": \"satyanadella\",\n    \"sourceUrl\": \"https://www.linkedin.com/in/satyanadella\",\n    \"url\": \"https://www.linkedin.com/in/satyanadella\",\n    \"publicIdentifier\": \"satyanadella\",\n    \"fullName\": \"Satya Nadella\",\n    \"headline\": \"Chairman and CEO at Microsoft\",\n    \"location\": \"Redmond, Washington, United States\",\n    \"countryCode\": \"US\",\n    \"about\": \"As chairman and CEO of Microsoft, I define my mission and that of my company as empowering every person and every organization on the planet to achieve more.\",\n    \"profilePictureUrl\": \"https://media.licdn.com/dms/image/v2/C5603AQHHUuOSlRVA1w/profile-displayphoto-shrink_200_200/profile-displayphoto-shrink_200_200/0/1579726625398?e=2147483647&v=beta&t=Rr7WT9uBM0byOij0oT_KirejIMVE4HK4r8NGIp0zjdI\",\n    \"followers\": 12195507,\n    \"connections\": \"500+\",\n    \"badges\": \"Creator, Top Voice\",\n    \"currentPositions\": [\n        {\n            \"company\": \"Microsoft\",\n            \"companyUrl\": \"https://www.linkedin.com/company/microsoft\",\n            \"location\": \"Greater Seattle Area\",\n            \"startDate\": null\n        },\n        {\n            \"company\": \"University of Chicago\",\n            \"companyUrl\": \"https://www.linkedin.com/school/uchicago/\",\n            \"location\": null,\n            \"startDate\": null\n        }\n    ],\n    \"jobTitles\": [\n        \"Chairman and CEO\",\n        \"Member Board Of Trustees\"\n    ],\n    \"experience\": [\n        {\n            \"title\": \"Chairman and CEO\",\n            \"subtitle\": \"Microsoft\",\n            \"startDate\": \"Feb 2014\",\n            \"endDate\": \"Present\",\n            \"duration\": \"12 years 8 months\",\n            \"location\": \"Greater Seattle Area\",\n            \"description\": null,\n            \"companyUrl\": \"https://www.linkedin.com/company/microsoft\"\n        },\n        {\n            \"title\": \"Member Board Of Trustees\",\n            \"subtitle\": \"University of Chicago\",\n            \"startDate\": \"2018\",\n            \"endDate\": \"Present\",\n            \"duration\": \"8 years\",\n            \"location\": null,\n            \"description\": null,\n            \"companyUrl\": \"https://www.linkedin.com/school/uchicago/\"\n        }\n    ],\n    \"education\": [\n        {\n            \"title\": \"The University of Chicago Booth School of Business\",\n            \"subtitle\": null,\n            \"startDate\": \"1994\",\n            \"endDate\": \"1996\",\n            \"companyUrl\": \"https://www.linkedin.com/school/universityofchicagoboothschoolofbusiness/\"\n        },\n        {\n            \"title\": \"Manipal Institute of Technology, Manipal\",\n            \"subtitle\": \"Bachelor’s Degree Electrical Engineering\",\n            \"startDate\": null,\n            \"endDate\": null,\n            \"companyUrl\": \"https://www.linkedin.com/school/manipal-institute-of-technology/\"\n        }\n    ],\n    \"pastOrganizations\": [\n        {\n            \"name\": \"Starbucks\",\n            \"url\": \"https://www.linkedin.com/company/starbucks\",\n            \"type\": \"Organization\",\n            \"startDate\": null,\n            \"endDate\": null\n        },\n        {\n            \"name\": \"The Business Council U.S.\",\n            \"url\": \"https://www.linkedin.com/company/the-business-council-us\",\n            \"type\": \"Organization\",\n            \"startDate\": null,\n            \"endDate\": null\n        }\n    ],\n    \"languages\": [],\n    \"awards\": [],\n    \"websites\": [\n        \"https://snscratchpad.com/\"\n    ],\n    \"recentPosts\": [\n        {\n            \"url\": \"https://www.linkedin.com/posts/satyanadella_the-motivation-behind-the-new-copilot-intelligence-activity-7509276499837902849-DFP-\",\n            \"text\": \"The motivation behind the new Copilot: intelligence is accelerating fast. Now we need to diffuse it everywhere.\",\n            \"datePublished\": \"2026-09-25T15:43:53.171Z\",\n            \"likes\": 922\n        }\n    ],\n    \"articles\": [\n        {\n            \"url\": \"https://www.linkedin.com/pulse/how-do-we-build-frontier-intelligence-ecosystem-satya-nadella-73jhc\",\n            \"headline\": \"How do we build a frontier intelligence ecosystem?\",\n            \"datePublished\": \"2026-06-02T19:41:31.000+00:00\",\n            \"likes\": 2538\n        }\n    ],\n    \"alsoViewed\": [\n        \"https://www.linkedin.com/in/tony-bates-679227a5\",\n        \"https://www.linkedin.com/in/charlesphillips1\"\n    ],\n    \"isLimitedProfile\": false,\n    \"scrapedAt\": \"2026-09-30T18:09:57.142Z\"\n}\n```\n\nRows for `experience` take `location` only from the location line of each card and use `null` when the card has none. Company and school URLs are returned without tracking parameters.\n\nA profile that is hidden or missing produces a short row like this (illustrative), and it is not charged:\n\n```json\n{\n    \"id\": \"example-person\",\n    \"sourceUrl\": \"https://www.linkedin.com/in/example-person\",\n    \"url\": \"https://www.linkedin.com/in/example-person\",\n    \"publicIdentifier\": \"example-person\",\n    \"fullName\": null,\n    \"isLimitedProfile\": false,\n    \"scrapedAt\": \"2025-01-15T12:00:00.000Z\",\n    \"error\": \"not_public_or_blocked\"\n}\n```\n\nThe dataset has an overview view with the most useful columns, and you can export it in any format Apify supports.\n\n## How much does it cost to scrape LinkedIn profiles?\n\nThe Actor uses pay-per-event pricing. The `result` event is charged once for each extracted profile row, whether it is a full or a limited profile. The `enriched-result` event is charged once for each row that gets an `enrichment` object, only when `enrich` is true. Rows with an `error` are never charged. See the Pricing tab for current rates. If a run reaches the maximum cost you set for it, the Actor stops before the next profile and says so in the run's status message. Platform usage such as proxy traffic and compute is shown in your run's cost summary.\n\n## Use with the API\n\nYou can start the Actor from code with the Apify API clients or plain HTTP.\n\n**Python**\n\n```python\nimport os\n\nfrom apify_client import ApifyClient\n\nclient = ApifyClient(os.environ[\"APIFY_TOKEN\"])\nrun = client.actor(\"axiomworks/linkedin-profile-scraper\").call(\n    run_input={\"profileUrls\": [\"satyanadella\"], \"maxItems\": 1}\n)\nfor item in client.dataset(run[\"defaultDatasetId\"]).iterate_items():\n    print(item[\"fullName\"], item[\"headline\"])\n```\n\n**JavaScript**\n\n```javascript\nimport { ApifyClient } from 'apify-client';\n\nconst client = new ApifyClient({ token: process.env.APIFY_TOKEN });\nconst run = await client.actor('axiomworks/linkedin-profile-scraper').call({\n    profileUrls: ['satyanadella'],\n    maxItems: 1,\n});\nconst { items } = await client.dataset(run.defaultDatasetId).listItems();\nprocess.stdout.write(JSON.stringify(items, null, 2));\n```\n\n**cURL**\n\n```bash\ncurl -X POST \"https://api.apify.com/v2/acts/axiomworks~linkedin-profile-scraper/run-sync-get-dataset-items\" \\\n  -H \"Authorization: Bearer $APIFY_TOKEN\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"profileUrls\": [\"satyanadella\"], \"maxItems\": 1}'\n```\n\nYou can also schedule runs, send results to Google Sheets, or connect the Actor to Zapier, Make and webhooks with Apify integrations.\n\n## Use with AI agents (MCP)\n\nYou can call this Actor from any MCP client through the Apify MCP server. Add this to your client configuration:\n\n```json\n{\n    \"mcpServers\": {\n        \"apify\": {\n            \"url\": \"https://mcp.apify.com?tools=axiomworks/linkedin-profile-scraper\"\n        }\n    }\n}\n```\n\nExample prompts:\n\n- \"Get the headline, location and current company for linkedin.com/in/satyanadella.\"\n- \"Extract these five public LinkedIn profiles and tell me which ones list an education entry.\"\n- \"Scrape this profile with enrich set to true and summarise its enrichment block.\"\n\n## FAQ\n\n**Does this need a LinkedIn account?** No. It requests publicly visible pages without login or cookies, and it cannot see anything that requires a login.\n\n**Why is a field empty?** LinkedIn may serve a limited public profile, omit that field, or change its page markup. The Actor does not reveal masked values.\n\n**Why did a profile return an error row?** HTTP 999 on every attempt usually means the profile is hidden from logged-out visitors or does not exist. Raising `maxRetries` rarely helps for hidden profiles. Confirm the URL opens in a private browser window.\n\n**Does it fetch company pages or the suggested profiles?** No. Company and suggested profile URLs are returned as values only.\n\n**Can I search by keyword or company?** No. The Actor takes profile URLs or identifiers that you already have.\n\n**How many profiles can I run at once?** Profiles are fetched one after another at a polite pace, so large lists take longer. Split very large lists across several runs.\n\n**Does enrichment use AI?** No. It uses fixed rules on the extracted fields and makes no extra requests.\n\n## Is it legal to scrape LinkedIn?\n\nThis Actor is not affiliated with or endorsed by LinkedIn; it is an independent tool. This Actor only reads information that LinkedIn shows to anyone without logging in, and it does not bypass logins or CAPTCHAs. Data about people can still be personal data. Use it for a legitimate purpose, follow the privacy law that applies to you, such as GDPR, and check LinkedIn's terms of service and your own legal requirements before you rely on the results. This is general information and not legal advice.\n\n## Feedback\n\nIf a field is empty when the profile page clearly shows it, or you want another field added, open an issue from the Actor's Issues tab and include the profile URL and the run ID.\n"
    },
    "buildNumber": "0.1.15",
    "imageDigest": "f0e52f730f64fd60e9e8da3e039c2a9f165dd562f3c7bf13668b0c79e29d2c66",
    "actVersion": {
      "sourceType": "SOURCE_FILES",
      "buildTag": "candidate",
      "versionNumber": "0.1"
    },
    "usage": {
      "ACTOR_COMPUTE_UNITS": 0.03987888888888889
    }
  }
}