Competitor Intelligence

Automatically scrape public competitor accounts on Instagram and TikTok, identify their highest-performing content by engagement rate, and pull those results directly into your client reports.

Powered by Apify. Catalyst uses Apify's TikTok and Instagram scrapers to retrieve public post data. Scraping only works on public accounts — private accounts will return no results.

Overview

The Competitor Intelligence workflow has three stages:

1
Add competitors — assign competitor accounts (by handle) to a client. Each account can be Instagram or TikTok.
2
Scrape & analyse — trigger a scrape for any competitor. Catalyst fetches their recent posts, scores each one by engagement rate, and surfaces the top performer.
3
Report integration — when you generate a report for that client, the top post per competitor auto-populates in the Competitor Highlights section.

Adding a competitor

  1. Navigate to Competitors in the top nav.
  2. Select the client you want to assign the competitor to from the dropdown.
  3. Click + Add Competitor.
  4. Choose the platform — Instagram or TikTok.
  5. Enter the account handle (with or without @). For example: @catalystcomms or catalystcomms.
  6. Click Add Competitor. The account will appear in the list.

You can add multiple competitors per client across both platforms. Competitors are saved permanently — you don't need to re-add them for each report.

Running a scrape

  1. Select a date range using the From and To date pickers on the competitor card.
  2. Click 🔍 Scrape Now.
  3. Catalyst starts an Apify scrape job in the background. The status badge changes to Scraping…
  4. Results appear automatically within 1–3 minutes — no need to refresh the page.
📅

Date range behaviour: Catalyst fetches up to 100 recent posts from the account and then filters by your selected date range. If no posts fall within the range (e.g. the account hasn't posted recently, or the range is too far back), Catalyst falls back to showing the top post from all scraped posts and displays a warning.

Understanding engagement rate

Catalyst ranks posts by engagement rate — not raw counts. This levels the playing field between accounts of different sizes.

PlatformFormulaMetrics included
TikTok (Likes + Comments + Shares + Saves) ÷ Views Full set — all four engagement actions
Instagram (Likes + Comments) ÷ Views or sum for images Likes & Comments only — Saves and Shares are private metrics not available via public scraping

The post with the highest engagement rate in the selected period is surfaced as the top post for that competitor.

Results display

Once a scrape completes, the top post is shown on the competitor card:

📋

@catalystcomms — View Top Post ↗
👁 Views: 42K  |  ❤️ Likes: 1.2K  |  💬 Comments: 87  |  🔁 Shares: 203  |  🔖 Saves: 312

Parse Saved Run

After scraping, the raw dataset is stored in Apify. The Parse Saved Run button lets you re-analyse that same dataset with a different date range — without triggering a new scrape or using additional Apify credits.

This is useful when you want to compare different time windows (e.g. last 7 days vs last 30 days) from the same scrape.

Report integration

When you navigate to Generate Report and select a client, the top post for each of that client's competitors is automatically pulled in to the Competitor Highlights section:

  • The post URL is pre-filled in the Best Post URL field
  • All available metrics (likes, comments, views, shares, saves) are included in the report
  • You can still override the URL manually or add a What We Can Learn note

To trigger a fresh scrape from within the report builder, click the 🔍 Find New Highlights button in the Competitor Highlights panel header — it takes you straight to the Competitor Intelligence page.

Platform differences

FeatureTikTokInstagram
Views✅ Play count✅ Video posts only
Likes
Comments
Shares❌ Private metric
Saves✅ Collect count❌ Private metric
Works on private accounts

Frequently asked questions

How many posts does the scraper fetch?

Up to 100 recent posts per account per scrape. For accounts that post very frequently, you may need to narrow your date range to ensure posts fall within it.

How long does a scrape take?

Typically 1–3 minutes. The page polls automatically every 5 seconds and updates as soon as results are ready.

Can I scrape the same account for multiple clients?

Yes — the same competitor handle can be added to multiple clients. Each client maintains its own scrape history.

Will the report always show the most recent scrape?

Yes. Each time a report is generated, the latest stored top post for each competitor is used. Run a new scrape any time you want fresher data.

Why is the fallback warning showing?

If you see "No posts found in selected date range", it means none of the scraped posts were published within your selected dates. This can happen if the account hasn't posted recently, or the date range is further back than the 100 most recent posts cover. Try widening the date range or using Parse Saved Run without date filtering.

Does scraping cost extra?

Scraping uses your Apify account credits. The volume of credits used depends on the number of posts scraped per run. Contact hi@catalystcommunications.com.au if you have questions about usage.