Actions

Call the startScrape MCP tool

Start a LinkedIn scrape into a lead list. LAUNCH action on the user's real LinkedIn account. Six job types, chosen via "type" plus that type's own required field: omit "type" (or pass "sales_navigator"/"linkedin_search") with "url" set to a pasted search URL, same as before, letting the URL shape pick Sales Navigator vs standard search; or pass "type":"post_commenters" or "post_reactors" with "post_url" set to a post URL (the two cannot be told apart from the URL alone, so "type" is required for these); or "type":"company_engagement" with "entity_url" set to a company or profile URL, whose recent posts' reactors and commenters become leads (post_count, default 5, caps how many recent posts it walks); or "type":"content_search" with "search_url" set to a LinkedIn content-search URL (linkedin.com/search/results/content/...), whose matching posts' authors become leads. post_commenters/post_reactors/company_engagement/content_search need an existing lead_list_id (getLeadLists); they do not support new_list_name over MCP, call createLeadList first if a fresh list is wanted. sales_navigator/linkedin_search still take lead_list_id OR new_list_name. Two-step: the FIRST call returns a preview (account, what will be scraped, result cap, today's quota) plus a confirm_token and starts nothing; call again with confirm_token to run it. Sales Navigator searches need a Sales Navigator or Recruiter seat (check getLinkedInAccounts or getPlaybook("lead_gen") first); the other five types run on any connected seat. open_profile_mode filters on open-profile status (sales_navigator/linkedin_search only), but that status is only known once a lead has been visited or enriched (a campaign visit_profile step, or the InMail-activation list_enrichment job), it is NOT learned at scrape/search time, so open_only will typically keep few or none of the leads found by this scrape until they are later visited or enriched. There is no cancel once a scrape starts: it runs to completion and hourly/daily caps bound how much it can spend, so if a result turns out unwanted, delete the target list with deleteLeadList instead of trying to stop the run. sales_navigator/linkedin_search/company_engagement/content_search run in the background: poll getScrapeJob. post_commenters/post_reactors complete synchronously within this call and return their counts directly.

Called through the Actions bridge: the response is that tool's own result, wrapped as { data: <tool result> } under HTTP 200. Billing, daily-cap, and confirm-step outcomes are embedded INSIDE data, never remapped to an HTTP status (see the templated /api/v1/actions/{toolName} operation above for the full protocol, and x-mcp-actions for this tool's machine-readable scope/cap/confirm_behavior fields). Authentication, request-shape, and optional idempotency-protocol failures still use their documented non-200 statuses.

post/api/v1/actions/startScrape

Request

  • Base URL: https://app.reachium.io
  • URL: https://app.reachium.io/api/v1/actions/startScrape
  • Auth: HTTP bearer

Headers

Idempotency-Keystring

Optional caller-generated key (8-200 characters: letters, digits, dot, underscore, colon, or hyphen). A final tool result is replayed for the same key and body. An ambiguous result remains 409 under that key; reconcile external state before using a new key. Reuse with a different body returns 422.

Request body

type'sales_navigator' | 'linkedin_search' | 'post_commenters' | 'post_reactors' | 'company_engagement' | 'content_search'

Which scrape to run. Omit (or "sales_navigator"/"linkedin_search") for the original URL-shape-derived behavior with "url". REQUIRED to be exactly "post_commenters", "post_reactors", "company_engagement", or "content_search" to reach those four newer types.

urlstring uri

sales_navigator/linkedin_search only: the LinkedIn search URL copied from the browser after applying filters.

post_urlstring uri

post_commenters/post_reactors only: the LinkedIn post URL whose commenters or reactors become leads.

entity_urlstring uri

company_engagement only: a LinkedIn company (/company/...) or profile (/in/...) URL. Its recent posts' reactors and commenters become leads.

post_countinteger

company_engagement only: how many of the entity's most recent posts to walk (default 5, max 10). Posts with zero reactions and comments are skipped before counting toward this.

search_urlstring uri

content_search only: a LinkedIn content-search URL (linkedin.com/search/results/content/...). Authors of matching posts become leads.

account_idstring uuid required

LinkedIn account UUID from getLinkedInAccounts.

lead_list_idstring uuid

Existing lead list to scrape into (getLeadLists). For sales_navigator/linkedin_search, pass this OR new_list_name. For the other four types this is REQUIRED (no new-list creation over MCP for them).

new_list_namestring

sales_navigator/linkedin_search only: name for a new lead list, created when the scrape is confirmed. Not supported for post_commenters/post_reactors/company_engagement/content_search.

max_resultsinteger

Results to collect (default 100; capped at the account's daily scrape cap). A value below 1 is raised to 1, never refused.

open_profile_mode'all' | 'open_only'

sales_navigator/linkedin_search only: "all" (default) saves everyone found; "open_only" saves only leads already known to be open-profile from an earlier visit or enrichment. That status is never learned at scrape/search time, so open_only typically keeps few or none of this scrape's results: to build an open-profile list, use manageLeadList (split_by_open_profile) on a list whose leads have been visited or enriched. Splitting into two lists is a scraper-page-only feature, not available here.

confirm_tokenstring

From the preview response; resend with the same arguments to execute.

Response

The result of calling this tool.

dataunknown required
errorunknown required

Changes

No recorded changes to this operation across all 3 revisions of this API.