Skip to main content
Thirdwatchthirdwatch
marketing

Monitor Public VK Competitor Engagement Without a Login

Track public VK competitor and brand posts over time using likes, comments, reposts, views, media types, stable post IDs, and scheduled Apify runs.

Aug 12, 2026 · 2 min read · 420 words
See the scraper →

VK competitor monitoring should preserve more than a screenshot. A useful dataset needs a stable post key, publication time, source URL, content, media type, and engagement counters observed at a known time. The VK Posts Scraper provides that public-data layer for profile and community walls.

Choose a comparable target set

Group targets by market and account type. Comparing a national brand with a small local community will mostly measure audience size. A better panel might contain five direct competitors, two category publications, and the researcher's own public community.

{
  "targets": [
    "brand_one",
    "brand_two",
    "https://vk.com/category_publication"
  ],
  "maxPostsPerTarget": 50,
  "maxTotalPosts": 150,
  "publishedAfter": "2026-08-01",
  "includeReposts": false
}

Exclude reposts when the question is original publishing performance. Include them when distribution and amplification are part of the research question. Pinned posts deserve similar care: they can remain at the top of a wall long after their original publication date.

Build timestamped engagement snapshots

Use the same input daily or weekly and append each dataset to a warehouse. Never overwrite the first observation.

snapshot = [
    {
        "owner_id": row["ownerId"],
        "post_id": row["postId"],
        "observed_at": row["scrapedAt"],
        "posted_at": row["postedAt"],
        "likes": row["likesCount"],
        "comments": row["commentsCount"],
        "reposts": row["repostsCount"],
        "views": row["viewsCount"],
        "media_types": row["mediaTypes"],
        "source_url": row["sourceUrl"],
    }
    for row in posts
]

For each post, subtract the prior observation from the latest one. This yields observed growth between collections, not a claim about when every interaction happened. Counters can also be corrected by the platform, so negative changes should be retained and flagged instead of silently forced to zero.

Compare content formats

Split posts into text-only, photo, video, poll, link, and mixed-media groups. Compare median rather than only average engagement, because one viral post can dominate a small sample. Control for post age by analyzing a fixed period after publication where possible.

Useful questions include:

  • Which formats consistently receive comments rather than passive views?
  • Which recurring topics produce reposts?
  • How quickly does engagement arrive after publication?
  • Are competitors posting original material or amplifying other accounts?
  • Which public posts remain pinned, edited, or removed between snapshots?

Avoid misleading conclusions

Public engagement is not customer sentiment, sales, or representative opinion. Bots, campaigns, deleted interactions, paid distribution, and audience differences can distort comparisons. Translate or classify text only after preserving the original. Review a sample behind every aggregate claim.

The Actor observes public pages; it does not access private communities or profiles. Use a legitimate research purpose, minimize personal data, and follow relevant regional rules before turning public activity into individual-level profiling.

Frequently asked questions

Can the Actor track likes and views over time?

Yes. Run the same public targets on a schedule and join snapshots by ownerId and postId. Keep scrapedAt so every observed counter has a timestamp.

Does it calculate an engagement rate?

It returns source counters. Calculate a rate only when you have a defensible denominator; public follower counts are not part of each post record.

Related

Try it yourself

100 free credits, no credit card.

About 30 real searches. Add the MCP to Claude or Cursor in two minutes.