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:
Adding a competitor
- Navigate to Competitors in the top nav.
- Select the client you want to assign the competitor to from the dropdown.
- Click + Add Competitor.
- Choose the platform — Instagram or TikTok.
- Enter the account handle (with or without @). For example:
@catalystcommsorcatalystcomms. - 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
- Select a date range using the From and To date pickers on the competitor card.
- Click 🔍 Scrape Now.
- Catalyst starts an Apify scrape job in the background. The status badge changes to Scraping…
- 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.
| Platform | Formula | Metrics included |
|---|---|---|
| TikTok | (Likes + Comments + Shares + Saves) ÷ Views |
Full set — all four engagement actions |
(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
| Feature | TikTok | |
|---|---|---|
| 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.