非エンジニア向けInstagramAPI解説


InstagramのAPIを使用して出来ることのまとめ。(2017/07/11時点)

*Facebookの個人情報流出事件の影響下2018年4月5日時点で大幅に使用できるAPIが制限される*
=> https://www.instagram.com/developer/changelog/

エンジニアの方は公式ドキュメントを見た方がいい。
https://www.instagram.com/developer/endpoints/

なお、InstsagramAPIは2020年に向けて段階的に
使用できなくなっていく。

2018年7月31日まで使用可能なもの

- Follower List
- Relationships
- Commenting on Public Content

2018年12月11日まで使用可能なもの

- Commenting
- Public Content
- Likes
- Subscriptions

2020年には非推奨になるもの

- Basic

原文

> The following will be available until July 31, 2018:

> Follower List - to read the list of followers and followed-by users
> Relationships - to follow and unfollow accounts on a user’s behalf
> Commenting on Public Content - to post and delete comments on a user’s behalf on public media
> The following will be available until December 11, 2018:

> Commenting - to post and delete comments on a user’s behalf on owned media
> Public Content - to read any public profile info and media on a user’s behalf
> Likes - to like and unlike media on a user’s behalf
> Subscriptions - to receive notifications when media is posted
> The following will be available until early 2020:

> Basic - to read a user’s profile info and media

https://developers.facebook.com/blog/post/2018/01/30/instagram-graph-api-updates/

今後はビジネスアカウント用InstagramAPIの方がメインになっていくとのこと

https://qiita.com/yabaiwebyasan/items/047de69e3e51698d0ba7

## InstagramのAPI

Instagramはユーザーの情報や、ハッシュタグの情報などを外部向けに公開している。
その公開情報にアクセスできるURLがいくつか提供されている。

またビジネスアカウント向けには別途記事を作成しているので
そちらを参照していただきたい。

