[アップデート]Messaging APIで統計情報を取得できるようになりました #LINE_API

2019.07.09

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

こんにちは、中村です。
Messaging APIに統計情報を取得するエンドポイントが追加されましたにてアナウンスがありましたが、Messaging APIに統計情報を取得する機能ができました。 今回は、各エンドポイントでどのようなデータが取得できるのかみていきます。

新しく追加されたエンドポイント

今回は統計情報に関わる3つのエンドポイントが追加されています。

  • メッセージの送信数を取得する
  • 友だち数を取得する
  • 友だちの属性情報に基づく統計情報を取得する

これらのデータは従来、LINE Official Account Managerの分析タブに表示されていましたがこのエンドポイントの作成によって、プログラムで取得できるようになりました。

本日紹介するAPIは、サービス統合前のLINE公式アカウントおよびLINE@アカウントでは使用できません。サービス統合後のLINE公式アカウントに移行する必要があります。

各エンドポイント

メッセージの送信数を取得する

日単位のメッセージ送信数が取得できます。

リクエストサンプル

$ curl -v -X GET https://api.line.me/v2/bot/insight/message/delivery?date=20190709 \
-H 'Authorization: Bearer {channel access token}'

ご覧いただけるように指定するパラメータは、日付のみです。

  • フォーマット: yyyyMMdd
  • タイムゾーン: UTC+9

レスポンスサンプル

{
    "status": "ready",
    "broadcast": 5385,
    "targeting": 522
}

これ以外にも利用状況によってレスポンス内容が異なります。

プロパティ タイプ 説明
status String readyunreadyout_of_service*1
broadcast Number LINE公式アカウントと友だちになっているすべてのユーザーに送信されたプッシュメッセージ(ブロードキャストメッセージ)の数。
targeting Number LINE公式アカウントと友だちになっているユーザーの中から属性で絞り込んで送信されたプッシュメッセージ(ターゲティングメッセージ、セグメントメッセージ)の数。
autoResponse Number 送信された応答メッセージの数。
welcomeResponse Number 送信されたあいさつメッセージの数。
chat Number LINE Official Account Managerのチャット基本画面から送信されたメッセージの数。
apiBroadcast Number API経由でブロードキャストメッセージが送信されたメッセージの数。
apiPush Number API経由でプッシュメッセージが送信されたメッセージの数。
apiMulticast Number API経由でマルチキャストメッセージが送信されたメッセージの数。
apiReply Number API経由でリプライメッセージが送信されたメッセージの数。

*1:readyの場合のみメッセージ数が取得できます。unreadyの場合はまだ集計が完了していない(通常翌日中に完了する)状態です。out_of_dateは、指定した日付が2017/3/1より以前の場合に返されます。

Developers.IO CAFEのLINE Botのデータで叩くとこのようなレスポンスを取得できました。

{
  "status" : "ready",
  "welcomeResponse" : 2,
  "apiPush" : 1,
  "apiReply" : 6
}

またBotが利用されていないときのレスポンスは、statusはreadyですが他プロパティが含まれない状態でした。

{
  "status" : "ready"
}

友だち数を取得する

日単位の友だち数が取得できます。

リクエストサンプル

$ curl -v -X GET https://api.line.me/v2/bot/insight/followers?date=20190418 \
-H 'Authorization: Bearer {channel access token}'

こちらもメッセージ数同様指定するパラメータは、日付のみです。 - フォーマット: yyyyMMdd - タイムゾーン: UTC+9

レスポンスサンプル

{
    "status": "ready",
    "followers": 7620,
    "targetedReaches": 5848,
    "blocks": 237
}
プロパティ タイプ 説明
status String readyunreadyout_of_service*1
followers Number 指定した日付までに、アカウントが友だち追加された回数。アカウントがブロックされたり、あなたを友だち追加したユーザーがLINEアカウントを削除したりしても、この値は減少しない。
targetReaches Number 指定した日付時点の、性別や年齢、地域で絞り込んだターゲティングメッセージの配信先となりうる友だちの総数。LINEおよびその他のLINEサービスの利用頻度が高く、属性の高精度な推定が可能な友だちが含まれる。
blocks Number 指定した日付時点で、アカウントをブロックしているユーザーの数。ブロックが解除されるとこの値は減少する。

