{
  "data": {
    "id": "6gPevFpnGMazFRHeC",
    "actId": "01QrE418DI1jrKHQH",
    "userId": "gvpzyuotdgnbOCvsY",
    "startedAt": "2026-09-26T19:15:57.303Z",
    "finishedAt": "2026-09-26T19:16:38.164Z",
    "status": "SUCCEEDED",
    "meta": {
      "origin": "API"
    },
    "stats": {
      "durationMillis": 40788,
      "runTimeSecs": 40.788,
      "computeUnits": 0.04532,
      "imageSizeBytes": 538373120
    },
    "options": {
      "useCache": false,
      "betaPackages": false,
      "tag": "latest",
      "memoryMbytes": 4096,
      "diskMbytes": 8192
    },
    "exitCode": 0,
    "inputSchema": "{\n  \"title\": \"LinkedIn Profile Scraper (People)\",\n  \"type\": \"object\",\n  \"schemaVersion\": 1,\n  \"properties\": {\n    \"profileUrls\": {\n      \"title\": \"Profile URLs or usernames\",\n      \"type\": \"array\",\n      \"editor\": \"stringList\",\n      \"description\": \"One or more LinkedIn people-profile URLs (e.g. https://www.linkedin.com/in/williamhgates/) or bare vanity usernames (e.g. williamhgates). Each is scraped from its public profile page. Company or job URLs are not supported here — use the LinkedIn Jobs & Company scraper for those.\",\n      \"prefill\": [\n        \"https://www.linkedin.com/in/williamhgates/\"\n      ]\n    },\n    \"maxItems\": {\n      \"title\": \"Max profiles\",\n      \"type\": \"integer\",\n      \"description\": \"Maximum number of profiles to scrape from the list above, in case a very long list is provided. Set high to scrape everything.\",\n      \"default\": 100,\n      \"minimum\": 1,\n      \"maximum\": 1000\n    },\n    \"li_at\": {\n      \"title\": \"li_at session cookie (optional)\",\n      \"type\": \"string\",\n      \"editor\": \"textfield\",\n      \"isSecret\": true,\n      \"description\": \"OPTIONAL. Your own LinkedIn li_at session cookie. Leave empty to scrape only public data (works for most public figures/creators). Provide it to reduce auth-wall blocks and reach fuller data on gated profiles. Use ONLY a cookie you own and are allowed to use — never share credentials. The actor sends it as a request cookie and never stores or logs it.\"\n    },\n    \"useUnblocker\": {\n      \"title\": \"Escalate to Unblocker on block\",\n      \"type\": \"boolean\",\n      \"description\": \"When residential-proxy attempts get auth-walled, retry the same profile through the Apify Proxy UNBLOCKER group, which defeats heavier anti-bot protection (may cost more per request). Recommended on.\",\n      \"default\": true\n    },\n    \"proxyConfiguration\": {\n      \"title\": \"Proxy configuration\",\n      \"type\": \"object\",\n      \"editor\": \"proxy\",\n      \"description\": \"Apify Proxy settings used for the first attempts, with a fresh proxy session on every retry. Residential proxies are strongly recommended — LinkedIn aggressively auth-walls datacenter IPs. If blocked, the actor can additionally escalate to the Unblocker group (see the option above).\",\n      \"default\": {\n        \"useApifyProxy\": true,\n        \"apifyProxyGroups\": [\n          \"RESIDENTIAL\"\n        ]\n      }\n    },\n    \"timeoutSecs\": {\n      \"title\": \"Request timeout (seconds)\",\n      \"type\": \"integer\",\n      \"description\": \"Timeout per HTTP request to LinkedIn, in seconds (5-90).\",\n      \"default\": 45,\n      \"minimum\": 5,\n      \"maximum\": 90\n    },\n    \"includeRawJsonLd\": {\n      \"title\": \"Include raw JSON-LD\",\n      \"type\": \"boolean\",\n      \"description\": \"Also include the raw schema.org Person JSON-LD block found on the profile page in each output record, for debugging or advanced use.\",\n      \"default\": false\n    }\n  },\n  \"required\": [\n    \"profileUrls\"\n  ]\n}",
    "readme": "# LinkedIn Profile Scraper (People)\n\nScrape **public LinkedIn people profiles** — one or many — into clean structured JSON: full name, headline, location, about/summary, work **experience** (title, company, dates), **education**, **skills**, profile **photo**, follower count and any publicly listed contact links. It reads LinkedIn's **public profile page** (the logged-out `public_profile_v3` page that Google indexes), which embeds a rich schema.org `Person` JSON-LD block plus server-rendered Experience/Education/About sections — **no login required** for public data.\n\nRequests use browser-grade HTTP fingerprints (`got-scraping`: real TLS + generated headers) routed through **Apify Proxy**. Residential IPs are tried first with a fresh session per retry; if LinkedIn throws an auth-wall, the actor automatically escalates to the Apify Proxy **Unblocker** group, which defeats heavier anti-bot protection.\n\n## Input\n```json\n{\n  \"profileUrls\": [\n    \"https://www.linkedin.com/in/williamhgates/\",\n    \"satyanadella\"\n  ],\n  \"maxItems\": 100,\n  \"useUnblocker\": true,\n  \"proxyConfiguration\": { \"useApifyProxy\": true, \"apifyProxyGroups\": [\"RESIDENTIAL\"] }\n}\n```\n- `profileUrls` — LinkedIn people-profile URLs or bare vanity usernames (e.g. `williamhgates`). Required.\n- `maxItems` — cap on how many profiles from the list to scrape (default 100).\n- `li_at` — **optional** LinkedIn session cookie (**yours**, never someone else's). Leave empty for public-only scraping. Supplying it reduces auth-wall blocks and can reach gated profiles. Sent only as a request cookie; never logged or stored.\n- `useUnblocker` — when residential attempts are auth-walled, retry via the Unblocker proxy group (default on).\n- `proxyConfiguration` — Apify Proxy config; **residential** strongly recommended.\n- `timeoutSecs` — per-request timeout in seconds (default 45).\n- `includeRawJsonLd` — also attach the raw schema.org `Person` JSON-LD to each record.\n\n## Output (one record per profile)\n```json\n{\n  \"source\": \"profile\",\n  \"input\": \"https://www.linkedin.com/in/williamhgates/\",\n  \"url\": \"https://www.linkedin.com/in/williamhgates\",\n  \"scrapedVia\": \"residential\",\n  \"authenticated\": false,\n  \"fullName\": \"Bill Gates\",\n  \"firstName\": \"Bill\",\n  \"lastName\": \"Gates\",\n  \"headline\": \"Chair, Gates Foundation and Founder, Breakthrough Energy\",\n  \"location\": \"Seattle, Washington, United States\",\n  \"country\": \"US\",\n  \"about\": \"Chair of the Gates Foundation. Founder of Breakthrough Energy. Co-founder of Microsoft...\",\n  \"photoUrl\": \"https://media.licdn.com/dms/image/.../profile-displayphoto...\",\n  \"followers\": 40681488,\n  \"connections\": null,\n  \"currentJobTitles\": [\"Co-chair\", \"Founder\", \"Co-founder\"],\n  \"experience\": [\n    { \"title\": \"Co-chair\", \"company\": \"Gates Foundation\", \"companyUrl\": \"https://www.linkedin.com/company/gates-foundation\", \"dateRange\": \"2000 - Present 26 years\", \"location\": null }\n  ],\n  \"education\": [\n    { \"school\": \"Harvard University\", \"degree\": null, \"dateRange\": \"1973 - 1975\" }\n  ],\n  \"skills\": [],\n  \"languages\": [],\n  \"email\": null,\n  \"emailsFound\": [],\n  \"websites\": [\"https://www.linkedin.com/in/williamhgates\"]\n}\n```\n\n## Honest limitations\n- **Email / phone are almost never public.** LinkedIn hides contact info behind login and (usually) a 1st-degree connection, so `email` is typically `null`. The actor still surfaces any genuinely public email/website it finds. To pull contact details you must supply your own `li_at` cookie, and even then some fields require being connected to the person.\n- **Skills** and some sections are only present when the person exposes them publicly; when absent they come back as empty arrays.\n- LinkedIn is one of the most aggressively defended sites on the web. Public-figure/creator profiles scrape reliably; low-profile or region-restricted accounts are more likely to hit an auth-wall — enable the Unblocker escalation or provide an `li_at` cookie for those.\n- Use responsibly and in line with LinkedIn's terms and applicable law. Only scrape data you are permitted to access.\n",
    "actorDefinition": {
      "actorSpecification": 1,
      "name": "linkedin-profile-scraper",
      "title": "LinkedIn Profile Scraper (People)",
      "description": "Scrape public LinkedIn people profiles by URL or username — name, headline, location, about/summary, work experience, education, skills, photo and follower count. Reads the public profile page (no login required) via got-scraping routed through Apify residential proxy, with automatic escalation to the Unblocker group. Accepts an optional li_at session cookie for fuller data.",
      "version": "1.0",
      "input": {
        "title": "LinkedIn Profile Scraper (People)",
        "type": "object",
        "schemaVersion": 1,
        "properties": {
          "profileUrls": {
            "title": "Profile URLs or usernames",
            "type": "array",
            "editor": "stringList",
            "description": "One or more LinkedIn people-profile URLs (e.g. https://www.linkedin.com/in/williamhgates/) or bare vanity usernames (e.g. williamhgates). Each is scraped from its public profile page. Company or job URLs are not supported here — use the LinkedIn Jobs & Company scraper for those.",
            "prefill": [
              "https://www.linkedin.com/in/williamhgates/"
            ]
          },
          "maxItems": {
            "title": "Max profiles",
            "type": "integer",
            "description": "Maximum number of profiles to scrape from the list above, in case a very long list is provided. Set high to scrape everything.",
            "default": 100,
            "minimum": 1,
            "maximum": 1000
          },
          "li_at": {
            "title": "li_at session cookie (optional)",
            "type": "string",
            "editor": "textfield",
            "isSecret": true,
            "description": "OPTIONAL. Your own LinkedIn li_at session cookie. Leave empty to scrape only public data (works for most public figures/creators). Provide it to reduce auth-wall blocks and reach fuller data on gated profiles. Use ONLY a cookie you own and are allowed to use — never share credentials. The actor sends it as a request cookie and never stores or logs it."
          },
          "useUnblocker": {
            "title": "Escalate to Unblocker on block",
            "type": "boolean",
            "description": "When residential-proxy attempts get auth-walled, retry the same profile through the Apify Proxy UNBLOCKER group, which defeats heavier anti-bot protection (may cost more per request). Recommended on.",
            "default": true
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "editor": "proxy",
            "description": "Apify Proxy settings used for the first attempts, with a fresh proxy session on every retry. Residential proxies are strongly recommended — LinkedIn aggressively auth-walls datacenter IPs. If blocked, the actor can additionally escalate to the Unblocker group (see the option above).",
            "default": {
              "useApifyProxy": true,
              "apifyProxyGroups": [
                "RESIDENTIAL"
              ]
            }
          },
          "timeoutSecs": {
            "title": "Request timeout (seconds)",
            "type": "integer",
            "description": "Timeout per HTTP request to LinkedIn, in seconds (5-90).",
            "default": 45,
            "minimum": 5,
            "maximum": 90
          },
          "includeRawJsonLd": {
            "title": "Include raw JSON-LD",
            "type": "boolean",
            "description": "Also include the raw schema.org Person JSON-LD block found on the profile page in each output record, for debugging or advanced use.",
            "default": false
          }
        },
        "required": [
          "profileUrls"
        ]
      },
      "dockerfile": "../Dockerfile",
      "storages": {
        "dataset": {
          "actorSpecification": 1,
          "views": {
            "overview": {
              "title": "Overview",
              "transformation": {
                "fields": [
                  "fullName",
                  "headline",
                  "location",
                  "country",
                  "about",
                  "photoUrl",
                  "followers",
                  "connections",
                  "email",
                  "skills",
                  "url",
                  "input"
                ]
              },
              "display": {
                "component": "table"
              }
            }
          }
        }
      },
      "output": {
        "actorOutputSchemaVersion": 1,
        "title": "LinkedIn Profile Scraper (People)",
        "description": "Scrape public LinkedIn people profiles by URL or username — name, headline, location, about/summary, work experience, education, skills, photo and follower count. Reads the public profile page (no login required) via got-scraping routed through Apify residential proxy, with automatic escalation to the Unblocker group. Accepts an optional li_at session cookie for fuller data.",
        "properties": {
          "dataset": {
            "type": "string",
            "title": "Results",
            "template": "{{links.apiDefaultDatasetUrl}}/items",
            "description": "Scrape public LinkedIn people profiles by URL or username — name, headline, location, about/summary, work experience, education, skills, photo and follower count. Reads the public profile page (no login required) via got-scraping routed through Apify residential proxy, with automatic escalation to the Unblocker group. Accepts an optional li_at session cookie for fuller data."
          }
        }
      },
      "readme": "# LinkedIn Profile Scraper (People)\n\nScrape **public LinkedIn people profiles** — one or many — into clean structured JSON: full name, headline, location, about/summary, work **experience** (title, company, dates), **education**, **skills**, profile **photo**, follower count and any publicly listed contact links. It reads LinkedIn's **public profile page** (the logged-out `public_profile_v3` page that Google indexes), which embeds a rich schema.org `Person` JSON-LD block plus server-rendered Experience/Education/About sections — **no login required** for public data.\n\nRequests use browser-grade HTTP fingerprints (`got-scraping`: real TLS + generated headers) routed through **Apify Proxy**. Residential IPs are tried first with a fresh session per retry; if LinkedIn throws an auth-wall, the actor automatically escalates to the Apify Proxy **Unblocker** group, which defeats heavier anti-bot protection.\n\n## Input\n```json\n{\n  \"profileUrls\": [\n    \"https://www.linkedin.com/in/williamhgates/\",\n    \"satyanadella\"\n  ],\n  \"maxItems\": 100,\n  \"useUnblocker\": true,\n  \"proxyConfiguration\": { \"useApifyProxy\": true, \"apifyProxyGroups\": [\"RESIDENTIAL\"] }\n}\n```\n- `profileUrls` — LinkedIn people-profile URLs or bare vanity usernames (e.g. `williamhgates`). Required.\n- `maxItems` — cap on how many profiles from the list to scrape (default 100).\n- `li_at` — **optional** LinkedIn session cookie (**yours**, never someone else's). Leave empty for public-only scraping. Supplying it reduces auth-wall blocks and can reach gated profiles. Sent only as a request cookie; never logged or stored.\n- `useUnblocker` — when residential attempts are auth-walled, retry via the Unblocker proxy group (default on).\n- `proxyConfiguration` — Apify Proxy config; **residential** strongly recommended.\n- `timeoutSecs` — per-request timeout in seconds (default 45).\n- `includeRawJsonLd` — also attach the raw schema.org `Person` JSON-LD to each record.\n\n## Output (one record per profile)\n```json\n{\n  \"source\": \"profile\",\n  \"input\": \"https://www.linkedin.com/in/williamhgates/\",\n  \"url\": \"https://www.linkedin.com/in/williamhgates\",\n  \"scrapedVia\": \"residential\",\n  \"authenticated\": false,\n  \"fullName\": \"Bill Gates\",\n  \"firstName\": \"Bill\",\n  \"lastName\": \"Gates\",\n  \"headline\": \"Chair, Gates Foundation and Founder, Breakthrough Energy\",\n  \"location\": \"Seattle, Washington, United States\",\n  \"country\": \"US\",\n  \"about\": \"Chair of the Gates Foundation. Founder of Breakthrough Energy. Co-founder of Microsoft...\",\n  \"photoUrl\": \"https://media.licdn.com/dms/image/.../profile-displayphoto...\",\n  \"followers\": 40681488,\n  \"connections\": null,\n  \"currentJobTitles\": [\"Co-chair\", \"Founder\", \"Co-founder\"],\n  \"experience\": [\n    { \"title\": \"Co-chair\", \"company\": \"Gates Foundation\", \"companyUrl\": \"https://www.linkedin.com/company/gates-foundation\", \"dateRange\": \"2000 - Present 26 years\", \"location\": null }\n  ],\n  \"education\": [\n    { \"school\": \"Harvard University\", \"degree\": null, \"dateRange\": \"1973 - 1975\" }\n  ],\n  \"skills\": [],\n  \"languages\": [],\n  \"email\": null,\n  \"emailsFound\": [],\n  \"websites\": [\"https://www.linkedin.com/in/williamhgates\"]\n}\n```\n\n## Honest limitations\n- **Email / phone are almost never public.** LinkedIn hides contact info behind login and (usually) a 1st-degree connection, so `email` is typically `null`. The actor still surfaces any genuinely public email/website it finds. To pull contact details you must supply your own `li_at` cookie, and even then some fields require being connected to the person.\n- **Skills** and some sections are only present when the person exposes them publicly; when absent they come back as empty arrays.\n- LinkedIn is one of the most aggressively defended sites on the web. Public-figure/creator profiles scrape reliably; low-profile or region-restricted accounts are more likely to hit an auth-wall — enable the Unblocker escalation or provide an `li_at` cookie for those.\n- Use responsibly and in line with LinkedIn's terms and applicable law. Only scrape data you are permitted to access.\n"
    },
    "buildNumber": "0.0.4",
    "actVersion": {
      "sourceType": "SOURCE_FILES",
      "buildTag": "latest",
      "versionNumber": "0.0"
    },
    "usage": {
      "ACTOR_COMPUTE_UNITS": 0.04532
    }
  }
}