Back to guides
/Linked API

B2B Buying Signals: The LinkedIn Ones and How to Track Them

Most buying-signal advice starts with an intent-data contract. A good share of the signals worth acting on are already visible from your own LinkedIn account – if you know where to look and collect them consistently.

The short version. A buying signal is behaviour that suggests an account may be moving toward a purchase – visiting your pricing page, hiring for the role your product serves, engaging with your content, or asking a direct question about pricing or timing. Some come from vendor intent data; others you can observe on LinkedIn: who viewed your profile, who engaged with your posts or a competitor's, who is posting about the problem you solve, who is hiring for the role you sell to, and who just accepted your invitation or replied. You can collect those from your own account on a schedule, without an intent-data contract. Treat every one as a reason to look closer, not as proof someone is ready to buy.

What counts as a B2B buying signal

A buying signal is any observable behaviour that makes a purchase more likely than it was before. It falls into three kinds:

  • Direct engagement with you – visits to your profile, reactions and comments on your posts, replies, accepted invitations, and the strongest of all: a direct request for a demo, pricing or timing.
  • Public business and context observations – engagement on a competitor's post, public posts about the problem you solve, hiring for a role, a job change.
  • Vendor intent datasets – topic research and website visits that intent-data vendors aggregate and sell.

LinkedIn's own marketing blog draws the line between first-party intent data you gather yourself and data bought from others. This guide covers the first two kinds together – the LinkedIn signals your account can observe.

No single signal proves intent. A profile view can be curiosity, a like can be politeness, and a hiring post can be a backfill. Signals earn attention in combination and in context – which is why the rest of this guide pairs every signal with a strength and a route.

Here is one morning's pass over those signals, run by an AI agent on your own LinkedIn account through Linked API:

Your Agent
runs on your own LinkedIn account
Check my LinkedIn for buying signals: profile viewers since yesterday, reactions and comments on my last three posts (links below), and this week's posts that mention "pipeline forecasting". Keep people whose headline fits heads of sales, sales ops or RevOps. Route each one – follow-up if they asked about pricing or timing, review queue if they fit and engaged with something relevant, log a single weak signal, suppress the rest. Send nothing.
Agentvia MCP Server
Used Linked API: retrieve_profile_viewers, fetch_post, search_posts
  • viewers seen since yesterday – 4 identified, 2 semi-private
  • reactions and comments on each – 38 people
  • "pipeline forecasting", past week, up to 30 – each post's text and date checked: 11 about the problem, 19 off-topic
  • one viewer also commented – 52 people in all, each checked for role fit on the headline

52 people across the three sources, plus 2 semi-private viewers. Routed: 1 follow-up, 5 to the review queue, 9 logged, 37 suppressed for no role fit. The 2 semi-private viewers are logged as account-level observations, and the 19 off-topic posts are dropped. Nothing has been sent. The top rows:

PersonSignalFit and evidenceRoute
Jenna P.Commented on your forecast-review post: "What would this cost for a 12-person team?"Head of Sales Operations – fits; a direct pricing questionFollow-up – answer the question
Omar H.Viewed your profile and commented on your forecasting postRevOps Lead – fits; the comment is about the problemReview queue – a view plus a relevant comment
Claire D.Posted this week: "our pipeline forecast missed again this quarter"VP Sales – fits; the post describes the problemReview queue
Tom W.Reacted to your hiring postHead of Sales – fits, but the post is unrelatedLog only
Semi-private viewer"Someone in Sales at a software company in Berlin"No person identifiedLog as an account-level observation

nothing goes out – a person works the follow-up and the review queue

Works withClaudeCodexChatGPTCursorOpenClaw
Example run, fictional people. Reactions carry no time, so the first run sees every reaction already on your posts. A profile view alone stays in the log; it reaches the queue only with a relevant engagement from the same person. Works in Claude, ChatGPT, Cursor or Claude Code through the MCP server or the CLI.

The LinkedIn buying signals you can see yourself

