本文へスキップ

Twitter の競合分析のやり方

Twitter の競合分析とは、競合アカウント3〜10件を同じ期間で、フォロワー増加率、エンゲージメント率、投稿頻度、コンテンツの構成、シェア・オブ・ボイス、オーディエンスの重なり、フォロワーのうち認証済みの割合という7つの数字で比較することです。

結論: 競合を週に1回スナップショットし、直近4週間の投稿とメンションを読み取って変化を比べます。成長率とエンゲージメント率の中央値を見れば、誰が勝っているかがわかります。データ取得には Sorsa API を使います。GET /info-batch は1リクエストで競合のプロフィール100件を、1,000件あたり$0.014から返し、100回分の無料リクエストで競合10社の最初のベンチマークまで済ませられます。

エンドポイント
GET /info-batch
ページサイズ
1リクエストあたりプロフィール100件
料金
1,000件あたり$0.014から

#Twitter 競合分析の7つの指標

X での競合分析を支えるのは7つの数字で、そのどれもが、公開アカウントなら誰でも見られるデータから得られます。何かを作る前に2つのアカウントを並べて見たいなら、無料の Twitter アカウント比較ツールが、フォロワー、表示回数、エンゲージメントをブラウザ上で並べ、それぞれで上回るほうに印を付けます。

  1. フォロワー増加率。 現在のフォロワー数から1週間前のフォロワー数を引き、前の数で割ります。週2%で伸びている2万フォロワーのアカウントは、止まっている20万フォロワーのアカウントに追いつきつつあります。

  2. エンゲージメント率。 投稿のいいね、リポスト、返信、引用の合計を、アカウントのフォロワー数で割ります。1件のバイラル投稿が平均を何週間も押し上げるので、比較するのは中央値です。

  3. 投稿頻度。 1週間あたりの投稿数。全競合で同じ4週間の期間で数えます。

  4. コンテンツの構成。 返信、引用、写真や動画付きの投稿が占める割合。

  5. シェア・オブ・ボイス。 1週間のブランドのメンション数を、対象グループ全ブランドのメンション数の合計で割ります。

  6. オーディエンスの重なり。 競合のフォロワーのうち、あなたもフォローしている人の割合。2つのリストのうち小さいほうを基準に測ります。

  7. 認証済み比率とフェイク比率。 競合のフォロワーのうち認証済みの割合と、中身が空のアカウント(投稿なし、アイコンなし、フォロワーよりフォローが圧倒的に多い)の割合。

アカウントの所有者にしか見えない数字もあります。時系列のインプレッション、リンクのクリック数、プロフィールへのアクセス数、フォロワーの属性です。投稿ごとの表示回数は公開されているので、競合についてもエンゲージメントを表示回数で割れます。両方の計算式と、すべての投稿に付く6つのカウントについては、Twitter アナリティクス API のガイドをご覧ください。

フォロワー数だけでは、ほとんど何もわかりません。同じ7つの数字を、グループ全体で毎週読み取ると、誰が加速しているか、あなたの分野でどのフォーマットが効いているか、競合のオーディエンスがどこであなたと重なっているかが見えてきます。

#競合を3〜10社選び、期間を1つに決める

使いやすい分析対象は、3つの階層にまたがる3〜10アカウントに、基準線となる自分のアカウントを加えたものです。10を超えると毎週の読み取りがノイズだらけになり、3未満ではベースラインにならないからです。

  • 直接の競合: 同じ購買層に、同じものを売っている相手。
  • 間接の競合: 同じ注目を奪い合う相手。メディアアカウント、クリエイター、購買層があなたの代わりに使っているツールなど。
  • 目標とするアカウント: 1年後に自分がいたい場所にいるアカウント。差を推測ではなく測定できます。

まだ知らない競合を見つける方法が3つあります。あなたと同じ投稿の中でメンションされているアカウントは、たいてい競合です。自分のカテゴリを表す言葉でプロフィール文を検索すれば、残りが見つかります。これには POST /search-users(新しいタブで開きます) を使います。また、あなたのフォロワーが同時にフォローしているアカウントは、同じフィードを奪い合う競合です。無料の Twitter オーディエンス重複チェッカーが、任意の2アカウントについてこれを測ります。