[非エンジニア向けビジネスアカウント用InstagramAPI解説](http://qiita.com/yukihirai0505/items/047de69e3e51698d0ba7)

## APIの利用について

Instagram APIを使ってサービスを展開するには
Instagramからの審査を受け承認を得なければならない。
また、APIを使用するにはいくつかルールがありそのルールを満たしている必要がある。

```
1. To help individuals share their own content with 3rd party apps
=> サードパーティとユーザーのコンテンツを共有する
2. To help brands and advertisers understand and manage their audience and digital media rights
=> ブランドや広告主が、視聴者やデジタルメディアの権利を理解したり管理する。
3. To help broadcasters and publishers discover content, get digital rights to media, and share media with proper attribution
=> 放送局や出版社がコンテンツを発見できたり、デジタルメディアの権利を取得できたり、適切にシェアするのを助ける。
```

他にも色々あるが、気になる方は下記リンクへ
[Platform Policy](https://www.instagram.com/about/legal/terms/api/)


## OAuth認証後にアクセストークンを取得

InstgaramのAPIを利用するにはユーザーにアプリの認証(誤解を恐れずに言えばInstagramアプリでログインする機能のようなもの)を行ってもらい、
対象ユーザーのアクセストークンを取得する。
このアクセストークンはAPIを使用するのに必要なものでユーザーごとに異なる。

## 制限

InstagramのAPIは1アクセストークンあたり、1時間に5000回までリクエストを行うことができる。
ただし、POST/DELETEメソッド関連は1時間あたりの制限が30~60回ほどのものもある。
https://www.instagram.com/developer/limits/

POST/DELETE系のリクエストは簡単にいうとAPIを使用することである投稿にコメントしたり、コメントを削除したりなど
情報の取得以外の挙動が発生するものに使用する。

また、上記のような挙動が発生するものはInstagramに別途特別な申請がいるため、
なにか実装したい機能があるときは詳しくはエンジニアに相談してみてほしい。


## それぞれAPIで出来ること

### ユーザー関連

#### ユーザー情報

認証済みのユーザーや、
ユーザーIDがわかっているユーザーの情報を取得することができる。

**取得できる情報**

```
- ユーザーID
- ユーザー名
- フルネーム
- プロフィール画像
- 自己紹介文
- 登録ウェブサイトURL
- 投稿数
- フォロー数
- フォロワー数
- ビジネスアカウントかどうか
```

#### 投稿情報

ユーザーの投稿情報や、ユーザーがいいねした情報を取得することができる。

**取得できる情報**

```
- コメント数
- キャプション情報
- 投稿ID
- いいね数
- 投稿リンク
- 投稿時間
- 投稿URL
- 投稿タイプ(image/video)
- 画像にタグづけされているユーザー(どの位置にどのアカウントが写っているか)
- 使用しているフィルター
- 位置情報
- 使用されているタグ
```

#### ユーザー検索

Instagramのユーザー名で検索をすることができる。


### フォロー・フォロワー関連

#### フォロー・フォロワー情報

認証済みのユーザーの

- フォローしているアカウント
- フォロワーのアカウント
- フォローリクエストを送っているアカウント

を取得することができる。


**取得できる情報**

```
- ユーザー名
- プロフィール画像
- フルネーム
- ユーザーID
```

#### フォロー関連

認証済みのユーザーとあるユーザーの関係を取得することができる。

- フォローしている/されている
- フォローリクエストを送っている/送られてきている
- ブロックしている
- とくになにもない

また、フォローする・ブロックするなどもできる。


### 投稿関連

#### 投稿情報取得

ある投稿の情報を取得することができる。


**取得できる情報**

```
- コメント数
- キャプション情報
- 投稿ID
- いいね数
- 投稿リンク
- 投稿時間
- 投稿URL
- 投稿タイプ(image/video)
- 画像にタグづけされているユーザー(どの位置にどのアカウントが写っているか)
- 使用しているフィルター
- 位置情報
- 使用されているタグ
```

#### ショートコードの情報

ショートコードからも投稿情報を取得できる。

https://www.instagram.com/p/BWYBplMA92B/

上記の投稿リンクでいうと `BWYBplMA92B` の部分。

#### 投稿情報検索

とある緯度経度から5km以内の投稿情報を取得することができる。

### コメント関連

#### コメント情報

ある投稿に紐づくコメント情報を現状最新120件まで取得できる。
120件に関しては公式ドキュメントに記載はない。(いいね情報も同じく)
情報源: https://stackoverflow.com/questions/29058661/how-to-get-all-likes-for-a-given-media-id


**取得できる情報**

```
- コメント日
- コメント内容
- コメントしたユーザー情報
    - ユーザー名
    - プロフィール画像
    - ID
    - フルネーム
- コメントID
```

また、コメントしたりコメントを削除したりといったこともできる。

### いいね関連

#### いいね情報

ある投稿にいいねしたユーザーの情報を最新120件まで取得できる。


**取得できる情報**

```
- ユーザー名
- 姓名
- ユーザーID
```

また、ある投稿にいいねしたりいいねを解除したりもできる。

### タグ関連

#### ハッシュタグの投稿数

あるハッシュタグの投稿数を取得できる。

ただし、ハッシュタグによっては結果が取得できないものがある。

```
{"meta":{"error_type":"APINotAllowedError","code":400,"error_message":"This tag cannot be viewed"}}
```

情報源: [instagram media endpoint bug: only returns limited photos](https://stackoverflow.com/questions/20963545/instagram-media-endpoint-bug-only-returns-limited-photos)

#### ハッシュタグの最近の投稿

あるハッシュタグの投稿を取得できる。


**取得できる情報**

```
- コメント数
- キャプション情報
- 投稿ID
- いいね数
- 投稿リンク
- 投稿時間
- 投稿URL
- 投稿タイプ(image/video)
- 画像にタグづけされているユーザー(どの位置にどのアカウントが写っているか)
- 使用しているフィルター
- 位置情報
- 使用されているタグ
```

#### ハッシュタグの部分一致検索

ハッシュタグの部分一致検索をして、
ハッシュタグごとの投稿数を取得できる。

例) snowyで検索したとき

snowy => 投稿数: 43590
snowyday => 投稿数: 3264
snowymountains => 投稿数: 1880

### 位置情報関連

#### 位置情報

とある位置の情報を取得することができる。

**取得できる情報**

```
- 位置情報ID
- 位置情報名
- 緯度
- 経度
```

#### 投稿情報

とある位置の投稿を取得することができる。


**取得できる情報**

```
- コメント数
- キャプション情報
- 投稿ID
- いいね数
- 投稿リンク
- 投稿時間
- 投稿URL
- 投稿タイプ(image/video)
- 画像にタグづけされているユーザー(どの位置にどのアカウントが写っているか)
- 使用しているフィルター
- 位置情報
- 使用されているタグ
```

#### 位置情報検索

緯度、経度から750メートル以内の位置情報を取得できる。


**取得できる情報**

```
- 位置情報ID
- 位置情報名
- 緯度
- 経度
```

## Subscription

リアルタイムにユーザーの情報を取得できる機能。
ただし、ドキュメントに記載はないが1アプリあたりに30件までという説が濃厚。(要検証)
情報源: https://stackoverflow.com/questions/27461132/instagram-real-time-api-limit-of-subscriptions

- ユーザーが投稿したとき
- 指定したハッシュタグに新しい投稿があったとき
- 指定した場所IDに投稿があったとき
- 指定した位置範囲内で新しい投稿があったとき

に投稿IDがリアルタイムにInstagramから指定したサーバーに送られてくるという機能。

## ビジネスAPI

Instagramのビジネスアカウントのインサイト情報などが取得できるAPI

https://developers.facebook.com/docs/graph-api/instagram-api/v2.10

詳しくはこちらに記載しております。

[非エンジニア向けビジネスアカウント用InstagramAPI解説
](http://qiita.com/yukihirai0505/items/047de69e3e51698d0ba7)

## その他参考になりそうなリンク集

- [公式ドキュメント](https://www.instagram.com/developer/)
- [Subscriptions](https://www.instagram.com/developer/subscriptions/)
- [インフルエンサーマーケティングとは](https://www.klear.jp/influencer-marketing/)
- [Instagramのレビュー＆審査に必要なものとか](http://qiita.com/f-world21/items/028f305d605080a9dc52)
- [【2017年2月更新】 超厳しい Instagram API の審査基準 を翻訳した](http://www.ie-kau.net/entry/2016/01/26/%E8%B6%85%E5%8E%B3%E3%81%97%E3%81%84_%E3%80%90Instagram_API_%E3%80%91%E3%81%AE%E5%AF%A9%E6%9F%BB%E5%9F%BA%E6%BA%96_%E3%82%92%E7%BF%BB%E8%A8%B3%E3%81%97%E3%81%A6%E3%81%BE%E3%81%A8%E3%82%81%E3%81%A6%E3%81%BF)
- [Instagram APIでwebサービスを作りたい全ての人に向けて書きました](https://syncer.jp/instagram-api-matome)
- [instagram policy](https://www.facebook.com/help/instagram/478745558852511)