本文へスキップ

学術研究のためのX(Twitter)APIとスクレイピングツール

2006年までの全アーカイブを検索し、投稿IDを100件ずつリハイドレートし、タイムライン、リプライ、フォロワーを取得できます。学術アクセスは研究に合わせて設計します。プロジェクトへのリクエスト付与から大幅な割引まで対応します。

目的: 必要な量:約

約2時間毎秒20リクエストでの収集時間
$15,000公式X APIの場合
$210からSorsa APIの場合(学術アクセス適用前)

学術アクセスならさらにお得です。リクエストの付与から大幅な割引まで、研究に合わせて設計します。

この計画で申し込む

研究に合わせて設計する学術アクセス

研究用のリクエストを付与

プロジェクトに必要なリクエストをSorsa APIアカウントに追加します。

プランの大幅な割引

長期または大規模なプロジェクト向けに、どのプランも学術価格で提供します。

承認されたプロジェクトに共通する内容

  • 全エンドポイント
  • 毎秒20リクエスト
  • 全ユーザーと同じドキュメントとAPI
  • チームからのすばやい回答

申し込める方

  • 博士課程の学生
  • 修士課程の学生
  • 教員
  • ポスドク
  • 研究スタッフ
  • NGOや報道機関の研究者

あらゆる分野の非営利研究が対象で、所属機関のメールアドレスからお申し込みいただきます。

申し込みは約2分です。その間も、100回分の無料リクエストを全エンドポイントでご利用いただけます。

学術アクセスに申し込む

研究に必要なあらゆる収集方法

APIキーは1つ。2006年の投稿にも今朝の投稿にも同じエンドポイントを使えます。

  • アーカイブ検索

    キーワードコーパス、イベント期間、長期の時系列。

    "heat wave" lang:en since:2022-07-01 until:2022-08-01 -filter:nativeretweets

    1リクエストで約20投稿、2006年まで

  • IDで投稿を取得

    共有データセットのリハイドレートや、公開コーパスの再現に。

    POST /tweet-info-bulk {"tweet_links": [100 IDs]}

    1リクエストで100投稿、それぞれ投稿者付き

  • アカウントのタイムライン

    政治家、ジャーナリスト、組織のパネル調査。

    from: と日付の指定、またはアカウントの全履歴には /user-tweets

    1リクエストで約20投稿、3,200件の上限なし

  • 会話

    リプライのツリー、引用の連鎖、リツイートしたアカウント。

    /comments, /quotes, /retweeters

    1リクエストで約20件

  • ネットワーク

    公開アカウントのフォロワーとフォロー先。

    /followers?username=…

    1ページ200プロフィール

  • プロフィールとアカウントの背景情報

    プロフィールを100件ずつ。「このアカウントについて」から国、ユーザー名の変更、認証状況も。

    /info-batch, /about

    1リクエストで100プロフィール

  • リスト、コミュニティ、スペース

    Xリスト1つで最大5,000アカウントを監視。コミュニティの投稿とメンバー、スペースのメタデータ。

    /list-tweets?list_id=…

    1リクエストで約20投稿

検索コマンド、ページネーション、ページサイズはドキュメントをご覧ください:過去データ、検索コマンド、IDで投稿を取得。

すべての投稿に変数が付いてきます

Coastal Climate Lab@coastal_climate_lab

@heat_records_archiveさんへの返信

オープンデータセットを公開しました。2022年の欧州熱波に関する120万件の投稿を、投稿IDとリハイドレート用のコード付きで提供します。#heatwave

1日あたりの投稿数(2022年6月〜8月)

2023年8月18日 午前10:42

9.64万件の表示211件のブックマーク

42件の返信318件のリポスト27件の引用1,200件のいいね

userusername, followers_count, created_at, verified, location
conversation_id_strin_reply_to_tweet_idスレッド内の位置
full_textlang本文全文と言語
entitiesメディアとリンク
created_at投稿日時(秒単位)
view_countbookmark_count表示回数とブックマーク
likes_countretweet_countreply_countquote_countエンゲージメント(取得時点)
古い投稿にも、現在の投稿と同じフィールドが付きます。

研究設計で考慮すべき点

  • 削除された投稿と非公開アカウントは返されません。リハイドレートしたリストは元より少なくなります。

  • カウントは現在の値です。いいね、表示回数、フォロワー数は収集時点のものです。推移を見るには定期的に収集し、各時点のスナップショットを保存してください。

  • プロフィールは現在のものです。2014年の投稿にも、投稿者の現在のプロフィールが付きます。

  • ポーリング方式で、ストリーミングはありません。新しい投稿はリクエスト時に取得します。1リクエストで最大5,000アカウントのXリストを読み取れます。

  • 取得できないもの:投稿にいいねしたアカウント、ユーザーのいいねやブックマーク、DM、過去のフォロワー一覧。

本格的な収集を計画する前に、無料リクエストで期間指定を試してください。

IDリストからデータセットへ

rehydrate.py
import csv, json, time, requests

URL = "https://api.sorsa.io/v3/tweet-info-bulk"
KEY = "YOUR_API_KEY"
ids = [row[0] for row in csv.reader(open("tweet_ids.csv"))]