期間は全員で1つに固定します。直近28日間で、終了日は全アカウントで同じ日にします。2週間の期間にローンチ週が入っていると、それが競合の通常のペースに見えてしまいます。4週間なら平均化されます。

#ダッシュボードツールか API か:数字の出どころ

シート単位の課金のダッシュボードは、接続した日からカウントを始め、シートごとに課金され、追跡できる競合の数にも上限があります。データ層として使う API なら、競合の履歴を過去にさかのぼって取得でき、リクエスト単位の課金で競合の数に上限はなく、自分のスプレッドシート、ダッシュボード、エージェント向けに JSON を返します。

比較項目Sorsa APIシート課金のダッシュボード公式 X API
履歴2006年まで遡って検索可能、タイムラインは全件、3,200件の上限なし登録した日からタイムラインは最新3,200件まで、アーカイブ検索は投稿ごとに課金
競合の数上限なしプランごとに上限あり上限なし
料金プロフィールは1,000件あたり$0.014から、投稿は1,000件あたり$0.07からシートごとに月額プロフィール1,000件あたり$10.00、投稿1,000件あたり$5.00
アクセスAPI キー1つシートごとにログイン開発者アカウント、OAuth、月間の投稿読み取りは最大300万件
出力スプレッドシート、ダッシュボード、エージェント向けの JSONベンダー提供のグラフとエクスポートJSON
  • 履歴

    Sorsa API
    2006年まで遡って検索可能、タイムラインは全件、3,200件の上限なし
    シート課金のダッシュボード
    登録した日から
    公式 X API
    タイムラインは最新3,200件まで、アーカイブ検索は投稿ごとに課金
  • 競合の数

    Sorsa API
    上限なし
    シート課金のダッシュボード
    プランごとに上限あり
    公式 X API
    上限なし
  • 料金

    Sorsa API
    プロフィールは1,000件あたり$0.014から、投稿は1,000件あたり$0.07から
    シート課金のダッシュボード
    シートごとに月額
    公式 X API
    プロフィール1,000件あたり$10.00、投稿1,000件あたり$5.00
  • アクセス

    Sorsa API
    API キー1つ
    シート課金のダッシュボード
    シートごとにログイン
    公式 X API
    開発者アカウント、OAuth、月間の投稿読み取りは最大300万件
  • 出力

    Sorsa API
    スプレッドシート、ダッシュボード、エージェント向けの JSON
    シート課金のダッシュボード
    ベンダー提供のグラフとエクスポート
    公式 X API
    JSON

分析対象が増えるほど膨らむのが、料金の行です。公式 X API は、料金ページ(新しいタブで開きます)にあるレートで、返した投稿とプロフィールの1件ごとに課金します。Sorsa API では、1リクエストでプロフィール最大100件、または投稿20件が返ります。

#Sorsa API で5ステップで分析を実行する