Developers.IO CAFEのLINE Botのデータで叩くとこのようなレスポンスを取得できました。

{
  "status" : "ready",
  "followers" : 67,
  "targetedReaches" : 65,
  "blocks" : 2
}

友だちの属性情報に基づく統計情報を取得する

現在の友だちの属性情報に基づく、統計情報を取得できます。

統計情報の反映は、最大3日ほどかかります。取得データは3日前のものが確認できます。また、統計情報を表示するには20人以上のターゲットリーチが必要です。

リクエストサンプル

curl -v -X GET https://api.line.me/v2/bot/insight/demographic \
-H 'Authorization: Bearer {channel access token}'

レスポンスサンプル

{
    "available": true,
    "genders": [
        {
            "gender": "unknown",
            "percentage": 37.6
        },
        {
            "gender": "male",
            "percentage": 31.8
        },
        {
            "gender": "female",
            "percentage": 30.6
        }
    ],
    "ages": [
        {
            "age": "unknown",
            "percentage": 37.6
        },
        {
            "age": "from50",
            "percentage": 17.3
        },
        ...
    ],
    "areas": [
        {
            "area": "unknown",
            "percentage": 42.9
        },
        {
            "area": "徳島",
            "percentage": 2.9
        },
        ...
    ],
    "appTypes": [
        {
            "appType": "ios",
            "percentage": 62.4
        },
        {
            "appType": "android",
            "percentage": 27.7
        },
        {
            "appType": "others",
            "percentage": 9.9
        }
    ],
    "subscriptionPeriods": [
        {
            "subscriptionPeriod": "over365days",
            "percentage": 96.4
        },
        {
            "subscriptionPeriod": "within365days",
            "percentage": 1.9
        },
        {
            "subscriptionPeriod": "within180days",
            "percentage": 1.2
        },
        {
            "subscriptionPeriod": "within90days",
            "percentage": 0.5
        },
        {
            "subscriptionPeriod": "within30days",
            "percentage": 0.1
        },
        {
            "subscriptionPeriod": "within7days",
            "percentage": 0
        }
    ]
}
プロパティ タイプ 説明
available boolean 友だちの属性情報に基づく統計情報が利用できる場合は、true
genders Array 性別ごとの割合
genders[].gender String 性別
genders[].percentage Number 割合
age Array 年齢ごとの割合
age[].age String 年齢
age[].percentage Number 割合
areas Array 地域ごとの割合
areas[].area String 地域
areas[].percentage Number 割合
appTypes Array OSごとの割合
appTypes[].appType String OS
appTypes[].percentage Number 割合
subscriptionPeriods Array 友だち期間ごとの割合
subscriptionPeriods[].subscriptionPeriod String 友だち期間
subscriptionPeriods[].percentage Number 割合

availableがtrueの時のみ、各Arrayがレスポンスに含まれます。

Developers.IO CAFEのLINE Botのデータで叩くとこのようなレスポンスを取得できました。

