概要: URIを使用して、CSVファイルで集計レポートを取得します。
Pull API ローデータをお探しですか?
Pull API集計データの特性
- レポートはCSVファイルとして生成されます。
- データの鮮度は「データエクスポート」ページ内の同等のレポートと同じです。
- 利用できるオプションによるフィルタ:メディアソースと日付範囲。
- Pull APIの追加機能は次のとおりです:
- アトリビューションタッチタイプ で絞り込む機能
- 選択可能なタイムゾーン
- Pull APIは、チームメンバーとBI開発者による使用に適しています。
カテゴリ | ユーザー獲得 | リターゲティング | Protect360 |
---|---|---|---|
パートナー(メディアソース) | ✓ | ✓ | ✓ |
パートナー(日付別) |
✓ | ✓ | ✓ |
日別 |
✓ | ✓ | ✓ |
地域別 |
✓ | ✓ | ✓ |
地域別レポート (日付別) |
✓ | ✓ | ✓ |
* リターゲティングレポートの場合は、URIに |
関連記事:
用語
用語 | 説明 |
---|---|
Pull API |
URIを使用してCSVレポートをダウンロードするためのソリューション。 |
APIコールまたは呼び出し |
ブラウザのアドレスバーに貼り付けるか、スクリプトを使用して、URIをAppsFlyerに送信すること。 |
URI |
|
チームメンバー向けご利用ガイド
URIテンプレートについて
- 管理画面から確認できるURIテンプレートには、アプリIDとレポートタイプが既に入力されています。
- API V1.0トークンとレポート期間(from/to)用のプレースホルダが含まれていますので、それらを編集する必要があります。
- URIのクエスションマーク(?)より右側の部分は、パラメータを含んでいます。各パラメータはアンパサンド(&)で始まります。 パラメータは、フィルタの設定、追加フィールドの追加、通貨やタイムゾーンの指定に使用されます。例えば、ローデータレポートで特定のメディアソースを指定する(絞り込む)場合、「media_source」パラメータを使います:
&media_source=facebook
- Pull API の理解を深めるには、次のチュートリアルを実行してください。
初めてPull APIを使用する際のチュートリアル
はじめに:- V1.0トークンについて管理者へお問合せください。
管理画面からレポートをダウンロードするには:
-
[インテグレーション] > [APIアクセス] へ進みます。
APIアクセスページが開きます。 - レポートタイプを選択します。例:パフォーマンスレポート > パートナーレポート(日付別)
URLテンプレートが表示されます。 - クリックしてURIをコピーします。
- ブラウザの新しいタブを開き、URIを貼り付けます。
- URIを編集します:
- トークンプレースホルダを、管理者から提供されたPull APIトークンに置き換えます。
例:トークンプレースホルダを置き換えます。&api_token=12345678-1234-1234-1234-123456789012
注!スペースや句読点等は含みません。 - from/to プレースホルダを日付に置き換えます。
例:&from=2020-01-20&to=2020-01-31
注意!スペースは含みません。「&」を削除しないでください。
- トークンプレースホルダを、管理者から提供されたPull APIトークンに置き換えます。
- EnterキーをクリックしてAPIコールを送ります。
レポートがダウンロードされます。
追加パラメータを設定して、レポートをカスタマイズできます。たとえば、特定のメディアソースを選択したり、リターゲティングデータを返したり、などです。次のセクションには利用できるパラメーターの一覧が含まれています。
集計データPull APIパラメーター
パフォーマンスレポートのURIとパラメーター
パラメーター | 説明 |
---|---|
api_token | V1.0 API トークン APIコールの例では、次のように表示されています: <API TOKEN HERE> |
from |
|
to |
終了日。from を参照
|
パラメーター | 説明 |
---|---|
media_source |
特定のメディアソースに制限(フィルタ)するために使用します。
|
attribution_touch_type |
このパラメーターを例に示すように設定して、ビュースルーアトリビューション (VTA) のKPI を取得します。 例: |
currency |
収益とコストの通貨 集計Pull APIレポートは常にアプリ固有の通貨を使用します。 |
reattr |
リターゲティングのコンバージョンデータを取得します。
|
timezone |
[デフォルト] UTC を使用してデータが返されます。
タイムゾーンの選択に関する注意点
|
Google Adsのフィルタリングされたレポート
https://hq.appsflyer.com/export/com.greatapp/partners_report/v5?api_token=xxxx
&from=2018-04-09&to=2018-05-09&media_source=googleadwords_int
Facebookのフィルタリングされたレポート
https://hq.appsflyer.com/export/com.greatapp/partners_report/v5?api_token=xxxx
&from=2018-04-09&to=2018-05-09&media_source=facebook
parameter | 説明 |
---|---|
URI |
|
pid |
特定のメディアソースでレポートをフィルタリングするには、 |
timezone |
生成されるデータで使用するタイムゾーンを選択します。 timezone が送信されない場合、データではUTCが使用されます。 タイムゾーン パラメータを含むテンプレート。 例: |
KPI |
Protect360のパラメーターは、Pull APIとMaster APIと同じです。
|
ビュースルー計測 (VTA) KPI
- ビュースルーのKPIを取得するには、次の例で詳しく説明されているように、パラメーター attribution_touch_type=impression をパフォーマンスレポートPull APIのURIに追加します。
- どの集計レポートでもパラメーターを使用することができます。ユーザーインターフェイスからURIをコピーし、パラメーターを追加するだけです。
- 次の例に示すように、&media_source パラメーターを追加して、レポートを特定のメディアソースに絞り込むこともできます。
- クリック数、インプレッション数、コスト API など、一部のビュースルーKPI には値が関連付けられていないため、代わりにN/Aという値が表示されます。
例 | URIの例 |
---|---|
ビュースルーのみ | https://hq.appsflyer.com/export/{app_id}/partners_report/v5?api_token={API token}&from=yyyy-mm-dd&to=yyyy-mm-dd&attribution_touch_type=impression |
ビュースルーとメディアソース |
https://hq.appsflyer.com/export/{app_id}/partners_report/v5?api_token={API token}&from=yyyy-mm-dd&to=yyyy-mm-dd&attribution_touch_type=impression&media_source=example_ad_network |
開発者向け Pull API
実装の原則
前提条件:
チームメンバー向けのPull APIガイドをご参照ください。
次の点を考慮してください:
- 使用可能なレポートタイプごとに、管理画面にテンプレートURIが表示されます。[インテグレーション] > [APIアクセス] へ進みます。
- テンプレートを変更して、必要なデータを取得します。たとえば、日付範囲を設定し、パラメーターでデータを絞り込みます。
- ローデータレポートと集計データレポートのパラメータは異なり、レポートセクションで詳しく説明します。
パス |
|
パスのパラメーター |
|
HTTP method |
|
パラメーター | 説明 |
---|---|
URIの例 |
|
api_token |
|
その他のパラメーター |
パラメータは次により異なります: |
例
URIコールの例には追加パラメーターが含まれます:
https://hq.appsflyer.com/export/example.app.com/installs_report/v5?
api_token={Account owner API key should be used}&from=yyyy-mm-dd
&to=yyyy-mm-dd&additional_fields=keyword_id,store_reinstall,
deeplink_url,oaid,install_app_store,contributor1_match_type,
contributor2_match_type,contributor3_match_type,match_type
スクリプトのサンプル
Pull APIをスクリプトに統合してデータを取得します。
- 必要に応じて、レポートの種類、日付範囲、およびフィルタに関してスクリプトを編集します。
- これらの例では、インストールレポートを使用します。
import okhttp3.*;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.util.concurrent.TimeUnit;
public class PullApi {
public static void main(String[] args){
String appID = "<APP_ID>";
String reportType = "<REPORT_TYPE>";
String apiToken = "<API_TOKEN>";
String from = "<FROM_DATE>";
String to = "<TO_DATE>";
String requestUrl = "https://hq.appsflyer.com/export/" + appID + "/" + reportType + "/v5?api_token=" + apiToken + "&from=" + from + "&to=" + to;
OkHttpClient client = new OkHttpClient.Builder()
.connectTimeout(30, TimeUnit.SECONDS)
.readTimeout(30, TimeUnit.SECONDS)
.build();
Request request = new Request.Builder()
.url(requestUrl)
.addHeader("Accept", "text/csv")
.build();
try {
Response response = client.newCall(request).execute();
if(response.code() != 200) {
if(response.code() == 404) {
System.out.println("There is a problem with the request URL. Please make sure it is correct");
}
else {
assert response.body() != null;
System.out.println("There was a problem retrieving the data: " + response.body().string());
}
} else {
assert response.body() != null;
String data = response.body().string();
BufferedWriter writer;
writer = new BufferedWriter(new FileWriter(appID + "-" + reportType + "-" + from + "-to-" + to + ".csv"));
writer.write("");
writer.write(data);
writer.close();
}
System.exit(0);
} catch (Exception e) {
e.printStackTrace();
System.exit(1);
}
}
}
request = require('request');
const fs = require('fs');
const appID = '<APP_ID>';
const reportType = '<REPORT_TYPE>';
const apiToken = '<API_TOKEN>';
const from = '<FROM_DATA>';
const to = '<T0_DATE>';
const requestUrl = `https://hq.appsflyer.com/export/${appID}/${reportType}/v5?api_token=${apiToken}&from=${from}&to=${to}`;
request(requestUrl, (error, response, body) => {
if (error) {
console.log('There was a problem retrieving data:', error);
}
else if (response.statusCode != 200) {
if (response.statusCode === 404) {
console.log('There is a problem with the request URL. Make sure that it is correct');
} else {
console.log('There was a problem retrieving data:', response.body);
}
} else {
fs.writeFile(`${appID}-${reportType}-${from}-to-${to}.csv`, response.body, (err) => {
if (err) {
console.log('There was a problem writing to file: ', err);
} else {
console.log('File was saved');
}
});
}
});
import requests
app_id = '<APP_ID>'
report_type = '<REPORT_TYPE>'
params = {
'api_token': '<API_TOKEN>',
'from': 'FROM_DATE',
'to': 'TO_DATE'
}
request_url = 'https://hq.appsflyer.com/export/{}/{}/v5'.format(app_id, report_type)
res = requests.request('GET', request_url, params=params)
if res.status_code != 200:
if res.status_code == 404:
print('There is a problem with the request URL. Make sure that it is correct')
else:
print('There was a problem retrieving data: ', res.text)
else:
f = open('{}-{}-{}-to-{}.csv'.format(app_id, report_type, params['from'], params['to']), 'w', newline='', encoding="utf-8")
f.write(res.text)
f.close()
using System;
using RestSharp;
using System.Text;
using System.Net;
using System.IO;
namespace Pull_API
{
class PullAPi
{
static void Main(string[] args)
{
var appID = "<APP_ID>";
var reportType = "<REPORT_TYPE>";
var apiToken = "<API_TOKEN>";
var from = "<FROM_DATE>";
var to = "<TO_DATE>";
var requestUrl = "https://hq.appsflyer.com/export/" + appID + "/" + reportType + "/v5?api_token=" + apiToken + "&from=" + from + "&to=" + to;
var client = new RestClient(requestUrl);
var request = new RestRequest(Method.GET);
request.AddHeader("Accept", "text/csv; charset=UTF-8");
IRestResponse response = client.Execute(request);
HttpStatusCode statusCode = response.StatusCode;
int numericStatusCode = (int)statusCode;
if(numericStatusCode != 200){
if(numericStatusCode == 404){
Console.WriteLine("There is a problem with the request URL. Make sure that it is correct.");
} else {
Console.WriteLine("There was a problem retrieving data: " + response.Content);
}
} else {
System.IO.File.WriteAllText(@"" + appID + "-" + reportType + "-" + from + "-to-" + to + ".csv", response.Content);
Console.WriteLine("Data retrieved succesfully");
}
}
}
}
<?
$appID = '<APP_ID>';
$reportType = '<REPORT_TYPE>';
$apiToken = '<API_TOKEN>';
$from = '<FROM_DATE>';
$to = '<TO_DATE>';
$query = http_build_query([
'api_token' => $apiToken,
'from' => $from,
'to' => $to
]);
$requestUrl = 'https://hq.appsflyer.com/export/' . $appID . '/' . $reportType . '/v5?'.$query;
$report = $appID . '-' . $report . '-' . $from . '-to-' . $to;
$curl = curl_init($requestUrl);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_ENCODING, "");
curl_setopt($curl, CURLOPT_NOSIGNAL, true);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($curl, CURLOPT_MAXREDIRS, 10);
curl_setopt($curl, CURLOPT_FAILONERROR, true);
curl_setopt($curl, CURLOPT_TIMEOUT, 100);
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "GET");
curl_setopt($curl, CURLOPT_HTTPHEADER, array(
"cache-control: no-cache",
"Accept: text/csv; charset=UTF-8"
));
$response = curl_exec($curl);
$info = curl_getinfo($curl);
$err = curl_error($curl);
curl_close($curl);
var_dump($response);
if ($err) {
echo $info['http_code'];
echo "cURL Error #: " . $err . '. ';
if ($info['http_code'] == 404) {
echo 'There is a problem with the request URL. Make sure that it is correct';
}
if ($info['http_code'] == 401) {
echo 'There was a problem retrieving data: authentication failed.';
}
echo PHP_EOL;
} else {
$fp = fopen($report, 'w+');
fwrite($fp, $response);
fclose($fp);
echo $response;
}
?>
追加情報
Pull API V4とV5の違い
ローデータ: API V4は引き続き利用可能です。ファイル形式とヘッダーに変更はありません。
集計データ (V5):
V5.0では、media_source=facebook の場合、次の追加フィールドが提供されます。
- Campaign ID
- 広告セット名
- Adset Id
- Ad (Adgroup) Name
- Ad (Adgroup) Id
特性と制限
特性 | コメント |
---|---|
必要なAPIトークンタイプ |
![]() |
アドネットワークのアクセス | N |
代理店アクセス | Y |
代理店への運用詳細の開示 | Y |
アプリ固有の通貨 | Y |
アプリ固有のタイムゾーン | Y |
データ更新頻度 | リアルタイムで受け取ることができます。 |
過去データ | Y |
非オーガニックデータ | Y |
オーガニックデータ | Y |
レート制限 | |
サイズ制限 |
|
キャンペーン名の変更 | Pull APIレポートはキャンペーン名の変更をサポートしていません。 |
APIエラーコードとトラブルシューティング
ステータス | コード | 症状/メッセージ | 解決策 |
---|---|---|---|
OK | 200 | Empty CSV file(CSVファイルが空です) |
|
OK |
200 |
|
URIにAPIトークンが見つかりません |
Bad request |
400 |
Raw Reports historical lookback is limited to 90 days.(ローデータレポートの過去データは90日間に制限されています) |
|
Bad request |
400 |
Your API calls limit has been reached for report type(このレポートタイプについてAPIコールの上限に達しました) |
- |
Unauthorized |
401 |
Supplied API token is invalid(指定されたAPIトークンが無効です) |
最新のトークンについて管理者にお問い合わせください |
Unauthorized |
401 |
Account may be suspended.(アカウントが停止されている可能性があります) |
管理画面にログインしアカウントのステータスを確認してください |
Not found |
404 |
AppsFlyer 404エラーメッセージページが表示されます |
|