競合分析の数字を取得するには、Twitter(X)API 兼スクレイピングツールである Sorsa API を使います。1リクエストで競合のプロフィールを最大100件、投稿は1リクエスト20件ずつ、2006年まで遡って取得できます。どのプランも、API キー1つで毎秒20リクエスト、開発者アカウントも OAuth も不要です。以下の5ステップで、毎週の実行を最初から最後まで組み立てます。ドキュメントの競合分析ワークフロー(新しいタブで開きます)には、同じ作業を1本のスクリプトにまとめたものがあります。

  1. キーを取得する。 サインアップして、ダッシュボードから API キーをコピーします。最初の100リクエストは無料で、有効期限もありません。

  2. グループ全体をスナップショットする。 すべてのハンドルを GET /info-batch(新しいタブで開きます) に渡します。1リクエストあたり最大100件で、usernames パラメータを繰り返します。

    ターミナル
    curl -G "https://api.sorsa.io/v3/info-batch" \
      -H "ApiKey: YOUR_API_KEY" \
      --data-urlencode "usernames=northwind_roastery" \
      --data-urlencode "usernames=harbor_bean_supply" \
      --data-urlencode "usernames=kestrel_coffee_lab"
    
    レスポンス200 OK
    {
      "users": [
        {
          "id": "1638204417762983936",
          "username": "northwind_roastery",
          "display_name": "Northwind Roastery",
          "description": "Small-batch coffee, roasted every Monday.",
          "bio_urls": ["https://example.com/subscribe"],
          "followers_count": 48210,
          "followings_count": 612,
          "tweets_count": 9314,
          "media_count": 2207,
          "verified": true,
          "pinned_tweet_ids": ["1851130250081816914"],
          "created_at": "2023-03-15T09:12:44Z"
        },
        {
          "id": "1702553980148703232",
          "username": "harbor_bean_supply",
          "display_name": "Harbor Bean Supply",
          "description": "Green coffee for roasters. Ships worldwide.",
          "bio_urls": [],
          "followers_count": 31904,
          "followings_count": 1480,
          "tweets_count": 5120,
          "media_count": 860,
          "verified": false,
          "pinned_tweet_ids": [],
          "created_at": "2023-09-14T16:40:03Z"
        }
      ]
    }
    
  3. 各競合の直近4週間を読み取る。 POST /user-tweets(新しいタブで開きます) を1リクエスト20件ずつページ送りし、ページ全体が期間より古くなるまで続けます。すべての投稿に、いいね、リポスト、返信、引用、表示回数、ブックマークの数が付いているので、指標の計算に追加の呼び出しは要りません。

    import statistics
    from datetime import datetime, timedelta, timezone
    
    import requests
    
    BASE = "https://api.sorsa.io/v3"
    HEADERS = {"ApiKey": "YOUR_API_KEY"}
    WEEKS = 4
    
    
    def posted(t):
        return datetime.fromisoformat(t["created_at"].replace("Z", "+00:00"))
    
    
    def recent_posts(handle):
        since = datetime.now(timezone.utc) - timedelta(weeks=WEEKS)
        body, posts = {"username": handle, "with_replies": True}, []
        while True:
            r = requests.post(f"{BASE}/user-tweets", headers=HEADERS,
                              json=body, timeout=30)
            r.raise_for_status()
            page = r.json()
            fresh = [t for t in page.get("tweets", []) if posted(t) >= since]
            posts += fresh
            if not fresh or not page.get("next_cursor"):
                return posts
            body["next_cursor"] = page["next_cursor"]
    
    
    def metrics(handle, followers):
        posts = recent_posts(handle)
        own = [t for t in posts
               if not t["is_reply"] and not t.get("retweeted_status")]
        rates = [100 * (t["likes_count"] + t["retweet_count"]
                        + t["reply_count"] + t["quote_count"]) / followers
                 for t in own]
        media = sum(any(e["type"] in ("photo", "video")
                        for e in t.get("entities") or []) for t in own)
        replies = sum(t["is_reply"] for t in posts)
        return {
            "posts_wk": round(len(own) / WEEKS, 1),
            "median_er": round(statistics.median(rates), 3) if rates else 0,
            "reply_pct": round(100 * replies / len(posts), 1) if posts else 0,
            "media_pct": round(100 * media / len(own), 1) if own else 0,
        }
    
  4. 各ブランドのシェア・オブ・ボイスを数える。 すべてのハンドルについて、同じ1週間を対象に POST /mentions(新しいタブで開きます) を1リクエスト20件ずつ呼び出し、各カウントを合計で割ります。メンションが数千件に上るブランドで、反応のあったものだけを見たいときは、min_likes を追加します。

    Python
    def mentions(handle, since, until):
        body = {"query": handle, "since_date": since, "until_date": until}
        count = 0
        while True:
            r = requests.post(f"{BASE}/mentions", headers=HEADERS,
                              json=body, timeout=30)
            r.raise_for_status()
            page = r.json()
            count += len(page.get("tweets", []))
            if not page.get("next_cursor"):
                return count
            body["next_cursor"] = page["next_cursor"]
    
    
    brands = ["northwind_roastery", "harbor_bean_supply", "kestrel_coffee_lab"]
    week = {b: mentions(b, "2026-10-26", "2026-11-02") for b in brands}
    total = sum(week.values()) or 1
    sov = {b: round(100 * n / total, 1) for b, n in week.items()}
    
  5. 競合ごとに1行保存し、先週と比べる。 週次のスケジュール(cron、GitHub Actions のワークフロー、任意のタスクランナー)で、CSV ファイルに行を追記します。成長率は、今週のフォロワー数と先週のフォロワー数の差です。

    Python
    import csv
    from datetime import date
    from pathlib import Path
    
    PATH = "competitors.csv"
    FIELDS = ["week", "handle", "followers", "growth_pct", "posts_wk",
              "median_er", "reply_pct", "media_pct", "sov_pct"]
    
    
    def last_followers():
        if not Path(PATH).exists():
            return {}
        with open(PATH, newline="", encoding="utf-8") as f:
            return {r["handle"]: int(r["followers"]) for r in csv.DictReader(f)}
    
    
    profiles = requests.get(f"{BASE}/info-batch", headers=HEADERS,
                            params={"usernames": brands}, timeout=30).json()
    last, rows = last_followers(), []
    for u in profiles["users"]:
        h, f = u["username"], u["followers_count"]
        prev = last.get(h) or f
        rows.append({"week": date.today().isoformat(), "handle": h,
                     "followers": f,
                     "growth_pct": round(100 * (f - prev) / prev, 2),
                     "sov_pct": sov.get(h, 0), **metrics(h, f)})
    
    new_file = not Path(PATH).exists()
    with open(PATH, "a", newline="", encoding="utf-8") as f:
        out = csv.DictWriter(f, fieldnames=FIELDS)
        if new_file:
            out.writeheader()
        out.writerows(rows)
    
    The weekly competitor analysis run with Sorsa API 毎週 スクリプト1本 APIキー1つ 毎秒20リクエストで 数秒 GET /info-batch 1リクエストで競合最大100件 フォロワー、自己紹介、固定投稿 POST /user-tweets 1リクエストで投稿20件 エンゲージメント、頻度、構成比 POST /mentions 1リクエストでメンション20件 発言シェア 競合ごとに1行 アカウント 成長 競合A +1.8% 競合B +0.4% 競合C -0.3% 自社 +2.6% 先週の行との比較
    3つのエンドポイントでシート全体が埋まります。成長率は2つの週次の行の差から求めるので、最初の週がベースラインになります。

