public social platform フォロワー一覧を Excel / CSV にエクスポートする方法 (API 活用ガイド)

著者:TwexAPI Team
JA
他の言語:
日本語
English中文
public social platform フォロワー エクスポート
public social platform フォロワー 取得
public social platform リサーチ
public social data API Python
TwexAPI

TwexAPI のフォロワー取得エンドポイントを使い、公開アカウントのフォロワー・フォロー一覧を一括取得して CSV/Excel に書き出す手順を解説。

Quick Answer

public platform アカウントのフォロワーを取得する場合、最近のフォロワー確認には GET /twitter/latest-followers/{screen_name}、カーソルで再開できるエクスポートには POST /twitter/followers/page、少量の定数取得には GET /twitter/followers/{screen_name}/{count} を使います。ページ取得では screen_name と任意の next_cursor を渡し、取得日時とカーソルを保存してユーザー ID で重複を除きます。返されるのは取得時点のスナップショットであり、過去の全フォロワー履歴ではありません。

FAQ

どのフォロワー取得エンドポイントを使うべきですか?

最近のサンプルには GET /twitter/latest-followers/{screen_name}、カーソル式エクスポートには POST /twitter/followers/page、件数を指定する場合は GET /twitter/followers/{screen_name}/{count} を使います。いずれも Bearer 認証が必要です。

フォロワーのエクスポート時に何を保存すべきですか?

指定した screen_name、エンドポイント、取得日時、ページ番号、送受信したカーソル、元のプロフィール行、正規化したユーザー ID を保存します。ユーザー ID で重複を除き、空の自己紹介や非公開アカウントのフラグはエラーではなくデータとして扱います。

フォロワーの取得結果から過去の全フォロー履歴が分かりますか?

分かりません。取得結果はその収集時点で返されたプロフィールのスナップショットです。フォロー解除、非公開化、凍結、プロフィール変更が起こるため、履歴を比較する場合は各実行に時刻を付けてスナップショットを追加保存します。

この用途で公式 public social data API ではなく TwexAPI を使う理由は?

フォロワーのエクスポート では https://docs.twexapi.io に記載された TwexAPI Bearer workflow を利用できます。通常の Post/Profile read は 5 Credits(約 $0.05/1K)で、対象プランは 20+ QPS を公開しています。新規アカウントには 20,000 starting Credits が付与されます。2026-08-20 時点の公式 Post/User read は $5/$10 per 1K で、rate limit は endpoint ごとに異なります。

TwexAPI でこのワークフローのコストは?

通常の読み取りは約 5 Credits です。公開換算では 1,000 回で 5,000 Credits(約 $0.05)、10,000 回で約 50,000 Credits です。実際の cost は endpoint ごとに異なるため https://twexapi.io/pricing を確認してください。

フォロワーデータは、収集方法が説明できるときに使いやすくなります。最近のフォロワーをすばやく見るなら latest followers、再利用できるデータセットを作るなら cursor 付きのページングを使います。

この記事では elonmusk を screen name の例として使います。実際には、分析する合理的な理由がある対象アカウントに置き換えてください。

適切なエンドポイントを選ぶ

Answer: 適切なエンドポイントを選ぶとは、この事例で api.twexapi.io の TwexAPI Bearer API を使う手順です。通常の読み取りは 5 Credits(約 $0.05/1K)、対象プランは 20+ QPS です。2026-08-20 時点の公式 Post/User read は $5/$10 per 1K で、rate limit は endpoint ごとに異なります。

タスクエンドポイント使う場面
最新のフォロワーを取得POST /v3/twitter/users/followersすばやい確認や、最近のフォロワー変化を見るとき。
フォロワーをページング取得POST /twitter/followers/page保存、重複排除、確認が必要な cursor ベースのエクスポート。
固定件数を取得GET /twitter/followers/{screen_name}/{count}必要件数が決まっている小さな一回限りの取得。

比較、補完、レポートに使うデータなら、ページングされたエクスポートを選びます。単一の大きなレスポンスより、確認記録を残しやすくなります。

最新のフォロワーを取得する

Answer: 最新のフォロワーを取得するとは、この事例で api.twexapi.io の TwexAPI Bearer API を使う手順です。通常の読み取りは 5 Credits(約 $0.05/1K)、対象プランは 20+ QPS です。2026-08-20 時点の公式 Post/User read は $5/$10 per 1K で、rate limit は endpoint ごとに異なります。

curl --request POST \
  --url https://api.twexapi.io/v3/twitter/users/followers \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "username": "elonmusk",
  "count": 20,
  "cursor": ""
}
'

このエンドポイントは最近のフォロワーをすばやく見る用途に向いています。「最近」は時間とともに変わるため、レスポンスと一緒に実行時刻を保存します。

フォロワーをページングする

Answer: フォロワーをページングするとは、この事例で api.twexapi.io の TwexAPI Bearer API を使う手順です。通常の読み取りは 5 Credits(約 $0.05/1K)、対象プランは 20+ QPS です。2026-08-20 時点の公式 Post/User read は $5/$10 per 1K で、rate limit は endpoint ごとに異なります。

