Search Tweets
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[Pythonライブラリ]]
目次
#contents
*Search Tweets(recent) [#yc40455d]
Search Tweetsではツイートの取得ができる。~
方法が2種類あり、recent(GET /2/tweets/search/recent)とall...
recentは、ツイートの投稿日時を指定してツイートを取得する...
allは、ツイートの投稿日時を指定してツイートを取得しても投...
しかし、allはアクセスレベルAcademic Researchが必要になる。~
*レート制限 [#rb001310]
||Essential|Elevated|Academic Research|
|1ヶ月あたりのツイート取得制限|50万件|200万件|1000万件|
|1アカウントあたりのプロジェクト(稼働アプリ)制限|1アプリ|...
|1アプリあたりの稼働ユーザ制限|1ユーザ|3ユーザ|1ユーザ|
|1アプリあたりのリクエスト回数|450(回/15分)|450(回/15分)|...
|1ユーザあたりのリクエスト回数|180(回/15分)|180(回/15分)|...
*パラメータ [#t61fc103]
パラメータを簡単な説明と共に列挙し、パラメータの補足を加...
|名前|型|説明|
|query|文字列|取得したいツイートを検索する|
|next_token|文字列|前回の取得から遡ってツイートを取得する...
|since_id|文字列|指定したIDより大きいツイートを取得する|
|until_id|文字列|指定したIDより小さいツイートを取得する|
|max_results|整数|1リクエストあたりのツイート取得件数を指...
|start_time|日付|取得したいツイートのうち、最も古い日付を...
|end_time|日付|取得したいツイートのうち、最も新しい日付を...
|sort_order|列挙列|取得したツイートの順番を指定する|
|tweet.fields|列挙列|取得したツイートに関する情報を指定し...
|media.fields|列挙列|取得したツイートに含まれる画像や動画...
|user.fields|列挙列|取得したツイートを投稿したユーザに関...
|place.fields|列挙列|場所に関する情報を指定し、加える|
|poll.fields|列挙列|投票に関する情報を指定し、加える|
|expansions|列挙列|取得したツイートの追加データを指定し、...
**sort_order [#sfef28ee]
以下をスペースを入れずにカンマ(,)区切りで列挙して指定する。
|名前|説明|
|recency|新しい順に並ぶ|
|relevancy|関連する順に並ぶ|
両方指定すると、新しい順に並んだ後、関連する順に並ぶと思...
**tweet.fields [#c0b557bd]
以下をスペースを入れずにカンマ(,)区切りで列挙して指定する。
|名前|説明|
|attachments|添付ファイルデータ|
|author_id|取得したツイートを投稿したユーザのID|
|context_annotations|注釈データ|
|conversation_id|返信先のツイートのID|
|created_at|ツイートの投稿日時|
|entities|特殊テキストデータ|
|geo|場所データ|
|id|ツイートのID|
|in_reply_to_user_id|返信先のツイートを投稿したユーザのID|
|lang|ツイートの言語|
|non_public_metrics|非公開機械的指標データ|
|public_metrics|公開指標データ|
|organic_metrics|非公開非機械的指標データ|
|promoted_metrics|非公開宣伝指標データ|
|possibly_sensitive|ツイートが成人向けかどうか|
|referenced_tweets|リツイートデータ|
|reply_settings|このツイートに返信できるユーザ|
|source|ユーザがツイートしたアプリ名|
|text|ツイート文|
|withheld|凍結コンテンツデータ|
**media.fields [#w4338e72]
以下をスペースを入れずにカンマ(,)区切りで列挙して指定する。
|名前|説明|
|duration_ms|動画の長さ|
|height|コンテンツの高さ|
|media_key|メディアコンテンツのID|
|preview_image_url|サムネイル画像のURL|
|type|コンテンツのタイプ|
|url|メディアコンテンツのURL|
|width|コンテンツの幅|
|public_metrics|動画の合計再生回数データ|
|non_public_metrics|メディアコンテンツの非公開機械的指標...
|organic_metrics|メディアコンテンツの非公開非機械的指標デ...
|promoted_metrics|メディアコンテンツの非公開宣伝指標データ|
|alt_text|アクセシビリティを有効にしてサポートするための...
|variants|異なる複数の表示、再生データ|
**user.fields [#c17445c3]
以下をスペースを入れずにカンマ(,)区切りで列挙して指定する。
|名前|説明|
|created_at|ユーザの作成日時|
|description|ユーザのプロフィール文|
|entities|プロフィール文に含まれる特殊テキストデータ|
|id|ユーザのID|
|location|ユーザの存在場所|
|name|ユーザの名前|
|pinned_tweet_id|ピン止めツイートのID|
|profile_image_url|プロフィールに使用されている画像URL|
|protected|ユーザが非公開かどうか|
|public_metrics|ユーザのアクティビティデータ|
|url|プロフィールに指定されているURL|
|username|ユーザの表示名|
|verified|認証済みユーザかどうか|
|withheld|凍結コンテンツデータ|
**place.fields [#w9c6ee3d]
以下をスペースを入れずにカンマ(,)区切りで列挙して指定する。
|名前|説明|
|contained_within|参照された場所を含む既知の場所のID|
|country|場所が属する国名|
|country_code|この場所が属する国コード|
|full_name|地名の正式名称|
|geo|場所データ|
|id|場所のID|
|name|この場所の略称|
|place_type|場所の種類|
**poll.fields [#u703e94f]
以下をスペースを入れずにカンマ(,)区切りで列挙して指定する。
|名前|説明|
|duration_minutes|投票期間|
|end_datetime|投票の終了日時|
|id|投票の終了日時|
|options|投票の各選択肢のデータ|
|voting_status|投票が継続されているか終了しているか|
**expansions [#md3cce85]
以下をスペースを入れずにカンマ(,)区切りで列挙して指定する。
|名前|説明|
|attachments.poll_ids|投票のID|
|attachments.media_keys|添付されたメディアのID|
|author_id|取得したツイートを投稿したユーザのID|
|entities.mentions.username|ユーザメンション(@)として認識...
|geo.place_id|場所のID|
|in_reply_to_user_id|返信先のツイートを投稿したユーザのID|
|referenced_tweets.id|参照ツイートのID|
|referenced_tweets.id.author_id|参照ツイートのID|
*取得できる情報 [#y8843a38]
取得できる情報を簡単な説明と共に列挙し、情報の補足を加え...
|名前|型|説明|
|data|配列|ツイートデータ|
|includes|辞書|拡張データ|
|errors|辞書|エラーデータ|
|meta|辞書|メタデータ|
エラーが無く、1件もツイートを取得できなかった場合はmetaの...
**data(ツイートデータ) [#fd3c6429]
ツイートのデータに関する情報。~
取得できた分だけ長さは大きくなる。~
すなわち、1リクエストあたりに取得できたツイート数(meta.co...
長さの最小値は1、最大値は100。~
Tweet object(ツイートオブジェクト)と構造は同じ。
|名前|型|説明|
|id|文字列|ツイートのID|
|text|文字列|ツイート文|
|lang|文字列|ツイートの言語|
|author_id|文字列|取得したツイートを投稿したユーザのID|
|source|文字列|ユーザがツイートしたアプリ名|
|reply_settings|文字列|このツイートに返信できるユーザ|
|conversation_id|文字列|返信先のツイートのID(返信ツイート...
|in_reply_to_user_id|文字列|返信先のツイートを投稿したユ...
|created_at|日付|ツイートの投稿日時|
|possibly_sensitive|ブール値|ツイートが成人向けかどうか|
|referenced_tweets|配列|リツイートデータ|
|context_annotations|配列|注釈データ|
|public_metrics|辞書|公開指標データ|
|entities|辞書|特殊テキストデータ|
|attachments|辞書|添付ファイルデータ|
|geo|辞書|場所データ|
|withheld|辞書|凍結コンテンツデータ|
|non_public_metrics|辞書|ツイートの非公開機械的指標データ|
|organic_metrics|辞書|ツイートの非公開非機械的指標データ|
|promoted_metrics|辞書|ツイートの非公開宣伝指標データ|
***referenced_tweets(リツイートデータ) [#t0b3a915]
取得したツイートが参照しているツイートに関する情報。
|名前|型|説明|
|id|文字列|参照先のツイートのID|
|type|列挙型|参照元のツイートと参照先のツイートの関係|
***context_annotations(注釈データ) [#a6074300]
ドメイン名や組織名などに関する情報。
|名前|型|説明|
|domain|辞書|ドメイン分類データ|
|entity|辞書|ドメイン分類エンティティデータ|
-domain(ドメイン分類データ)
|名前|型|説明|
|id|文字列|ドメインのID|
|name|文字列|ドメイン名|
|description|文字列|ドメイン分類の長い形式の説明|
-entity(ドメイン分類エンティティデータ)
|名前|型|説明|
|id|文字列|明示的に言及されている人や場所、製品、組織など...
|name|文字列|明示的に言及されている人や場所、製品、組織な...
|description|文字列|エンティティの追加情報|
***public_metrics(公開指標データ) [#t73d72bc]
取得したツイートの「いいね」数やリツイートされた回数など...
|名前|型|説明|
|like_count|整数|いいね数|
|reply_count|整数|返信数|
|retweet_count|整数|リツイート数|
|quote_count|整数|引用数|
***entities(特殊テキストデータ) [#b138bf0d]
URLなど特別な意味を持つテキストに関する情報。
|名前|型|説明|
|annotations|配列|注釈データ|
|urls|配列|URLデータ|
|hashtags|配列|ハッシュタグ(#)データ|
|mentions|配列|ユーザメンション(@)データ|
|cashtags|配列|キャッシュタグ($)データ|
-annotations(注釈データ)
|名前|型|説明|
|start|整数|注釈をつけるためのテキストの開始位置|
|end|整数|注釈をつけるためのエキスとの終了位置|
|probability|数値|注釈の信頼度|
|type|整数|エンティティの種類|
|normalized_text|文字列|注釈タイプ決定に使用されるテキスト|
-urls(URLデータ)
|名前|型|説明|
|start|整数|URLの開始位置|
|end|整数|URLの終了位置|
|url|文字列|Twitterによる短縮形式のURL(data.(辞書n番目).t...
|expanded_url|文字列|完全な形式のURL|
|display_url|文字列|Twitterクライアントに表示されるURL|
|unwound_url|文字列|完全な宛先URL|
-hashtags(ハッシュタグ(#)データ)
|名前|型|説明|
|start|整数|ハッシュタグ(#)の開始位置|
|end|整数|ハッシュタグ(#)の終了位置|
|tag|文字列|ハッシュタグ(#)のテキスト(data.(辞書n番目).te...
-mentions(ユーザメンション(@)データ)
|名前|型|説明|
|start|整数|ユーザメンション(@)の開始位置|
|end|整数|ユーザメンション(@)の終了位置|
|username|文字列|ユーザメンション(@)として認識される文字...
-cashtags(キャッシュタグ($)データ)
|名前|型|説明|
|start|整数|キャッシュタグ($)の開始位置|
|end|整数|キャッシュタグ($)の終了位置|
|tag|文字列|キャッシュタグ($)のテキスト|
***attachments(添付ファイルデータ) [#x65fab0e]
取得したツイートに添付されているファイルに関する情報。~
添付されていなければこのフィールドは無い。
|名前|型|説明|
|media_keys|配列|添付されたメディアのID|
|poll_ids|配列|投票のID|
***geo(場所データ) [#mbe511cd]
ユーザの位置情報に関する情報。
|名前|型|説明|
|place_id|文字列|場所のID|
|coordinates|辞書|座標データ|
-coordinates(座標データ)
|名前|型|説明|
|type|文字列|座標の種類|
|coordinates|配列|ユーザの緯度、経度|
***withheld(凍結コンテンツデータ) [#w5f858b6]
取得したツイートが法的要求に基づいて凍結されているかなど...
|名前|型|説明|
|copyright|ブール値|コンテンツが凍結されているかどうか|
|country_codes|配列|このコンテンツを利用できない国|
|scope|列挙|凍結コンテンツがツイートかユーザか両方か|
***non_public_metrics(非公開機械的指標データ) [#db251b8e]
機械的にアクセスされた回数など、内部的に集計されている情...
OAuth 2.0ユーザーコンテキスト認証を使用する必要がある。
|名前|型|説明|
|impression_count|整数|このツイートが機械的に閲覧された回...
|url_link_clicks|整数|ツイートに含まれるURLを用いて機械的...
|user_profile_clicks|整数|ツイートの内、ユーザ名、ユーザI...
***organic_metrics(非公開非機械的指標データ) [#j5cc83fc]
取得したツイートが閲覧された回数やクリークされた回数など...
OAuth 2.0ユーザーコンテキスト認証を使用する必要がある。
|名前|型|説明|
|impression_count|整数|このツイートが非機械的に閲覧された...
|url_link_clicks|整数|ツイートに含まれるURLを用いて非機械...
|user_profile_clicks|整数|ツイートの内、ユーザ名、ユーザI...
|retweet_count|整数|このツイートが非機械的にリツイートさ...
|reply_count|整数|このツイートに非機械的にされた返信数|
|like_count|整数|このツイートに非機械的に送られたいいね数|
***promoted_metrics(非公開宣伝指標データ) [#l9a41869]
取得したツイートが宣伝目的で表示された回数など、宣伝に関...
OAuth 2.0 ユーザー コンテキスト認証を使用する必要がある。
|名前|型|説明|
|impression_count|整数|このツイートが宣伝として表示された...
|url_link_clicks|整数|このツイートが宣伝されている時にア...
|user_profile_clicks|整数|このツイートが宣伝されている時...
|retweet_count|整数|このツイートが宣伝されている時にリツ...
|reply_count|整数|このツイートが宣伝されている時にされた...
|like_count|整数|このツイートが宣伝されている時に送られた...
**includes(拡張データ) [#rcc48653]
expansionsをパラメータに指定すると取得できる情報。
|名前|型|説明|
|tweets|配列|リツイート先、返信先、引用先のツイートのデー...
|users|配列|取得したツイート、リツイート先のツイート、返...
|media|配列|取得したツイートに含まれる画像や動画などに関...
|places|配列|取得したツイートの位置情報のデータ|
|polls|配列|取得したツイートの投票のデータ|
***tweets [#nbe64905]
data(ツイートデータ)に含まれているツイートが参照、返信、...
Tweet object(ツイートオブジェクト)と構造は同じ。~
data(ツイートデータ)に含まれているツイートは含まれない。~
例えば、ツイートを10件取得し、そのうち5件はリツイートされ...
|名前|型|説明|
|id|文字列|参照先、返信先、引用先ツイートのID|
|text|文字列|参照先、返信先、引用先ツイート文|
|lang|文字列|参照先、返信先、引用先ツイートの言語|
|author_id|文字列|この参照先、返信先、引用先ツイートを投...
|source|文字列|ユーザが参照先、返信先、引用先ツイートした...
|reply_settings|文字列|この参照先、返信先、引用先ツイート...
|conversation_id|文字列|参照先、返信先、引用先ツイートの...
|in_reply_to_user_id|文字列|参照先、返信先、引用先ツイー...
|created_at|日付|参照先、返信先、引用先ツイートの投稿日時|
|possibly_sensitive|ブール値|参照先、返信先、引用先ツイー...
|referenced_tweets|配列|参照先、返信先、引用先ツイートデ...
|context_annotations|配列|注釈データ|
|public_metrics|辞書|公開指標データ|
|entities|辞書|特殊テキストデータ|
|attachments|辞書|添付ファイルデータ|
|geo|辞書|場所データ|
|withheld|辞書|凍結コンテンツデータ|
|non_public_metrics|辞書|参照先、返信先、引用先ツイートの...
|organic_metrics|辞書|参照先、返信先、引用先ツイートの非...
|promoted_metrics|辞書|参照先、返信先、引用先ツイートの非...
***users [#vcdc2886]
data(ツイートデータ)に含まれているツイート、およびそのツ...
User object(ユーザオブジェクト)と構造は同じ。~
例えば、ツイートを10件取得し、そのうち5件はリツイートされ...
|名前|型|説明|
|id|文字列|ユーザのID|
|name|文字列|ユーザの名前|
|username|文字列|ユーザの表示名|
|description|文字列|ユーザのプロフィール文|
|location|文字列|ユーザの存在場所|
|pinned_tweet_id|文字列|ピン止めツイートのID|
|profile_image_url|文字列|プロフィールに使用されている画...
|url|文字列|プロフィールに指定されているURL|
|created_at|日付|ユーザの作成日時|
|protected|ブール値|ユーザが非公開かどうか|
|verified|ブール値|認証済みユーザかどうか|
|entities|辞書|プロフィール文に含まれる特殊テキストデータ|
|public_metrics|辞書|ユーザのアクティビティデータ|
|withheld|辞書|凍結コンテンツデータ|
***media [#gc2fa88c]
data(ツイートデータ)に含まれているツイートに添付されてい...
data(ツイートデータ)に含まれているツイートが参照、返信、...
例えば、ツイートを10件取得し、そのうち5件はリツイートされ...
|名前|型|説明|
|media_key|文字列|メディアコンテンツのID|
|type|文字列|コンテンツのタイプ|
|url|文字列|メディアコンテンツのURL|
|preview_image_url|文字列|サムネイル画像のURL|
|alt_text|文字列|アクセシビリティを有効にしてサポートする...
|duration_ms|整数|動画の長さ|
|height|整数|コンテンツの高さ|
|width|整数|コンテンツの幅|
|variants|配列|異なる複数の表示、再生データ|
|public_metrics|辞書|動画の合計再生回数データ|
|non_public_metrics|辞書|メディアコンテンツの非公開機械的...
|organic_metrics|辞書|メディアコンテンツの非公開非機械的...
|promoted_metrics|辞書|メディアコンテンツの非公開宣伝指標...
***places [#a5c09750]
data(ツイートデータ)に含まれているツイートに位置情報があ...
|名前|型|説明|
|id|文字列|場所のID|
|full_name|文字列|地名の正式名称|
|country|文字列|場所が属する国名|
|country_code|文字列|この場所が属する国コード|
|name|文字列|この場所の略称|
|place_type|文字列|場所の種類|
|contained_within|配列|参照された場所を含む既知の場所のID|
|geo|辞書|場所データ|
***polls [#ab733f74]
data(ツイートデータ)に含まれているツイートに含まれる投票...
|名前|型|説明|
|id|文字列|投票のID|
|voting_status|文字列|投票が継続されているか終了しているか|
|end_datetime|日付|投票の終了日時|
|duration_minutes|整数|投票期間|
|options|配列|投票の各選択肢のデータ|
**errors(エラーデータ) [#pd31d421]
リクエストした際にエラーになる箇所が存在する場合、そのエ...
エラーが発生していないと付与されない。~
大体は参照、返信、引用先のツイートが1週間より昔のものであ...
|名前|型|説明|
|resource_id|文字列|エラーが発生するツイートのID|
|parameter|文字列|エラーが発生する情報|
|resource_type|文字列|エラーが発生するツイートの種類(通常...
|section|文字列|data、includes、metaのどこでエラーが発生...
|value|文字列|エラーが発生する原因|
|title|文字列|エラータイトル|
|detail|文字列|エラーコメント|
|type|文字列|エラーデータに関する追加情報を確認できるURL|
**meta(メタデータ) [#se520290]
リクエストで返されたツイート数やツイートIDに関する情報。
|名前|型|説明|
|count|整数|このリクエストで取得できたツイート数|
|oldest_id|文字列|このリクエストで取得できた内、最古のツ...
|newest_id|文字列|このリクエストで取得できた内、最新のツ...
|next_token|文字列|次回のリクエストで続きからツイートを取...
*使えそうな情報 [#ab33a8de]
**data [#b60108ca]
|名前|型|説明|
|text|文字列|解析に使う軸となる情報|
|id|文字列|ツイートの重複を取り除くために使える|
|created_at|日付|期間で解析したい場合にデータを分割すると...
|referenced_tweets|辞書|参照、返信、引用ツイートも用いる...
|attachments|辞書|画像や投票など添付物をツイートに紐づけ...
|public_metrics|辞書|いいね数やリツイート数など、ツイート...
|context_annotations|配列|ある組織に関するツイートなど、...
|entities|辞書|ハッシュタグを用いてトピック分類してみるの...
**includes [#hc5f554f]
|名前|型|説明|
|tweets|辞書|参照、返信、引用先のツイートを用いる場合に必...
|media|辞書|画像などを用いる場合ここの情報から保存する|
|polls|辞書|投票(アンケート)の結果を全体的に集計してみる...
**users [#a298a9a8]
|名前|型|説明|
|description|文字列|プロフィール文とツイートの文に関係性...
**meta [#p03f6c38]
|名前|型|説明|
|next_token|文字列|繰り返しリクエストして遡ってツイートを...
|count|整数|クエリで用いたキーワードでどれくらいのツイー...
*Search Tweets(recent)を使ってみよう [#nca84d43]
**その1 [#y16c4127]
最初の一歩。~
import urllib
import requests
import json
bearer_token = r'ここに各自のbearer tokenを入力する。'
parameter = {
'query': 'アニメ',
}
endpoint_url = 'https://api.twitter.com/2/tweets/search/...
encoded_parameter = urllib.parse.urlencode(parameter)
token_header = {'Authorization': f'Bearer {bearer_token}'}
response = requests.request('GET', endpoint_url, params=...
response_json = response.json()
with open('tr1_data.json', mode='w', encoding='utf-8') a...
json.dump(response_json, w, indent=4, ensure_ascii=F...
**その2 [#ib5c948d]
パラメータを色々設定して取得してみよう。~
import urllib
import requests
import json
bearer_token = r'ここに各自のbearer tokenを入力する。'
parameter = {
'query': 'アニメ',
'max_results': 20,
'tweet.fields': 'attachments,author_id,context_annot...
'user.fields': 'created_at,description,entities,id,l...
'media.fields': 'duration_ms,height,media_key,previe...
'place.fields': 'contained_within,country,country_co...
'poll.fields': 'duration_minutes,end_datetime,id,opt...
'expansions': 'attachments.poll_ids,attachments.medi...
}
endpoint_url = 'https://api.twitter.com/2/tweets/search/...
encoded_parameter = urllib.parse.urlencode(parameter)
token_header = {'Authorization': f'Bearer {bearer_token}'}
response = requests.request('GET', endpoint_url, params=...
response_json = response.json()
with open('tr2_data.json', mode='w', encoding='utf-8') a...
json.dump(response_json, w, indent=4, ensure_ascii=F...
**その3 [#p892f291]
繰り返しリクエストし、取得してみよう。~
import urllib
import requests
import json
bearer_token = r'ここに各自のbearer tokenを入力する。'
parameter = {
'query': 'アニメ',
'max_results': 20,
'tweet.fields': 'attachments,author_id,context_annot...
'user.fields': 'created_at,description,entities,id,l...
'media.fields': 'duration_ms,height,media_key,previe...
'place.fields': 'contained_within,country,country_co...
'poll.fields': 'duration_minutes,end_datetime,id,opt...
'expansions': 'attachments.poll_ids,attachments.medi...
}
next_token = None
endpoint_url = 'https://api.twitter.com/2/tweets/search/...
for _ in range(2):
try:
with open('tr3_data.json', mode='r', encoding='u...
data_list = json.load(r)
except FileNotFoundError:
data_list = []
if next_token is not None:
parameter['next_token'] = next_token
encoded_parameter = urllib.parse.urlencode(parameter)
token_header = {'Authorization': f'Bearer {bearer_to...
response = requests.request('GET', endpoint_url, par...
response_json = response.json()
data_list.append(response_json)
next_token = response_json.get('meta').get('next_tok...
with open('tr3_data.json', mode='w', encoding='utf-8...
json.dump(data_list, w, indent=4, ensure_ascii=F...
*参考 [#ie6be010]
-Twitter API reference( https://developer.twitter.com/en/...
-Search tweets recent reference( https://developer.twitte...
-build query( https://developer.twitter.com/en/docs/twitt...
-Tweet object( https://developer.twitter.com/en/docs/twit...
-User object( https://developer.twitter.com/en/docs/twitt...
-Media object( https://developer.twitter.com/en/docs/twit...
-Place objects( https://developer.twitter.com/en/docs/twi...
-Poll object( https://developer.twitter.com/en/docs/twitt...
終了行:
[[Pythonライブラリ]]
目次
#contents
*Search Tweets(recent) [#yc40455d]
Search Tweetsではツイートの取得ができる。~
方法が2種類あり、recent(GET /2/tweets/search/recent)とall...
recentは、ツイートの投稿日時を指定してツイートを取得する...
allは、ツイートの投稿日時を指定してツイートを取得しても投...
しかし、allはアクセスレベルAcademic Researchが必要になる。~
*レート制限 [#rb001310]
||Essential|Elevated|Academic Research|
|1ヶ月あたりのツイート取得制限|50万件|200万件|1000万件|
|1アカウントあたりのプロジェクト(稼働アプリ)制限|1アプリ|...
|1アプリあたりの稼働ユーザ制限|1ユーザ|3ユーザ|1ユーザ|
|1アプリあたりのリクエスト回数|450(回/15分)|450(回/15分)|...
|1ユーザあたりのリクエスト回数|180(回/15分)|180(回/15分)|...
*パラメータ [#t61fc103]
パラメータを簡単な説明と共に列挙し、パラメータの補足を加...
|名前|型|説明|
|query|文字列|取得したいツイートを検索する|
|next_token|文字列|前回の取得から遡ってツイートを取得する...
|since_id|文字列|指定したIDより大きいツイートを取得する|
|until_id|文字列|指定したIDより小さいツイートを取得する|
|max_results|整数|1リクエストあたりのツイート取得件数を指...
|start_time|日付|取得したいツイートのうち、最も古い日付を...
|end_time|日付|取得したいツイートのうち、最も新しい日付を...
|sort_order|列挙列|取得したツイートの順番を指定する|
|tweet.fields|列挙列|取得したツイートに関する情報を指定し...
|media.fields|列挙列|取得したツイートに含まれる画像や動画...
|user.fields|列挙列|取得したツイートを投稿したユーザに関...
|place.fields|列挙列|場所に関する情報を指定し、加える|
|poll.fields|列挙列|投票に関する情報を指定し、加える|
|expansions|列挙列|取得したツイートの追加データを指定し、...
**sort_order [#sfef28ee]
以下をスペースを入れずにカンマ(,)区切りで列挙して指定する。
|名前|説明|
|recency|新しい順に並ぶ|
|relevancy|関連する順に並ぶ|
両方指定すると、新しい順に並んだ後、関連する順に並ぶと思...
**tweet.fields [#c0b557bd]
以下をスペースを入れずにカンマ(,)区切りで列挙して指定する。
|名前|説明|
|attachments|添付ファイルデータ|
|author_id|取得したツイートを投稿したユーザのID|
|context_annotations|注釈データ|
|conversation_id|返信先のツイートのID|
|created_at|ツイートの投稿日時|
|entities|特殊テキストデータ|
|geo|場所データ|
|id|ツイートのID|
|in_reply_to_user_id|返信先のツイートを投稿したユーザのID|
|lang|ツイートの言語|
|non_public_metrics|非公開機械的指標データ|
|public_metrics|公開指標データ|
|organic_metrics|非公開非機械的指標データ|
|promoted_metrics|非公開宣伝指標データ|
|possibly_sensitive|ツイートが成人向けかどうか|
|referenced_tweets|リツイートデータ|
|reply_settings|このツイートに返信できるユーザ|
|source|ユーザがツイートしたアプリ名|
|text|ツイート文|
|withheld|凍結コンテンツデータ|
**media.fields [#w4338e72]
以下をスペースを入れずにカンマ(,)区切りで列挙して指定する。
|名前|説明|
|duration_ms|動画の長さ|
|height|コンテンツの高さ|
|media_key|メディアコンテンツのID|
|preview_image_url|サムネイル画像のURL|
|type|コンテンツのタイプ|
|url|メディアコンテンツのURL|
|width|コンテンツの幅|
|public_metrics|動画の合計再生回数データ|
|non_public_metrics|メディアコンテンツの非公開機械的指標...
|organic_metrics|メディアコンテンツの非公開非機械的指標デ...
|promoted_metrics|メディアコンテンツの非公開宣伝指標データ|
|alt_text|アクセシビリティを有効にしてサポートするための...
|variants|異なる複数の表示、再生データ|
**user.fields [#c17445c3]
以下をスペースを入れずにカンマ(,)区切りで列挙して指定する。
|名前|説明|
|created_at|ユーザの作成日時|
|description|ユーザのプロフィール文|
|entities|プロフィール文に含まれる特殊テキストデータ|
|id|ユーザのID|
|location|ユーザの存在場所|
|name|ユーザの名前|
|pinned_tweet_id|ピン止めツイートのID|
|profile_image_url|プロフィールに使用されている画像URL|
|protected|ユーザが非公開かどうか|
|public_metrics|ユーザのアクティビティデータ|
|url|プロフィールに指定されているURL|
|username|ユーザの表示名|
|verified|認証済みユーザかどうか|
|withheld|凍結コンテンツデータ|
**place.fields [#w9c6ee3d]
以下をスペースを入れずにカンマ(,)区切りで列挙して指定する。
|名前|説明|
|contained_within|参照された場所を含む既知の場所のID|
|country|場所が属する国名|
|country_code|この場所が属する国コード|
|full_name|地名の正式名称|
|geo|場所データ|
|id|場所のID|
|name|この場所の略称|
|place_type|場所の種類|
**poll.fields [#u703e94f]
以下をスペースを入れずにカンマ(,)区切りで列挙して指定する。
|名前|説明|
|duration_minutes|投票期間|
|end_datetime|投票の終了日時|
|id|投票の終了日時|
|options|投票の各選択肢のデータ|
|voting_status|投票が継続されているか終了しているか|
**expansions [#md3cce85]
以下をスペースを入れずにカンマ(,)区切りで列挙して指定する。
|名前|説明|
|attachments.poll_ids|投票のID|
|attachments.media_keys|添付されたメディアのID|
|author_id|取得したツイートを投稿したユーザのID|
|entities.mentions.username|ユーザメンション(@)として認識...
|geo.place_id|場所のID|
|in_reply_to_user_id|返信先のツイートを投稿したユーザのID|
|referenced_tweets.id|参照ツイートのID|
|referenced_tweets.id.author_id|参照ツイートのID|
*取得できる情報 [#y8843a38]
取得できる情報を簡単な説明と共に列挙し、情報の補足を加え...
|名前|型|説明|
|data|配列|ツイートデータ|
|includes|辞書|拡張データ|
|errors|辞書|エラーデータ|
|meta|辞書|メタデータ|
エラーが無く、1件もツイートを取得できなかった場合はmetaの...
**data(ツイートデータ) [#fd3c6429]
ツイートのデータに関する情報。~
取得できた分だけ長さは大きくなる。~
すなわち、1リクエストあたりに取得できたツイート数(meta.co...
長さの最小値は1、最大値は100。~
Tweet object(ツイートオブジェクト)と構造は同じ。
|名前|型|説明|
|id|文字列|ツイートのID|
|text|文字列|ツイート文|
|lang|文字列|ツイートの言語|
|author_id|文字列|取得したツイートを投稿したユーザのID|
|source|文字列|ユーザがツイートしたアプリ名|
|reply_settings|文字列|このツイートに返信できるユーザ|
|conversation_id|文字列|返信先のツイートのID(返信ツイート...
|in_reply_to_user_id|文字列|返信先のツイートを投稿したユ...
|created_at|日付|ツイートの投稿日時|
|possibly_sensitive|ブール値|ツイートが成人向けかどうか|
|referenced_tweets|配列|リツイートデータ|
|context_annotations|配列|注釈データ|
|public_metrics|辞書|公開指標データ|
|entities|辞書|特殊テキストデータ|
|attachments|辞書|添付ファイルデータ|
|geo|辞書|場所データ|
|withheld|辞書|凍結コンテンツデータ|
|non_public_metrics|辞書|ツイートの非公開機械的指標データ|
|organic_metrics|辞書|ツイートの非公開非機械的指標データ|
|promoted_metrics|辞書|ツイートの非公開宣伝指標データ|
***referenced_tweets(リツイートデータ) [#t0b3a915]
取得したツイートが参照しているツイートに関する情報。
|名前|型|説明|
|id|文字列|参照先のツイートのID|
|type|列挙型|参照元のツイートと参照先のツイートの関係|
***context_annotations(注釈データ) [#a6074300]
ドメイン名や組織名などに関する情報。
|名前|型|説明|
|domain|辞書|ドメイン分類データ|
|entity|辞書|ドメイン分類エンティティデータ|
-domain(ドメイン分類データ)
|名前|型|説明|
|id|文字列|ドメインのID|
|name|文字列|ドメイン名|
|description|文字列|ドメイン分類の長い形式の説明|
-entity(ドメイン分類エンティティデータ)
|名前|型|説明|
|id|文字列|明示的に言及されている人や場所、製品、組織など...
|name|文字列|明示的に言及されている人や場所、製品、組織な...
|description|文字列|エンティティの追加情報|
***public_metrics(公開指標データ) [#t73d72bc]
取得したツイートの「いいね」数やリツイートされた回数など...
|名前|型|説明|
|like_count|整数|いいね数|
|reply_count|整数|返信数|
|retweet_count|整数|リツイート数|
|quote_count|整数|引用数|
***entities(特殊テキストデータ) [#b138bf0d]
URLなど特別な意味を持つテキストに関する情報。
|名前|型|説明|
|annotations|配列|注釈データ|
|urls|配列|URLデータ|
|hashtags|配列|ハッシュタグ(#)データ|
|mentions|配列|ユーザメンション(@)データ|
|cashtags|配列|キャッシュタグ($)データ|
-annotations(注釈データ)
|名前|型|説明|
|start|整数|注釈をつけるためのテキストの開始位置|
|end|整数|注釈をつけるためのエキスとの終了位置|
|probability|数値|注釈の信頼度|
|type|整数|エンティティの種類|
|normalized_text|文字列|注釈タイプ決定に使用されるテキスト|
-urls(URLデータ)
|名前|型|説明|
|start|整数|URLの開始位置|
|end|整数|URLの終了位置|
|url|文字列|Twitterによる短縮形式のURL(data.(辞書n番目).t...
|expanded_url|文字列|完全な形式のURL|
|display_url|文字列|Twitterクライアントに表示されるURL|
|unwound_url|文字列|完全な宛先URL|
-hashtags(ハッシュタグ(#)データ)
|名前|型|説明|
|start|整数|ハッシュタグ(#)の開始位置|
|end|整数|ハッシュタグ(#)の終了位置|
|tag|文字列|ハッシュタグ(#)のテキスト(data.(辞書n番目).te...
-mentions(ユーザメンション(@)データ)
|名前|型|説明|
|start|整数|ユーザメンション(@)の開始位置|
|end|整数|ユーザメンション(@)の終了位置|
|username|文字列|ユーザメンション(@)として認識される文字...
-cashtags(キャッシュタグ($)データ)
|名前|型|説明|
|start|整数|キャッシュタグ($)の開始位置|
|end|整数|キャッシュタグ($)の終了位置|
|tag|文字列|キャッシュタグ($)のテキスト|
***attachments(添付ファイルデータ) [#x65fab0e]
取得したツイートに添付されているファイルに関する情報。~
添付されていなければこのフィールドは無い。
|名前|型|説明|
|media_keys|配列|添付されたメディアのID|
|poll_ids|配列|投票のID|
***geo(場所データ) [#mbe511cd]
ユーザの位置情報に関する情報。
|名前|型|説明|
|place_id|文字列|場所のID|
|coordinates|辞書|座標データ|
-coordinates(座標データ)
|名前|型|説明|
|type|文字列|座標の種類|
|coordinates|配列|ユーザの緯度、経度|
***withheld(凍結コンテンツデータ) [#w5f858b6]
取得したツイートが法的要求に基づいて凍結されているかなど...
|名前|型|説明|
|copyright|ブール値|コンテンツが凍結されているかどうか|
|country_codes|配列|このコンテンツを利用できない国|
|scope|列挙|凍結コンテンツがツイートかユーザか両方か|
***non_public_metrics(非公開機械的指標データ) [#db251b8e]
機械的にアクセスされた回数など、内部的に集計されている情...
OAuth 2.0ユーザーコンテキスト認証を使用する必要がある。
|名前|型|説明|
|impression_count|整数|このツイートが機械的に閲覧された回...
|url_link_clicks|整数|ツイートに含まれるURLを用いて機械的...
|user_profile_clicks|整数|ツイートの内、ユーザ名、ユーザI...
***organic_metrics(非公開非機械的指標データ) [#j5cc83fc]
取得したツイートが閲覧された回数やクリークされた回数など...
OAuth 2.0ユーザーコンテキスト認証を使用する必要がある。
|名前|型|説明|
|impression_count|整数|このツイートが非機械的に閲覧された...
|url_link_clicks|整数|ツイートに含まれるURLを用いて非機械...
|user_profile_clicks|整数|ツイートの内、ユーザ名、ユーザI...
|retweet_count|整数|このツイートが非機械的にリツイートさ...
|reply_count|整数|このツイートに非機械的にされた返信数|
|like_count|整数|このツイートに非機械的に送られたいいね数|
***promoted_metrics(非公開宣伝指標データ) [#l9a41869]
取得したツイートが宣伝目的で表示された回数など、宣伝に関...
OAuth 2.0 ユーザー コンテキスト認証を使用する必要がある。
|名前|型|説明|
|impression_count|整数|このツイートが宣伝として表示された...
|url_link_clicks|整数|このツイートが宣伝されている時にア...
|user_profile_clicks|整数|このツイートが宣伝されている時...
|retweet_count|整数|このツイートが宣伝されている時にリツ...
|reply_count|整数|このツイートが宣伝されている時にされた...
|like_count|整数|このツイートが宣伝されている時に送られた...
**includes(拡張データ) [#rcc48653]
expansionsをパラメータに指定すると取得できる情報。
|名前|型|説明|
|tweets|配列|リツイート先、返信先、引用先のツイートのデー...
|users|配列|取得したツイート、リツイート先のツイート、返...
|media|配列|取得したツイートに含まれる画像や動画などに関...
|places|配列|取得したツイートの位置情報のデータ|
|polls|配列|取得したツイートの投票のデータ|
***tweets [#nbe64905]
data(ツイートデータ)に含まれているツイートが参照、返信、...
Tweet object(ツイートオブジェクト)と構造は同じ。~
data(ツイートデータ)に含まれているツイートは含まれない。~
例えば、ツイートを10件取得し、そのうち5件はリツイートされ...
|名前|型|説明|
|id|文字列|参照先、返信先、引用先ツイートのID|
|text|文字列|参照先、返信先、引用先ツイート文|
|lang|文字列|参照先、返信先、引用先ツイートの言語|
|author_id|文字列|この参照先、返信先、引用先ツイートを投...
|source|文字列|ユーザが参照先、返信先、引用先ツイートした...
|reply_settings|文字列|この参照先、返信先、引用先ツイート...
|conversation_id|文字列|参照先、返信先、引用先ツイートの...
|in_reply_to_user_id|文字列|参照先、返信先、引用先ツイー...
|created_at|日付|参照先、返信先、引用先ツイートの投稿日時|
|possibly_sensitive|ブール値|参照先、返信先、引用先ツイー...
|referenced_tweets|配列|参照先、返信先、引用先ツイートデ...
|context_annotations|配列|注釈データ|
|public_metrics|辞書|公開指標データ|
|entities|辞書|特殊テキストデータ|
|attachments|辞書|添付ファイルデータ|
|geo|辞書|場所データ|
|withheld|辞書|凍結コンテンツデータ|
|non_public_metrics|辞書|参照先、返信先、引用先ツイートの...
|organic_metrics|辞書|参照先、返信先、引用先ツイートの非...
|promoted_metrics|辞書|参照先、返信先、引用先ツイートの非...
***users [#vcdc2886]
data(ツイートデータ)に含まれているツイート、およびそのツ...
User object(ユーザオブジェクト)と構造は同じ。~
例えば、ツイートを10件取得し、そのうち5件はリツイートされ...
|名前|型|説明|
|id|文字列|ユーザのID|
|name|文字列|ユーザの名前|
|username|文字列|ユーザの表示名|
|description|文字列|ユーザのプロフィール文|
|location|文字列|ユーザの存在場所|
|pinned_tweet_id|文字列|ピン止めツイートのID|
|profile_image_url|文字列|プロフィールに使用されている画...
|url|文字列|プロフィールに指定されているURL|
|created_at|日付|ユーザの作成日時|
|protected|ブール値|ユーザが非公開かどうか|
|verified|ブール値|認証済みユーザかどうか|
|entities|辞書|プロフィール文に含まれる特殊テキストデータ|
|public_metrics|辞書|ユーザのアクティビティデータ|
|withheld|辞書|凍結コンテンツデータ|
***media [#gc2fa88c]
data(ツイートデータ)に含まれているツイートに添付されてい...
data(ツイートデータ)に含まれているツイートが参照、返信、...
例えば、ツイートを10件取得し、そのうち5件はリツイートされ...
|名前|型|説明|
|media_key|文字列|メディアコンテンツのID|
|type|文字列|コンテンツのタイプ|
|url|文字列|メディアコンテンツのURL|
|preview_image_url|文字列|サムネイル画像のURL|
|alt_text|文字列|アクセシビリティを有効にしてサポートする...
|duration_ms|整数|動画の長さ|
|height|整数|コンテンツの高さ|
|width|整数|コンテンツの幅|
|variants|配列|異なる複数の表示、再生データ|
|public_metrics|辞書|動画の合計再生回数データ|
|non_public_metrics|辞書|メディアコンテンツの非公開機械的...
|organic_metrics|辞書|メディアコンテンツの非公開非機械的...
|promoted_metrics|辞書|メディアコンテンツの非公開宣伝指標...
***places [#a5c09750]
data(ツイートデータ)に含まれているツイートに位置情報があ...
|名前|型|説明|
|id|文字列|場所のID|
|full_name|文字列|地名の正式名称|
|country|文字列|場所が属する国名|
|country_code|文字列|この場所が属する国コード|
|name|文字列|この場所の略称|
|place_type|文字列|場所の種類|
|contained_within|配列|参照された場所を含む既知の場所のID|
|geo|辞書|場所データ|
***polls [#ab733f74]
data(ツイートデータ)に含まれているツイートに含まれる投票...
|名前|型|説明|
|id|文字列|投票のID|
|voting_status|文字列|投票が継続されているか終了しているか|
|end_datetime|日付|投票の終了日時|
|duration_minutes|整数|投票期間|
|options|配列|投票の各選択肢のデータ|
**errors(エラーデータ) [#pd31d421]
リクエストした際にエラーになる箇所が存在する場合、そのエ...
エラーが発生していないと付与されない。~
大体は参照、返信、引用先のツイートが1週間より昔のものであ...
|名前|型|説明|
|resource_id|文字列|エラーが発生するツイートのID|
|parameter|文字列|エラーが発生する情報|
|resource_type|文字列|エラーが発生するツイートの種類(通常...
|section|文字列|data、includes、metaのどこでエラーが発生...
|value|文字列|エラーが発生する原因|
|title|文字列|エラータイトル|
|detail|文字列|エラーコメント|
|type|文字列|エラーデータに関する追加情報を確認できるURL|
**meta(メタデータ) [#se520290]
リクエストで返されたツイート数やツイートIDに関する情報。
|名前|型|説明|
|count|整数|このリクエストで取得できたツイート数|
|oldest_id|文字列|このリクエストで取得できた内、最古のツ...
|newest_id|文字列|このリクエストで取得できた内、最新のツ...
|next_token|文字列|次回のリクエストで続きからツイートを取...
*使えそうな情報 [#ab33a8de]
**data [#b60108ca]
|名前|型|説明|
|text|文字列|解析に使う軸となる情報|
|id|文字列|ツイートの重複を取り除くために使える|
|created_at|日付|期間で解析したい場合にデータを分割すると...
|referenced_tweets|辞書|参照、返信、引用ツイートも用いる...
|attachments|辞書|画像や投票など添付物をツイートに紐づけ...
|public_metrics|辞書|いいね数やリツイート数など、ツイート...
|context_annotations|配列|ある組織に関するツイートなど、...
|entities|辞書|ハッシュタグを用いてトピック分類してみるの...
**includes [#hc5f554f]
|名前|型|説明|
|tweets|辞書|参照、返信、引用先のツイートを用いる場合に必...
|media|辞書|画像などを用いる場合ここの情報から保存する|
|polls|辞書|投票(アンケート)の結果を全体的に集計してみる...
**users [#a298a9a8]
|名前|型|説明|
|description|文字列|プロフィール文とツイートの文に関係性...
**meta [#p03f6c38]
|名前|型|説明|
|next_token|文字列|繰り返しリクエストして遡ってツイートを...
|count|整数|クエリで用いたキーワードでどれくらいのツイー...
*Search Tweets(recent)を使ってみよう [#nca84d43]
**その1 [#y16c4127]
最初の一歩。~
import urllib
import requests
import json
bearer_token = r'ここに各自のbearer tokenを入力する。'
parameter = {
'query': 'アニメ',
}
endpoint_url = 'https://api.twitter.com/2/tweets/search/...
encoded_parameter = urllib.parse.urlencode(parameter)
token_header = {'Authorization': f'Bearer {bearer_token}'}
response = requests.request('GET', endpoint_url, params=...
response_json = response.json()
with open('tr1_data.json', mode='w', encoding='utf-8') a...
json.dump(response_json, w, indent=4, ensure_ascii=F...
**その2 [#ib5c948d]
パラメータを色々設定して取得してみよう。~
import urllib
import requests
import json
bearer_token = r'ここに各自のbearer tokenを入力する。'
parameter = {
'query': 'アニメ',
'max_results': 20,
'tweet.fields': 'attachments,author_id,context_annot...
'user.fields': 'created_at,description,entities,id,l...
'media.fields': 'duration_ms,height,media_key,previe...
'place.fields': 'contained_within,country,country_co...
'poll.fields': 'duration_minutes,end_datetime,id,opt...
'expansions': 'attachments.poll_ids,attachments.medi...
}
endpoint_url = 'https://api.twitter.com/2/tweets/search/...
encoded_parameter = urllib.parse.urlencode(parameter)
token_header = {'Authorization': f'Bearer {bearer_token}'}
response = requests.request('GET', endpoint_url, params=...
response_json = response.json()
with open('tr2_data.json', mode='w', encoding='utf-8') a...
json.dump(response_json, w, indent=4, ensure_ascii=F...
**その3 [#p892f291]
繰り返しリクエストし、取得してみよう。~
import urllib
import requests
import json
bearer_token = r'ここに各自のbearer tokenを入力する。'
parameter = {
'query': 'アニメ',
'max_results': 20,
'tweet.fields': 'attachments,author_id,context_annot...
'user.fields': 'created_at,description,entities,id,l...
'media.fields': 'duration_ms,height,media_key,previe...
'place.fields': 'contained_within,country,country_co...
'poll.fields': 'duration_minutes,end_datetime,id,opt...
'expansions': 'attachments.poll_ids,attachments.medi...
}
next_token = None
endpoint_url = 'https://api.twitter.com/2/tweets/search/...
for _ in range(2):
try:
with open('tr3_data.json', mode='r', encoding='u...
data_list = json.load(r)
except FileNotFoundError:
data_list = []
if next_token is not None:
parameter['next_token'] = next_token
encoded_parameter = urllib.parse.urlencode(parameter)
token_header = {'Authorization': f'Bearer {bearer_to...
response = requests.request('GET', endpoint_url, par...
response_json = response.json()
data_list.append(response_json)
next_token = response_json.get('meta').get('next_tok...
with open('tr3_data.json', mode='w', encoding='utf-8...
json.dump(data_list, w, indent=4, ensure_ascii=F...
*参考 [#ie6be010]
-Twitter API reference( https://developer.twitter.com/en/...
-Search tweets recent reference( https://developer.twitte...
-build query( https://developer.twitter.com/en/docs/twitt...
-Tweet object( https://developer.twitter.com/en/docs/twit...
-User object( https://developer.twitter.com/en/docs/twitt...
-Media object( https://developer.twitter.com/en/docs/twit...
-Place objects( https://developer.twitter.com/en/docs/twi...
-Poll object( https://developer.twitter.com/en/docs/twitt...
ページ名: