{
  "data": {
    "id": "a6BQMdhg8ldaeXmCx",
    "actId": "SrGffkmX6MzpfC5q0",
    "userId": "6F1bvSUWUkjEpX7oO",
    "startedAt": "2026-09-27T21:54:18.356Z",
    "finishedAt": "2026-09-27T21:54:23.874Z",
    "status": "SUCCEEDED",
    "meta": {
      "origin": "API"
    },
    "stats": {
      "durationMillis": 5457,
      "runTimeSecs": 5.457,
      "computeUnits": 0.006063333333333333,
      "imageSizeBytes": 286794752
    },
    "options": {
      "useCache": true,
      "betaPackages": false,
      "tag": "billing-check",
      "memoryMbytes": 4096,
      "diskMbytes": 8192
    },
    "exitCode": 0,
    "inputSchema": "{\n  \"title\": \"LinkedIn Profile Scraper\",\n  \"description\": \"Choose what to extract, add LinkedIn profiles, and start. Prices include platform usage.\",\n  \"type\": \"object\",\n  \"schemaVersion\": 1,\n  \"properties\": {\n    \"profileMode\": {\n      \"title\": \"What to extract (choose a mode)\",\n      \"type\": \"string\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"profiles\",\n        \"profiles-with-email\"\n      ],\n      \"enumTitles\": [\n        \"Profile details ($4 / 1,000)\",\n        \"Profile details + email search ($10 / 1,000)\"\n      ],\n      \"prefill\": \"profiles\",\n      \"description\": \"Both options return the same available profile data. The second also searches for work emails at $10 total per 1,000 profiles with email search. An email is not guaranteed.\"\n    },\n    \"profileUrls\": {\n      \"title\": \"LinkedIn URLs or public identifiers\",\n      \"type\": \"array\",\n      \"editor\": \"stringList\",\n      \"items\": {\n        \"type\": \"string\"\n      },\n      \"maxItems\": 1000000,\n      \"placeholderValue\": \"https://www.linkedin.com/in/dharmesh\",\n      \"description\": \"Paste LinkedIn profile URLs or public identifiers such as dharmesh. Localized URLs are accepted. Use Bulk edit for a list, or clear this list to upload a CSV. Up to 1,000,000 entries. Very repetitive lists are rejected before enrichment.\",\n      \"prefill\": [\n        \"https://www.linkedin.com/in/dharmesh\",\n        \"https://www.linkedin.com/in/carmengerea\"\n      ]\n    },\n    \"csvFile\": {\n      \"title\": \"Upload CSV\",\n      \"type\": \"string\",\n      \"editor\": \"fileupload\",\n      \"description\": \"Upload one UTF-8 CSV file, up to 1,000,000 contacts / 256 MB. LinkedIn URL or public identifier columns are detected automatically. Leave the profile list and Paste CSV empty. For inputs over 100 rows, allow at least one unique lookup for every ten rows within your profile and spending limits.\",\n      \"sectionCaption\": \"Upload a CSV\",\n      \"sectionDescription\": \"Optional. Import a contact list and keep your original columns. A LinkedIn URL column is detected automatically.\"\n    },\n    \"csvText\": {\n      \"title\": \"Or paste CSV\",\n      \"type\": \"string\",\n      \"editor\": \"textarea\",\n      \"maxLength\": 10000000,\n      \"description\": \"Paste CSV text including the header row. Use this or Upload CSV, leaving the profile list empty.\"\n    },\n    \"maxProfiles\": {\n      \"title\": \"Maximum profiles\",\n      \"type\": \"integer\",\n      \"default\": 1000000,\n      \"minimum\": 1,\n      \"maximum\": 1000000,\n      \"description\": \"Up to 1,000,000 unique profiles per run. Your spending limit may stop it sooner. For a small test, use a small input: exports retain every original row, so inputs over 100 rows must fit within ten rows per unique lookup covered by these limits.\",\n      \"sectionCaption\": \"Advanced\",\n      \"sectionDescription\": \"Optional. Lower the limit to try a smaller batch.\"\n    },\n    \"includeEmail\": {\n      \"title\": \"Find work emails\",\n      \"type\": \"boolean\",\n      \"description\": \"Also look for a work email. Results include status and confidence; an email is not guaranteed.\",\n      \"editor\": \"hidden\"\n    },\n    \"refreshContacts\": {\n      \"title\": \"Compare with existing role and employer\",\n      \"type\": \"boolean\",\n      \"description\": \"Use a CSV with your current role and company columns. Flag possible changes and keep previous values when public data is missing. Common headers such as Job Title and Company are detected automatically.\",\n      \"editor\": \"hidden\"\n    },\n    \"linkedinColumn\": {\n      \"title\": \"LinkedIn column override\",\n      \"type\": \"string\",\n      \"editor\": \"hidden\",\n      \"maxLength\": 100,\n      \"description\": \"Exact CSV header containing profile URLs. Leave empty for automatic detection.\"\n    },\n    \"previousTitleColumn\": {\n      \"title\": \"Role column override\",\n      \"type\": \"string\",\n      \"editor\": \"hidden\",\n      \"maxLength\": 100,\n      \"description\": \"Exact CSV header containing existing job titles. Only needed for contact refresh if automatic detection cannot choose a column.\"\n    },\n    \"previousCompanyColumn\": {\n      \"title\": \"Employer column override\",\n      \"type\": \"string\",\n      \"editor\": \"hidden\",\n      \"maxLength\": 100,\n      \"description\": \"Exact CSV header containing existing company names. Only needed for contact refresh if automatic detection cannot choose a column.\"\n    },\n    \"inputSource\": {\n      \"title\": \"Legacy input source\",\n      \"type\": \"string\",\n      \"editor\": \"hidden\",\n      \"description\": \"Optional compatibility field. Source is detected automatically when omitted.\"\n    },\n    \"workflow\": {\n      \"title\": \"Legacy workflow\",\n      \"type\": \"string\",\n      \"editor\": \"hidden\",\n      \"description\": \"Optional compatibility field. Use refreshContacts for new integrations.\"\n    }\n  },\n  \"required\": [],\n  \"additionalProperties\": false\n}",
    "readme": "## Turn LinkedIn URLs into contact data you can use\n\nGet public profile details, work history, company data and optional **work emails**. Export CSV or use the full JSON in your product, workflow or AI agent. No LinkedIn login or cookies required.\n\n[Get started](#how-to-get-started) · [Example output](#example-output)\n\n## Who it's for\n\n- Sales teams and lead-generation agencies enriching contact lists.\n- Recruiters adding professional background to candidate records.\n- Developers building LinkedIn enrichment into products, workflows or AI agents.\n\n## What it helps you get\n\n- Available names, roles, employers, locations, experience and education.\n- Work-email search with status and confidence.\n- A CSV that keeps your contact IDs and original columns, plus complete JSON for your application.\n\n## Example output\n\nInput: `https://www.linkedin.com/in/dharmesh`\n\n```json\n{\n  \"linkedinUrl\": \"https://www.linkedin.com/in/dharmesh\",\n  \"name\": \"Dharmesh Shah\",\n  \"headline\": \"Founder and CTO at HubSpot. Helping millions grow better.\",\n  \"currentTitle\": \"Founder and CTO\",\n  \"titleSource\": \"headline\",\n  \"currentCompany\": \"HubSpot\",\n  \"location\": \"Boston, Massachusetts, United States\",\n  \"workEmail\": null,\n  \"emailStatus\": null,\n  \"emailMatch\": null,\n  \"emailConfidence\": null,\n  \"companyDomain\": null,\n  \"profileState\": \"accessible\",\n  \"profile\": {\n    \"id\": \"dharmesh\",\n    \"name\": \"Dharmesh Shah\",\n    \"firstName\": \"Dharmesh\",\n    \"lastName\": \"Shah\",\n    \"headline\": \"Founder and CTO at HubSpot. Helping millions grow better.\",\n    \"currentTitle\": \"Founder and CTO\",\n    \"titleSource\": \"headline\",\n    \"currentCompany\": \"HubSpot\",\n    \"memorialized\": null,\n    \"memorializedSource\": null,\n    \"companyState\": \"public\",\n    \"about\": \"Career startup guy.\\nAuthor of the book \\\"Inbound Marketing\\\"…\",\n    \"followerCount\": 1196331,\n    \"connectionsCount\": 4294,\n    \"location\": {\n      \"linkedinText\": \"Boston, Massachusetts, United States\",\n      \"countryCode\": \"US\",\n      \"parsed\": {\n        \"text\": \"Boston, Massachusetts, United States\",\n        \"countryCode\": \"US\",\n        \"regionCode\": null,\n        \"country\": \"United States\",\n        \"countryFull\": \"United States\",\n        \"state\": \"Massachusetts\",\n        \"city\": \"Boston\"\n      }\n    },\n    \"experience\": [\n      {\n        \"position\": null,\n        \"location\": \"Cambridge, Massachusetts, United States\",\n        \"companyName\": \"HubSpot\",\n        \"companyLinkedinUrl\": \"https://www.linkedin.com/company/hubspot/\",\n        \"companyUniversalName\": \"hubspot\",\n        \"duration\": null,\n        \"description\": null,\n        \"experienceGroupId\": null,\n        \"startDate\": null,\n        \"endDate\": null,\n        \"companyLogo\": {\n          \"url\": \"https://media.licdn.com/dms/image/v2/C4D0BAQF8H-SLmMDZlA/company-logo_100_100/company-logo_100_100/0/1646683330132/hubspot_logo?e=2147483647&v=beta&t=zOUMsb7QoojA0ShTvsA-3sskbL8v_dZwDLfddJuEMDU\",\n          \"sizes\": [\n            {\n              \"url\": \"https://media.licdn.com/dms/image/v2/C4D0BAQF8H-SLmMDZlA/company-logo_100_100/company-logo_100_100/0/1646683330132/hubspot_logo?e=2147483647&v=beta&t=zOUMsb7QoojA0ShTvsA-3sskbL8v_dZwDLfddJuEMDU\",\n              \"width\": 100,\n              \"height\": 100\n            }\n          ]\n        },\n        \"domain\": null,\n        \"companyIndustry\": \"Software Development\",\n        \"companySize\": \"5,001-10,000 employees\",\n        \"companyHeadquarters\": \"Cambridge, Massachusetts\",\n        \"isCurrent\": null,\n        \"companyLinkedInId\": \"68529\"\n      }\n    ],\n    \"experienceAvailability\": {\n      \"returnedPositions\": 1,\n      \"positionsWithTitle\": 0,\n      \"positionsWithDerivedTitle\": 0,\n      \"positionsWithStartDate\": 0,\n      \"positionsWithEndDate\": 0,\n      \"positionsWithDescription\": 0\n    },\n    \"experienceState\": \"restricted\",\n    \"education\": [\n      {\n        \"schoolName\": \"Massachusetts Institute of Technology\",\n        \"schoolLinkedinUrl\": \"https://www.linkedin.com/school/mit/\",\n        \"schoolSlug\": \"mit\",\n        \"schoolId\": \"1503\",\n        \"degree\": null,\n        \"fieldOfStudy\": null,\n        \"startDate\": {\n          \"year\": 2004,\n          \"text\": \"2004\"\n        },\n        \"endDate\": {\n          \"year\": 2006,\n          \"text\": \"2006\"\n        },\n        \"period\": \"2004 - 2006\",\n        \"description\": null,\n        \"insights\": null,\n        \"schoolLogo\": {\n          \"url\": \"https://media.licdn.com/dms/image/v2/D560BAQH-UXRfIDIKug/company-logo_100_100/company-logo_100_100/0/1689799729035/mit_logo?e=2147483647&v=beta&t=2BcyEkKb9m86JDvxtNLfDVfyept76unhOFNf5Wt_Vp4\",\n          \"sizes\": [\n            {\n              \"url\": \"https://media.licdn.com/dms/image/v2/D560BAQH-UXRfIDIKug/company-logo_100_100/company-logo_100_100/0/1689799729035/mit_logo?e=2147483647&v=beta&t=2BcyEkKb9m86JDvxtNLfDVfyept76unhOFNf5Wt_Vp4\",\n              \"width\": 100,\n              \"height\": 100\n            }\n          ]\n        },\n        \"schoolLinkedInId\": \"1503\"\n      }\n    ],\n    \"skills\": [],\n    \"languages\": [\n      {\n        \"name\": \"English\",\n        \"proficiency\": \"Native or bilingual proficiency\"\n      },\n      {\n        \"name\": \"Gujarati\",\n        \"proficiency\": \"Native or bilingual proficiency\"\n      }\n    ],\n    \"honorsAndAwards\": [],\n    \"certifications\": [\n      {\n        \"title\": \"Inbound Certification\",\n        \"issuedAt\": \"Issued Dec 2014 · Expires Jan 2016\",\n        \"link\": \"http://academy.hubspot.com/certification\",\n        \"issuedBy\": \"HubSpot\",\n        \"issuedByLink\": \"https://www.linkedin.com/company/hubspot\",\n        \"issuedByLogo\": {\n          \"url\": \"https://media.licdn.com/dms/image/v2/C4D0BAQF8H-SLmMDZlA/company-logo_100_100/company-logo_100_100/0/1646683330132/hubspot_logo?e=2147483647&v=beta&t=zOUMsb7QoojA0ShTvsA-3sskbL8v_dZwDLfddJuEMDU\",\n          \"sizes\": [\n            {\n              \"url\": \"https://media.licdn.com/dms/image/v2/C4D0BAQF8H-SLmMDZlA/company-logo_100_100/company-logo_100_100/0/1646683330132/hubspot_logo?e=2147483647&v=beta&t=zOUMsb7QoojA0ShTvsA-3sskbL8v_dZwDLfddJuEMDU\",\n              \"width\": 100,\n              \"height\": 100\n            }\n          ]\n        },\n        \"issuedOn\": \"Dec 2014\",\n        \"expiresOn\": \"Jan 2016\"\n      }\n    ],\n    \"courses\": [],\n    \"volunteering\": [],\n    \"organizations\": [],\n    \"publications\": [\n      {\n        \"title\": \"Inbound Marketing\",\n        \"publishedAt\": \"United States · Oct 19, 2009\",\n        \"description\": \"How To Get Found Using Google, Social Media and Blogs.\",\n        \"link\": \"http://www.amazon.com/Inbound-Marketing-Found-Google-Social/dp/0470499311/ref=sr_1_1?s=books&ie=UTF8&qid=1399245534&sr=1-1&keywords=inbound+marketing\",\n        \"publisher\": \"United States\",\n        \"publishedOn\": \"Oct 19, 2009\",\n        \"contributors\": [\n          {\n            \"linkedinUrl\": \"https://www.linkedin.com/in/brianhalligan\",\n            \"name\": \"Brian Halligan\"\n          }\n        ]\n      }\n    ],\n    \"projects\": [\n      {\n        \"title\": \"simple.ai\",\n        \"duration\": \"Nov 2024\",\n        \"startDate\": {\n          \"month\": \"Nov\",\n          \"year\": 2024,\n          \"text\": \"Nov 2024\"\n        },\n        \"endDate\": null,\n        \"description\": \"The AI newsletter that makes the complicated world of AI more simple.\"\n      },\n      {\n        \"title\": \"agent.ai\",\n        \"duration\": \"Apr 2024\",\n        \"startDate\": {\n          \"month\": \"Apr\",\n          \"year\": 2024,\n          \"text\": \"Apr 2024\"\n        },\n        \"endDate\": null,\n        \"description\": \"Agent.ai is the professional network for AI agents.\\n\\nDiscover, build and engage AI agents. Almost 2 million (human) users and 1,500+ agents.\"\n      }\n    ],\n    \"recommendations\": [\n      {\n        \"givenBy\": \"Mark Evans\",\n        \"givenByLink\": \"https://www.linkedin.com/in/markev\",\n        \"description\": \"Dharmesh did a workshop at the recent meshmarketing conference in Toronto. His presentation was engaging, insightful, informative and entertaining - a perfect combination that really resonated with the audience. If you're looking for a public speaker, I would enthusiastically recommend Dharmesh.\",\n        \"givenByPicture\": {\n          \"url\": null,\n          \"sizes\": []\n        }\n      },\n      {\n        \"givenBy\": \"Rand Fishkin\",\n        \"givenByLink\": \"https://www.linkedin.com/in/randfishkin\",\n        \"description\": \"Dharmesh's eloquence and charisma on stage is matched only by his command of the topics and audience empathy. When surveyed, our 220+ attendees overwhelmingly gave Dharmesh's presentation the highest score available. Many said it was their favorite session of the event. I'll be working very hard to make sure he's at any future seminars we hold.\",\n        \"givenByPicture\": {\n          \"url\": null,\n          \"sizes\": []\n        }\n      }\n    ],\n    \"recommendersCount\": 7,\n    \"influencer\": true,\n    \"topVoice\": true,\n    \"creator\": true,\n    \"websites\": [\n      {\n        \"url\": \"http://onstartups.com\",\n        \"label\": \"Other\"\n      },\n      {\n        \"url\": \"http://www.HubSpot.com\",\n        \"label\": \"Other\"\n      },\n      {\n        \"url\": \"http://www.dharmesh.com\",\n        \"label\": \"Other\"\n      }\n    ],\n    \"website\": \"http://onstartups.com\",\n    \"photo\": \"https://media.licdn.com/dms/image/v2/C4E03AQGL2VlL9W53ww/profile-displayphoto-shrink_200_200/profile-displayphoto-shrink_200_200/0/1516232433623?e=2147483647&v=beta&t=CvnQXe1gWiyuoQ4t1NOCM7abfbcQZIEKpxV54CYNX84\",\n    \"photoState\": \"public\",\n    \"bannerImage\": \"https://media.licdn.com/dms/image/v2/C4E16AQHTt9ikcff1ug/profile-displaybackgroundimage-shrink_200_800/profile-displaybackgroundimage-shrink_200_800/0/1610553040149?e=2147483647&v=beta&t=_UWY0ydMXVZgHbRuuKEmAMkw7PfqzFN7FZjPXSnnihs\",\n    \"memberId\": \"658789\",\n    \"memberIdentifier\": \"658789\",\n    \"linkedInIdentifier\": \"urn:li:member:658789\",\n    \"linkedinUrl\": \"https://www.linkedin.com/in/dharmesh\",\n    \"publicIdentifier\": \"dharmesh\",\n    \"peopleAlsoViewed\": [\n      {\n        \"name\": \"Paul Ryan\",\n        \"publicIdentifier\": \"ptryan123\",\n        \"url\": \"https://www.linkedin.com/in/ptryan123\"\n      },\n      {\n        \"name\": \"Mitchell Hashimoto\",\n        \"publicIdentifier\": \"mitchellh\",\n        \"url\": \"https://www.linkedin.com/in/mitchellh\"\n      },\n      {\n        \"name\": \"Matthew LeRay\",\n        \"publicIdentifier\": \"matthewleray\",\n        \"url\": \"https://www.linkedin.com/in/matthewleray\"\n      },\n      {\n        \"name\": \"Elias Torres\",\n        \"publicIdentifier\": \"eliast\",\n        \"url\": \"https://www.linkedin.com/in/eliast\"\n      },\n      {\n        \"name\": \"Anatoly Volkhover\",\n        \"publicIdentifier\": \"anatolyvolkhover\",\n        \"url\": \"https://www.linkedin.com/in/anatolyvolkhover\"\n      },\n      {\n        \"name\": \"Joey Burzynski\",\n        \"publicIdentifier\": \"miamibeachseo\",\n        \"url\": \"https://www.linkedin.com/in/miamibeachseo\"\n      },\n      {\n        \"name\": \"Bo Weaver\",\n        \"publicIdentifier\": \"boweaver\",\n        \"url\": \"https://www.linkedin.com/in/boweaver\"\n      },\n      {\n        \"name\": \"Carlos Arteaga\",\n        \"publicIdentifier\": \"carlosarteagabarrueto\",\n        \"url\": \"https://www.linkedin.com/in/carlosarteagabarrueto\"\n      },\n      {\n        \"name\": \"Rishi Singh\",\n        \"publicIdentifier\": \"rishi-singh-harness\",\n        \"url\": \"https://www.linkedin.com/in/rishi-singh-harness\"\n      },\n      {\n        \"name\": \"Yony F.\",\n        \"publicIdentifier\": \"yony-f-12730a8\",\n        \"url\": \"https://www.linkedin.com/in/yony-f-12730a8\"\n      },\n      {\n        \"name\": \"Nick Hughes\",\n        \"publicIdentifier\": \"jnickhughes\",\n        \"url\": \"https://www.linkedin.com/in/jnickhughes\"\n      },\n      {\n        \"name\": \"Dong Ouyang\",\n        \"publicIdentifier\": \"douyang\",\n        \"url\": \"https://www.linkedin.com/in/douyang\"\n      },\n      {\n        \"name\": \"Gregg Mojica\",\n        \"publicIdentifier\": \"greggmojica\",\n        \"url\": \"https://www.linkedin.com/in/greggmojica\"\n      },\n      {\n        \"name\": \"Ilya Pozin\",\n        \"publicIdentifier\": \"ipozin\",\n        \"url\": \"https://www.linkedin.com/in/ipozin\"\n      },\n      {\n        \"name\": \"Brennan Hatton\",\n        \"publicIdentifier\": \"brennanhatton\",\n        \"url\": \"https://www.linkedin.com/in/brennanhatton\"\n      },\n      {\n        \"name\": \"Anand Chandrasekaran\",\n        \"publicIdentifier\": \"anandchandrasekaran\",\n        \"url\": \"https://www.linkedin.com/in/anandchandrasekaran\"\n      },\n      {\n        \"name\": \"Vikram Kapoor\",\n        \"publicIdentifier\": \"vikram-kapoor-752543\",\n        \"url\": \"https://www.linkedin.com/in/vikram-kapoor-752543\"\n      },\n      {\n        \"name\": \"Erik Rannala\",\n        \"publicIdentifier\": \"erikr\",\n        \"url\": \"https://www.linkedin.com/in/erikr\"\n      },\n      {\n        \"name\": \"Marc Fleischmann\",\n        \"publicIdentifier\": \"marcf\",\n        \"url\": \"https://www.linkedin.com/in/marcf\"\n      },\n      {\n        \"name\": \"Stephen Blum\",\n        \"publicIdentifier\": \"stephenlb\",\n        \"url\": \"https://www.linkedin.com/in/stephenlb\"\n      }\n    ],\n    \"currentCompanyDomain\": null,\n    \"currentCompanyIndustry\": \"Software Development\",\n    \"currentCompanySize\": \"5,001-10,000 employees\",\n    \"currentCompanyHeadquarters\": \"Cambridge, Massachusetts\",\n    \"city\": \"Boston\",\n    \"state\": \"Massachusetts\",\n    \"country\": \"United States\",\n    \"countryCode\": \"US\",\n    \"coverPhoto\": \"https://media.licdn.com/dms/image/v2/C4E16AQHTt9ikcff1ug/profile-displaybackgroundimage-shrink_200_800/profile-displaybackgroundimage-shrink_200_800/0/1610553040149?e=2147483647&v=beta&t=_UWY0ydMXVZgHbRuuKEmAMkw7PfqzFN7FZjPXSnnihs\",\n    \"followers\": 1196331,\n    \"connections\": 4294,\n    \"headlineSource\": \"badge\",\n    \"currentCompanyId\": \"68529\",\n    \"currentSchoolId\": \"1503\",\n    \"company\": null\n  },\n  \"response\": {\n    \"type\": \"linkedin-profile\",\n    \"url\": \"https://www.linkedin.com/in/dharmesh\",\n    \"tookMs\": 1064,\n    \"accessible\": true,\n    \"profileState\": \"accessible\",\n    \"creditsUsed\": 1\n  }\n}\n```\n\n## How it works\n\nProvide LinkedIn profile URLs or public identifiers, such as `dharmesh`. The Actor retrieves the available public data and searches for work emails when selected. Duplicate URLs are fetched once and matched back to every original CSV row.\n\nComplete profile JSON appears as profiles finish. Contact exports keep your original row order and are ready when the run completes.\n\n## How to get started\n\n1. Choose **Profile details** or **Profile details + email search**.\n2. Replace the example with your LinkedIn URLs or public identifiers. Use **Bulk edit** for a list, or clear the profiles and **Upload a CSV**.\n3. Click **Start**, then open **Contacts CSV** or **Complete profile JSON** to get your results.\n\nFor CSVs, include a `LinkedIn URL` or `Public Identifier` column. Common variations are detected automatically. Use UTF-8 CSV, up to 1,000,000 contacts and 256 MB. **Maximum profiles** lets you try a smaller batch. For inputs over 100 rows, allow at least one unique profile lookup for every ten rows within your profile and spending limits. Use a smaller file for a small test.\n\nSave your settings as a task for repeat runs. Open **API** for integration examples.\n\n## Pricing\n\nPrices include platform usage. The email option includes profile details.\n\n| Option | Per 1,000 profiles |\n| --- | --- |\n| Profile details | $4 |\n| Profile details + email search | $10 total |\n\nUnavailable profiles are not charged. Skipped or unconfirmed email searches use the profile-only rate. Free Apify plans can process up to 10 input rows per run.\n\n## Questions and help\n\n### Will every profile have an email?\n\nNo. Check `emailStatus`, `emailMatch` and `emailConfidence`. `deliverable` means the mailbox accepted mail under Mart's strict non-catch-all check. `emailMatch=inferred` means the address was generated from the person's name and current employer; it does not independently prove ownership. Confidence measures deliverability only.\n\n### What happens when data is missing?\n\nFields stay empty. Unavailable profiles remain in the contact export with a `mart_profileState`; the run summary accounts for them.\n\n### Where can I get help?\n\nEmail [support@mart.dev](mailto:support@mart.dev) and include your run ID.\n\n---\n\nDisclaimer: This tool has no affiliation with LinkedIn Corporation and receives no sponsorship or endorsement from it. LinkedIn Corporation owns the registered LinkedIn® trademark. Other trademarks belong to their respective owners.\n",
    "actorDefinition": {
      "actorSpecification": 1,
      "name": "linkedin-profile-scraper",
      "title": "LinkedIn Profile Scraper + Email | No Cookies",
      "description": "Extract detailed information from LinkedIn profiles in bulk, including work experience, education history, skills and more. No cookies or account required.",
      "version": "0.2",
      "buildTag": "latest",
      "dockerfile": "../Dockerfile",
      "readme": "## Turn LinkedIn URLs into contact data you can use\n\nGet public profile details, work history, company data and optional **work emails**. Export CSV or use the full JSON in your product, workflow or AI agent. No LinkedIn login or cookies required.\n\n[Get started](#how-to-get-started) · [Example output](#example-output)\n\n## Who it's for\n\n- Sales teams and lead-generation agencies enriching contact lists.\n- Recruiters adding professional background to candidate records.\n- Developers building LinkedIn enrichment into products, workflows or AI agents.\n\n## What it helps you get\n\n- Available names, roles, employers, locations, experience and education.\n- Work-email search with status and confidence.\n- A CSV that keeps your contact IDs and original columns, plus complete JSON for your application.\n\n## Example output\n\nInput: `https://www.linkedin.com/in/dharmesh`\n\n```json\n{\n  \"linkedinUrl\": \"https://www.linkedin.com/in/dharmesh\",\n  \"name\": \"Dharmesh Shah\",\n  \"headline\": \"Founder and CTO at HubSpot. Helping millions grow better.\",\n  \"currentTitle\": \"Founder and CTO\",\n  \"titleSource\": \"headline\",\n  \"currentCompany\": \"HubSpot\",\n  \"location\": \"Boston, Massachusetts, United States\",\n  \"workEmail\": null,\n  \"emailStatus\": null,\n  \"emailMatch\": null,\n  \"emailConfidence\": null,\n  \"companyDomain\": null,\n  \"profileState\": \"accessible\",\n  \"profile\": {\n    \"id\": \"dharmesh\",\n    \"name\": \"Dharmesh Shah\",\n    \"firstName\": \"Dharmesh\",\n    \"lastName\": \"Shah\",\n    \"headline\": \"Founder and CTO at HubSpot. Helping millions grow better.\",\n    \"currentTitle\": \"Founder and CTO\",\n    \"titleSource\": \"headline\",\n    \"currentCompany\": \"HubSpot\",\n    \"memorialized\": null,\n    \"memorializedSource\": null,\n    \"companyState\": \"public\",\n    \"about\": \"Career startup guy.\\nAuthor of the book \\\"Inbound Marketing\\\"…\",\n    \"followerCount\": 1196331,\n    \"connectionsCount\": 4294,\n    \"location\": {\n      \"linkedinText\": \"Boston, Massachusetts, United States\",\n      \"countryCode\": \"US\",\n      \"parsed\": {\n        \"text\": \"Boston, Massachusetts, United States\",\n        \"countryCode\": \"US\",\n        \"regionCode\": null,\n        \"country\": \"United States\",\n        \"countryFull\": \"United States\",\n        \"state\": \"Massachusetts\",\n        \"city\": \"Boston\"\n      }\n    },\n    \"experience\": [\n      {\n        \"position\": null,\n        \"location\": \"Cambridge, Massachusetts, United States\",\n        \"companyName\": \"HubSpot\",\n        \"companyLinkedinUrl\": \"https://www.linkedin.com/company/hubspot/\",\n        \"companyUniversalName\": \"hubspot\",\n        \"duration\": null,\n        \"description\": null,\n        \"experienceGroupId\": null,\n        \"startDate\": null,\n        \"endDate\": null,\n        \"companyLogo\": {\n          \"url\": \"https://media.licdn.com/dms/image/v2/C4D0BAQF8H-SLmMDZlA/company-logo_100_100/company-logo_100_100/0/1646683330132/hubspot_logo?e=2147483647&v=beta&t=zOUMsb7QoojA0ShTvsA-3sskbL8v_dZwDLfddJuEMDU\",\n          \"sizes\": [\n            {\n              \"url\": \"https://media.licdn.com/dms/image/v2/C4D0BAQF8H-SLmMDZlA/company-logo_100_100/company-logo_100_100/0/1646683330132/hubspot_logo?e=2147483647&v=beta&t=zOUMsb7QoojA0ShTvsA-3sskbL8v_dZwDLfddJuEMDU\",\n              \"width\": 100,\n              \"height\": 100\n            }\n          ]\n        },\n        \"domain\": null,\n        \"companyIndustry\": \"Software Development\",\n        \"companySize\": \"5,001-10,000 employees\",\n        \"companyHeadquarters\": \"Cambridge, Massachusetts\",\n        \"isCurrent\": null,\n        \"companyLinkedInId\": \"68529\"\n      }\n    ],\n    \"experienceAvailability\": {\n      \"returnedPositions\": 1,\n      \"positionsWithTitle\": 0,\n      \"positionsWithDerivedTitle\": 0,\n      \"positionsWithStartDate\": 0,\n      \"positionsWithEndDate\": 0,\n      \"positionsWithDescription\": 0\n    },\n    \"experienceState\": \"restricted\",\n    \"education\": [\n      {\n        \"schoolName\": \"Massachusetts Institute of Technology\",\n        \"schoolLinkedinUrl\": \"https://www.linkedin.com/school/mit/\",\n        \"schoolSlug\": \"mit\",\n        \"schoolId\": \"1503\",\n        \"degree\": null,\n        \"fieldOfStudy\": null,\n        \"startDate\": {\n          \"year\": 2004,\n          \"text\": \"2004\"\n        },\n        \"endDate\": {\n          \"year\": 2006,\n          \"text\": \"2006\"\n        },\n        \"period\": \"2004 - 2006\",\n        \"description\": null,\n        \"insights\": null,\n        \"schoolLogo\": {\n          \"url\": \"https://media.licdn.com/dms/image/v2/D560BAQH-UXRfIDIKug/company-logo_100_100/company-logo_100_100/0/1689799729035/mit_logo?e=2147483647&v=beta&t=2BcyEkKb9m86JDvxtNLfDVfyept76unhOFNf5Wt_Vp4\",\n          \"sizes\": [\n            {\n              \"url\": \"https://media.licdn.com/dms/image/v2/D560BAQH-UXRfIDIKug/company-logo_100_100/company-logo_100_100/0/1689799729035/mit_logo?e=2147483647&v=beta&t=2BcyEkKb9m86JDvxtNLfDVfyept76unhOFNf5Wt_Vp4\",\n              \"width\": 100,\n              \"height\": 100\n            }\n          ]\n        },\n        \"schoolLinkedInId\": \"1503\"\n      }\n    ],\n    \"skills\": [],\n    \"languages\": [\n      {\n        \"name\": \"English\",\n        \"proficiency\": \"Native or bilingual proficiency\"\n      },\n      {\n        \"name\": \"Gujarati\",\n        \"proficiency\": \"Native or bilingual proficiency\"\n      }\n    ],\n    \"honorsAndAwards\": [],\n    \"certifications\": [\n      {\n        \"title\": \"Inbound Certification\",\n        \"issuedAt\": \"Issued Dec 2014 · Expires Jan 2016\",\n        \"link\": \"http://academy.hubspot.com/certification\",\n        \"issuedBy\": \"HubSpot\",\n        \"issuedByLink\": \"https://www.linkedin.com/company/hubspot\",\n        \"issuedByLogo\": {\n          \"url\": \"https://media.licdn.com/dms/image/v2/C4D0BAQF8H-SLmMDZlA/company-logo_100_100/company-logo_100_100/0/1646683330132/hubspot_logo?e=2147483647&v=beta&t=zOUMsb7QoojA0ShTvsA-3sskbL8v_dZwDLfddJuEMDU\",\n          \"sizes\": [\n            {\n              \"url\": \"https://media.licdn.com/dms/image/v2/C4D0BAQF8H-SLmMDZlA/company-logo_100_100/company-logo_100_100/0/1646683330132/hubspot_logo?e=2147483647&v=beta&t=zOUMsb7QoojA0ShTvsA-3sskbL8v_dZwDLfddJuEMDU\",\n              \"width\": 100,\n              \"height\": 100\n            }\n          ]\n        },\n        \"issuedOn\": \"Dec 2014\",\n        \"expiresOn\": \"Jan 2016\"\n      }\n    ],\n    \"courses\": [],\n    \"volunteering\": [],\n    \"organizations\": [],\n    \"publications\": [\n      {\n        \"title\": \"Inbound Marketing\",\n        \"publishedAt\": \"United States · Oct 19, 2009\",\n        \"description\": \"How To Get Found Using Google, Social Media and Blogs.\",\n        \"link\": \"http://www.amazon.com/Inbound-Marketing-Found-Google-Social/dp/0470499311/ref=sr_1_1?s=books&ie=UTF8&qid=1399245534&sr=1-1&keywords=inbound+marketing\",\n        \"publisher\": \"United States\",\n        \"publishedOn\": \"Oct 19, 2009\",\n        \"contributors\": [\n          {\n            \"linkedinUrl\": \"https://www.linkedin.com/in/brianhalligan\",\n            \"name\": \"Brian Halligan\"\n          }\n        ]\n      }\n    ],\n    \"projects\": [\n      {\n        \"title\": \"simple.ai\",\n        \"duration\": \"Nov 2024\",\n        \"startDate\": {\n          \"month\": \"Nov\",\n          \"year\": 2024,\n          \"text\": \"Nov 2024\"\n        },\n        \"endDate\": null,\n        \"description\": \"The AI newsletter that makes the complicated world of AI more simple.\"\n      },\n      {\n        \"title\": \"agent.ai\",\n        \"duration\": \"Apr 2024\",\n        \"startDate\": {\n          \"month\": \"Apr\",\n          \"year\": 2024,\n          \"text\": \"Apr 2024\"\n        },\n        \"endDate\": null,\n        \"description\": \"Agent.ai is the professional network for AI agents.\\n\\nDiscover, build and engage AI agents. Almost 2 million (human) users and 1,500+ agents.\"\n      }\n    ],\n    \"recommendations\": [\n      {\n        \"givenBy\": \"Mark Evans\",\n        \"givenByLink\": \"https://www.linkedin.com/in/markev\",\n        \"description\": \"Dharmesh did a workshop at the recent meshmarketing conference in Toronto. His presentation was engaging, insightful, informative and entertaining - a perfect combination that really resonated with the audience. If you're looking for a public speaker, I would enthusiastically recommend Dharmesh.\",\n        \"givenByPicture\": {\n          \"url\": null,\n          \"sizes\": []\n        }\n      },\n      {\n        \"givenBy\": \"Rand Fishkin\",\n        \"givenByLink\": \"https://www.linkedin.com/in/randfishkin\",\n        \"description\": \"Dharmesh's eloquence and charisma on stage is matched only by his command of the topics and audience empathy. When surveyed, our 220+ attendees overwhelmingly gave Dharmesh's presentation the highest score available. Many said it was their favorite session of the event. I'll be working very hard to make sure he's at any future seminars we hold.\",\n        \"givenByPicture\": {\n          \"url\": null,\n          \"sizes\": []\n        }\n      }\n    ],\n    \"recommendersCount\": 7,\n    \"influencer\": true,\n    \"topVoice\": true,\n    \"creator\": true,\n    \"websites\": [\n      {\n        \"url\": \"http://onstartups.com\",\n        \"label\": \"Other\"\n      },\n      {\n        \"url\": \"http://www.HubSpot.com\",\n        \"label\": \"Other\"\n      },\n      {\n        \"url\": \"http://www.dharmesh.com\",\n        \"label\": \"Other\"\n      }\n    ],\n    \"website\": \"http://onstartups.com\",\n    \"photo\": \"https://media.licdn.com/dms/image/v2/C4E03AQGL2VlL9W53ww/profile-displayphoto-shrink_200_200/profile-displayphoto-shrink_200_200/0/1516232433623?e=2147483647&v=beta&t=CvnQXe1gWiyuoQ4t1NOCM7abfbcQZIEKpxV54CYNX84\",\n    \"photoState\": \"public\",\n    \"bannerImage\": \"https://media.licdn.com/dms/image/v2/C4E16AQHTt9ikcff1ug/profile-displaybackgroundimage-shrink_200_800/profile-displaybackgroundimage-shrink_200_800/0/1610553040149?e=2147483647&v=beta&t=_UWY0ydMXVZgHbRuuKEmAMkw7PfqzFN7FZjPXSnnihs\",\n    \"memberId\": \"658789\",\n    \"memberIdentifier\": \"658789\",\n    \"linkedInIdentifier\": \"urn:li:member:658789\",\n    \"linkedinUrl\": \"https://www.linkedin.com/in/dharmesh\",\n    \"publicIdentifier\": \"dharmesh\",\n    \"peopleAlsoViewed\": [\n      {\n        \"name\": \"Paul Ryan\",\n        \"publicIdentifier\": \"ptryan123\",\n        \"url\": \"https://www.linkedin.com/in/ptryan123\"\n      },\n      {\n        \"name\": \"Mitchell Hashimoto\",\n        \"publicIdentifier\": \"mitchellh\",\n        \"url\": \"https://www.linkedin.com/in/mitchellh\"\n      },\n      {\n        \"name\": \"Matthew LeRay\",\n        \"publicIdentifier\": \"matthewleray\",\n        \"url\": \"https://www.linkedin.com/in/matthewleray\"\n      },\n      {\n        \"name\": \"Elias Torres\",\n        \"publicIdentifier\": \"eliast\",\n        \"url\": \"https://www.linkedin.com/in/eliast\"\n      },\n      {\n        \"name\": \"Anatoly Volkhover\",\n        \"publicIdentifier\": \"anatolyvolkhover\",\n        \"url\": \"https://www.linkedin.com/in/anatolyvolkhover\"\n      },\n      {\n        \"name\": \"Joey Burzynski\",\n        \"publicIdentifier\": \"miamibeachseo\",\n        \"url\": \"https://www.linkedin.com/in/miamibeachseo\"\n      },\n      {\n        \"name\": \"Bo Weaver\",\n        \"publicIdentifier\": \"boweaver\",\n        \"url\": \"https://www.linkedin.com/in/boweaver\"\n      },\n      {\n        \"name\": \"Carlos Arteaga\",\n        \"publicIdentifier\": \"carlosarteagabarrueto\",\n        \"url\": \"https://www.linkedin.com/in/carlosarteagabarrueto\"\n      },\n      {\n        \"name\": \"Rishi Singh\",\n        \"publicIdentifier\": \"rishi-singh-harness\",\n        \"url\": \"https://www.linkedin.com/in/rishi-singh-harness\"\n      },\n      {\n        \"name\": \"Yony F.\",\n        \"publicIdentifier\": \"yony-f-12730a8\",\n        \"url\": \"https://www.linkedin.com/in/yony-f-12730a8\"\n      },\n      {\n        \"name\": \"Nick Hughes\",\n        \"publicIdentifier\": \"jnickhughes\",\n        \"url\": \"https://www.linkedin.com/in/jnickhughes\"\n      },\n      {\n        \"name\": \"Dong Ouyang\",\n        \"publicIdentifier\": \"douyang\",\n        \"url\": \"https://www.linkedin.com/in/douyang\"\n      },\n      {\n        \"name\": \"Gregg Mojica\",\n        \"publicIdentifier\": \"greggmojica\",\n        \"url\": \"https://www.linkedin.com/in/greggmojica\"\n      },\n      {\n        \"name\": \"Ilya Pozin\",\n        \"publicIdentifier\": \"ipozin\",\n        \"url\": \"https://www.linkedin.com/in/ipozin\"\n      },\n      {\n        \"name\": \"Brennan Hatton\",\n        \"publicIdentifier\": \"brennanhatton\",\n        \"url\": \"https://www.linkedin.com/in/brennanhatton\"\n      },\n      {\n        \"name\": \"Anand Chandrasekaran\",\n        \"publicIdentifier\": \"anandchandrasekaran\",\n        \"url\": \"https://www.linkedin.com/in/anandchandrasekaran\"\n      },\n      {\n        \"name\": \"Vikram Kapoor\",\n        \"publicIdentifier\": \"vikram-kapoor-752543\",\n        \"url\": \"https://www.linkedin.com/in/vikram-kapoor-752543\"\n      },\n      {\n        \"name\": \"Erik Rannala\",\n        \"publicIdentifier\": \"erikr\",\n        \"url\": \"https://www.linkedin.com/in/erikr\"\n      },\n      {\n        \"name\": \"Marc Fleischmann\",\n        \"publicIdentifier\": \"marcf\",\n        \"url\": \"https://www.linkedin.com/in/marcf\"\n      },\n      {\n        \"name\": \"Stephen Blum\",\n        \"publicIdentifier\": \"stephenlb\",\n        \"url\": \"https://www.linkedin.com/in/stephenlb\"\n      }\n    ],\n    \"currentCompanyDomain\": null,\n    \"currentCompanyIndustry\": \"Software Development\",\n    \"currentCompanySize\": \"5,001-10,000 employees\",\n    \"currentCompanyHeadquarters\": \"Cambridge, Massachusetts\",\n    \"city\": \"Boston\",\n    \"state\": \"Massachusetts\",\n    \"country\": \"United States\",\n    \"countryCode\": \"US\",\n    \"coverPhoto\": \"https://media.licdn.com/dms/image/v2/C4E16AQHTt9ikcff1ug/profile-displaybackgroundimage-shrink_200_800/profile-displaybackgroundimage-shrink_200_800/0/1610553040149?e=2147483647&v=beta&t=_UWY0ydMXVZgHbRuuKEmAMkw7PfqzFN7FZjPXSnnihs\",\n    \"followers\": 1196331,\n    \"connections\": 4294,\n    \"headlineSource\": \"badge\",\n    \"currentCompanyId\": \"68529\",\n    \"currentSchoolId\": \"1503\",\n    \"company\": null\n  },\n  \"response\": {\n    \"type\": \"linkedin-profile\",\n    \"url\": \"https://www.linkedin.com/in/dharmesh\",\n    \"tookMs\": 1064,\n    \"accessible\": true,\n    \"profileState\": \"accessible\",\n    \"creditsUsed\": 1\n  }\n}\n```\n\n## How it works\n\nProvide LinkedIn profile URLs or public identifiers, such as `dharmesh`. The Actor retrieves the available public data and searches for work emails when selected. Duplicate URLs are fetched once and matched back to every original CSV row.\n\nComplete profile JSON appears as profiles finish. Contact exports keep your original row order and are ready when the run completes.\n\n## How to get started\n\n1. Choose **Profile details** or **Profile details + email search**.\n2. Replace the example with your LinkedIn URLs or public identifiers. Use **Bulk edit** for a list, or clear the profiles and **Upload a CSV**.\n3. Click **Start**, then open **Contacts CSV** or **Complete profile JSON** to get your results.\n\nFor CSVs, include a `LinkedIn URL` or `Public Identifier` column. Common variations are detected automatically. Use UTF-8 CSV, up to 1,000,000 contacts and 256 MB. **Maximum profiles** lets you try a smaller batch. For inputs over 100 rows, allow at least one unique profile lookup for every ten rows within your profile and spending limits. Use a smaller file for a small test.\n\nSave your settings as a task for repeat runs. Open **API** for integration examples.\n\n## Pricing\n\nPrices include platform usage. The email option includes profile details.\n\n| Option | Per 1,000 profiles |\n| --- | --- |\n| Profile details | $4 |\n| Profile details + email search | $10 total |\n\nUnavailable profiles are not charged. Skipped or unconfirmed email searches use the profile-only rate. Free Apify plans can process up to 10 input rows per run.\n\n## Questions and help\n\n### Will every profile have an email?\n\nNo. Check `emailStatus`, `emailMatch` and `emailConfidence`. `deliverable` means the mailbox accepted mail under Mart's strict non-catch-all check. `emailMatch=inferred` means the address was generated from the person's name and current employer; it does not independently prove ownership. Confidence measures deliverability only.\n\n### What happens when data is missing?\n\nFields stay empty. Unavailable profiles remain in the contact export with a `mart_profileState`; the run summary accounts for them.\n\n### Where can I get help?\n\nEmail [support@mart.dev](mailto:support@mart.dev) and include your run ID.\n\n---\n\nDisclaimer: This tool has no affiliation with LinkedIn Corporation and receives no sponsorship or endorsement from it. LinkedIn Corporation owns the registered LinkedIn® trademark. Other trademarks belong to their respective owners.\n",
      "input": {
        "title": "LinkedIn Profile Scraper",
        "description": "Choose what to extract, add LinkedIn profiles, and start. Prices include platform usage.",
        "type": "object",
        "schemaVersion": 1,
        "properties": {
          "profileMode": {
            "title": "What to extract (choose a mode)",
            "type": "string",
            "editor": "select",
            "enum": [
              "profiles",
              "profiles-with-email"
            ],
            "enumTitles": [
              "Profile details ($4 / 1,000)",
              "Profile details + email search ($10 / 1,000)"
            ],
            "prefill": "profiles",
            "description": "Both options return the same available profile data. The second also searches for work emails at $10 total per 1,000 profiles with email search. An email is not guaranteed."
          },
          "profileUrls": {
            "title": "LinkedIn URLs or public identifiers",
            "type": "array",
            "editor": "stringList",
            "items": {
              "type": "string"
            },
            "maxItems": 1000000,
            "placeholderValue": "https://www.linkedin.com/in/dharmesh",
            "description": "Paste LinkedIn profile URLs or public identifiers such as dharmesh. Localized URLs are accepted. Use Bulk edit for a list, or clear this list to upload a CSV. Up to 1,000,000 entries. Very repetitive lists are rejected before enrichment.",
            "prefill": [
              "https://www.linkedin.com/in/dharmesh",
              "https://www.linkedin.com/in/carmengerea"
            ]
          },
          "csvFile": {
            "title": "Upload CSV",
            "type": "string",
            "editor": "fileupload",
            "description": "Upload one UTF-8 CSV file, up to 1,000,000 contacts / 256 MB. LinkedIn URL or public identifier columns are detected automatically. Leave the profile list and Paste CSV empty. For inputs over 100 rows, allow at least one unique lookup for every ten rows within your profile and spending limits.",
            "sectionCaption": "Upload a CSV",
            "sectionDescription": "Optional. Import a contact list and keep your original columns. A LinkedIn URL column is detected automatically."
          },
          "csvText": {
            "title": "Or paste CSV",
            "type": "string",
            "editor": "textarea",
            "maxLength": 10000000,
            "description": "Paste CSV text including the header row. Use this or Upload CSV, leaving the profile list empty."
          },
          "maxProfiles": {
            "title": "Maximum profiles",
            "type": "integer",
            "default": 1000000,
            "minimum": 1,
            "maximum": 1000000,
            "description": "Up to 1,000,000 unique profiles per run. Your spending limit may stop it sooner. For a small test, use a small input: exports retain every original row, so inputs over 100 rows must fit within ten rows per unique lookup covered by these limits.",
            "sectionCaption": "Advanced",
            "sectionDescription": "Optional. Lower the limit to try a smaller batch."
          },
          "includeEmail": {
            "title": "Find work emails",
            "type": "boolean",
            "description": "Also look for a work email. Results include status and confidence; an email is not guaranteed.",
            "editor": "hidden"
          },
          "refreshContacts": {
            "title": "Compare with existing role and employer",
            "type": "boolean",
            "description": "Use a CSV with your current role and company columns. Flag possible changes and keep previous values when public data is missing. Common headers such as Job Title and Company are detected automatically.",
            "editor": "hidden"
          },
          "linkedinColumn": {
            "title": "LinkedIn column override",
            "type": "string",
            "editor": "hidden",
            "maxLength": 100,
            "description": "Exact CSV header containing profile URLs. Leave empty for automatic detection."
          },
          "previousTitleColumn": {
            "title": "Role column override",
            "type": "string",
            "editor": "hidden",
            "maxLength": 100,
            "description": "Exact CSV header containing existing job titles. Only needed for contact refresh if automatic detection cannot choose a column."
          },
          "previousCompanyColumn": {
            "title": "Employer column override",
            "type": "string",
            "editor": "hidden",
            "maxLength": 100,
            "description": "Exact CSV header containing existing company names. Only needed for contact refresh if automatic detection cannot choose a column."
          },
          "inputSource": {
            "title": "Legacy input source",
            "type": "string",
            "editor": "hidden",
            "description": "Optional compatibility field. Source is detected automatically when omitted."
          },
          "workflow": {
            "title": "Legacy workflow",
            "type": "string",
            "editor": "hidden",
            "description": "Optional compatibility field. Use refreshContacts for new integrations."
          }
        },
        "required": [],
        "additionalProperties": false
      },
      "storages": {
        "datasets": {
          "default": {
            "actorSpecification": 1,
            "fields": {},
            "views": {
              "contacts": {
                "title": "Contacts",
                "transformation": {
                  "fields": [
                    "name",
                    "currentTitle",
                    "currentCompany",
                    "location",
                    "headline",
                    "linkedinUrl",
                    "titleSource",
                    "workEmail",
                    "emailStatus",
                    "emailMatch",
                    "emailConfidence",
                    "companyDomain"
                  ]
                },
                "display": {
                  "component": "table",
                  "properties": {
                    "name": {
                      "label": "Name",
                      "format": "text"
                    },
                    "currentTitle": {
                      "label": "Current role",
                      "format": "text"
                    },
                    "currentCompany": {
                      "label": "Company",
                      "format": "text"
                    },
                    "location": {
                      "label": "Location",
                      "format": "text"
                    },
                    "headline": {
                      "label": "Headline",
                      "format": "text"
                    },
                    "linkedinUrl": {
                      "label": "LinkedIn URL",
                      "format": "link"
                    },
                    "titleSource": {
                      "label": "Title source",
                      "format": "text"
                    },
                    "workEmail": {
                      "label": "Work email",
                      "format": "text"
                    },
                    "emailStatus": {
                      "label": "Email status",
                      "format": "text"
                    },
                    "emailMatch": {
                      "label": "Email match",
                      "format": "text"
                    },
                    "emailConfidence": {
                      "label": "Deliverability confidence",
                      "format": "number"
                    },
                    "companyDomain": {
                      "label": "Employer domain",
                      "format": "text"
                    }
                  }
                }
              }
            }
          },
          "contacts": {
            "actorSpecification": 1,
            "fields": {},
            "views": {
              "contacts": {
                "title": "Contacts",
                "transformation": {
                  "fields": [
                    "mart_sourceRow",
                    "mart_name",
                    "mart_currentTitle",
                    "mart_currentCompany",
                    "mart_workEmail",
                    "mart_emailStatus",
                    "mart_emailMatch",
                    "mart_profileState",
                    "mart_linkedinUrl"
                  ]
                },
                "display": {
                  "component": "table",
                  "properties": {
                    "mart_sourceRow": {
                      "label": "Source row",
                      "format": "text"
                    },
                    "mart_name": {
                      "label": "Name",
                      "format": "text"
                    },
                    "mart_currentTitle": {
                      "label": "Role",
                      "format": "text"
                    },
                    "mart_currentCompany": {
                      "label": "Company",
                      "format": "text"
                    },
                    "mart_workEmail": {
                      "label": "Work email",
                      "format": "text"
                    },
                    "mart_emailStatus": {
                      "label": "Email status",
                      "format": "text"
                    },
                    "mart_emailMatch": {
                      "label": "Email match",
                      "format": "text"
                    },
                    "mart_profileState": {
                      "label": "Status",
                      "format": "text"
                    },
                    "mart_linkedinUrl": {
                      "label": "LinkedIn URL",
                      "format": "text"
                    }
                  }
                }
              }
            }
          },
          "contactsCsv": {
            "actorSpecification": 1,
            "fields": {},
            "views": {
              "contacts": {
                "title": "Contacts",
                "transformation": {
                  "fields": [
                    "mart_sourceRow",
                    "mart_name",
                    "mart_currentTitle",
                    "mart_currentCompany",
                    "mart_workEmail",
                    "mart_emailStatus",
                    "mart_emailMatch",
                    "mart_profileState",
                    "mart_linkedinUrl"
                  ]
                },
                "display": {
                  "component": "table",
                  "properties": {
                    "mart_sourceRow": {
                      "label": "Source row",
                      "format": "text"
                    },
                    "mart_name": {
                      "label": "Name",
                      "format": "text"
                    },
                    "mart_currentTitle": {
                      "label": "Role",
                      "format": "text"
                    },
                    "mart_currentCompany": {
                      "label": "Company",
                      "format": "text"
                    },
                    "mart_workEmail": {
                      "label": "Work email",
                      "format": "text"
                    },
                    "mart_emailStatus": {
                      "label": "Email status",
                      "format": "text"
                    },
                    "mart_emailMatch": {
                      "label": "Email match",
                      "format": "text"
                    },
                    "mart_profileState": {
                      "label": "Status",
                      "format": "text"
                    },
                    "mart_linkedinUrl": {
                      "label": "LinkedIn URL",
                      "format": "text"
                    }
                  }
                }
              }
            }
          }
        }
      },
      "output": {
        "actorOutputSchemaVersion": 1,
        "title": "Profile results and run summary",
        "properties": {
          "contacts": {
            "type": "string",
            "title": "Contacts CSV",
            "description": "Original CSV rows and CRM IDs with enriched contact columns. Includes unavailable and unprocessed rows, and comparison columns for refresh runs.",
            "template": "{{storages.datasets.contactsCsv.apiUrl}}/items?format=csv&bom=true"
          },
          "profiles": {
            "type": "string",
            "title": "Complete profile JSON",
            "description": "Every delivered row with all nested profile fields and response metadata.",
            "template": "{{links.apiDefaultDatasetUrl}}/items?format=json"
          },
          "summary": {
            "type": "string",
            "title": "Run summary",
            "description": "Counts, duplicates, exclusions, unavailable totals and spending-limit stops. Individual statuses are in the contact exports.",
            "template": "{{links.apiDefaultKeyValueStoreUrl}}/records/SUMMARY"
          },
          "contactJson": {
            "type": "string",
            "title": "Contact review JSON",
            "template": "{{storages.datasets.contacts.apiUrl}}/items?format=json",
            "description": "Lossless original contact values and enrichment or refresh comparison fields."
          }
        }
      }
    },
    "buildNumber": "0.2.22",
    "actVersion": {
      "sourceType": "SOURCE_FILES",
      "buildTag": "latest",
      "versionNumber": "0.2"
    },
    "usage": {
      "ACTOR_COMPUTE_UNITS": 0.006063333333333333
    }
  }
}