Instagram User Profile API

The User Profile API allows your app to get an Instagram user's profile information using the user's Instagram-scoped ID received from an Instagram messaging webhook notification. Your app can use this information to create a personalized messaging experience for Instagram users who are interacting with your app users.

User Consent

User consent is required to access an Instagram user's profile.

User consent is set only when an Instagram user sends a message to your app user, or clicks an icebreaker or persistent menu. If an Instagram user comments on a post or comment but has not sent a message to your app user, and your app tries to send the Instagram user a message, your app will receive an error, User consent is required to access user profile.

Requirements

This guide assumes you have read the Instagram Platform Overview and implemented the needed components for using this API, such as a Meta login flow and a webhooks server to receive notifications.

You will need the following:

Access Level

  • Advanced Access if your app serves Instagram professional accounts you don't own or manage
  • Standard Access if your app serves Instagram professional accounts you own or manage and have added to your app in the App Dashboard

Access tokens

  • An Instagram user access token requested from your app user who received the webhook notification and who can manage messages on the Instagram professional account

Base URL

All endpoints can be accessed via the graph.instagram.com host.

Endpoints

  • /<IGSID>

IDs

Permissions

  • instagram_business_basic
  • instagram_business_manage_messages

Webhook event subscriptions

  • messages
  • messaging_optins
  • messaging_postbacks
  • messaging_referral

Limitations

  • If the Instagram user has blocked your app user, your app will not be able to view the Instagram user's information.

Webhook notification

In order to get profile information for an Instagram user who has messaged your app user's Instagram professional account, you need the Instagram-scoped ID for the Instagram user that was sent in a message notification, the value of the messages.sender.id property.

{
  "object": "instagram",
  "entry": [
    {
      "id": "<YOUR_APP_USERS_IG_ID>",  // Your app user's Instagram Professional account ID
      "time": <UNIX_TIMESTAMP>,
      "messaging": [
        {
          "sender": { "id": "<INSTAGRAM_SCOPED_ID>" },    // Instagram-scoped ID for the Instagram user who sent the message
...  

Get profile information

To get an the Instagram user's profile information, send a GET request to the /<INSTAGRAM_SCOPED_ID> endpoint, where <INSTAGRAM_SCOPED_ID> is the Instagram-scoped ID received in a messaging webhook notification, with the fields parameter set to a comma separated list of information you would like to view.

Sample Request

Formatted for readability.
curl -X GET "https://graph.instagram.com/v25.0/<INSTAGRAM_SCOPED_ID> \
  ?fields=name,username,profile_pic,follower_count,is_user_follow_business,is_business_follow_user \
  &access_token=<INSTAGRAM_ACCESS_TOKEN>"

On success, your app will receive the following JSON response:

{
  "name": "Peter Chang",
  "username": "peter_chang_live",
  "profile_pic": "https://fbcdn-profile-...",
  "follower_count": 1234
  "is_user_follow_business": false,
  "is_business_follow_user": true,
}

Reference

Field Name Description

access_token

string

The Instagram user access token from your app user who can manage messages on the Instagram professional account who received the webhook notification

follower_count

int

The number of followers the Instagram user has

<IGSID>

int

The Instagram-scoped ID returned in a webhook notification that represents the Instagram user who interacted with your app user's Instagram professional account and triggered the notification

is_business_follow_user

boolean

Indicates whether your app user follows the Instagram user (true) or not (false)

is_user_follow_business

boolean

Indicates whether the Instagram user follows your app user (true) or not (false)

is_verified_user

boolean

Indicates whether the Instagram user has a verified Instagram account (true) or not (false)

name

string

The Instagram user's name (can be null if name not set)

profile_pic

url

The URL for the Instagram user's profile picture (can be null if profile pic not set). The URL will expire in a few days

username

string

The Instagram user's username

Next steps

Use this information to send a quick reply.