The strength grades below are editorial heuristics, not validated purchase probabilities – a starting point to tune against what actually turns into conversations for you.

SignalWhat it may suggestStrength (heuristic)How to pull it with Linked API
Someone viewed your profileThey looked you up after a post, comment or invitationWeak alone; medium with ICP fit plus recent engagementretrieveProfileViewers – identified viewers with name and profile. Semi-private viewers come back only as LinkedIn's description plus a search link, never a name; full-private viewers are not returned
Someone reacted to your postThe topic landedWeak; medium with ICP fit when the post is about the problemfetchPost with reactions (st.retrievePostReactions in the workflow API) – the response has no reaction time, so "first seen" is when your run noticed it
Someone commented on your postActive interest in the topicMedium; strong if they ask a problem, pricing or timing questionfetchPost with comments (st.retrievePostComments), with LinkedIn's relative time such as 3d
Someone engaged with a competitor's postInterest in the categoryWeak; medium with ICP fit and a category-relevant postThe same reactions and comments, on the competitor's post
Someone posted about the problem you solveThey are thinking about it in publicMedium when the author fits your ICP and the post describes the problemsearchPosts on a keyword – results can be loosely related, and each call is bounded (up to 100 posts)
A target account is hiring for the role you sell toBudget and a team forming around the problemMedium; weak outside your target accountssearchJobs filtered by company
Someone accepted your invitationRegular messaging is now openNot a buying signal on its ownNetwork monitoring – connectionAccepted events, polled or by webhook
Someone repliedA conversation startedStrong if it is a positive question about the problem, pricing or timing; a negative reply means suppressInbox monitoring – inbox.messageReceived events
A champion changed jobsSomeone who knows your product lands somewhere newMedium to strong when the new company fits your ICPNo native event: re-fetch saved profiles on a schedule and compare company and title

A few boundaries worth knowing before you build on these:

How to identify buying signals that matter

Collecting everything produces noise. A short routine keeps it useful:

  1. Define the accounts and roles you sell to. Without an ICP check, every signal looks equally interesting.
  2. Pick the three or four signals that fit your motion, not all nine. A founder who posts weekly gets most from post engagement; a team selling to a named account list gets most from hiring and job changes.
  3. Watch them on a schedule – daily is enough for most of them.
  4. Score combinations above single events. A viewer from a target account who also engaged with a post beats either alone.
  5. Review weekly what turned into conversations, and adjust which signals you keep.

Then route each observation with one small rule set:

ConditionRoute
ICP and role fit and relevant content and recentResearch and review queue – a person checks before any outreach
A direct positive question about the problem, pricing or timingFollow-up task – reply, offer a call
Negative reply, no fit, or unrelated contentSuppress
A single weak signal with no fit check yetLog only

How to respond to a buying signal

  • Lead with relevance, not surveillance. Refer to the shared context – the post, the topic, the role – and never open with "I saw you viewed my profile".
  • Answer direct questions directly. A comment asking about pricing or timing deserves a reply in the thread or a short message, not a sequence.
  • Pick the right channel. Check the connection degree to choose between an invitation and a message.
  • Keep the pace human. Stay inside LinkedIn's practical limits; more on first-touch tactics in cold outreach strategies.

Collecting LinkedIn signals automatically

The run near the top of this page is one pass of a daily routine: new profile viewers, engagement on your last three posts and recent posts on a keyword, each routed with the table above. Log every observation in the same shape, so a person can work the queue:

  • who – name, profile URL and URN when known, or LinkedIn's description when that is all it shows;
  • signal type and source – the post, the search term, the profile-viewers list;
  • observed at – when the run first saw it, not when it happened;
  • evidence – the comment text, the post excerpt, the viewer's relative time, and a comment's age as LinkedIn shows it;
  • rule and action – which routing condition matched and what to do next.

