雲のメモ帳

猫とクラウドと旅行が好きなインフラエンジニアです。 日々の調べたことや興味が持ったことをこのブログにアウトプットします。

Instagram Graph APIとPythonでInstagramの「ユーザー情報、メディア情報」を取得する

これはなに?

Instagram Graph API と Pythonを使ってInstagramのユーザー情報とかメディアの情報を取得してみたので、取得した項目とサンプルコードをあげます。API自体の使い方も結構癖があるのですが、何よりアクセストークンの発行とビジネスアカウントIDの取得が中々大変でした。

環境

  • Python3
  • jupyter notebook

Instagram Graph API実行に必要な情報

  • アクセストークン
  • ビジネスアカウントID

アクセストークン発行/ビジネスアカウントID取得

以下のリンク先が参考になったので、こちら参照してください。

InstagramとFacebookの連携がうまく行かずに何故かビジネスアカウントIDが取得できないという不具合に悩まされたのですが、一度Facebookとページを削除し、再作成と再リンクしたところうまくいきました。

Instagram Graph APIの利用

アクセストークンとビジネスアカウントIDができていれば、必要な情報を乗っけてAPIコールするだけなので結構簡単です。サンプルとして、ポルカの公式アカウントの情報を取ってきてみました。

IGユーザービジネスディスカバリー

フォロワー数等ユーザーの基本情報を取得できる。

GET /{ig-user-id}?fields=business_discovery.username({username})
フィールド名 説明
name 表示名
username ユーザー名
biography ユーザー説明欄
follows_count フォロー数
followers_count フォロワー数
media_count 投稿数

ビジネスディスカバリー - Instagramプラットフォーム - ドキュメンテーション - Facebook for Developers

サンプル結果

f:id:ykoomaru:20210708213105p:plain

IGメディア

投稿のいいね数などのメディアの情報を取得できる。

GET /{ig-media-id}?fields={fields}

IGメディア - Instagramプラットフォーム - ドキュメンテーション - Facebook for Developers

フィールド名 説明
id 投稿ごとのユニークID
like_count いいね数
comments_count コメント数
timestamp タイムスタンプ
caption キャプション
media_type メディア種類

サンプル結果

f:id:ykoomaru:20210708224132p:plain

メディアごとのコメントの内容を取りたかったのですが、権限不足なのかエラーとなりました。

IGメディア情報の集計、可視化

いいね数とコメント数をmatplotlibを使って可視化。 f:id:ykoomaru:20210708213352p:plain

いいね数が凹んでいることろは、配信開始のお知らせのVIDEO系でした。

いいねが多い順

最近のライブ写真がトップ。雫さんかっけえ。 f:id:ykoomaru:20210708223711p:plain

コメントが多い順

一発目の投稿がめちゃくちゃコメント多いですね。 f:id:ykoomaru:20210708223753p:plain

サンプルコード

各サンプル結果を取得しているのはこちらのサンプルコードを利用しています。
”<xxx>” の項目を自身の環境に合わせて修正して実行してみてください。

ユーザー情報(IGユーザービジネスディスカバリー)

メディア情報(IGメディア)

最後に

Instagram Graph APIを使えば、過去の投稿の分析などがはかどりますね。他のユーザーの情報を引っ張ってくるには、権限的にできないこともありそうなので要調査。TwitterAPIと違ってサンプルコード等の情報が少ないので、InstagramAPIは使うのが大変。
今回は構造化データを取っただけですが、次は画像取ってきて分析までやれたらいいなと思います。

【202109追記】ユーザー情報をGoogleスプレットシートに溜めて分析する環境作ってみました。 www.cloudnotes.tech