概要
アナリティクス指標は、パートナーや広告主が X 上でプロモーションしているコンテンツのパフォーマンスを把握するのに役立ちます。これには、インプレッション数、クリック数、動画再生数、支出額などの情報が含まれます。さらに、パートナーや広告主は、リーチしたオーディエンスのさまざまなセグメントごとの詳細な指標を取得することができます。 Ads API では、キャンペーンパフォーマンスの詳細な指標を取得する方法として、同期処理と非同期処理の 2 つをサポートしています。同期型の analytics 呼び出しでは、要求した指標がレスポンス内で返されます。非同期型の analytics エンドポイントでは、関連する「ジョブ」の処理が完了した後、ダウンロード可能な結果ファイルとして要求した指標を取得できます。同期エンドポイントは短い期間の指定をサポートしており、リアルタイムでのキャンペーン最適化に最適です。非同期エンドポイントは、はるかに長い期間をサポートしており、より大量のデータ取得を想定しているため、レポーティングや履歴データのバックフィルを行う用途に適しています。 同期処理エンドポイントと非同期処理エンドポイントの違いを、次の表にまとめています。どのエンドポイント群を使用するかを開発者が選択する際の参考情報です。- 任意の時点で同時に「処理中」状態になれるジョブの最大数を指します。
- リアルタイム最適化: パフォーマンス指標を用いて、配信中のキャンペーンを更新する
- 同期処理: 定期的に実行されるバックグラウンド同期
- 新規アカウントのオンボーディング: 過去データの補完
- Entities: 分析を取得したいエンティティの entity type と、対象とする最大 20 個のエンティティ id
- Time range: ISO 8601 形式で指定する開始時刻と終了時刻
- Note: 1 時間単位の値で指定する必要があります
- Metric groups: 関連するメトリクスの 1 つ以上のセット (各 metric group に含まれるメトリクス一覧は「Metrics and Segmentation」を参照)
- Granularity: メトリクスがどの集計レベルで返されるかを指定します
- Placement: メトリクスを、X 上で配信された広告か、X 外で配信された広告かのどちらに対して取得するかを指定します
- Note: 1 回のリクエストで指定できる placement の値は 1 つだけです
start_time と end_time リクエストパラメータを使用して、タイムレンジを指定します。これらの値は、以下のように指定した granularity と整合している必要があります。
TOTAL: 任意のタイムレンジを指定できます (エンドポイントの制限内)DAY: start time と end time の両方の値は、アカウントのタイムゾーンにおける午前 0 時に揃えて指定する必要がありますHOUR: 任意のタイムレンジを指定できます (エンドポイントの制限内)
start_time=2019-01-01T00:00:00Z と end_time=2019-01-02T00:00:00Z を指定したリクエストでは、このタイムレンジが 24 時間のみをカバーするため、2 日分ではなく 1 日分の analytics メトリクスのみが返されます。
Segmentation
Segmentation は非同期 analytics エンドポイントでのみ利用可能で、パートナーや広告主が特定のターゲティング値ごとに分割されたメトリクスを取得できるようにします。セグメント化されたメトリクスをリクエストするには、segmentation_type リクエストパラメータを使用します。セグメンテーションオプションの詳細については、Metrics and Segmentation を参照してください。
なぜ Ads API の数値は X Ads の UI に表示されるものと一致しないのですか?
ALL_ON_TWITTER、PUBLISHER_NETWORK、SPOTLIGHT、TRENDのすべてのプレースメントについてデータをリクエストしていることを確認してください。- Ads API における終了時刻は「排他的」ですが、Ads UI では「包括的」であることを忘れないでください。
- レポート用指標が利用可能になり次第、取得できるようになります。これらはほぼリアルタイムで利用可能です。ただし、これらの初期結果は推定値であり、その結果として変動することが想定されています。支出データを除き、指標は 24 時間後に確定します。
- 支出に関する指標は、一般的にイベント発生から 3 日以内に確定します。ただし、請求データは (スパムフィルタリングなどの理由により) イベント発生日から最大 14 日間にわたって処理されます。
- Active Entities エンドポイント を使用してください。
null なのですか?
- リクエストした期間中に、そのキャンペーンが配信されていなかった可能性が高いです。
- どのエンティティの、どの期間の analytics を取得すべきかを判断するために、Active Entities エンドポイント を使用してください。
null が表示されるのに、UI では 0 が表示されるのですか?
- UI ではこれらの値を 0 として表示していますが、値としては同等です。
- analytics では、
ALL_ON_TWITTER、PUBLISHER_NETWORK、SPOTLIGHT、TREND(つまり X Audience Platform) というプレースメント値をサポートしています。
- はい。エンティティのステータスは analytics 指標の取得可否には影響しません。
- セグメント別データは、その情報の計算方法上、非セグメントのデータと 100% 一致する集計値になることは想定されていません。
- 複数ディメンションでのセグメント化 (マルチセグメンテーション) には対応していません。
- レート制限が適用されたリクエスト (
HTTP 429ステータスコードを返すもの) では、x-rate-limit-resetヘッダーを確認し、指定された時刻以降にのみリトライする必要があります。 - HTTP 503 Service Unavailable ステータスコードが返されたリクエストでは、
retry-afterヘッダーを確認し、指定された時刻以降にのみリトライする必要があります。 - 指定されたリトライ時刻を守らないアプリケーションは、予告なく Ads API へのアクセスを取り消されたり、スロットルされたりする可能性があります。
- すべてのアナリティクス指標は、
billed_charge_local_microを除いて、24時間後には値が固定され、それ以降は変更されません。 billed_charge_local_micro指標は、データが返された時点から最大3日間は推定値として報告されます。- 24時間経過後、この指標は、過剰配信 (指定した
end_time以降に配信された広告) に対するクレジットや、無効と判断された課金対象イベントに対するクレジットにより減少することがあります。この指標は24時間以降はごくわずかしか変化しません。 - 詳細については、Analytics を参照してください。
start_timeとend_timeの両方を常に指定してください。- 7 日より前のエンティティについてはデータを取得しないでください。
- 可能であれば
HOUR粒度でデータをリクエストしてください。DAYやTOTAL粒度が必要な場合は、常に集計してメトリクスをロールアップできます。 - 可能であれば
line_itemsおよびpromoted_tweetsレベルでデータをリクエストしてください。キャンペーン、funding instrument、アカウントレベルなど、広告エンティティ階層全体の合計値が必要な場合は、これらのメトリクスを集計してロールアップできます。 - 分析メトリクスの値は、ローカル環境側で保存・保管してください。
- 30 日より前のデータを繰り返しリクエストしないでください。このデータは変化せず、ローカルに保存しておくべきです。
- すべての非セグメント化データはリアルタイムであり、イベント発生から数秒以内に利用できるようになります。
- コンバージョンメトリクスと非コンバージョンメトリクスは、別々のリクエストに分けてください。
- 上記の「リアルタイムの非セグメント化データの取得」に関するガイドラインを参照してください。追加の注意点を以下に記載します。
- ほとんどのセグメント化データの種別では、データが最大1時間程度完全でない場合があります。
INTERESTSでセグメント化されたデータは、最大12時間まで遅延する可能性があります。 - セグメント化データは、その情報の算出方法により、非セグメント化データと100%一致するように集計されることは想定されていません。
- バックフィル (例: 新しい広告主アカウントを追加する場合) を行うときは、
start_timeとend_timeで指定する期間をより小さなチャンクに分割して、複数回に分けてリクエストする必要がある場合があります。 - 取得対象の期間は、30 日間のウィンドウに制限してください。
- これらのリクエストはレートを調整し、時間的に分散させて、これらの取得に対するレート制限の上限に達しないようにしてください。
fetch_stats) は、ads-platform-tools GitHub リポジトリで公開されています。
どの指標をエンティティに適用できるかは、キャンペーンの目的 によって異なります。このガイドを使用して、各目的の種類ごとに取得すべき関連する指標グループと、追加の派生指標の算出方法を確認してください。
関連するメトリクスグループ:ENGAGEMENT と BILLING。クリエイティブにメディアが使用されている場合は MEDIA も該当します。
関連するメトリクスグループ:
ENGAGEMENT、BILLING、WEB_CONVERSION。クリエイティブでメディアが使用されている場合は MEDIA も該当します。
関連するメトリクスグループ:
ENGAGEMENT、BILLING、MOBILE_CONVERSION、LIFE_TIME_VALUE_MOBILE_CONVERSION。クリエイティブでメディアまたは動画アプリカードを使用している場合は、MEDIA と VIDEO も対象になります。
関連する指標グループ:
ENGAGEMENT と BILLING。クリエイティブにメディアが含まれる場合は MEDIA も適用されます。
関連するメトリックグループ:
ENGAGEMENT と BILLING。クリエイティブでメディアを使用する場合は MEDIA も該当します。
関連メトリックグループ:
ENGAGEMENT、BILLING、VIDEO
関連するメトリックグループ:
ENGAGEMENT、BILLING、VIDEO
このドキュメントでは、各エンティティタイプごとに Analytics から取得できるメトリクスの概要と、各メトリクスで利用可能なセグメンテーションについて説明します。
*
ENGAGEMENT メトリクスファミリーに含まれる一部のメトリクスは、ACCOUNT レベルおよび FUNDING_INSTRUMENT レベルでは利用できません。詳細については ENGAGEMENT セクションを参照してください。
動画メトリクス定義の変更に関するお知らせ:
VIDEO メトリクスグループ内の video_total_views メトリクスは、MRC 標準に従い、少なくとも 2 秒間連続して 50%以上が視認範囲内にあるビューをカウントします。
元の動画ビュー定義 (少なくとも 3 秒間、100% が視認範囲内) のメトリクスは、VIDEO メトリクスグループ内の新しい video_3s100pct_views メトリクスとして引き続き利用できます。元のビュー定義に基づいて入札および課金を継続するには、新たに利用可能な VIEW_3S_100PCT bid_unit を使用してください。
モバイルコンバージョンの指標は、MACT が有効になっている広告主アカウントでのみ利用できます。
ライフタイムモバイルコンバージョンの統計は、MACT が有効になっている広告主アカウントでのみ利用できます。
セグメンテーションのレポートでは、特定のターゲティングタイプの値ごとに分割されたメトリックを取得できます。セグメンテーションは、追加される複雑性が大きいため、非同期アナリティクスクエリ でのみ利用可能です。
セグメンテーションは、
MEDIA_CREATIVE または ORGANIC_TWEET エンティティではサポートされていません。
一部のセグメンテーションタイプでは、追加パラメータの指定が必要です。これらについては以下に記載します。
CITIES または POSTAL_CODES でセグメントする場合、API はターゲットに設定されたロケーションのみを返します。REGIONS および METROS によるセグメンテーションでは、ターゲットに設定されたロケーションとターゲットに設定されていないロケーションの両方が返されます。
キャンペーンメトリクスは、それぞれのキャンペーン目的に依存します。このガイドでは、設定されている目的に応じて利用する導出メトリクスの算出方法を説明します。
中括弧で囲まれていない
metric は、Ads API の analytics エンドポイントから返されるメトリクスです。名前が {中括弧} で囲まれているものは、そのカテゴリにおける導出メトリクスを表します。
エンゲージメント
APP_INSTALLS と APP_ENGAGEMENTS
フォロワー
リード獲得
VIDEO_VIEWS
placement_type が PROMOTED_ACCOUNT の場合は、上記の FOLLOWERS オブジェクティブを参照してください。それ以外のすべてのプレースメントでこのオブジェクティブを使用する場合は、対応する派生メトリクスについて ENGAGEMENTS を参照してください。
Active Entities エンドポイント は、どのキャンペーンについてアナリティクスをリクエストすればよいかを判断するための情報を提供することを目的として、同期 および 非同期 アナリティクスエンドポイントと組み合わせて使用するよう設計されています。広告エンティティの詳細と、そのメトリクスがいつ変化したかを返すことで、この目的を達成します。このエンドポイントを使用することで、コードおよびアナリティクス取得ロジックを大幅に簡素化できます。
このガイドでは、このエンドポイントとそのデータソースに関する情報とコンテキストを提供します。また、利用ガイドライン と、Active Entities をアナリティクスエンドポイントと組み合わせて使用する方法を示す一連の リクエスト例 も掲載しています。概要セクション では、推奨されるアプローチの概要レベルの説明を提供します。
広告エンティティのメトリクスが変更されるたびに、その変更に関する情報を記録します。これらの変更イベントは 1 時間単位のバケットに保存され、エンティティに関する詳細と、その変更が適用される時刻の両方が含まれます。後者が必要になるのは、変更イベントが常に記録した時刻と対応するとは限らないためです。請求の調整が一般的な理由ですが、その他にも理由があります。
Active Entities リクエストは広告アカウント配下にスコープされており、必須クエリパラメータ entity、start_time、end_time が 3 つあります。
twurl -H ads-api.x.com "/11/stats/accounts/18ce54d4x5t/active_entities?entity=PROMOTED_TWEET&start_time=2019-03-05T00:00:00Z&end_time=2019-03-06T00:00:00Z"
サポートされている entity の値は、CAMPAIGN、FUNDING_INSTRUMENT、LINE_ITEM、MEDIA_CREATIVE、PROMOTED_ACCOUNT、PROMOTED_TWEET です。これは、分析エンドポイントがサポートするエンティティの種類を反映しています。
start_time および end_time の値は ISO 8601 形式で指定し、どの 1 時間単位のバケットをクエリするかを示す必要があります。これらは必ず 1 時間きざみで指定しなければなりません。
このエンドポイントは、結果をフィルタリングするために使用できる 3 つのオプションのパラメータ funding_instrument_ids、campaign_ids、line_item_ids もサポートします。これらは広告階層のすべてのレベルおよび指定された任意の entity type で機能します。
上記のリクエストに対する Active Entities レスポンスは以下のとおりです。
data 配列には、後続のアナリティクスリクエストに含める必要がある各エンティティごとに 1 つのオブジェクトが含まれます。この集合に含まれない ID については、アナリティクスをリクエストしないでください。
各オブジェクトには、entity_id、activity_start_time、activity_end_time、placements の 4 つのフィールドが含まれます。アクティビティの開始時刻と終了時刻は、関連するエンティティの変更イベントが適用される時間範囲を表しており、その結果として、後続のアナリティクスリクエストで指定すべき日付を決定します。placements 配列には、ALL_ON_TWITTER、PUBLISHER_NETWORK、SPOTLIGHT、TREND の値を含めることができます。これは、対象のエンティティ ID について、どのプレースメントをリクエストすべきかを示します。
Active Entities エンドポイントは、アナリティクスリクエストをどのように行うかを決定する基準となります。以下の利用ガイドラインは、アナリティクスの同期をサポートし、パートナーが自社のデータストアを Twitter と同期した状態に保てるようにするために記述されています。言い換えると、定期的にスケジュールされたバックグラウンド同期処理をどのように実行するかを説明しています。
開発者は 2 つの点について判断する必要があります。
- アクティブエンティティ情報をどのくらいの頻度でリクエストするか、そしてその結果としてアナリティクスをどのくらいの頻度で取得するか。
- アクティビティの開始時刻と終了時刻をどのように使用して、アナリティクスリクエストの
start_timeおよびend_timeの値を決定するか。
- Active Entities リクエストを送信します。
- レスポンスを placement ごとに分割します。
ALL_ON_TWITTER用に 1 グループ、PUBLISHER_NETWORK用に 1 グループ、SPOTLIGHT用に 1 グループ、TREND用に 1 グループ作成します。 - 各 placement グループに対して、次を実行します。
- エンティティ ID を抽出します。
- 分析用の
start_timeとend_timeの値を決定します。- 最小の
activity_start_timeを取得し、この値を下方向に丸めます。 - 最大の
activity_end_timeを取得し、この値を上方向に丸めます。
- 最小の
- 分析リクエストを送信します。
- エンティティ ID を 20 件ずつのバッチにまとめます。
- 3b で求めた
start_timeとend_timeの値を使用します。 - 適切な
placementの値を指定します。
- データストアに書き込みます。
start_time が直前のリクエストの end_time と等しくなるように時間範囲を選択する必要があります。
Note: 同じ時間ウィンドウは 1 回だけリクエストしてください。同じ時間ウィンドウを複数回リクエストすると、不要なアナリティクスリクエストが発生します (下記の例外を除きます) 。
start_time と end_time のタイムスタンプ例を示しています。
変更イベントの保存方法により、上記 4 つの Active Entities リクエストはすべて同じ 1 時間ごとのバケットをクエリしますが、このユースケースではそれが必要です。ただし、現在の時間が過ぎた後は、この 1 時間バケットを再度クエリするべきではありません。
アクティビティの開始時刻と終了時刻を扱う際には、次の方法を推奨します。Active Entities レスポンス内のすべてのオブジェクトを対象に、最小の
activity_start_time と最大の activity_end_time を探します。これらの値を、最小のアクティビティ開始時刻は切り下げ、最大のアクティビティ終了時刻は切り上げる形で丸めて調整します。具体的には、両方のタイムスタンプの時刻部分を 0 に設定し、終了時刻に 1 日を加えます。以下の表に例を示します。これが、その後のアナリティクスリクエストで指定すべき開始時刻と終了時刻になります。
注: 時・分・秒を 0 に設定したタイムスタンプを含めることが重要です。そうしない場合、日付のみが渡されたときには、広告アカウントのタイムゾーンにおける午前 0 時から開始・終了するアナリティクスをリクエストしているとみなされるため、望ましくない場合があります。例えば、最小のアクティビティ開始時刻が 2019-02-28T01:30:07Z で、オフセットが -08:00:00 の広告アカウントに対してタイムスタンプが省略された場合、01:30 から 08:00 の間に発生した変更はアナリティクスリクエストに含まれません。
別の方法として、1 日単位に拡張せずに、返却されたアクティビティ時間の範囲だけに対してアナリティクスをリクエストしたい場合は、そのようにすることもできます。この方法では、導出される開始時刻と終了時刻は、それぞれ 2019-03-04T20:00:00Z と 2019-03-05T15:00:00Z になります。 (なお、アナリティクスリクエストで
DAY 粒度を指定した場合、このような時間範囲は受け付けられません。)
このセクションでは、Active Entities を同期型 analytics エンドポイントと組み合わせて使用する方法を示します (レスポンスは読みやすくするために一部変更されています) 。この例では、Active Entities エンドポイントは毎正時に呼び出され、それぞれのリクエストは直前の 1 時間を対象とします。レスポンスの内容に基づいて、同期型 analytics エンドポイントの使用方法が決まります。
最初の Active Entities リクエストは 03:00:00 に行われます。レスポンスは、ラインアイテム dvcz7 のメトリクスが変更され、その変更イベントが 02:02:55 から 02:28:12 の時間ウィンドウに適用されることを示しています。
start_time および end_time の値はそれぞれ 2019-02-11T00:00:00Z と 2019-02-12T00:00:00Z に設定されます。以下の各メトリクス配列では 3 番目の要素がゼロ以外の値になっており、これはアクティブなエンティティ情報に基づいた期待どおりの結果です。
- POST stats/jobs/accounts/:account_id エンドポイントを使用してジョブを作成します。
- ジョブの処理が完了したかどうかを判定するために、一定間隔で GET stats/jobs/accounts/:account_id エンドポイントにリクエストを送信します。
- ジョブの処理が完了したら、データファイルをダウンロードします。
- データファイルを解凍します。
segmentation_type リクエストパラメータを使用します。
このセクションでは、非同期アナリティクスエンドポイントの使用方法を示します。
まず、POST stats/jobs/accounts/:account_id エンドポイントを使用してジョブを作成します。以下の例では、特定のラインアイテムについて、1 週間分のインプレッション、いいね、クリックなどのエンゲージメント指標をリクエストしています。 (タイムスタンプが午前 0 時に設定されているため、指定した時間範囲は 3 月 20 日の直前までであり、3 月 20 日自体は含まれない点に注意してください。)
id および id_str の両方の属性として返されます。
次に、前のレスポンスで返された id_str を使用して作成したジョブについて、レスポンス内に "status": "SUCCESS" が含まれており、処理が完了しているかどうかを確認します。これはデータをダウンロードできる状態になっていることを意味します。url フィールドにはダウンロード用のリンクが含まれています。
job_ids パラメータを使い、最大 200 個のジョブ ID を指定して、一度に複数のジョブのステータスを確認することをおすすめします。
次に、表示されている url の値を使ってデータファイルをダウンロードします。
リソースURL
https://ads-api.x.com/stats/accounts/:account_id/reach/campaigns
GET https://ads-api.x.com/12/stats/accounts/18ce54d4x5t/reach/campaigns?campaign_ids=8fgzf&start_time=2017-05-19&end_time=2017-05-26
https://ads-api.x.com/stats/accounts/:account_id/reach/funding_instruments
リクエスト例
レスポンス例
end_time - start_time) は7日間です。
リソースURL
https://ads-api.x.com/12/stats/accounts/:account_id
リクエスト例
レスポンスの例
start_timeとend_timeの値で、クエリ対象とする 1 時間ごとのバケットを指定します。- 返される
data配列には、その後のアナリティクスリクエストに含める必要がある各エンティティごとに 1 つのオブジェクトが含まれます。 - 重要: その後のアナリティクスリクエストで指定すべき日付は、
activity_start_timeおよびactivity_end_timeの値に基づいて決定してください。- これらの値は、保存されている変更イベントが 適用される 期間を表します。これはエンティティごとに返されます。
end_time - start_time) は 90 日です。
https://ads-api.x.com/12/stats/accounts/:account_id/active_entities
リクエスト例
GET https://ads-api.x.com/12/stats/accounts/18ce54d4x5t/active_entities?entity=PROMOTED_TWEET&start_time=2019-02-28&end_time=2019-03-01