What the routing can check, and what it leaves to you. It applies the table above as far as the data allows:

  • Role fit – a pattern on the person's headline.
  • Relevance – the problem terms in the post, or in the comment itself.
  • Recency – keyword posts come from the past week; a comment older than a month goes to the log.
  • Negative responses are suppressed before anything else.
  • A profile view reaches the review queue only when the same person also has a qualifying engagement in the same run.

What it cannot check is left to the person working the queue: when a reaction happened (LinkedIn gives no time), whether a question is actually positive, and whether a headline match really is someone you sell to. That is why the strongest route is a review queue, not an automatic message.

Running it every day:

  • A failed pull is missing data, not an empty source. If the viewer pull fails, cover the same window on the next run; a failed reactions or comments pull would otherwise look like no engagement.
  • Reach a little further back than the last run. Viewer times are estimates from LinkedIn's relative ages, so overlap the window and drop what you have already seen.
  • Deduplicate identified viewers by URN, falling back to the profile URL. Semi-private rows carry no identity – treat them as account-level observations, not counts.
  • Reactions have no time. The first run logs every reaction already on your posts; after that, only new ones appear.
  • Keyword search is loose. Check each post's text for the problem terms before routing it.

The other signals plug into the same log:

  • Accepted invitations and replies. Turn on network monitoring and inbox monitoring once per account, then poll for events or receive them by webhook – network.connectionAccepted and inbox.messageReceived. Deduplicate by the event id, since a retried delivery reuses it. Monitoring captures only changes after you enable it.
  • Job changes. There is no native job-change event. Save the people who championed you, re-fetch their profiles on a schedule – weekly is plenty – and compare the current company and title with what you stored. A change is an observation to confirm, not a fact to write back.
  • Hiring at target accounts. Search jobs with your target companies in the filter and a role term, and log postings you have not seen before.

An AI agent runs the routine on your account through the MCP server, the agent-friendly CLI or a ready-made skill, as in the run above; schedule it with whatever runs your agent each morning.

Developers can build the same daily job into their own tools: retrieveProfileViewers with since, fetchPost with reactions and comments for your recent posts, and searchPosts with a datePosted filter, each routed by a plain function over the headline and text. Every call is asynchronous – execute starts the work and returns a workflow ID, result waits for it – and failures come back in errors, so check them on every result before moving the window forward. Run it from cron or any scheduler; SDK setup: Node and Python SDKs; the same actions also run from the CLI.

What this does not cover

  • No third-party intent data – no "account X is researching your category" topic surges.
  • No website-visitor identification.
  • No personal emails or phone numbers.

If you need those, they come from intent-data and enrichment vendors; LinkedIn signals complement them rather than replace them. Everything here runs on your own account, in a dedicated cloud browser, at a human pace, within per-action limits you can configure.

Frequently Asked Questions (FAQ)

Behaviour that suggests an account may be moving toward a purchase – engaging with your content, hiring for the role your product serves, or asking a direct question about pricing or timing. Each one is a reason to look closer, not proof of intent.

Profile views, reactions and comments on your posts, engagement on a competitor's post, posts about the problem you solve, hiring for a relevant role, a champion changing jobs, accepted invitations, replies, and pricing-page visits or topic research from intent-data vendors.

A weak one on its own; it gets stronger combined with ICP fit and recent engagement. Semi-private viewers show only LinkedIn's description, so they can point to an account at most, never a person.

Yes, by re-fetching saved profiles on a schedule and comparing company and title. LinkedIn offers no job-change event to subscribe to.

No. The LinkedIn signals your account can observe work on their own; vendor intent data adds topic research and website visits that you cannot see on LinkedIn.

Wrapping up

The signals worth acting on are often already in your own account: who looked, who engaged, who is posting about the problem and who is hiring. Collect them on a schedule, route them with a few rules, and spend your time on the combinations.

Build it into your own tools with the REST API, the Node and Python SDKs or the CLI. Or have an AI agent run it out of the box through the MCP server, the agent-friendly CLI or a ready-made skill. Plans start at $49 a seat a month billed annually – see pricing.