{
  "available" : true,
  "genders" : [ {
    "gender" : "male",
    "percentage" : 76.9
  }, {
    "gender" : "female",
    "percentage" : 23.1
  } ],
  "ages" : [ {
    "age" : "from35to39",
    "percentage" : 27.7
  }, {
    "age" : "from25to29",
    "percentage" : 27.7
  }, {
    "age" : "from30to34",
    "percentage" : 20.0
  }, {
    "age" : "from40to44",
    "percentage" : 10.8
  }, {
    "age" : "from20to24",
    "percentage" : 7.7
  }, {
    "age" : "from50",
    "percentage" : 3.1
  }, {
    "age" : "from45to49",
    "percentage" : 3.1
  }, {
    "age" : "from0to14",
    "percentage" : 0.0
  }, {
    "age" : "from15to19",
    "percentage" : 0.0
  } ],
  "areas" : [ {
    "area" : "東京",
    "percentage" : 78.5
  }, {
    "area" : "神奈川",
    "percentage" : 4.6
  }, {
    "area" : "大阪",
    "percentage" : 4.6
  }, {
    "area" : "北海道",
    "percentage" : 3.1
  }, {
    "area" : "京都",
    "percentage" : 3.1
  }, {
    "area" : "千葉",
    "percentage" : 1.5
  }, {
    "area" : "宮城",
    "percentage" : 1.5
  }, {
    "area" : "栃木",
    "percentage" : 1.5
  }, {
    "area" : "兵庫",
    "percentage" : 1.5
  }, {
    "area" : "和歌山",
    "percentage" : 0.0
  }, {
    "area" : "埼玉",
    "percentage" : 0.0
  }, {
    "area" : "岡山",
    "percentage" : 0.0
  }, {
    "area" : "広島",
    "percentage" : 0.0
  }, {
    "area" : "鳥取",
    "percentage" : 0.0
  }, {
    "area" : "群馬",
    "percentage" : 0.0
  }, {
    "area" : "島根",
    "percentage" : 0.0
  }, {
    "area" : "新潟",
    "percentage" : 0.0
  }, {
    "area" : "香川",
    "percentage" : 0.0
  }, {
    "area" : "富山",
    "percentage" : 0.0
  }, {
    "area" : "愛媛",
    "percentage" : 0.0
  }, {
    "area" : "山口",
    "percentage" : 0.0
  }, {
    "area" : "徳島",
    "percentage" : 0.0
  }, {
    "area" : "山梨",
    "percentage" : 0.0
  }, {
    "area" : "石川",
    "percentage" : 0.0
  }, {
    "area" : "高知",
    "percentage" : 0.0
  }, {
    "area" : "福井",
    "percentage" : 0.0
  }, {
    "area" : "福岡",
    "percentage" : 0.0
  }, {
    "area" : "佐賀",
    "percentage" : 0.0
  }, {
    "area" : "静岡",
    "percentage" : 0.0
  }, {
    "area" : "大分",
    "percentage" : 0.0
  }, {
    "area" : "愛知",
    "percentage" : 0.0
  }, {
    "area" : "宮崎",
    "percentage" : 0.0
  }, {
    "area" : "長野",
    "percentage" : 0.0
  }, {
    "area" : "長崎",
    "percentage" : 0.0
  }, {
    "area" : "岐阜",
    "percentage" : 0.0
  }, {
    "area" : "熊本",
    "percentage" : 0.0
  }, {
    "area" : "秋田",
    "percentage" : 0.0
  }, {
    "area" : "青森",
    "percentage" : 0.0
  }, {
    "area" : "三重",
    "percentage" : 0.0
  }, {
    "area" : "鹿児島",
    "percentage" : 0.0
  }, {
    "area" : "岩手",
    "percentage" : 0.0
  }, {
    "area" : "滋賀",
    "percentage" : 0.0
  }, {
    "area" : "沖縄",
    "percentage" : 0.0
  }, {
    "area" : "茨城",
    "percentage" : 0.0
  }, {
    "area" : "山形",
    "percentage" : 0.0
  }, {
    "area" : "福島",
    "percentage" : 0.0
  }, {
    "area" : "奈良",
    "percentage" : 0.0
  } ],
  "appTypes" : [ {
    "appType" : "ios",
    "percentage" : 81.5
  }, {
    "appType" : "android",
    "percentage" : 18.5
  }, {
    "appType" : "others",
    "percentage" : 0.0
  } ],
  "subscriptionPeriods" : [ {
    "subscriptionPeriod" : "within90days",
    "percentage" : 61.5
  }, {
    "subscriptionPeriod" : "within30days",
    "percentage" : 26.2
  }, {
    "subscriptionPeriod" : "within7days",
    "percentage" : 12.3
  }, {
    "subscriptionPeriod" : "within180days",
    "percentage" : 0.0
  }, {
    "subscriptionPeriod" : "within365days",
    "percentage" : 0.0
  }, {
    "subscriptionPeriod" : "over365days",
    "percentage" : 0.0
  } ]
}

まとめ

上記3つのエンドポイントの登場により、LINEに関わる管理ツール等への容易に機能追加ができるようになりました。
これらのデータは、例えば契約プランの最適化や統計情報を利用したマーケティング施作の変更など日々の運用の中で役に立つのではないでしょうか。

ちなみにDevelopers.IO CAFEのLINEアカウントはこちらから追加できますのでぜひLINE Payを使ったモバイルオーダーアンドペイをご利用ください。(最近認証済みアカウントになりました。) 友だち追加