Research a List of People in One Call
li_research_profilesEverything needed to judge and personalise a list of up to 500 people, merged into ONE compact row per person in your order: pipeline (every campaign they are already in on the accounts you can see, the same memberships li_check_targets reports: account, campaign, campaign status, connection and message status, outcome, hasInbound), profile (name, headline, role, company, location, timezone), company (their current employer from its LinkedIn company page: name, domain, industry, size) and posts (latest posts: url, postedAt, isRepost, reactable, a 160-character textPreview). Default include: pipeline, profile, company; posts are only read when asked for. COST: the same lookups as li_enrich_profiles and li_fetch_posts, from the same shared pool: 1 per profile bought (the employer comes free with it), 1 per person whose posts are read. FREE: a stored profile of ANY age for someone already in your pipeline, one under 30 days for anyone else, and posts read in the last 3 days; refresh=true buys everything again. Each row's profile.status says bought or reused, with fetchedAt, and credits totals what was charged. reactable: false marks a post the engage-before-invite step cannot use (li_ingest_prospects would refuse it as engagePostUrl). LONG LISTS: the call waits about 20 seconds; a run still going comes back as a jobId, read with li_job_result({ jobId, waitMs, offset }), 50 rows a page with nextOffset. A run cut off by a server restart reads interrupted: run it again, and what was already bought comes back free. pipeline.unreadable, and a status of failed or pending, mean NOT KNOWN, never "none". A URL that is not a profile (invalid_url) or is only a colleague's prospect (refused) is skipped and costs nothing. estimateOnly=true previews the charge for free. Opens no browser.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| include | No | Which sections to return: pipeline (free), profile, company (bought together: 1 lookup per person not stored), posts (1 more lookup per person not read recently). Default: pipeline, profile, company. | |
| refresh | No | Buy every profile and read every person's posts again, ignoring what is stored. Costs a lookup per person per paid section. | |
| sessionId | No | Account id from li_list_accounts. Needed (or sessionLabel) when you have more than one account; never guessed. | |
| profileUrls | Yes | LinkedIn profile URLs, up to 500. Duplicates (two spellings of one person) are researched once. Only these URLs reach the data provider. | |
| estimateOnly | No | Preview: how many profiles are stored (free), how many would be bought, how many posts would be read, and what that charges. Reads your pipeline, looks nothing up, charges nothing. | |
| sessionLabel | No | Account by label, LinkedIn name, profile slug or member id (li_list_accounts). Needed (or sessionId) when you have more than one account; never guessed. | |
| postsSinceDays | No | With posts: only posts from the last N days. Costs the same; a person with nothing that recent reads no_posts. Default: no age limit. |