Instagramのインサイト等の情報は過去を遡ろうとすると最長でも1か月半しか確認できなません。分析をする上で去年の同じ月に比べてどうだったかなど、確認することも出てくるかと思います。
「Instagram Graph API」を利用して、各情報を取得すれば、アウトプットの仕方は自由なので、とても便利に分析することができるます。
今回はユーザーのフォロー数、フォロワー数、といった基本的な情報をはじめ、リーチ(メディアを閲覧したユニークユーザーの合計数)やインプレッション(メディアが閲覧された合計回数)といった少し踏み込んだ情報までをAPI経由で取得してみたいと思います。
取得できる項目
取得できるインサイトの項目一覧です。
※対象アカウントのフォロワー数が100人未満の場合、取得ができません。
follow_count | フォロー数 |
---|---|
follower_count | フォロワー純増数 |
profile_views | プロフィールビュー数 |
impressions | インプレッション数 |
audience_city | フォロワーの市町村データ |
audience_country | フォロワーの国データ |
audience_gender_age | フォロワーの性別と年齢の分布 |
email_contacts | プロフィール上のメールリンク合計タップ数 |
get_directions_clicks | プロフィール上の指示リンクの合計タップ数 |
online_followers | フォロワーのうち、指定された期間にオンラインだったフォロワーの合計数 |
phone_call_clicks | プロフィール上のコールリンクの合計タップ数 |
text_message_clicks | プロフィール上のSMSリンクの合計タップ数 |
website_clicks | プロフィール上のウェブサイトリンクの合計タップ数 |
準備
以下の記事を参考にInstagram graph APIを利用できる状況を構築。
https://to-inc.co.jp/socialbook/2021/11/08/2189/
使用する言語
今回は、PHPを基にInstagram graph APIを介してデータ取得します。
実装
エンドポイント例
https://graph.facebook.com/v11.0/※1123456/insights?metric=※2follower_count,profile_views,impressions,reach,website_clicks&period=day&※3since=2021/12/01&util=2021/12/15&access_token=※4abcdehghijk
解説
対象のアカウントのInstagramIDに変更
取得したい項目(カラム名)に変更
参照期間を変更
since:開始日時(yyyy/mm/dd形式)
util:終了日時(yyyy/mm/dd形式)
戻り値の説明
以下のようなJSON形式の配列が戻ってきます。
利用用途に併せて整形してみてください。
["data"]=>
array(5) {
[0]=>
array(6) {
["name"]=>
string(14) "follower_count" //カラム名
["period"]=>
string(3) "day" //日別
["values"]=>
array(6) {
[0]=>
array(2) {
["value"]=>
int(2) //数値
["end_time"]=>
string(24) "2021-12-25T08:00:00+0000" //日時
}
=>
array(2) {
["value"]=>
int(3)
["end_time"]=>
string(24) "2021-12-26T08:00:00+0000"
}
}
["title"]=>
string(18) "フォロワー数"
["description"]=>
string(90) "このプロフィールをフォロー中のユニークアカウントの合計数です"
["id"]=>
string(45) "17841402296692726/insights/follower_count/day"
}
プログラミング例
以下、実際のプログラムコードです。
//①アカウント情報
$instagram_business_id = "×××××××××";
$access_token = "〇〇〇〇〇〇〇〇〇";
$target_user = $insta_name;
//②対象期間指定
$now_date = date("Y/m/1");
$before_date = date("Y-m-d",strtotime("-7 day"));
$start_time = strtotime($now_date);
$wnd_time = strtotime($before_date);
//③取得したい項目を指定
$query = 'insights?metric=follower_count,profile_views,impressions,reach,website_clicks&period=day&since='.$start_date.'&until='.$end_date;
//④エンドポイントURL生成
$instagram_api_url = 'https://graph.facebook.com/v11.0/';
$target_url = $instagram_api_url.$instagram_business_id."/".$query."&access_token=".$access_token;
//⑤JSON形式から変換
$get_data_ar = json_decode(@file_get_contents($target_url), true);
//⑥連想配列に整形
$engagement_data = array();
foreach($get_data_ar['data'] as $key => $val){
foreach($val['values'] as $data_key => $data_val){
$target_date = date('Ymd', strtotime($data_val['end_time']));
if($val['name'] == 'impressions'){
$engagement_data['impressions'][$target_date] = $data_val['value'];
}else if($val['name'] == 'profile_views'){
$engagement_data['profile_views'][$target_date] = $data_val['value'];
}else if($val['name'] == 'reach'){
$engagement_data['reach'][$target_date] = $data_val['value'];
}else if($val['name'] == 'follower_count'){
$engagement_data['follower_count'][$target_date] = $data_val['value'];
}else if($val['name'] == 'website_clicks'){
$engagement_data['website_clicks'][$target_date] = $data_val['value'];
}
}
}
解説
対象のアカウントの情報に変更
取得したい期間を定義
今回は本日日付より7日前を設定しています。
エンドポイントのURLを定義する為に
取得したい項目をカンマ区切りで定義していきます。
実際に通信先のエンドポイントを作成します。
JSON形式のデータが返却される為、
デコードします。
任意の連想配列の形に整形しています。
今回は$engagement_data[カラム名][日時] = 数値
としています。
今回はアカウントのインサイトが取得できたので、
次回は投稿のインサイトを取得してみたいと思います。
2009年にIT業界に就職、開発者を志す。マッチングアプリ、ソーシャルゲーム、顧客管理システム開発を経て、ソーシャルマーケティングのマーケターを経験後、SNS管理ツール「GENba」の開発者として運用まで担っている。
2019年、株式会社toにジョイン。