# How to Build a Competitor Tweet Tracker

A competitor tweet tracker collects each rival account's posts on a schedule, stores them with their likes, reposts and replies, and reports how often each competitor posts, what performs best and how their audience grows.

[![apidojo](/blog/authors/apidojo.png)**Apidojo** *15+ years of experience in data retrieval.*](/blog/authors/apidojo/)

**7 October 2026** Published

**3 min** Read

![Cover card reading 'How to Build a Competitor Tweet Tracker'](/blog/covers/competitor-tweet-tracker.png)

**A competitor tweet tracker collects each rival account’s posts on a schedule, stores them with their likes, reposts and replies, and reports how often each competitor posts, what performs best and how their audience grows.** With apidojo’s actors on Apify, the posts come from a `from:` query per competitor and the follower counts from Twitter User Scraper.

This guide builds the tracker: the accounts and queries, the collection schedule, the metrics and a weekly report. Recurring collection follows the pattern in [how to monitor a keyword on X with an API](/blog/twitter-scraping/monitor-keyword/).

## What Should a Competitor Tweet Tracker Measure?

**Track 6 metrics per competitor: posting volume, engagement per post, top posts, content format, topics and follower growth.** The table shows where each comes from.

| Metric | Calculated from |
| --- | --- |
| Posts per week | Count of posts by createdAt week |
| Average engagement per post | Mean of likeCount + retweetCount + replyCount |
| Top posts | Posts ranked by likes within the week |
| Content format | Share of posts with media, links or threads |
| Topics | Most frequent words and hashtags in text |
| Follower growth | followers from weekly profile snapshots |

## How Do You Collect Competitors’ Posts?

**Collect each competitor’s original posts with one `from:` query per account, excluding replies and reposts so the data reflects what they publish.** A daily run with a 2-day window, deduplicated on post ID, never misses a post ([twitter-advanced-search reference](https://github.com/igorbrigadir/twitter-advanced-search)).

```
import os
from apify_client import ApifyClient

COMPETITORS = ["competitor1", "competitor2", "competitor3"]
client = ApifyClient(os.environ["APIFY_TOKEN"])

run = client.actor("apidojo/twitter-scraper-lite").call(run_input={
    "searchTerms": [f"from:{h} -filter:replies -filter:retweets within_time:2d" for h in COMPETITORS],
    "includeSearchTerms": True,
    "sort": "Latest",
})
posts = {t["id"]: t for t in client.dataset(run.default_dataset_id).iterate_items()}
```

Twitter Scraper Unlimited suits daily runs because it allows repeated queries; a batch of up to 5 queries gets the lowest per-item price, $0.0004 ([Apify](https://apify.com/apidojo/twitter-scraper-lite)). For a one-time backfill of each competitor’s full history, use [Tweet Scraper V2](https://apify.com/apidojo/tweet-scraper) with date windows, as in [how to scrape tweets from a user profile](/blog/twitter-scraping/scrape-user-tweets/).

## How Do You Track Competitors’ Follower Growth?

**Take a weekly profile snapshot with apidojo’s [Twitter User Scraper](https://apify.com/apidojo/twitter-user-scraper/input-schema) and store each account’s `followers` and `following` counts with the date.** Put the handles in `twitterHandles` (Apify).

```
{
  "twitterHandles": ["competitor1", "competitor2", "competitor3"],
  "getFollowers": false,
  "getFollowing": false
}
```

## How Do You Turn the Data Into a Weekly Report?

**Load the stored posts into pandas, group them by competitor and week, and compute the metrics from the table above.**

```
import pandas as pd

df = pd.json_normalize(list(posts.values()))
df["created"] = pd.to_datetime(df["createdAt"], format="%a %b %d %H:%M:%S %z %Y")
df["week"] = df["created"].dt.to_period("W")
df["engagement"] = df["likeCount"] + df["retweetCount"] + df["replyCount"]

report = df.groupby(["author.userName", "week"]).agg(
    posts=("id", "count"),
    avg_engagement=("engagement", "mean"),
    best_post=("likeCount", "max"),
)
print(report)
```

The `createdAt` format is explained in [how to collect tweets with Python](/blog/twitter-scraping/scrape-tweets-python/).

## What Does a Competitor Tracker Cost?

**A daily tracker for 3 competitors costs about $1.44 over 30 days in query fees, because each of the 3 daily queries costs $0.016 and includes about 40 posts.** Most brand accounts post fewer than 40 times in 2 days, so the per-item fee rarely applies (Apify).

## The scrapers behind this

-   [Twitter Scraper Unlimited Single tweets, reply threads, X Articles and small queries; no minimum $0.016 / query + $0.40 / 1K](/scrapers/twitter-scraper-lite/)
-   [Tweet Scraper V2 Tweets from searches, profiles, Lists and URLs; 49–64 tweets/sec; minimum 50 per query $0.40 / 1K tweets](/scrapers/twitter-scraper/)
-   [Twitter User Scraper Profiles, followers, following and retweeters by handle, URL or keyword $0.004 / profile + $0.40 / 1K users](/scrapers/twitter-user-scraper/)

## Questions people ask

### Can you track what people say about competitors?

Yes, run mention queries for their handles too; see [how to build a Twitter mention monitor](/blog/twitter-scraping/mention-monitor/).

### Can you track a competitor's replies to customers?

Yes, add `from:competitor filter:replies -to:competitor` as a separate query.

### Where do you start?

At the [apidojo Twitter Scraper](/scrapers/twitter-scraper/).

## More X data use cases

-   [How to Monitor a Keyword on X With an API Build a keyword monitor for X: the query, hourly schedule, deduplication, Slack alerts and a cost table for 3 schedules.](/blog/twitter-scraping/monitor-keyword/)
-   [How to Build a Twitter Mention Monitor Build a mention monitor for X that catches tagged and untagged mentions, sorts them into complaints, questions and praise, and alerts your team.](/blog/twitter-scraping/mention-monitor/)
-   [How to Collect Tweets for Sentiment Analysis Collect, clean and score tweets for sentiment analysis, from the search query to VADER scoring and weekly sentiment reports.](/blog/twitter-scraping/sentiment-analysis-dataset/)
-   [How to Build a Twitter Dataset for LLM and RAG Collect posts and threads, format them as JSON Lines with citation metadata, index them for retrieval and keep the dataset fresh.](/blog/twitter-scraping/llm-rag-dataset/)

![apidojo](/blog/authors/apidojo.png)

## [Apidojo](/blog/authors/apidojo/)

15+ years of experience in data retrieval.

API Dojo is always ready for you. With 15+ years of experience, data acquisition has never been that easy. Cheapest prices with high availability.

-   🏯 15+ years of experience in data retrieval.
-   💰 Cheapest prices, qualified data.
-   ⚙️ High availability, extreme maintenance.
-   🐉 Hyper communicative, excellent support.

-   [apify.com](https://apify.com/apidojo)
-   [x.com](https://x.com/apidojo_)
-   [github.com](https://github.com/apidojo-io)
