Back to blog
7 min read

Competitor Content Monitoring With a Posts API

By Kooperativa Engineering

Competitor Content Monitoring With a Posts API

Most competitor monitoring watches websites: a pricing page, a changelog, a blog. It tells you what a competitor decided to publish on its own domain. It says little about what the company is actually pushing to the market this week, and nothing about who is listening, and both of those show up first in the posts a company and its leaders publish.

This article builds a weekly digest from three sources: what each competitor posted, who engaged with it, and who they hired. Everything comes from one API and one key, and a run for five competitors costs about a cent.

What the digest contains

Four sections, each answering a question a sales or product lead asks on Monday morning.

SectionQuestionEndpoint
New postsWhat are they pushing this week?GET /v1/companies/posts
Leader postsWhat are their senior people saying?GET /v1/people/posts
AudienceWhich companies and roles engage?GET /v1/posts/reactions, GET /v1/companies/post-comments
People movesWho did they hire and who left?GET /v1/company/hiring-signals, GET /v1/company/past-employees

How to monitor competitor social media posts automatically

For each competitor, read the first page of company posts, which covers a normal week for most companies, and keep the posts you have not stored yet. For each new post, read the first page of reactions. Then read hiring signals for the last seven days. The seen set can be a table or a file, and the post identifier in each item is the key.

A weekly competitor digestjs
const BASE = 'https://kooperativa.io/api/v1';
const headers = { Authorization: `Bearer ${process.env.KOOPERATIVA_API_KEY}` };

const competitors = [
  { username: 'competitor-one', companyId: 11111 },
  { username: 'competitor-two', companyId: 22222 },
];

async function get(path, params) {
  const res = await fetch(`${BASE}${path}?${new URLSearchParams(params)}`, { headers });
  return res.ok ? res.json() : null; // a failed call is not billed, retry next week
}

const digest = [];
for (const { username, companyId } of competitors) {
  const posts = await get('/companies/posts', { username });
  const hires = await get('/company/hiring-signals', { company_id: companyId, days: 7 });

  const newPosts = (posts?.data ?? []).filter((p) => !seen.has(p.urn)); // seen: your stored set
  for (const post of newPosts) {
    post.reactions = await get('/posts/reactions', { urn: post.urn, page: 1 });
  }
  digest.push({ username, newPosts, hires });
}

// Hand the digest to a template, a Slack message or a model that writes the summary

See which companies engage with a competitor

The reactions on a competitor post show which companies pay attention to it. Enrich the people with GET /v1/person, group them by employer, and the result is a list of accounts that follow your competitor closely and that you may not know. Those are the accounts worth a look from your sales team, and the list refreshes every week without anyone opening a browser.

Add the people layer

Posts and people moves explain each other. A competitor that publishes about a new enterprise tier while it hires enterprise sellers is making a move, and either signal alone would be easy to miss. Hiring signals show who joined in the window, decision makers lists the senior people, and past employees lists the people who left and know the product from the inside. Because they sit in the same API as the posts, the digest does not need a second vendor.

What it costs

Each live call is $0.001. For five competitors with one page of posts each, plus ten reaction calls for the new posts, a weekly run is 15 calls, which is $0.015, or about 78 cents a year. Hiring signals and enrichment are standard endpoints and are covered by the license.

Where it fits next to website monitoring

A website monitor watches the competitor's own domain: pricing pages, changelogs, documentation. This digest covers the social side: posts, replies and the people involved. Use both. Run the digest on a schedule, because it reads at the time you call and does not push, and keep your job tolerant of an occasional failed call while the endpoints are in Beta.

The people who engage with a post are third parties. Use the list to understand which kinds of companies follow a competitor, and write to individuals only when you have something relevant to say.

Frequently asked questions

How do I monitor competitor social media posts automatically?

Schedule a script that calls GET /v1/companies/posts for each competitor, keeps the posts it has not stored yet and reads the reactions on the new ones. A weekly run for five competitors costs about $0.015.

How do I monitor what competitors post?

Run a weekly job that reads GET /v1/companies/posts for each competitor, compares the posts with a stored set and keeps the new ones. Add GET /v1/posts/reactions to see who engaged.

How often should I run it?

Weekly works for most markets and costs cents. Run it daily during a competitor launch or when a competitor posts often.

Can I see which companies follow a competitor?

Yes. Read the reactions and comments on its posts, enrich each person with GET /v1/person and group them by employer.

How much does the digest cost?

Five competitors with one page of posts and ten reaction calls is 15 live calls, which is $0.015 a week. Hiring signals and enrichment are covered by the license.

Get started

Try Kooperativa

One API key. Person and company enrichment, structured search, and monitors under one flat license.

Keep reading

We use only cookies that are strictly necessary to run this site (staying signed in, and protecting forms from abuse). Our analytics tool doesn't use cookies or collect personal data. See our Privacy Policy for details.