403 が返ったら、キーがないか、リクエストを使い切っています。429 は1秒間に20リクエストを超えたことを意味するので、少し待って再試行してください。失敗したリクエストは課金されません。

#自動で埋まる Twitter 競合分析テンプレート

テンプレートは、競合1社につき1週間で1行のシート1枚で、各列は API が返すフィールドに対応します。ヘッダー行を Google スプレッドシートや Excel に貼り付けるか、ステップ5のスクリプトにファイルを書き出させてください。

competitors.csv
week,handle,followers,growth_pct,posts_wk,median_er,reply_pct,media_pct,sov_pct

各列と、その元になるフィールド、計算式は次のとおりです。

列元になるフィールド計算式
followersfollowers_count、GET /info-batch返された値のまま
growth_pct週次の2行(今週 − 先週)÷ 先週 × 100
posts_wkcreated_at、POST /user-tweets28日間の自分の投稿数 ÷ 4
median_erlikes_count、retweet_count、reply_count、quote_count投稿ごとの(合計 ÷ フォロワー数 × 100)の中央値
reply_pctis_reply返信 ÷ 期間内の全投稿 × 100
media_pctentities[].type が photo または videoメディア付き投稿 ÷ 自分の投稿 × 100
sov_pctPOST /mentionsブランドのメンション数 ÷ グループ全体のメンション数 × 100
  • followers

    元になるフィールド
    followers_count、GET /info-batch
    計算式
    返された値のまま
  • growth_pct

    元になるフィールド
    週次の2行
    計算式
    (今週 − 先週)÷ 先週 × 100
  • posts_wk

    元になるフィールド
    created_at、POST /user-tweets
    計算式
    28日間の自分の投稿数 ÷ 4
  • median_er

    元になるフィールド
    likes_count、retweet_count、reply_count、quote_count
    計算式
    投稿ごとの(合計 ÷ フォロワー数 × 100)の中央値
  • reply_pct

    元になるフィールド
    is_reply
    計算式
    返信 ÷ 期間内の全投稿 × 100
  • media_pct

    元になるフィールド
    entities[].type が photo または video
    計算式
    メディア付き投稿 ÷ 自分の投稿 × 100
  • sov_pct

    元になるフィールド
    POST /mentions
    計算式
    ブランドのメンション数 ÷ グループ全体のメンション数 × 100

