Buying Signals API

Firmographics tell you whether an account fits. They never tell you whether this week is the week. That part is in what the account publishes and in who shows up in the replies.

A company posting about hiring, funding, a launch or a problem you solve is a timed signal. The people commenting underneath are a self-selected list of individuals who care about that topic right now, with names and roles attached.

requests served per month
40M+requests served per month
uptime
99.9%uptime
median response time
1smedian response time
serving production traffic since
2023serving production traffic since

Fit is not timing, and most pipelines only measure fit

A list filtered on industry and headcount is a list of accounts that could buy at some point. Working it top to bottom means most conversations happen at a moment when nothing is on fire, which is the hardest possible moment to sell into.

Intent data vendors answer this with aggregate scores built on anonymous browsing. You get "this account is showing interest" without knowing who, which post, or what they said, so the opener stays generic.

Public engagement is the opposite kind of signal: named, timestamped, and quotable. You know the person, their role, the exact thing they responded to and what they wrote about it.

How it works

  1. 01

    Watch the accounts that matter

    Poll the posts of your target accounts and the people in them. Content, type, publication date and engagement counts come back together.

    Posts

  2. 02

    Detect the trigger

    Match post content against your own triggers: hiring, funding, expansion, a migration, a complaint about a category you compete in. The date tells you how warm it still is.

    Posts

  3. 03

    Pull the audience

    Fetch the comments and reactions on the posts that matched. Every one carries the profile behind it, so this is a list of people rather than a count.

    Engagement

  4. 04

    Qualify and reach out

    Enrich those profiles, keep the ones that fit your ICP, and open with the thing they actually wrote. That is a message that could only have been sent to them.

    Profile enrichment

In code

From a trigger post to a qualified list

const TRIGGERS = /hiring|we're growing|series [ab]|migrating|now live/i

const { posts } = await fetch(
  `https://api.fetchin.io/api/v1/posts?url=${accountUrl}`,
  { headers: { 'X-API-Key': process.env.FETCHIN_KEY } }
).then(r => r.json())

for (const post of posts.filter(p => TRIGGERS.test(p.content))) {
  const { comments } = await fetch(
    `https://api.fetchin.io/api/v1/post/comments?url=${post.shareUrl}`,
    { headers: { 'X-API-Key': process.env.FETCHIN_KEY } }
  ).then(r => r.json())

  for (const comment of comments) {
    // The commenter is a named, timestamped, self-selected prospect.
    await queueForQualification({
      identifier: comment.profile.publicIdentifier,
      saidThis:   comment.text,
      onThis:     post.content.slice(0, 120),
      at:         comment.date,
    })
  }
}

What it changes

Outreach with a reason to exist

The opener references something the person wrote this month, which is the difference between a reply and an unsubscribe.

Named intent, not a score

You know who engaged, with what, and when, instead of an account-level number that nobody can act on precisely.

Competitor audiences

The people engaging with a competitor announcement are already in the market and already educated. They are the cheapest qualified audience there is.

A queue that reorders itself

Working the pipeline by most recent trigger rather than alphabetically puts the conversations where something is actually happening.

Endpoints this uses

Questions

What counts as a buying signal here?
Anything an account publishes that correlates with a purchase window, plus anyone who engages with it. Hiring announcements, funding, launches, expansion and public complaints about a category are the usual triggers. You define the patterns; the API supplies the posts and the people.
How is this different from intent data vendors?
Intent vendors infer interest from anonymous browsing and hand you an account-level score. This is public, named and quotable: a specific person, a specific post, a timestamp and the words they wrote. You can act on it precisely rather than guessing who inside the account to contact.
How often should I poll?
Daily is enough for most trigger types, since the useful window on a post is measured in days rather than hours. One call per account per day is one credit per account per day.
Can I get the people who reacted, not just commenters?
Yes. Reactions come back with the profile behind each one and the reaction type, so a post with far more reactions than comments still yields a list.

Other use cases

Build it this week

1,000 free credits, no card, and failed requests are never billed. Every example on this page runs against the live API.