{
  "data": {
    "id": "U52ExiJm03XhwUJz5",
    "actId": "c5Y5dfWU8TAiArwdP",
    "userId": "IYgBDiXtHOijAaUel",
    "startedAt": "2026-10-14T11:11:20.934Z",
    "finishedAt": "2026-10-14T11:11:36.757Z",
    "status": "SUCCEEDED",
    "meta": {
      "origin": "CI"
    },
    "stats": {
      "durationMillis": 15748,
      "runTimeSecs": 15.748,
      "computeUnits": 0.01749777777777778,
      "imageSizeBytes": 322933248
    },
    "options": {
      "useCache": true,
      "betaPackages": false,
      "memoryMbytes": 4096,
      "diskMbytes": 8192
    },
    "createdByOrganizationMemberUserId": "QYo53EZkJk0prePWY",
    "exitCode": 0,
    "inputSchema": "{\n  \"title\": \"LinkedIn Profile Scraper Input\",\n  \"type\": \"object\",\n  \"schemaVersion\": 1,\n  \"required\": [\n    \"profileUrls\"\n  ],\n  \"properties\": {\n    \"profileUrls\": {\n      \"title\": \"Profile URLs\",\n      \"type\": \"array\",\n      \"description\": \"LinkedIn profile URLs (https://linkedin.com/in/username) or usernames.\",\n      \"editor\": \"stringList\",\n      \"prefill\": [\n        \"https://www.linkedin.com/in/williamhgates\",\n        \"https://www.linkedin.com/in/satyanadella\"\n      ],\n      \"items\": {\n        \"type\": \"string\"\n      },\n      \"minItems\": 1\n    },\n    \"enrichCompany\": {\n      \"title\": \"Enrich Current Company\",\n      \"type\": \"boolean\",\n      \"description\": \"Fetch the current employer's own LinkedIn company page for extra detail (size, industry, website, headquarters, logo). Adds one extra request per profile (~30-90s) but is cached per company within a run. Disable for faster runs.\",\n      \"default\": true,\n      \"editor\": \"checkbox\"\n    },\n    \"proxyConfiguration\": {\n      \"title\": \"Proxy Configuration\",\n      \"type\": \"object\",\n      \"description\": \"Optional Apify proxy.\",\n      \"editor\": \"proxy\"\n    }\n  }\n}",
    "readme": "# LinkedIn Public Profile Credentials & Company Lookup\n\nLook up a batch of LinkedIn profile URLs or usernames and get back their public credentials — certifications, honors, test scores, volunteer work, and projects — alongside standard work and education history, with the current employer's own LinkedIn company page attached for context. Everything is read from the logged-out public profile view, so no LinkedIn account or cookie is ever needed.\n\n## What this actor does\n\n- Looks up each profile from a plain list of URLs or usernames, no login or session cookie involved\n- Pulls name, headline, location, summary, current and past employers, and schools\n- Reads the credential sections a profile shows to guests: certifications (with credential ID and verification link), honors & awards, test scores, organization memberships, volunteer experience, projects, and listed websites\n- Attaches the current employer's own company page (size, industry, headquarters, website, logo) when `enrichCompany` is on\n- Checks that the profile returned actually matches the one requested, and drops any text LinkedIn has redacted instead of passing along masked placeholder characters\n- A profile's row only contains the sections that profile actually has filled in — missing sections are left out rather than returned empty\n\n## Output per profile\n\n- `name`, `headline`, `location`, `summary`\n- `profileUrl`, `profilePicture`\n- `currentTitle`, `allTitles`\n- `currentCompany` — always `name`, `url` and `slug` (plus `companyId` for numeric company links) when the profile shows a current employer; with `enrichCompany: true` and a readable company page, also `employeeCount`, `size`, `industry`, `website`, `headquarters`, `organizationType`, `logoUrl`, `specialties`\n- `currentPositions`, `pastPositions` — `company`, `companyUrl`, `startDate`, `endDate`, `location` (per-position job titles aren't in the logged-out view; titles are collected in `allTitles`)\n- `experiences` — `currentPositions` and `pastPositions` combined into a single list\n- `education` (and `educations`, the same list under both keys) — `school`, `schoolUrl`, `startDate`, `endDate`\n- `certifications` — `name`, `issuer`, `issuerUrl`, `issueDate`, `credentialId`, `credentialUrl`\n- `honorsAndAwards` — `title`, `issuer`, `date`, `description`\n- `testScores` — `name`, `score`, `date`\n- `organizations` — `name`, `position`, `description`\n- `volunteerExperience` — `role`, `organization`, `description`\n- `projects` — `title`, `dateRange`, `description`\n- `websites` — `label`, `url`\n- `followersCount`\n- `recentArticles` — `title`, `url`, `publishedDate`, `text`, `likes`\n- `inputUrl`, `order` — the value you supplied and its zero-based position in the input list\n- `scrapedAt` — ISO 8601 timestamp\n\nSome profiles only expose LinkedIn's sign-up preview to logged-out visitors. For those, the row holds just `name`, `headline`, `summary`, `profileUrl` and `profilePicture`, plus `inputUrl`, `order` and `scrapedAt`.\n\n### Run status rows\n\nBesides profile rows, the dataset may hold one status row:\n\n- `_status: \"no_data\"` with `_reason: \"no_results\"`, `_message`, `_help` and `scrapedAt` — when no requested profile could be read.\n- `_status: \"partial_results\"` with `_reason` (a single cause or `mixed`), `_failureBreakdown` (counts keyed by `auth_wall`, `not_found`, `blocked`, `identity_mismatch`, `invalid_url` or `error`), `_message` and `scrapedAt` — when some profiles failed; it sits alongside the successful rows.\n\n## Input\n\n| Field | Type | Default | Description |\n|---|---|---|---|\n| `profileUrls` | array | – | LinkedIn profile URLs or bare usernames to look up. Required, at least one. |\n| `enrichCompany` | boolean | `true` | Attach the current employer's own LinkedIn company page details. Adds one extra request per unique company. |\n| `proxyConfiguration` | object | – | Not used by the actor; any value here is ignored |\n\nAccepted formats for each list entry: `https://www.linkedin.com/in/username`, `linkedin.com/in/username`, `in/username`, or a bare `username`.\n\n### Example: batch lookup with company data\n\n```json\n{\n  \"profileUrls\": [\n    \"https://www.linkedin.com/in/williamhgates\",\n    \"https://www.linkedin.com/in/satyanadella\"\n  ],\n  \"enrichCompany\": true\n}\n```\n\n### Example: usernames only, no company enrichment\n\n```json\n{\n  \"profileUrls\": [\"williamhgates\", \"reidhoffman\"],\n  \"enrichCompany\": false\n}\n```\n\n## Use cases\n\n- **Credential verification** — confirm listed certifications, honors, and test scores before a hiring decision\n- **Recruiting pipelines** — pull work history and education for a shortlist of candidate profile URLs in one batch\n- **Vendor and partner vetting** — check a contact's current role and employer company profile before a deal\n- **Sales enablement** — attach company size, industry, and HQ to a contact list automatically\n- **Research datasets** — build a structured sample of career and credential data across many profiles\n\n## FAQ\n\n**Is a LinkedIn login or cookie required?**\nNo. Every profile is read the way a logged-out visitor would see it; no credentials or session cookie are used.\n\n**What exactly does `enrichCompany` add?**\nIt fetches the current employer's own LinkedIn company page and attaches `currentCompany` fields like headcount, industry, headquarters, website, and logo. It only covers the current employer, not past employers.\n\n**Why are some certification or honor fields missing?**\nThose sections only appear when the profile owner filled them in on LinkedIn. If a profile has no listed certifications, for example, the `certifications` field is left out of that row entirely.\n\n**Can this return a person's email or phone number?**\nNo. Contact details aren't shown on the logged-out public profile page, so the actor can't extract them and never fabricates a value.\n\n**Why might `currentTitle` be blank while `currentCompany.name` is filled in?**\nLinkedIn sometimes withholds job-title text from logged-out viewers for a specific profile while still showing the employer name. When the title is withheld, it's omitted rather than replaced with placeholder text.\n\n**Does input order matter?**\nEach row carries `order`, matching its position in your `profileUrls` list, so you can line results back up with your original input even if requests complete out of order.\n\n**What happens for a profile that's fully private?**\nNo profile row is returned for it; it is counted in the run's status row instead. That's the profile owner's own privacy setting, not something this actor can work around. Profiles counted as `blocked` were refused by LinkedIn on that run and often succeed when retried later.\n\n**Is this the same as scraping LinkedIn's authenticated member API?**\nNo — skills, languages, and anything else gated behind a logged-in LinkedIn session are not available here, since only the public profile page is read.\n\n**Is this affiliated with LinkedIn?**\nNo. This is an independent, third-party actor that reads publicly available LinkedIn pages; it is not operated by or affiliated with LinkedIn.\n",
    "actorDefinition": {
      "actorSpecification": 1,
      "name": "linkedin-public-profile-credentials-and-company",
      "title": "LinkedIn Public Profile Credentials & Company Lookup",
      "description": "Look up public LinkedIn profiles by URL or username and get work history, education, certifications, honors, volunteer work, and projects, with the current employer's own company page details attached. No login or cookies needed.",
      "version": "1.0",
      "buildTag": "latest",
      "environmentVariables": {},
      "dockerfile": "../Dockerfile",
      "readme": "# LinkedIn Public Profile Credentials & Company Lookup\n\nLook up a batch of LinkedIn profile URLs or usernames and get back their public credentials — certifications, honors, test scores, volunteer work, and projects — alongside standard work and education history, with the current employer's own LinkedIn company page attached for context. Everything is read from the logged-out public profile view, so no LinkedIn account or cookie is ever needed.\n\n## What this actor does\n\n- Looks up each profile from a plain list of URLs or usernames, no login or session cookie involved\n- Pulls name, headline, location, summary, current and past employers, and schools\n- Reads the credential sections a profile shows to guests: certifications (with credential ID and verification link), honors & awards, test scores, organization memberships, volunteer experience, projects, and listed websites\n- Attaches the current employer's own company page (size, industry, headquarters, website, logo) when `enrichCompany` is on\n- Checks that the profile returned actually matches the one requested, and drops any text LinkedIn has redacted instead of passing along masked placeholder characters\n- A profile's row only contains the sections that profile actually has filled in — missing sections are left out rather than returned empty\n\n## Output per profile\n\n- `name`, `headline`, `location`, `summary`\n- `profileUrl`, `profilePicture`\n- `currentTitle`, `allTitles`\n- `currentCompany` — always `name`, `url` and `slug` (plus `companyId` for numeric company links) when the profile shows a current employer; with `enrichCompany: true` and a readable company page, also `employeeCount`, `size`, `industry`, `website`, `headquarters`, `organizationType`, `logoUrl`, `specialties`\n- `currentPositions`, `pastPositions` — `company`, `companyUrl`, `startDate`, `endDate`, `location` (per-position job titles aren't in the logged-out view; titles are collected in `allTitles`)\n- `experiences` — `currentPositions` and `pastPositions` combined into a single list\n- `education` (and `educations`, the same list under both keys) — `school`, `schoolUrl`, `startDate`, `endDate`\n- `certifications` — `name`, `issuer`, `issuerUrl`, `issueDate`, `credentialId`, `credentialUrl`\n- `honorsAndAwards` — `title`, `issuer`, `date`, `description`\n- `testScores` — `name`, `score`, `date`\n- `organizations` — `name`, `position`, `description`\n- `volunteerExperience` — `role`, `organization`, `description`\n- `projects` — `title`, `dateRange`, `description`\n- `websites` — `label`, `url`\n- `followersCount`\n- `recentArticles` — `title`, `url`, `publishedDate`, `text`, `likes`\n- `inputUrl`, `order` — the value you supplied and its zero-based position in the input list\n- `scrapedAt` — ISO 8601 timestamp\n\nSome profiles only expose LinkedIn's sign-up preview to logged-out visitors. For those, the row holds just `name`, `headline`, `summary`, `profileUrl` and `profilePicture`, plus `inputUrl`, `order` and `scrapedAt`.\n\n### Run status rows\n\nBesides profile rows, the dataset may hold one status row:\n\n- `_status: \"no_data\"` with `_reason: \"no_results\"`, `_message`, `_help` and `scrapedAt` — when no requested profile could be read.\n- `_status: \"partial_results\"` with `_reason` (a single cause or `mixed`), `_failureBreakdown` (counts keyed by `auth_wall`, `not_found`, `blocked`, `identity_mismatch`, `invalid_url` or `error`), `_message` and `scrapedAt` — when some profiles failed; it sits alongside the successful rows.\n\n## Input\n\n| Field | Type | Default | Description |\n|---|---|---|---|\n| `profileUrls` | array | – | LinkedIn profile URLs or bare usernames to look up. Required, at least one. |\n| `enrichCompany` | boolean | `true` | Attach the current employer's own LinkedIn company page details. Adds one extra request per unique company. |\n| `proxyConfiguration` | object | – | Not used by the actor; any value here is ignored |\n\nAccepted formats for each list entry: `https://www.linkedin.com/in/username`, `linkedin.com/in/username`, `in/username`, or a bare `username`.\n\n### Example: batch lookup with company data\n\n```json\n{\n  \"profileUrls\": [\n    \"https://www.linkedin.com/in/williamhgates\",\n    \"https://www.linkedin.com/in/satyanadella\"\n  ],\n  \"enrichCompany\": true\n}\n```\n\n### Example: usernames only, no company enrichment\n\n```json\n{\n  \"profileUrls\": [\"williamhgates\", \"reidhoffman\"],\n  \"enrichCompany\": false\n}\n```\n\n## Use cases\n\n- **Credential verification** — confirm listed certifications, honors, and test scores before a hiring decision\n- **Recruiting pipelines** — pull work history and education for a shortlist of candidate profile URLs in one batch\n- **Vendor and partner vetting** — check a contact's current role and employer company profile before a deal\n- **Sales enablement** — attach company size, industry, and HQ to a contact list automatically\n- **Research datasets** — build a structured sample of career and credential data across many profiles\n\n## FAQ\n\n**Is a LinkedIn login or cookie required?**\nNo. Every profile is read the way a logged-out visitor would see it; no credentials or session cookie are used.\n\n**What exactly does `enrichCompany` add?**\nIt fetches the current employer's own LinkedIn company page and attaches `currentCompany` fields like headcount, industry, headquarters, website, and logo. It only covers the current employer, not past employers.\n\n**Why are some certification or honor fields missing?**\nThose sections only appear when the profile owner filled them in on LinkedIn. If a profile has no listed certifications, for example, the `certifications` field is left out of that row entirely.\n\n**Can this return a person's email or phone number?**\nNo. Contact details aren't shown on the logged-out public profile page, so the actor can't extract them and never fabricates a value.\n\n**Why might `currentTitle` be blank while `currentCompany.name` is filled in?**\nLinkedIn sometimes withholds job-title text from logged-out viewers for a specific profile while still showing the employer name. When the title is withheld, it's omitted rather than replaced with placeholder text.\n\n**Does input order matter?**\nEach row carries `order`, matching its position in your `profileUrls` list, so you can line results back up with your original input even if requests complete out of order.\n\n**What happens for a profile that's fully private?**\nNo profile row is returned for it; it is counted in the run's status row instead. That's the profile owner's own privacy setting, not something this actor can work around. Profiles counted as `blocked` were refused by LinkedIn on that run and often succeed when retried later.\n\n**Is this the same as scraping LinkedIn's authenticated member API?**\nNo — skills, languages, and anything else gated behind a logged-in LinkedIn session are not available here, since only the public profile page is read.\n\n**Is this affiliated with LinkedIn?**\nNo. This is an independent, third-party actor that reads publicly available LinkedIn pages; it is not operated by or affiliated with LinkedIn.\n",
      "input": {
        "title": "LinkedIn Profile Scraper Input",
        "type": "object",
        "schemaVersion": 1,
        "required": [
          "profileUrls"
        ],
        "properties": {
          "profileUrls": {
            "title": "Profile URLs",
            "type": "array",
            "description": "LinkedIn profile URLs (https://linkedin.com/in/username) or usernames.",
            "editor": "stringList",
            "prefill": [
              "https://www.linkedin.com/in/williamhgates",
              "https://www.linkedin.com/in/satyanadella"
            ],
            "items": {
              "type": "string"
            },
            "minItems": 1
          },
          "enrichCompany": {
            "title": "Enrich Current Company",
            "type": "boolean",
            "description": "Fetch the current employer's own LinkedIn company page for extra detail (size, industry, website, headquarters, logo). Adds one extra request per profile (~30-90s) but is cached per company within a run. Disable for faster runs.",
            "default": true,
            "editor": "checkbox"
          },
          "proxyConfiguration": {
            "title": "Proxy Configuration",
            "type": "object",
            "description": "Optional Apify proxy.",
            "editor": "proxy"
          }
        }
      },
      "output": {
        "actorOutputSchemaVersion": 1,
        "title": "LinkedIn Public Profile Credentials & Company Lookup Output",
        "description": "One record per looked-up profile, with credentials, work and education history, and current-employer company details.",
        "properties": {
          "results": {
            "type": "string",
            "description": "Dataset with scraped LinkedIn profile data",
            "template": "{{links.apiDefaultDatasetUrl}}/items"
          }
        }
      },
      "storages": {
        "dataset": {
          "actorSpecification": 1,
          "views": {
            "overview": {
              "title": "Overview",
              "transformation": {
                "fields": [
                  "name",
                  "headline",
                  "location",
                  "profileUrl",
                  "followersCount",
                  "scrapedAt"
                ]
              },
              "display": {
                "component": "table",
                "properties": {
                  "name": {
                    "label": "Name",
                    "format": "text"
                  },
                  "headline": {
                    "label": "Headline",
                    "format": "text"
                  },
                  "location": {
                    "label": "Location",
                    "format": "text"
                  },
                  "profileUrl": {
                    "label": "Profile URL",
                    "format": "link"
                  },
                  "followersCount": {
                    "label": "Followers",
                    "format": "number"
                  },
                  "scrapedAt": {
                    "label": "Scraped At",
                    "format": "text"
                  }
                }
              }
            },
            "detailed": {
              "title": "Detailed",
              "transformation": {
                "fields": [
                  "name",
                  "headline",
                  "location",
                  "summary",
                  "profileUrl",
                  "profilePicture",
                  "currentTitle",
                  "followersCount",
                  "inputUrl",
                  "order",
                  "scrapedAt"
                ]
              },
              "display": {
                "component": "table",
                "properties": {
                  "name": {
                    "label": "Name",
                    "format": "text"
                  },
                  "headline": {
                    "label": "Headline",
                    "format": "text"
                  },
                  "location": {
                    "label": "Location",
                    "format": "text"
                  },
                  "summary": {
                    "label": "Summary",
                    "format": "text"
                  },
                  "profileUrl": {
                    "label": "Profile URL",
                    "format": "link"
                  },
                  "profilePicture": {
                    "label": "Photo",
                    "format": "link"
                  },
                  "currentTitle": {
                    "label": "Current Title",
                    "format": "text"
                  },
                  "followersCount": {
                    "label": "Followers",
                    "format": "number"
                  },
                  "inputUrl": {
                    "label": "Input URL",
                    "format": "text"
                  },
                  "order": {
                    "label": "Order",
                    "format": "number"
                  },
                  "scrapedAt": {
                    "label": "Scraped At",
                    "format": "text"
                  }
                }
              }
            }
          }
        }
      }
    },
    "buildNumber": "1.0.1",
    "imageDigest": "5480d95e0af8cc2d1f90c597b6acf41a3225f51cb8698f4d6bb2d80c3d6bcf1f",
    "actVersion": {
      "sourceType": "SOURCE_FILES",
      "buildTag": "latest",
      "versionNumber": "1.0"
    },
    "usage": {
      "ACTOR_COMPUTE_UNITS": 0.01749777777777778
    }
  }
}