分析が進むにつれて列を追加してください。表示回数でエンゲージメントを見るための view_count 由来の views、新しいポジショニングの一文を見つけるための description 由来の bio、後述のオーディエンス監査由来の verified_share などです。具体例を挙げます。同じフォロワー数で、自分のエンゲージメント率の中央値が0.41%、競合は1.2%だったなら、何かを変える前に、競合の投稿をエンゲージメント順に並べて上位10件を読んでください。

#追跡を始める前の過去を振り返る

競合の過去は検索できます。Sorsa API は競合の投稿を2006年まで遡って読み取れるので、ベンチマークを設定したその日から、昨年のデータで始められます。ダッシュボードは接続した日からしかカウントせず、docs.x.com(新しいタブで開きます) によれば、公式 X API のユーザータイムラインが返すのは最新3,200件の投稿だけです。

How far back each route can read a rival's posts 現在 Sorsa API検索 from:, since:, until: 2006年まで遡る Sorsa APIタイムライン 3,200件の上限なし アカウント開設時からの全投稿 公式X APIタイムライン 最新3,200件 1日10投稿で約11か月分 ダッシュボードツール 登録日以降 連携後の分のみ 2006 2010 2014 2018 2022 2026
競合の履歴は、追跡を始める前からそこにあります。2006年まで遡って読み取れる API だけが、それを過去にさかのぼって取り込めます。

競合が昨年の年末商戦をどう運営したかを調べるには、X 自身の検索コマンドを POST /search-tweets(新しいタブで開きます) に送ります。from: でアカウントを指定し、since: と until: で日付を指定します。1リクエストごとに、約20件の投稿がカウント付きで返ります。

ターミナル
curl -X POST "https://api.sorsa.io/v3/search-tweets" \
  -H "ApiKey: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"query": "from:northwind_roastery since:2025-11-01 until:2026-01-01",
       "order": "latest"}'

from: の代わりにブランド名を入れて同じクエリを実行すれば、その期間に人々が競合について語った内容が返ります。つまり、過去の任意の月について測れるシェア・オブ・ボイスです。

#ダッシュボードにはめったに出てこない4つのシグナル

7つの指標のほかにも、競合の動きが数字に現れる前にそれを示す公開シグナルが4つあります。

スポンサー投稿。 Sorsa API が返すすべての投稿には、X が有料プロモーションに表示するフラグである paid_partnership が付いています。競合をタグ付けした投稿を検索し、フラグの付いたものだけを残してください。その投稿者が、競合が報酬を払っているクリエイターです。

Python
body = {"query": "@northwind_roastery", "order": "latest"}
r = requests.post(f"{BASE}/search-tweets", headers=HEADERS, json=body)
paid = [t for t in r.json()["tweets"] if t.get("paid_partnership")]
print({t["user"]["username"] for t in paid})

オーディエンスの居住地。 GET /about(新しいタブで開きます) は、X がアカウントに割り当てた国を返します。競合のフォロワーから1,000人をサンプリングして実行すると、どの市場に届いているかがわかります。サンプルが全リストにどこまで近いかは、Twitter 所在地 API のガイドで確認できます。

