🚀 GraphQLでInstagramのデータを取得！効率的なAPI活用法 📸

# GraphQLを使ってInstagramの投稿やデータを取得する方法
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3917980/4431b38b-a1aa-45a7-ab68-aaa8853ea113.png)

## 📌 はじめに

GraphQLは、柔軟で効率的なデータ取得を可能にするAPIクエリ言語です。従来のREST APIに比べて、必要なデータのみを取得できるため、特にSNSデータの取得やフィルタリングに適しています。今回は、**GraphQLを活用してInstagramの投稿やデータを取得する方法**を詳しく解説します。

---

## 🎯 Instagram GraphQL APIとは？

Instagram GraphQL APIは、Meta（旧Facebook）が提供するAPIで、Instagramの投稿やプロフィール情報を取得できます。以下のようなデータを取得できます。

- **投稿情報**（画像、動画、キャプションなど）
- **プロフィール情報**（ユーザー名、フォロワー数など）
- **コメント、いいね情報**
- **ストーリーやリールの情報**

💡 **注意:** 公式APIを利用するには、Facebook Graph APIのアクセストークンが必要になります。

---

## 🚀 Instagram GraphQL APIの利用手順

### 1️⃣ **Facebook Graph APIの設定**
InstagramのGraphQL APIを利用するには、まず**Facebook for Developers**でアプリを作成し、Instagramのデータアクセス権を取得する必要があります。

#### ✅ ステップ 1: Facebook Developer アカウントの作成
1. [Facebook Developer](https://developers.facebook.com/) にアクセス。
2. **「マイアプリを作成」**をクリック。
3. **Instagram Graph API** を選択し、必要な情報を入力。

#### ✅ ステップ 2: アクセストークンの取得
1. Facebook Graph API Explorer にアクセス。
2. Instagramアカウントをビジネスアカウントに切り替える。
3. `instagram_basic`、`instagram_graph_user_profile` のパーミッションを取得。
4. アクセストークンを取得し、後のリクエストに使用。

---

## 🔥 GraphQLクエリを使ってInstagramデータを取得する

GraphQLを使用してInstagramの投稿データを取得する方法を解説します。

### 2️⃣ **GraphQLの基本構文**
GraphQLでは、以下のようなシンプルなクエリでデータを取得できます。

```graphql
query {
  user(username: "example") {
    id
    full_name
    profile_picture
    posts {
      edges {
        node {
          id
          media_url
          caption
          like_count
        }
      }
    }
  }
}
```

このクエリでは、
- `user(username: "example")` → 指定したユーザーの情報を取得
- `full_name`, `profile_picture` → ユーザーの基本情報
- `posts` → 投稿情報（ID、画像URL、キャプション、いいね数）

### 3️⃣ **Pythonを使ったGraphQLリクエストの実装**
Instagram GraphQL APIをPythonで呼び出すには、`requests` ライブラリを使用します。

#### ✅ 必要なライブラリのインストール
```bash
pip install requests
```

#### ✅ Instagramの投稿データを取得するPythonコード
```python
import requests

ACCESS_TOKEN = "your_facebook_graph_api_access_token"
USERNAME = "example"
INSTAGRAM_GRAPHQL_URL = "https://graph.instagram.com/me/media"

# GraphQLクエリの作成
query = {
    "query": """
    query {
      user(username: "example") {
        id
        full_name
        profile_picture
        posts {
          edges {
            node {
              id
              media_url
              caption
              like_count
            }
          }
        }
      }
    }
    """
}

# APIリクエストの送信
headers = {
    "Authorization": f"Bearer {ACCESS_TOKEN}",
    "Content-Type": "application/json"
}
response = requests.post(INSTAGRAM_GRAPHQL_URL, json=query, headers=headers)

data = response.json()
print(data)
```

### 4️⃣ **レスポンスの例**

上記のリクエストを実行すると、以下のようなJSONレスポンスが返されます。

```json
{
  "data": {
    "user": {
      "id": "123456789",
      "full_name": "Example User",
      "profile_picture": "https://example.com/profile.jpg",
      "posts": {
        "edges": [
          {
            "node": {
              "id": "987654321",
              "media_url": "https://example.com/photo.jpg",
              "caption": "This is an example post!",
              "like_count": 120
            }
          }
        ]
      }
    }
  }
}
```

このレスポンスでは、指定したInstagramユーザーの**投稿情報（画像、キャプション、いいね数）**が取得できています。📸✨

---

## 🏆 まとめ

GraphQLを使ってInstagramのデータを取得する方法を紹介しました。💡

✅ **Facebook Graph APIを利用してアクセストークンを取得**
✅ **GraphQLクエリでInstagramデータを取得**
✅ **Pythonを使ってAPIリクエストを実装**
✅ **レスポンスを解析してデータを活用**

GraphQLを活用すれば、必要なデータだけを効率よく取得でき、Instagramの投稿データを簡単に扱うことができます。🎉

Instagramのデータを使ったアナリティクスや、マーケティングの最適化に役立ててみてください！🚀

🔜 **次回は、Facebook Developerアプリを作成せずにInstagramのデータを取得する方法をご紹介します！**