# Instagram scrapper

**Action ID:** `instagram_scrapper`

## Description

Scrape an Instagram user.

## Input Parameters

| Name       | Type   | Required | Default | Description                         |
| ---------- | ------ | :------: | ------- | ----------------------------------- |
| user\_name | string |     ✓    | -       | The username of the Instagram user. |

<details>

<summary>View JSON Schema</summary>

**Input Schema**

```json
{
  "description": "Instagram scrapper node input.",
  "properties": {
    "user_name": {
      "description": "The username of the Instagram user.",
      "title": "Instagram username",
      "type": "string"
    }
  },
  "required": [
    "user_name"
  ],
  "title": "InstagramScrapperNodeInput",
  "type": "object"
}
```

</details>

## Output Parameters

| Name                     | Type    | Description                                                             |
| ------------------------ | ------- | ----------------------------------------------------------------------- |
| id                       | string  | The ID of the Instagram user                                            |
| user\_name               | string  | The username of the Instagram user                                      |
| full\_name               | string  | The full name of the Instagram user                                     |
| biography                | string  | The biography of the Instagram user                                     |
| external\_url            | string  | The external URL of the Instagram user                                  |
| followers\_count         | integer | The number of followers of the Instagram user                           |
| follows\_count           | integer | The number of follows of the Instagram user                             |
| has\_channel             | boolean | Whether the Instagram user has a channel                                |
| highlight\_reel\_count   | integer | The number of highlight reels of the Instagram user                     |
| is\_business\_account    | boolean | Whether the Instagram user is a business account                        |
| joined\_recently         | boolean | Whether the Instagram user joined recently                              |
| business\_category\_name | string  | The business category name of the Instagram user (optional)             |
| private                  | boolean | Whether the Instagram user is private                                   |
| profile\_pic\_url        | string  | The URL of the profile picture of the Instagram user                    |
| profile\_pic\_url\_hd    | string  | The URL of the profile picture of the Instagram user in high definition |
| posts\_count             | integer | The number of posts of the Instagram user                               |
| latest\_posts            | array   | The latest posts of the Instagram user                                  |

<details>

<summary>View JSON Schema</summary>

```json
{
  "description": "Instagram scrapper node output.",
  "properties": {
    "id": {
      "description": "The ID of the Instagram user.",
      "title": "ID",
      "type": "string"
    },
    "user_name": {
      "description": "The username of the Instagram user.",
      "title": "Username",
      "type": "string"
    },
    "full_name": {
      "description": "The full name of the Instagram user.",
      "title": "Full name",
      "type": "string"
    },
    "biography": {
      "description": "The biography of the Instagram user.",
      "title": "Biography",
      "type": "string"
    },
    "external_url": {
      "description": "The external URL of the Instagram user.",
      "title": "External URL",
      "type": "string"
    },
    "followers_count": {
      "description": "The number of followers of the Instagram user.",
      "title": "Followers count",
      "type": "integer"
    },
    "follows_count": {
      "description": "The number of follows of the Instagram user.",
      "title": "Follows count",
      "type": "integer"
    },
    "has_channel": {
      "description": "Whether the Instagram user has a channel.",
      "title": "Has channel",
      "type": "boolean"
    },
    "highlight_reel_count": {
      "description": "The number of highlight reels of the Instagram user.",
      "title": "Highlight reel count",
      "type": "integer"
    },
    "is_business_account": {
      "description": "Whether the Instagram user is a business account.",
      "title": "Is business account",
      "type": "boolean"
    },
    "joined_recently": {
      "description": "Whether the Instagram user joined recently.",
      "title": "Joined recently",
      "type": "boolean"
    },
    "business_category_name": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "The business category name of the Instagram user.",
      "title": "Business category name"
    },
    "private": {
      "description": "Whether the Instagram user is private.",
      "title": "Is private",
      "type": "boolean"
    },
    "profile_pic_url": {
      "description": "The URL of the profile picture of the Instagram user.",
      "title": "Profile picture URL",
      "type": "string"
    },
    "profile_pic_url_hd": {
      "description": "The URL of the profile picture of the Instagram user in high definition.",
      "title": "Profile picture URL HD",
      "type": "string"
    },
    "posts_count": {
      "description": "The number of posts of the Instagram user.",
      "title": "Posts count",
      "type": "integer"
    },
    "latest_posts": {
      "description": "The latest posts of the Instagram user.",
      "items": {
        "additionalProperties": true,
        "type": "object"
      },
      "title": "Latest posts",
      "type": "array"
    }
  },
  "required": [
    "id",
    "user_name",
    "full_name",
    "biography",
    "external_url",
    "followers_count",
    "follows_count",
    "has_channel",
    "highlight_reel_count",
    "is_business_account",
    "joined_recently",
    "private",
    "profile_pic_url",
    "profile_pic_url_hd",
    "posts_count",
    "latest_posts"
  ],
  "title": "InstagramScrapperNodeOutput",
  "type": "object"
}
```

</details>

## How It Works