POST /twitter/followers/page は screen_name と任意の next_cursor を受け取ります。1 ページ目では next_cursor を省略します。レスポンスに次の cursor が含まれる場合、それを次のリクエストに渡します。

curl --request POST \
  --url https://api.twexapi.io/twitter/followers/page \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '{
    "screen_name": "elonmusk"
  }'
{
  "code": 200,
  "msg": "success",
  "data": [],
  "has_next_page": true,
  "next_cursor": "1234567890"
}

Python コレクター

Answer: Python コレクターとは、この事例で api.twexapi.io の TwexAPI Bearer API を使う手順です。通常の読み取りは 5 Credits(約 $0.05/1K)、対象プランは 20+ QPS です。2026-08-20 時点の公式 Post/User read は $5/$10 per 1K で、rate limit は endpoint ごとに異なります。

次のコレクターは、指定したページ数だけ取得し、確認表で使いやすいフォロワー情報に整えます。

1import os
2from typing import Any
3
4import requests
5
6TOKEN = os.environ["TWEXAPI_BEARER_TOKEN"]
7BASE_URL = "https://api.twexapi.io"
8
9def headers() -> dict[str, str]:
10    return {"Authorization": f"Bearer {TOKEN}", "Content-Type": "application/json"}
11
12def get_latest_followers(screen_name: str, count: int = 20) -> list[dict[str, Any]]:
13    response = requests.post(
14        f"{BASE_URL}/v3/twitter/users/followers",
15        headers=headers(),
16        json={"username": screen_name, "count": count, "cursor": ""},
17        timeout=30,
18    )
19    response.raise_for_status()
20    data = response.json()
21    return data.get("data", []) if isinstance(data.get("data"), list) else data.get("data", {}).get("users", [])
22
23def get_followers_page(
24    screen_name: str,
25    *,
26    next_cursor: str | None = None,
27) -> dict[str, Any]:
28    payload: dict[str, Any] = {"screen_name": screen_name}
29    if next_cursor:
30        payload["next_cursor"] = next_cursor
31
32    response = requests.post(
33        f"{BASE_URL}/twitter/followers/page",
34        headers=headers(),
35        json=payload,
36        timeout=30,
37    )
38    response.raise_for_status()
39    return response.json()
40
41def normalize_follower(user: dict[str, Any]) -> dict[str, Any]:
42    return {
43        "user_id": user.get("user_id") or user.get("userId") or user.get("id"),
44        "screen_name": user.get("screen_name") or user.get("username"),
45        "name": user.get("name"),
46        "description": user.get("description") or "",
47        "followers_count": user.get("followers_count") or user.get("followersCount") or 0,
48        "verified": bool(user.get("verified")),
49        "protected": bool(user.get("protected")),
50        "created_at": user.get("created_at_datetime") or user.get("createdAtDatetime") or user.get("createdAt"),
51    }
52
53def collect_followers(screen_name: str, max_pages: int = 2) -> list[dict[str, Any]]:
54    rows: list[dict[str, Any]] = []
55    seen_ids: set[str] = set()
56    cursor = None
57
58    for _ in range(max_pages):
59        page = get_followers_page(screen_name, next_cursor=cursor)
60        for user in page.get("data", []):
61            row = normalize_follower(user)
62            user_id = str(row.get("user_id") or "")
63            if user_id and user_id in seen_ids:
64                continue
65            if user_id:
66                seen_ids.add(user_id)
67            rows.append(row)
68
69        cursor = page.get("next_cursor")
70        if not page.get("has_next_page") or not cursor:
71            break
72
73    return rows
74
75if __name__ == "__main__":
76    followers = collect_followers("elonmusk", max_pages=2)
77    print(len(followers))

データクレンジング

Answer: データクレンジングとは、この事例で api.twexapi.io の TwexAPI Bearer API を使う手順です。通常の読み取りは 5 Credits(約 $0.05/1K)、対象プランは 20+ QPS です。2026-08-20 時点の公式 Post/User read は $5/$10 per 1K で、rate limit は endpoint ごとに異なります。

  • 取得した各ページについて、screen_name、実行時刻、エンドポイント、cursor を記録します。
  • 利用可能な場合は、不変のユーザー ID を重複排除のキーにします。
  • 非公開アカウントのフラグや空のプロフィール文は、エラーではなくデータ状態として保持します。
  • フォロワー数だけでアカウントの質や意図を判断しないようにします。
  • フォロワーリストをアウトリーチや営業に使う場合は、事前に同意、プライバシー、法令順守を確認してください。

まとめ

すばやい確認には POST /v3/twitter/users/followers、再利用できるエクスポートには POST /twitter/followers/page を使います。

安定した流れは、ページングで取得し、cursor を保存し、プロフィール項目を整え、ユーザー ID で重複排除し、なぜそのフォロワー一覧を収集したのかを記録することです。

public social platform フォロワー一覧を Excel / CSV にエクスポートする方法 (API 活用ガイド)