学術研究のためのX(Twitter)APIとスクレイピングツール
2006年までの全アーカイブを検索し、投稿IDを100件ずつリハイドレートし、タイムライン、リプライ、フォロワーを取得できます。学術アクセスは研究に合わせて設計します。プロジェクトへのリクエスト付与から大幅な割引まで対応します。
クレジットカード不要・有効期限なし
目的: 必要な量:約
学術アクセスならさらにお得です。リクエストの付与から大幅な割引まで、研究に合わせて設計します。
この計画で申し込む研究に合わせて設計する学術アクセス
研究用のリクエストを付与
プロジェクトに必要なリクエストをSorsa APIアカウントに追加します。
プランの大幅な割引
長期または大規模なプロジェクト向けに、どのプランも学術価格で提供します。
承認されたプロジェクトに共通する内容
- 全エンドポイント
- 毎秒20リクエスト
- 全ユーザーと同じドキュメントとAPI
- チームからのすばやい回答
申し込める方
- 博士課程の学生
- 修士課程の学生
- 教員
- ポスドク
- 研究スタッフ
- NGOや報道機関の研究者
あらゆる分野の非営利研究が対象で、所属機関のメールアドレスからお申し込みいただきます。
申し込みは約2分です。その間も、100回分の無料リクエストを全エンドポイントでご利用いただけます。
学術アクセスに申し込む研究に必要なあらゆる収集方法
APIキーは1つ。2006年の投稿にも今朝の投稿にも同じエンドポイントを使えます。
アーカイブ検索
キーワードコーパス、イベント期間、長期の時系列。
"heat wave" lang:en since:2022-07-01 until:2022-08-01 -filter:nativeretweets1リクエストで約20投稿、2006年まで
IDで投稿を取得
共有データセットのリハイドレートや、公開コーパスの再現に。
POST /tweet-info-bulk {"tweet_links": [100 IDs]}1リクエストで100投稿、それぞれ投稿者付き
アカウントのタイムライン
政治家、ジャーナリスト、組織のパネル調査。
from: と日付の指定、またはアカウントの全履歴には /user-tweets1リクエストで約20投稿、3,200件の上限なし
会話
リプライのツリー、引用の連鎖、リツイートしたアカウント。
/comments, /quotes, /retweeters1リクエストで約20件
ネットワーク
公開アカウントのフォロワーとフォロー先。
/followers?username=…1ページ200プロフィール
プロフィールとアカウントの背景情報
プロフィールを100件ずつ。「このアカウントについて」から国、ユーザー名の変更、認証状況も。
/info-batch, /about1リクエストで100プロフィール
リスト、コミュニティ、スペース
Xリスト1つで最大5,000アカウントを監視。コミュニティの投稿とメンバー、スペースのメタデータ。
/list-tweets?list_id=…1リクエストで約20投稿
すべての投稿に変数が付いてきます
@heat_records_archiveさんへの返信
オープンデータセットを公開しました。2022年の欧州熱波に関する120万件の投稿を、投稿IDとリハイドレート用のコード付きで提供します。#heatwave
2023年8月18日 午前10:42
9.64万件の表示211件のブックマーク
42件の返信318件のリポスト27件の引用1,200件のいいね
userusername, followers_count, created_at, verified, locationconversation_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リストからデータセットへ
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")library(httr2)
library(jsonlite)
ids <- readLines("tweet_ids.txt")
batches <- split(ids, ceiling(seq_along(ids) / 100))
fetch <- function(batch) {
resp <- request("https://api.sorsa.io/v3/tweet-info-bulk") |>
req_headers(ApiKey = Sys.getenv("SORSA_API_KEY")) |>
req_body_json(list(tweet_links = as.list(batch))) |>
req_retry(max_tries = 5) |>
req_perform()
resp_body_json(resp)$tweets
}
tweets <- unlist(lapply(batches, fetch), recursive = FALSE)
write_json(tweets, "tweets.json", auto_unbox = TRUE)- 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日までを対象に全アーカイブ検索で収集した。
データセットを共有しますか?投稿IDとコードを共有すれば、他の研究者がリハイドレートして検証できます。
学術アクセスに申し込む
所要時間は約2分です。チームのメンバーがすべての申し込みを読み、メールで回答します。
今後の流れ
- 1
フォームを送信します。
- 2
チームが内容を確認します。
不明な点があればお尋ねします。
- 3
アクセス内容を決めます。
研究に必要なリクエスト、または大幅な割引を、研究期間を通して提供します。
- 4
収集を始めます。
アクセスはSorsa APIアカウントに反映されます。どのキーも毎秒20リクエストです。
その間も、100回分の無料リクエストを全エンドポイントでご利用いただけます。100回分の無料リクエストで始める
メールがよければ、所属機関のアドレスからcontacts@sorsa.ioへお送りください。
研究者からよくある質問
研究に合わせて設計する学術アクセス
- 研究用のリクエストを付与プロジェクトに必要なリクエストをSorsa APIアカウントに追加します。
- プランの大幅な割引長期または大規模なプロジェクト向けに、どのプランも学術価格で提供します。
研究に必要なあらゆる収集方法
APIキーは1つ。2006年の投稿にも今朝の投稿にも同じエンドポイントを使えます。
すべての投稿に変数が付いてきます
user@heat_records_archiveさんへの返信
in_reply_to_tweet_idオープンデータセットを公開しました:2022年のヨーロッパの熱波に関する投稿120万件。投稿IDと再取得用コード付きです。#heatwave
full_text2023年8月18日 午前10:42
created_at42 返信318 リポスト27 引用1.2K いいね
likes_count …古い投稿にも、現在の投稿と同じフィールドが付きます。
IDリストからデータセットへ
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")library(httr2)
library(jsonlite)
ids <- readLines("tweet_ids.txt")
batches <- split(ids, ceiling(seq_along(ids) / 100))
fetch <- function(batch) {
resp <- request("https://api.sorsa.io/v3/tweet-info-bulk") |>
req_headers(ApiKey = Sys.getenv("SORSA_API_KEY")) |>
req_body_json(list(tweet_links = as.list(batch))) |>
req_retry(max_tries = 5) |>
req_perform()
resp_body_json(resp)$tweets
}
tweets <- unlist(lapply(batches, fetch), recursive = FALSE)
write_json(tweets, "tweets.json", auto_unbox = TRUE)- 100万件のIDは約8分(毎秒20リクエストの場合)。
- 失敗したリクエストは課金されません。
- AIアシスタントで書きますか? AIで開発
倫理審査委員会と研究方法のセクションのために
どのようなデータですか?
公開投稿とプロフィールのみです。非公開アカウントとDMは含みません。
対象者への働きかけはありますか?
ありません。Sorsa APIは読み取り専用で、投稿、いいね、フォロー、メッセージ送信は一切行いません。
誰のアカウントを使いますか?
研究者のものも他の誰のものも、XアカウントやログインIDは一切使いません。
プロバイダーは何を保持しますか?
リクエストの履歴を1年間、レスポンス全文を30日間です。
プロジェクトを知っているのは誰ですか?
誰が問い合わせているかはXに伝わりません。キー、アカウント、身元はSorsaの外に出ません。
データのコピーはどこに置きますか?
データ管理計画に定めた場所です。データは研究者のものです。
書類は用意できますか?
ご要望に応じて、倫理審査委員会向けにデータソースに関する短い書面を作成します。
学術アクセスに申し込む
所要時間は約2分です。チームのメンバーが1件ずつすべて読みます。所要時間は2分ほど。返信はメールで行います。
- 1送信
- 2確認します
- 3合意します
- 4集めるもの
メールをご希望ですか?所属機関のアドレスからcontacts@sorsa.ioへお送りください。
研究者からよくある質問
次に読む
申し込める方
- 博士課程の学生
- 修士課程の学生
- 教員
- ポスドク
- 研究スタッフ
- NGOや報道機関の研究者
- 卒業論文を書く学部生
- 講座を担当する教員
あらゆる分野の非営利研究が対象で、所属機関のメールアドレスからお申し込みいただきます。
学術アクセスに申し込むアーカイブ検索
キーワードコーパス、イベント期間、長期の時系列。
"heat wave" lang:en since:2022-07-01 until:2022-08-01 -filter:nativeretweets1リクエストで約20投稿、2006年まで
ドキュメントで開くIDで投稿を取得
共有データセットのリハイドレートや、公開コーパスの再現に。
POST /tweet-info-bulk {"tweet_links": [100 IDs]}1リクエストで100投稿、それぞれ投稿者付き
ドキュメントで開くアカウントのタイムライン
政治家、ジャーナリスト、組織のパネル調査。
from: と日付の指定、またはアカウントの全履歴には /user-tweets1リクエストで約20投稿、3,200件の上限なし
ドキュメントで開くプロフィールとアカウントの背景情報
プロフィールを100件ずつ。「このアカウントについて」から国、ユーザー名の変更、認証状況も。
/info-batch, /about1リクエストで100プロフィール
ドキュメントで開くリスト、コミュニティ、スペース
Xリスト1つで最大5,000アカウントを監視。コミュニティの投稿とメンバー、スペースのメタデータ。
/list-tweets?list_id=…1リクエストで約20投稿
ドキュメントで開く研究設計で考慮すべき点
削除された投稿と非公開アカウントは返されません。リハイドレートしたリストは元より少なくなります。
カウントは現在の値です。いいね、表示回数、フォロワー数は収集時点のものです。推移を見るには定期的に収集し、各時点のスナップショットを保存してください。
プロフィールは現在のものです。2014年の投稿にも、投稿者の現在のプロフィールが付きます。
ポーリング方式で、ストリーミングはありません。新しい投稿はリクエスト時に取得します。1リクエストで最大5,000アカウントのXリストを読み取れます。
取得できないもの:投稿にいいねしたアカウント、ユーザーのいいねやブックマーク、DM、過去のフォロワー一覧。
本格的な収集を計画する前に、無料リクエストで期間指定を試してください。
研究方法の記載例
2.1 データ収集
投稿はSorsa API(https://api.sorsa.io)、X(Twitter)の公開データを提供する独立系APIで、2024年1月1日から3月31日の全アーカイブ検索により収集しました。
データセットを共有しますか?投稿IDとコードを共有すれば、他の研究者がリハイドレートして検証できます。
誰が申し込めますか?
大学や研究機関の博士課程・修士課程の学生、教員、ポスドク、研究スタッフ。あらゆる分野の非営利研究が対象です。大学や研究機関の博士課程・修士課程の学生、教員、ポスドク。あらゆる分野の非営利研究が対象です。所属機関のメールアドレスからお申し込みください。
学術アクセスには何が含まれますか?
研究内容に合わせたアクセス:必要なリクエスト数をアカウントに付与し、プランも大幅に割引します。全エンドポイント、毎秒20リクエスト、ドキュメントとサポートはすべてのお客様と同じです。
申し込み後はどうなりますか?
所要時間は約2分です。チームのメンバーがすべての申し込みを読み、メールで回答します。申請を確認し、メールでご連絡します。 チームのメンバーが申し込みを読み、メールで回答します。不明な点があればお尋ねし、量と期間を決めたうえで、Sorsa APIアカウントにアクセスを追加します。
回答を待つ間に始められますか?
はい。どのアカウントにも100回分の無料リクエストがあります。クレジットカード不要・有効期限なしで、全エンドポイントで使えます。IDで最大10,000投稿、またはフォロワープロフィール20,000件分で、クエリの試行には十分です。
所属機関のメールアドレスがありません。
お使いのメールアドレスで申し込み、教員ページ、研究室ページ、ORCID、Google Scholarのリンクを追加してください。所属を確認できます。
データはどこまでさかのぼれますか?
2006年までです。全アーカイブ検索ではXの検索コマンド(from:、to:、since:、until:、lang:、完全一致、ハッシュタグ、エンゲージメントの絞り込み)を使えます。アカウントのタイムラインは最初の投稿までさかのぼれ、3,200件の上限はありません。
投稿IDのデータセットをリハイドレートできますか?
はい。1リクエストで100件のIDを処理し、各投稿に投稿者の完全なプロフィールが付きます。100万件のIDは10,000リクエストで、毎秒20リクエストなら約8分です。元の収集後に削除または非公開にされた投稿は返されないので、IDより投稿数は少なくなります。
データに含まれないものは?
削除された投稿、非公開アカウント、DM、投稿にいいねしたアカウントの一覧、ユーザーのいいねとブックマーク、過去時点のフォロワー一覧です。カウントとプロフィールは収集時点のものです。ストリーミングはなくポーリング方式で、1リクエストで最大5,000アカウントのXリストを読み取れます。
倫理審査委員会には何を伝えればよいですか?
データは公開された投稿とプロフィールであること。Sorsa APIは読み取り専用で、投稿、いいね、フォロー、メッセージ送信は一切行わないこと。Xのアカウントやログインは関与しないこと。データに含まれる人々に連絡しないこと。リクエストのログは1年間、完全なレスポンスは30日間保管します。ご要望があれば、データソースについての短い書簡を作成します。
データセットを共有できますか?
投稿IDと収集コードを共有すれば、誰でもリハイドレートして検証できます。それ以上の共有範囲は、倫理審査の承認とデータ管理計画に従ってください。
Sorsa APIの引用方法は?
手法の章では:「データはSorsa API(https://api.sorsa.io)、X(Twitter)の公開データを提供する独立系APIを通じて収集した。」BibTeXはこのページのセクション5にあります。
共著者も同じアクセスを使えますか?
はい。アカウントには複数のAPIキーを作成できます。メンバーごとにキーを渡し、各キーの利用状況をダッシュボードで確認してください。
大学宛てに請求書を発行できますか?
はい。申し込み時にお知らせいただければ、プロジェクト宛ての請求書を手配します。
Xは現在、研究者に何を提供していますか?
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から、全プランで全エンドポイント。さらに大量の場合は営業に相談ください。
16件すべての質問
該当する質問がありません。contacts@sorsa.ioまでご連絡ください。