水面下の戦略的な動き。 プロフィール文の新しい一文、bio_urls の新しいリンク、新しい固定投稿は、発表より先に現れることがよくあります。/info-batch のスナップショットで週ごとに比較し、月に1回 GET /follows(新しいタブで開きます) をページ送りしてください。パートナー、採用した人、投資家の新規フォローは公開されています。

オーディエンスの質。 GET /verified-followers(新しいタブで開きます) は、競合をフォローしている認証済みアカウントだけを返します。GET /followers(新しいタブで開きます) は、重なりとフェイクフォロワーのチェック用に、1リクエスト200人を返します。ページ送り、ID による重なりの判定、中身が空のアカウントのシグナルについては、Twitter フォロワー API のガイドで扱っています。

#競合の追跡にかかる月額コスト

競合10社を毎週追跡するコストは、Sorsa API のリクエストで月額$0.68から(Pro のレートなら$0.97)、公式 X API では$143.77です。この例では、競合1社につき毎週投稿100件とメンション100件を読み取り、毎月フォロワー1,000人をサンプリングしています。数字を変えれば、ご自身のグループの料金を試算できます。

追跡するライバルの数
ライバル1社あたり、週に読み取るポスト数
ライバル1社あたり、週に読み取るメンション数
ライバル1社あたり、月に取得するオーディエンスのサンプル
公式X API(月額)
$143.77
ポスト1件$0.005、プロフィールまたはフォロワー1件$0.010
Sorsa API(月額)
最安 $0.68
$0.97(Proの料金の場合)

ジョブ全体で、最小プランの月間リクエストの5%を使います。

プロフィールのリクエストはセット全体で1回、ポストとメンションは1リクエストあたり20件、フォロワーは1リクエストあたり200件です。公式X APIは、ポスト1件$0.005、プロフィールまたはフォロワー1件$0.010で課金します。

差が生まれるのは課金の単位です。公式 X API は、返した投稿とプロフィールのすべてに課金し、開発者アカウントと OAuth も必要です。月間300万件の投稿読み取りで止まり、それを超える場合は月約$42,000からの Enterprise 契約しか残りません。さらに、2026年11月22日からは、エクスパンション経由で返されるオブジェクトも標準レートで課金されます(X の10月23日付の告知(新しいタブで開きます))。各メンションの投稿者を$0.010でエクスパンションすると、上の例は$187.10に上がります。

X で競合を追跡するなら、Sorsa API を選んでください。競合のプロフィールは、公式 X API の$10.00に対して1,000件あたり$0.014から、フォロワーは1,000人あたり$0.007からで、1,000分の1です。すでに追跡している投稿のカウントを POST /tweet-info-bulk(新しいタブで開きます) で取り直す場合は、1リクエストで100件、1,000件あたり$0.014からで、$5.00の250分の1です。毎週の実行全体が、毎秒20リクエストで数秒で終わります。Sorsa API は読み取り専用で、X のログイン情報は一切求めないので、自分のアカウントがリスクにさらされることはありません。

#実行の頻度と、結果の活かし方

スナップショットは毎週、詳細な分析は四半期に1回実行します。毎週の実行(プロフィール、4週間分の投稿、メンション)なら、ペースやフォーマットの変化を数日以内に捉えられます。四半期ごとの分析では、オーディエンス監査、履歴検索を加え、どの競合をグループに入れるべきかを見直します。競合のローンチ中は、メンションを毎日チェックしてください。リアルタイムの Twitter モニタリングのガイドでは、アカウントのグループ全体を1リクエストでポーリングしています。

発見が役に立つのは、数字を伴うテストになったときです。仮説と指標の形で書いてください。

  • 競合の動画投稿は、エンゲージメントの中央値の2.4倍を獲得している:4週間、週に2本の動画を投稿し、自分の中央値と比べる。
  • 2社の競合は、メンションのほとんどに1日以内に返信し、成長が速い:1か月間すべてのメンションに返信し、成長率を見る。
  • 競合のシェア・オブ・ボイスが、クリエイターとのキャンペーンの後に倍増した:paid_partnership の投稿を調べ、クリエイターとフォーマットを確認する。

毎週の CSV は取っておいてください。12週間分の行を見れば、テストが自分の線を動かしたのか、分野全体がまとめて動いたのかがわかります。