This node connects to Instagram's public data to retrieve comprehensive profile information for a specified username. It fetches account metadata including follower counts, bio information, business status, and recent posts, then returns all this data in a structured format that can be used for analysis, monitoring, or integration with other workflow nodes.

## Usage Examples

### Example 1: Influencer Profile Analysis

**Input:**

```
user_name: "natgeo"
```

**Output:**

```
id: "25025320"
user_name: "natgeo"
full_name: "National Geographic"
biography: "Experience the world through the eyes of National Geographic photographers."
external_url: "https://www.natgeo.com"
followers_count: 283000000
follows_count: 145
has_channel: true
highlight_reel_count: 28
is_business_account: true
joined_recently: false
business_category_name: "Media/News Company"
private: false
profile_pic_url: "https://instagram.com/profile_pic.jpg"
profile_pic_url_hd: "https://instagram.com/profile_pic_hd.jpg"
posts_count: 22450
latest_posts: [...]
```

### Example 2: Competitor Monitoring

**Input:**

```
user_name: "starbucks"
```

**Output:**

```
id: "8829468"
user_name: "starbucks"
full_name: "Starbucks Coffee"
biography: "Inspiring and nurturing the human spirit - one person, one cup, and one neighborhood at a time."
external_url: "https://www.starbucks.com"
followers_count: 19200000
follows_count: 68
has_channel: false
highlight_reel_count: 12
is_business_account: true
joined_recently: false
business_category_name: "Restaurant"
private: false
profile_pic_url: "https://instagram.com/starbucks_pic.jpg"
profile_pic_url_hd: "https://instagram.com/starbucks_pic_hd.jpg"
posts_count: 5890
latest_posts: [...]
```

### Example 3: Brand Ambassador Discovery

**Input:**

```
user_name: "fitness_coach_mike"
```

**Output:**

```
id: "45672891"
user_name: "fitness_coach_mike"
full_name: "Mike Johnson - Fitness Coach"
biography: "Certified Personal Trainer | Nutrition Expert | Helping you reach your fitness goals"
external_url: "https://mikefitnesscoaching.com"
followers_count: 125000
follows_count: 450
has_channel: true
highlight_reel_count: 8
is_business_account: true
joined_recently: false
business_category_name: "Personal Coach"
private: false
profile_pic_url: "https://instagram.com/mike_pic.jpg"
profile_pic_url_hd: "https://instagram.com/mike_pic_hd.jpg"
posts_count: 1247
latest_posts: [...]
```

## Common Use Cases

* **Influencer Marketing Research**: Gather data on potential influencers including follower counts, engagement metrics, and content style
* **Competitor Analysis**: Monitor competitor Instagram accounts to track their growth, posting frequency, and content strategy
* **Brand Monitoring**: Track your own brand's Instagram presence and metrics over time
* **Lead Generation**: Identify potential business partners or customers based on their Instagram profile information
* **Market Research**: Analyze industry trends by examining profiles of leading accounts in your sector
* **Content Strategy Planning**: Study successful accounts to inform your own content approach and posting schedule
* **Influencer Verification**: Validate influencer claims about follower counts and business status before partnerships

## Error Handling

| Error Type              | Cause                                                     | Solution                                                                                   |
| ----------------------- | --------------------------------------------------------- | ------------------------------------------------------------------------------------------ |
| User Not Found          | Instagram username doesn't exist                          | Verify the username spelling and ensure the account exists                                 |
| Private Account         | User's account is set to private with limited public data | Only public account data can be scraped; request won't fail but latest\_posts may be empty |
| Rate Limit Exceeded     | Too many scraping requests in a short time                | Implement delays between requests or reduce request frequency                              |
| Invalid Username Format | Username contains invalid characters or format            | Use valid Instagram username format (letters, numbers, underscores, periods)               |
| Connection Timeout      | Unable to reach Instagram servers                         | Check network connectivity and retry the request                                           |
| Account Suspended       | Instagram account has been suspended or deleted           | Verify account status on Instagram directly                                                |
| Service Unavailable     | Instagram's servers are temporarily unavailable           | Retry the request after a short delay                                                      |

## Notes

* **Public Data Only**: This node can only access publicly available information. Private accounts will return basic metadata but no posts.
* **Latest Posts**: The latest\_posts array contains recent post data including URLs, captions, likes, and comments (for public accounts).
* **Rate Limiting**: Be mindful of request frequency to avoid rate limits. Consider caching results for frequently accessed profiles.
* **Data Freshness**: Scraped data reflects the profile state at the time of request. For real-time monitoring, schedule periodic scraping.
* **Business Accounts**: Business and creator accounts provide more detailed information than personal accounts.
* **Profile Pictures**: Both standard and HD profile picture URLs are provided for downloading or displaying profile images.
* **Terms of Service**: Ensure your use of scraped Instagram data complies with Instagram's terms of service and applicable laws.
* **Data Storage**: Consider storing scraped data in a database if you need historical tracking or trend analysis.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.agenticflow.ai/reference/nodes/instagram_scrapper.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
