Fetch Post Engagers
fetch_post_engagersVisibility follows the user's LinkedIn account: any post it can view works, and private or deleted posts return a plain error. The list is capped at 500 reactions + 500 comments per post; on a bigger post the return flags the cut-off. Data fetched within the last 6 hours is served from the database at no cost; a real fetch counts one action against the shared daily engagement-fetch budget and paces its LinkedIn requests, so a post with hundreds of engagers takes around half a minute — set that expectation with the user before calling this on a big post.
When this runs in an agent, every engager is materialized as a reviewable
agent_search_results row (entity_type='person', data carries headline,
reaction_value, comment_text, provider_id, source_post_url), rendered in the
agent's Output tab and queryable via query_search_results. Re-running updates
existing rows rather than duplicating them. Pass list_name to name their
list; absent, they land in the 'default' list. By default the full
unfiltered list materializes — to act on only a subset (ICP fit, founders
only, a specific role), qualify the stored rows first (headline triage via
query_linkedin_post_engagements) and queue outreach on just the keepers.
After this returns, filter and slice the full list with
query_linkedin_post_engagements using post_id = <post_analytics_id>,
then queue outreach with one batched setup_linkedin_sequence call
passing each person's provider_id. Send-time resolution skips anyone
already connected, so they don't need pre-filtering here.
On success, a dict
{'success': True, 'post_analytics_id': int, 'author_name': str,
'is_own_post': bool, 'post_text_snippet': str, 'from_cache': bool,
'reactions_stored': int, 'comments_stored': int,
'unique_engagers': int, 'truncated': bool,
'budget': {'used_today': int, 'limit': int},
'engagers_preview': [first 10 people], 'next_step': str,
'list'?: {'list_name', 'created', 'updated', 'total'}}.
On failure, {'success': False, 'error': str} when the post isn't visible to the
user's account, the daily budget is exhausted, or LinkedIn actions
are paused after a rate limit.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| persist | No | Default True — in an agent, every engager is saved as a person row automatically (see `list_name`). Pass False only for a read-only lookup the user doesn't want on a list: the raw engagement rows still land and stay queryable via `query_linkedin_post_engagements`, but no `agent_search_results` list is written. To filter the saved engagers, record a `verdict` on them with `record_search_results` instead. | |
| agent_id | No | Optional — a specific agent to materialize the engager list into. Omit it to use the running agent, which is the usual case. | |
| post_url | Yes | LinkedIn post URL (activity, ugcPost, and share forms all work) or a raw activity ID. | |
| list_name | No | Short kebab slug naming the list bucket (e.g. 'launch-post-engagers'). Absent, engagers land in the 'default' list. |