with open("tweets.ndjson", "w") as out:
    for i in range(0, len(ids), 100):
        while True:
            r = requests.post(URL, headers={"ApiKey": KEY},
                              json={"tweet_links": ids[i:i + 100]})
            if r.status_code != 429:
                break
            time.sleep(1)  # 20 requests per second per key
        r.raise_for_status()
        for tweet in r.json()["tweets"]:
            out.write(json.dumps(tweet) + "\n")
  • 100万件のIDは約8分(毎秒20リクエストの場合)。
  • 失敗したリクエストは課金されません。
  • AIアシスタントで書きますか?Claude Code、Cursor、Codexにドキュメントファイルを渡すか、MCPサーバーを接続してください。AIで開発

倫理審査委員会と研究方法のセクションのために

審査でよく聞かれること

どのようなデータですか?
公開投稿とプロフィールのみです。非公開アカウントとDMは含みません。
対象者への働きかけはありますか?
ありません。Sorsa APIは読み取り専用で、投稿、いいね、フォロー、メッセージ送信は一切行いません。
誰のアカウントを使いますか?
研究者のものも他の誰のものも、XアカウントやログインIDは一切使いません。
プロバイダーは何を保持しますか?
リクエストの履歴を1年間、レスポンス全文を30日間です。
プロジェクトを知っているのは誰ですか?
誰が問い合わせているかはXに伝わりません。キー、アカウント、身元はSorsaの外に出ません。
データのコピーはどこに置きますか?
データ管理計画に定めた場所です。データは研究者のものです。
書類は用意できますか?
ご要望に応じて、倫理審査委員会向けにデータソースに関する短い書面を作成します。

研究方法の記載例

2.1 データ収集

