DEV Community

Intropix-team
Intropix-team

Posted on AI-assisted

How do you audit a competitor's Instagram engagement beyond likes? (shares, reposts and engagement rate in Python)

Our competitor audits used to stop at likes, because likes are the number on every post. But likes scale with follower count and say nothing about whether anyone passed a post on. We wanted to know, for two competing brands: which format works, which posts get shared, and what they pin or hide.

How we solved it

We built the PRO Instagram Posts & Reels Scraper on Apify (disclosure: it's ours). Next to likes and views it returns engagement_rate, share_count, repost_count, is_pinned, caption_edited and is_off_grid, with no Instagram login. The input per brand, with reels that are off the grid but still public on the reels tab:

{
  "usernames": ["nike"],
  "maxPosts": 50,
  "includeOffGridReels": true
}
Enter fullscreen mode Exit fullscreen mode

maxPosts is one budget per run, spent account by account in input order, so one brand per run:

from apify_client import ApifyClient
import pandas as pd

client = ApifyClient("YOUR_APIFY_TOKEN")
posts = []
for brand in ["nike", "adidas"]:
    run = client.actor("intropix/instagram-posts-reels-scraper-pro").call(run_input={
        "usernames": [brand], "maxPosts": 50, "includeOffGridReels": True})
    posts += list(client.dataset(run["defaultDatasetId"]).iterate_items())

df = pd.DataFrame(posts)
print(df.groupby(["username", "post_type"])[
    ["engagement_rate", "view_count", "share_count", "repost_count"]].median())
print(df.groupby("username")[["is_pinned", "is_off_grid", "caption_edited"]].sum())
Enter fullscreen mode Exit fullscreen mode

Medians, not means: one viral reel drags a mean across the chart.

What came out

The metric half of a real Red Bull reel (17-10-2026):

{
  "follower_count": 34172188,
  "post_type": "reel",
  "like_count": 46317,
  "comment_count": 344,
  "view_count": 1588744,
  "share_count": 3450,
  "repost_count": 937,
  "engagement_rate": 0.001365,
  "is_pinned": false,
  "is_off_grid": false
}
Enter fullscreen mode Exit fullscreen mode

0.001365 is 0.14%; accounts with tens of millions of followers often sit below 1%, so compare brands of similar size. The first table answers the format question, the second shows how much each brand pins, keeps off the grid, or rewrites after posting.

Cost

Each brand at 50 posts is $0.005 + $0.002 + 50 x $0.0039 = $0.202, so $0.404 for the pair. Off-grid reels bill as ordinary posts inside the same maxPosts.

The caveat

Every count is a snapshot. A post from this morning has not finished collecting likes, so leave the newest day or two out. When an owner hides counts, counts_hidden is true and the numbers are null. Photos and carousels have no view count at all.

To try it without code, the Audit a competitor's Instagram engagement task runs the PRO Instagram Posts & Reels Scraper on one account. If likes, comments, views and dates are enough, the standard Instagram Posts & Reels Scraper does it at $1.90 per 1,000 posts.

The rest is in the PRO actor overview.

Top comments (0)