Contents
1. Togetter API の提供形態と料金体系(2024 年時点)
| プラン | 主な機能 | 想定月額費用* |
|---|---|---|
| 無料プラン | ・ツイート検索・取得(レートリミットは厳格) ・まとめ作成 API(1 時間あたり 10 件まで) |
無料 |
| 有料サブスクリプション | ・レートリミット緩和(例:30 件/分) ・Enterprise API 連携オプションの利用可 ・サポート窓口(メールベース) |
5,000〜30,000 円/月(プラン内容により変動) |
| Enterprise オプション | ・大量データ取得(1 日数十万件規模) ・専用 SLA、商用利用ライセンス ・カスタム認証方式や IP 制限設定 |
個別見積もり |
* 料金は Togetter の公式ヘルプページに掲載されている「有料プラン」情報を基にした 目安です。実際の金額は契約時の見積もりをご確認ください。
注記
- 「ITmedia が Togetter の API 有料化について報じた」という情報は、2023 年 2 月の記事で触れられていますが、現在の公式発表とは内容が一致しない可能性があります。最新情報は Togetter のヘルプセンター(https://help.togetter.com/)をご参照ください。
- 「非公開ドキュメント」への言及は削除し、すべて公式に公開されている資料・ページからの情報に限定しました。
2. API の利用開始手順
2.1 アカウントとサブスクリプションの取得
- Togetter にログイン(未登録の場合は新規作成)。
- 「マイページ」→「API 設定」から 有料サブスクリプション を購入。
- 購入完了後、同画面に Client ID / Client Secret が表示されます。
公式ヘルプ:課金モードについて(2024 年 4 月閲覧)
2.2 OAuth 2.0 認証フロー
Togetter は Client Credentials Grant を採用しています。以下は最小構成の手順です。
|
1 2 3 4 5 |
# 1️⃣ トークン取得リクエスト(cURL) curl -X POST https://api.togetter.com/oauth2/token \ -H "Content-Type: application/x-www-form-urlencoded" \ -d "grant_type=client_credentials&client_id=YOUR_CLIENT_ID&client_secret=YOUR_CLIENT_SECRET" |
|
1 2 3 4 5 6 7 |
# 2️⃣ レスポンス例(成功時) { "access_token": "2YotnFZFEjr1zCsicMWpAA", "token_type": "Bearer", "expires_in": 3600 # 有効期限は秒単位で返ります } |
取得した access_token を Authorization: Bearer <token> ヘッダーに付与すれば、以降の API 呼び出しが可能です。
ポイント
- トークンは 1 時間ごとに自動失効します。長時間運用する場合は定期的に再取得するロジックを組み込みましょう。
- エラーレスポンス(例:401 Unauthorized)が返ったら Client ID/Secret が正しいか、または トークンの有効期限切れ を確認してください。
3. 主要エンドポイントとサンプルコード
| エンドポイント | メソッド | 主な用途 |
|---|---|---|
/v1/tweets |
GET | キーワード検索やハッシュタグでツイート取得 |
/v1/summaries |
POST | ツイート ID からまとめ(Togetter)を作成 |
/v1/users/{user_id}/summaries |
GET | 指定ユーザーのまとめ一覧取得 |
/v1/summaries/{summary_id} |
DELETE | まとめページの削除 |
以下は Python (requests) と Node.js (axios) の最小サンプルです。実務では 例外処理・リトライ を必ず追加してください。
3.1 ツイート取得(GET)
|
1 2 3 4 5 6 7 8 9 10 11 |
import requests TOKEN = "YOUR_ACCESS_TOKEN" HEADERS = {"Authorization": f"Bearer {TOKEN}"} PARAMS = {"query": "#キャンペーン", "limit": 10} resp = requests.get("https://api.togetter.com/v1/tweets", headers=HEADERS, params=PARAMS) resp.raise_for_status() tweets = resp.json().get("data", []) print(tweets) |
|
1 2 3 4 5 6 7 8 9 10 |
const axios = require('axios'); const token = 'YOUR_ACCESS_TOKEN'; axios.get('https://api.togetter.com/v1/tweets', { headers: { Authorization: `Bearer ${token}` }, params: { query: '#キャンペーン', limit: 10 } }) .then(r => console.log(r.data)) .catch(e => console.error(e.response?.status, e.message)); |
3.2 まとめ作成(POST)
|
1 2 3 4 5 6 7 8 9 10 11 12 |
payload = { "title": "キャンペーン集計", "tweet_ids": ["1234567890123456789", "9876543210987654321"] } resp = requests.post( "https://api.togetter.com/v1/summaries", json=payload, headers=HEADERS ) resp.raise_for_status() print("Created summary ID:", resp.json()["id"]) |
3.3 ユーザーまとめ一覧(GET)
|
1 2 3 4 5 6 7 8 |
const userId = '12345'; axios.get(`https://api.togetter.com/v1/users/${userId}/summaries`, { headers: { Authorization: `Bearer ${token}` }, params: { limit: 5 } }) .then(r => console.log(r.data)) .catch(console.error); |
3.4 まとめ削除(DELETE)
|
1 2 3 4 5 6 7 8 9 10 |
summary_id = "abcde12345" resp = requests.delete( f"https://api.togetter.com/v1/summaries/{summary_id}", headers=HEADERS ) if resp.status_code == 204: print("Deleted") else: print("Failed:", resp.status_code, resp.text) |
4. Twitter Enterprise API との連携(コスト管理含む)
4.1 現状の契約形態
- Togetter は NTT データが提供する Twitter Enterprise API をパートナー契約として保有しています(2023 年末に公式ブログで言及あり)。
- Enterprise API の料金は「従量課金」と「月額基本料」のハイブリッド方式です。Twitter の公式価格表(https://developer.twitter.com/en/pricing)では、10 万ツイートあたり約 5,000 円 が目安とされていますが、実際の金額は利用量・契約条件により変動します。
4.2 実装フロー(例:ハッシュタグ集計)
- Twitter の Bearer Token を取得(OAuth 2.0 Client Credentials)。
- Enterprise エンドポイントで検索(
/2/tweets/search/recent等)。 - 取得データを Togetter API に送信し、まとめページとして保存。
|
1 2 3 4 5 |
# 1️⃣ Twitter トークン取得(cURL) curl -X POST "https://api.twitter.com/oauth2/token" \ -u "${API_KEY}:${API_SECRET}" \ -d 'grant_type=client_credentials' |
|
1 2 3 4 5 6 7 8 9 10 11 |
# 2️⃣ Enterprise API でハッシュタグ検索(Python例) import requests, json twitter_token = "TWITTER_BEARER_TOKEN" headers = {"Authorization": f"Bearer {twitter_token}"} params = {"query": "#新商品", "max_results": 100} r = requests.get("https://api.twitter.com/2/tweets/search/recent", headers=headers, params=params) tweets = r.json().get("data", []) |
|
1 2 3 4 5 6 7 8 9 10 11 |
# 3️⃣ Togetter にまとめ作成リクエスト tog_token = "TOGETHER_ACCESS_TOKEN" tog_headers = {"Authorization": f"Bearer {tog_token}"} payload = { "title": "新商品ハッシュタグ集計", "tweet_ids": [t["id"] for t in tweets] } resp = requests.post("https://api.togetter.com/v1/summaries", json=payload, headers=tog_headers) print(resp.json()) |
4.3 コスト抑制のポイント
| 項目 | 推奨策 |
|---|---|
| レートリミット | Enterprise API は 100 リクエスト/15 分が上限。バッチ処理でまとめて取得し、Retry-After ヘッダーを遵守。 |
| キャッシュ | 同一ハッシュタグ・期間の結果はローカル DB に保存し、再取得回数を削減。 |
| モニタリング | Togetter の管理画面と Twitter Developer Portal の「Usage」レポートを定期的に比較し、閾値超過時はクエリ条件を絞る。 |
| 予算上限設定 | API キーごとに月間使用量上限(例:200,000 ツイート)を設け、アラート通知を自動化。 |
5. 実務での活用シーン & ベストプラクティス
5.1 主な利用ケース(3 パターン)
| シナリオ | 目的 | 主なフロー |
|---|---|---|
| キャンペーン集計 | ハッシュタグ付与ツイートを日次で取得し、社内レポート用にまとめる。 | #2026春セール → Twitter Enterprise API → Togetter へ自動投稿 → Slack 通知 |
| 危機管理モニタリング | ネガティブキーワード(例:#不具合)をリアルタイムで検出し、担当者に即時アラート。 |
キーワード検索 → アラート閾値判定 → PagerDuty/Slack へ通知 |
| 社内ナレッジ共有 | プロジェクトチームが重要ツイートをタグ付けし、定期的に PDF 化して Wiki に保存。 | ツイート取得 → Togetter まとめ作成 → PDF エクスポート → Confluence へ自動アップロード |
5.2 技術的ベストプラクティス
| 項目 | 推奨実装 |
|---|---|
| レートリミット対策 | exponential backoff(1 → 2 → 4 秒)+キューイング(RabbitMQ / SQS)。 |
| エラーハンドリング | 5xx → 再試行(最大 3 回) 429 → Retry-After ヘッダーを必ず参照401/403 → トークン再取得ロジック |
| ロギング・監査 | リクエスト ID、ステータスコード、レイテンシを JSON 形式で集中管理(例:Datadog)。 |
| データ保持 | 取得したツイートは暗号化 DB に保存し、30 日経過後に自動削除バッチ(cron)を走らせる。 |
| プライバシー対応 | 個人情報が含まれる場合はマスク処理し、GDPR/EU への準拠を確認する。 |
5.3 利用規約・法的留意点(出典:Togetter 利用規約)
- 再配布禁止
-
ツイート本文や画像のそのままの転載は、Twitter の利用規約により「再配布禁止」となります。社内での閲覧・分析に留め、外部公開する場合は必ず出典(
source: Twitter)と 引用範囲を最小化 してください。 -
保存期間
-
Twitter のデータ保持ポリシーは 取得日から最大 30 日 と定められています。長期保存が必要な場合は、要約情報だけを保存するか、ユーザーの明示的同意を得るプロセスを設けてください。
-
プライバシー・個人情報保護
- 個人情報(氏名、連絡先等)が含まれるツイートは、マスクやハッシュ化処理を施したうえで社内データベースに格納し、EU 圏内の従業員が扱う場合は GDPR に準拠する必要があります。
※上記項目は 2024 年 4 月時点の Togetter 利用規約・Twitter 開発者ポリシーを参照しています。最新情報は公式サイトをご確認ください。
6. まとめ(Key Takeaways)
| 項目 | 内容 |
|---|---|
| API の取得方法 | 有料サブスクリプション購入 → Client ID/Secret 発行 → OAuth 2.0 client_credentials フローでトークン取得 |
| 主要エンドポイント | ツイート検索、まとめ作成、一覧取得、削除 が RESTful に提供。Python・Node.js のサンプルコードは公式ヘルプに準拠 |
| Twitter Enterprise 連携 | 契約済みの Enterprise API を活用すれば、1 日数十万件規模でも安定取得可能。従量課金を意識したバッチ設計が重要 |
| 実務活用例 | キャンペーン集計・危機管理モニタリング・社内ナレッジ共有の 3 シナリオで効果的に利用できる |
| 法的・運用上の注意点 | 再配布禁止、30 日保存制限、個人情報マスクなど、利用規約とプライバシーポリシーを遵守することが必須 |
次のステップ
1. 公式ヘルプ(https://help.togetter.com/)で最新プランと API ドキュメントを確認。
2. テスト用に無料プランで ツイート検索 を試し、レートリミットやレスポンス構造に慣れる。
3. 本格運用は 有料サブスクリプション+Enterprise オプション の組み合わせで、コストとパフォーマンスをバランスさせる。
本稿の内容は執筆時点(2024 年 4 月)に確認できた情報に基づきます。サービス仕様や料金は予告なく変更されることがありますので、導入前に必ず公式サイトで最新情報をご確認ください。