投稿は、公開X(Twitter)データのための独立系APIであるSorsa API(https://api.sorsa.io)を通じ、2024年1月1日から3月31日までを対象に全アーカイブ検索で収集した。

学術アクセスに申し込む

所要時間は約2分です。チームのメンバーがすべての申し込みを読み、メールで回答します。

今後の流れ

  1. 1

    フォームを送信します。

  2. 2

    チームが内容を確認します。

    不明な点があればお尋ねします。

  3. 3

    アクセス内容を決めます。

    研究に必要なリクエスト、または大幅な割引を、研究期間を通して提供します。

  4. 4

    収集を始めます。

    アクセスはSorsa APIアカウントに反映されます。どのキーも毎秒20リクエストです。

その間も、100回分の無料リクエストを全エンドポイントでご利用いただけます。100回分の無料リクエストで始める

メールがよければ、所属機関のアドレスからcontacts@sorsa.ioへお送りください。

1申請者について

大学または研究機関のアドレス。

大学、研究機関、または組織

立場

教員ページ、研究室ページ、ORCID、Google Scholar。

2研究について

2〜5文で十分です。

必要なデータ
投稿やプロフィールのおおよその件数は?
スケジュール
データはいつ必要ですか?
プロジェクトの期間は?
プロジェクトの資金源は?任意

提案内容の参考にするもので、これだけで可否を決めることはありません。

この情報は、申し込みの審査と回答にのみ使用します。プライバシーポリシー

または、所属機関のアドレスからcontacts@sorsa.ioへメールをお送りください。

研究者からよくある質問

大学や研究機関の博士・修士課程の学生、教員、ポスドク、研究スタッフで、あらゆる分野の非営利研究が対象です。所属機関のメールアドレスからお申し込みください。

研究に合わせたアクセスです。必要なリクエストのアカウントへの付与から、プランの大幅な割引まで対応します。全エンドポイント、毎秒20リクエスト、ドキュメントとサポートは他のお客様と同じです。

チームのメンバーが申し込みを読み、メールで回答します。不明な点があればお尋ねし、量と期間を決めたうえで、Sorsa APIアカウントにアクセスを追加します。

はい。どのアカウントにも100回分の無料リクエストがあります。クレジットカード不要・有効期限なしで、全エンドポイントで使えます。IDで最大10,000投稿、またはフォロワープロフィール20,000件分で、クエリの試行には十分です。

お使いのメールアドレスで申し込み、教員ページ、研究室ページ、ORCID、Google Scholarのリンクを追加してください。所属を確認できます。

2006年までです。全アーカイブ検索ではXの検索コマンド(from:、to:、since:、until:、lang:、完全一致、ハッシュタグ、エンゲージメントの絞り込み)を使えます。アカウントのタイムラインは最初の投稿までさかのぼれ、3,200件の上限はありません。

はい。1リクエストで100件のIDを処理し、各投稿に投稿者の完全なプロフィールが付きます。100万件のIDは10,000リクエストで、毎秒20リクエストなら約8分です。元の収集後に削除または非公開にされた投稿は返されないので、IDより投稿数は少なくなります。

削除された投稿、非公開アカウント、DM、投稿にいいねしたアカウントの一覧、ユーザーのいいねとブックマーク、過去時点のフォロワー一覧です。カウントとプロフィールは収集時点のものです。ストリーミングはなくポーリング方式で、1リクエストで最大5,000アカウントのXリストを読み取れます。

データは公開投稿とプロフィールであること、Sorsa APIは読み取り専用で投稿、いいね、フォロー、メッセージ送信を行わないこと、XアカウントやログインIDは一切関わらないこと、データに含まれる人物に連絡しないことです。Sorsaはリクエストのログを1年間、レスポンス全文を30日間保持します。ご要望に応じて、データソースに関する短い書面を作成します。

投稿IDと収集コードを共有すれば、誰でもリハイドレートして検証できます。それ以上の共有範囲は、倫理審査の承認とデータ管理計画に従ってください。

研究方法のセクションに「データは、公開X(Twitter)データのための独立系APIであるSorsa API(https://api.sorsa.io)を通じて収集した。」と記載してください。BibTeXはこのページのセクション5にあります。

はい。アカウントには複数のAPIキーを作成できます。メンバーごとにキーを渡し、各キーの利用状況をダッシュボードで確認してください。

はい。申し込み時にお知らせいただければ、プロジェクト宛ての請求書を手配します。

Xは2023年にAcademic Researchトラックを閉鎖しました。従量課金のAPIは投稿1件あたり$0.005、プロフィール1件あたり$0.010です。デジタルサービス法に基づくEU向けの経路は、EUのシステミックリスクに関する研究のみが対象で、別途申請が必要です。Sorsa APIはあらゆる分野とテーマに対応し、キーは1つで、Xの開発者アカウントも不要です。

TwitterAPI.ioは、研究プロジェクトの支払い額の半額(上限$200)を支払い後に返金します。Sorsa APIは、リクエストの付与から大幅な割引まで、収集の前に研究に合わせてアクセスを設計します。

その場合はプランをご利用ください。投稿は1,000件あたり$0.014からで、全プランに全エンドポイントが含まれます。より大きな利用量については営業に相談してください。

学術研究のためのTwitter/X APIとスクレイピングツール

リクエストの付与から大幅な割引まで、研究に合わせて設計する学術アクセスです。

研究に合わせて設計する学術アクセス

  • 研究用のリクエストを付与プロジェクトに必要なリクエストをSorsa APIアカウントに追加します。
  • プランの大幅な割引長期または大規模なプロジェクト向けに、どのプランも学術価格で提供します。
学術アクセスに申し込む

研究に必要なあらゆる収集方法

APIキーは1つ。2006年の投稿にも今朝の投稿にも同じエンドポイントを使えます。

すべての投稿に変数が付いてきます

Coastal Climate Lab@coastal_climate_lab
user

@heat_records_archiveさんへの返信

in_reply_to_tweet_id

オープンデータセットを公開しました:2022年のヨーロッパの熱波に関する投稿120万件。投稿IDと再取得用コード付きです。#heatwave

full_text

2023年8月18日 午前10:42

created_at

42 返信318 リポスト27 引用1.2K いいね

likes_count …

古い投稿にも、現在の投稿と同じフィールドが付きます。

IDリストからデータセットへ

rehydrate.py
import csv, json, time, requests

URL = "https://api.sorsa.io/v3/tweet-info-bulk"
KEY = "YOUR_API_KEY"
ids = [row[0] for row in csv.reader(open("tweet_ids.csv"))]

with open("tweets.ndjson", "w") as out:
    for i in range(0, len(ids), 100):
        while True:
            r = requests.post(URL, headers={"ApiKey": KEY},
                              json={"tweet_links": ids[i:i + 100]})
            if r.status_code != 429:
                break
            time.sleep(1)  # 20 requests per second per key
        r.raise_for_status()
        for tweet in r.json()["tweets"]:
            out.write(json.dumps(tweet) + "\n")
  • 100万件のIDは約8分(毎秒20リクエストの場合)。
  • 失敗したリクエストは課金されません。
  • AIアシスタントで書きますか? AIで開発

倫理審査委員会と研究方法のセクションのために

どのようなデータですか?

公開投稿とプロフィールのみです。非公開アカウントとDMは含みません。

対象者への働きかけはありますか?

ありません。Sorsa APIは読み取り専用で、投稿、いいね、フォロー、メッセージ送信は一切行いません。

誰のアカウントを使いますか?

研究者のものも他の誰のものも、XアカウントやログインIDは一切使いません。

プロバイダーは何を保持しますか?

リクエストの履歴を1年間、レスポンス全文を30日間です。

プロジェクトを知っているのは誰ですか?

誰が問い合わせているかはXに伝わりません。キー、アカウント、身元はSorsaの外に出ません。

データのコピーはどこに置きますか?

データ管理計画に定めた場所です。データは研究者のものです。

書類は用意できますか?

ご要望に応じて、倫理審査委員会向けにデータソースに関する短い書面を作成します。

学術アクセスに申し込む

所要時間は約2分です。チームのメンバーが1件ずつすべて読みます。

  1. 1送信
  2. 2確認します
  3. 3合意します
  4. 4集めるもの
100回分の無料リクエストから始める

メールをご希望ですか?所属機関のアドレスからcontacts@sorsa.ioへお送りください。

研究者からよくある質問