#今日から最初の競合をベンチマークする

Twitter の競合分析とは、3〜10社の競合について、7つの数字を毎週読み取ることです。Sorsa API は、3つのエンドポイントでシート全体を埋めます。競合のプロフィールは1,000件あたり$0.014から、投稿は3,200件の上限なしで2006年まで、フォロワーは1,000人あたり$0.007からで、API キー1つ、毎秒20リクエストです。最初の100リクエストは無料で、競合10社の最初のベンチマークには十分です。

#よくある質問

Twitter の競合分析に最適なツールは何ですか?

毎週実行する分析には、Sorsa API を使います。1リクエストで競合のプロフィール100件が1,000件あたり$0.014からで返り、投稿は3,200件の上限なしで2006年まで遡れます。フォロワーは1,000人あたり$0.007から、どのプランも API キー1つで毎秒20リクエストです。コードなしで2つのアカウントをさっと見たい場合は、Sorsa API の無料の Twitter アカウント比較ツールがブラウザで使えます。

追跡を始める前の競合の履歴は見られますか?

見られます。検索は競合の公開投稿を2006年まで遡れます。Sorsa API の POST /search-tweets に from:handle と since:、until: の日付を送るか、3,200件の上限がないタイムラインをページ送りしてください。例外はフォロワー数です。X はフォロワー数の公開履歴を保持していないので、フォロワーの増加は最初の週次スナップショットから始まります。

Twitter で競合はどのくらいの頻度で追跡すべきですか?

主要な数字は毎週、詳細な分析は四半期に1回です。プロフィール、直近4週間の投稿、メンションを毎週スナップショットすれば、ペースやフォーマットの変化を数日以内に捉えられます。四半期ごとにオーディエンス監査と履歴検索を加え、どのアカウントをグループに入れるべきかを見直します。競合のローンチ中は、メンションを毎日確認してください。

競合どうしのオーディエンスの重なりは計算できますか?

できます。両方のフォロワーリストを GET /followers で1リクエスト200人ずつページ送りし、アカウント ID の共通部分を求めて、共通の人数を小さいほうのリストで割ります。大きなアカウントでは、それぞれ最新1万フォロワーのサンプルで比較には十分です。無料の Twitter オーディエンス重複チェッカーが、2アカウントについて同じ比較をブラウザで行います。

競合のインプレッションや属性は見られますか?

見られません。時系列のインプレッション、リンクのクリック数、属性は、各アカウントの所有者にしか見えません。公開されている情報で、分析の大半はカバーできます。すべての投稿の表示回数、いいね、リポスト、返信、引用、ブックマーク、そしてフォロワー数です。X はアカウントごとに国も割り当てており、Sorsa API の GET /about で、競合のフォロワーのサンプルについて取得できます。

#検証の方法

2026年11月2日に、このガイドに登場するすべてのエンドポイント、パラメータ、ページサイズ、レスポンスフィールドを、稼働中の Sorsa API リファレンス(45エンドポイント)と照合しました。サンプルのハンドル、ID、数字はデモデータです。公式 X API の料金、月間300万件の投稿読み取り上限、3,200件のタイムライン制限は docs.x.com から、11月22日からのエクスパンション課金は2026年10月23日付の X 開発者フォーラムの告知から、いずれも同日に確認しました。月額コストは、これらの料金とページサイズから私たち自身で計算したものです。

Sorsa APIチーム 読み取り専用のX(Twitter)APIとスクレイピングツール、Sorsa APIを開発・運営しています。2022年から本番稼働し(旧TweetScout API)、累計60億リクエスト以上を処理しています。 Sorsa APIについて

変更点
  • 全面的に書き直しました。7つの指標、Python と Node.js による Sorsa API を使った5ステップの実行手順、自動で埋まるテンプレート、2006年まで遡る履歴、4つの追加シグナル(スポンサー投稿、オーディエンスの国、水面下の動き、オーディエンスの質)、月額コストの試算を扱っています。競合トラッキングのページはこの記事に統合しました。
  • 初公開。