AutomationFlowsWeb Scraping › Extract Instagram Profile Data with Apify and Store in Google Sheets

Extract Instagram Profile Data with Apify and Store in Google Sheets

ByYaron Been @yaron-nofluff on n8n.io

This cutting-edge n8n automation is a powerful social media intelligence gathering tool designed to transform Instagram profile research into a seamless, automated process. By intelligently combining web scraping, data formatting, and cloud storage technologies, this workflow:…

Event trigger★★★☆☆ complexity8 nodesForm TriggerHTTP RequestGoogle Sheets
Web Scraping Trigger: Event Nodes: 8 Complexity: ★★★☆☆ Added:

This workflow corresponds to n8n.io template #4587 — we link there as the canonical source.

This workflow follows the Form Trigger → Google Sheets recipe pattern — see all workflows that pair these two integrations.

The workflow JSON

Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →

Download .json
{
  "id": "rDGkfQpVtkD1D6RH",
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "name": "Instagram Profile Scraper",
  "tags": [],
  "nodes": [
    {
      "id": "923b9b8e-f344-4984-a9cc-2ad111db39a4",
      "name": "Provide Usernames",
      "type": "n8n-nodes-base.formTrigger",
      "position": [
        0,
        0
      ],
      "parameters": {
        "options": {},
        "formTitle": "Instagram profile scraper",
        "formFields": {
          "values": [
            {
              "fieldLabel": "Username",
              "requiredField": true
            }
          ]
        },
        "formDescription": "Scrapes profile via apify"
      },
      "typeVersion": 2.2
    },
    {
      "id": "cd6ea4f9-45dc-4193-954a-798a04716c5c",
      "name": "Scrape Instagram Profile via Apify",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        280,
        0
      ],
      "parameters": {
        "url": "https://api.apify.com/v2/actor-tasks/<TASK_ID>/run-sync-get-dataset-items?token=<YOUR_API_TOKEN>",
        "method": "POST",
        "options": {},
        "jsonBody": "={\n  \"input\": {\n    \"usernames\": [\n      {{ $json.Username }}\n    ],\n    \"resultsLimit\": 1\n  }\n}",
        "sendBody": true,
        "specifyBody": "json"
      },
      "typeVersion": 4.2
    },
    {
      "id": "e140ffbf-0ca4-4415-8cff-a78dfc6c040b",
      "name": "Format Instagram Profile Data",
      "type": "n8n-nodes-base.set",
      "position": [
        660,
        0
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "5dc90212-ac40-4351-a15a-ef9f35ffd389",
              "name": "username",
              "type": "string",
              "value": "={{ $json.username }}"
            },
            {
              "id": "02339555-2d6b-4d20-a59c-2e8dfa63361c",
              "name": "fullName",
              "type": "string",
              "value": "={{ $json.fullName }}"
            },
            {
              "id": "f5a95d72-443d-468a-a1a6-8cc394b93fa4",
              "name": "followersCount",
              "type": "number",
              "value": "={{ $json.followersCount }}"
            },
            {
              "id": "826fe0c8-4fbe-44e7-abf3-8a73022151f2",
              "name": "followsCount",
              "type": "number",
              "value": "={{ $json.followsCount }}"
            },
            {
              "id": "dac8d9cc-5fa8-47d8-859d-d9f164ec20bd",
              "name": "biography",
              "type": "string",
              "value": "={{ $json.biography }}"
            },
            {
              "id": "4c775459-f8f5-43d1-8b1a-aa122413cd12",
              "name": "profilePicUrl",
              "type": "string",
              "value": "={{ $json.profilePicUrl }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "9c4f528b-c5c9-4f0b-92c4-1f9d75532fc4",
      "name": "Append Profile to Google Sheet",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        880,
        0
      ],
      "parameters": {
        "columns": {
          "value": {
            "Username": "={{ $json.username }}",
            "Biography": "={{ $json.biography }}",
            "Full Name": "={{ $json.fullName }}",
            "Followers Count": "={{ $json.followersCount }}",
            "Following Count": "={{ $json.followsCount }}",
            "Profile Pic URL": "={{ $json.profilePicUrl }}"
          },
          "schema": [
            {
              "id": "Username",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Username",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Full Name",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Full Name",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Followers Count",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Followers Count",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Following Count",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Following Count",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Biography",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Biography",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Profile Pic URL",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Profile Pic URL",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "append",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "gid=0",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1VQUy0tfWujh0lyulh0w6UhLGq87f8j8F7uFOaLFUyuQ/edit#gid=0",
          "cachedResultName": "Sheet1"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1VQUy0tfWujh0lyulh0w6UhLGq87f8j8F7uFOaLFUyuQ",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1VQUy0tfWujh0lyulh0w6UhLGq87f8j8F7uFOaLFUyuQ/edit?usp=drivesdk",
          "cachedResultName": "Instagram Profile Scraper"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.5
    },
    {
      "id": "1980e973-f240-4b55-a4b8-4faa36f78c42",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -40,
        -1460
      ],
      "parameters": {
        "color": 3,
        "width": 500,
        "height": 1660,
        "content": "### \ud83d\udd39 **1. `Trigger: On Form Submission`**\n\n* **Node Type:** Manual Trigger (or Webhook if embedded in a real form)\n* **Purpose:** Starts the workflow when a user submits a form with an Instagram username\n* **Expected Input:**\n\n  ```json\n  {\n    \"username\": \"influencer_1\"\n  }\n  ```\n\n---\n\n### \ud83d\udd39 **2. `Scrape Instagram Profile via Apify`**\n\n* **Node Type:** HTTP Request\n\n* **Method:** `POST`\n\n* **URL:**\n\n  ```plaintext\n  https://api.apify.com/v2/actor-tasks/<TASK_ID>/run-sync-get-dataset-items?token=<API_TOKEN>\n  ```\n\n* **Headers:**\n\n  ```json\n  {\n    \"Content-Type\": \"application/json\"\n  }\n  ```\n\n* **Body Parameters:**\n\n  ```json\n  {\n    \"input\": {\n      \"usernames\": [\"={{ $json.username }}\"]\n    }\n  }\n  ```\n\n* **Sample Output from Apify:**\n\n  ```json\n  [\n    {\n      \"username\": \"influencer_1\",\n      \"fullName\": \"Jane Doe\",\n      \"followersCount\": 12500,\n      \"followsCount\": 320,\n      \"biography\": \"Travel | Lifestyle \ud83c\udf0d\",\n      \"profilePicUrl\": \"https://instagram.com/path/to/pic.jpg\",\n      \"isPrivate\": false,\n      \"isVerified\": true,\n      \"externalUrl\": \"https://janedoe.com\"\n    }\n  ]\n  ```\n\n\u2705 **Result:** The username submitted from the form is scraped in real time using Apify\u2019s Instagram actor, and the result is passed to the next step."
      },
      "typeVersion": 1
    },
    {
      "id": "9c341b28-0385-4691-904b-8fa8d8e0b213",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        600,
        -1240
      ],
      "parameters": {
        "color": 6,
        "width": 500,
        "height": 1440,
        "content": "## \u2728 SECTION 2: \ud83d\udee0 Format Data + \ud83d\udcca Append to Google Sheets\n\n### \ud83d\udd39 **3. `Format Instagram Profile Data`**\n\n* **Node Type:** Set\n* **Purpose:** Clean and organize the Apify response to match your Google Sheets schema\n* **Fields to Set:**\n\n  | Field Name        | Value                      |\n  | ----------------- | -------------------------- |\n  | `Username`        | `{{$json.username}}`       |\n  | `Full Name`       | `{{$json.fullName}}`       |\n  | `Followers`       | `{{$json.followersCount}}` |\n  | `Following`       | `{{$json.followsCount}}`   |\n  | `Bio`             | `{{$json.biography}}`      |\n  | `Profile Pic URL` | `{{$json.profilePicUrl}}`  |\n  | `Website`         | `{{$json.externalUrl}}`    |\n\n\u2705 **Result:** The data is transformed into a clean format suitable for logging or outreach tracking.\n\n---\n\n### \ud83d\udd39 **4. `Append Profile to Google Sheet`**\n\n* **Node Type:** Google Sheets (Append Row)\n* **Setup:**\n\n  * **Sheet Name:** `Scraped_Influencer_Data`\n  * **Columns:** Username, Full Name, Followers, Following, Bio, Profile Pic URL, Website\n* **Purpose:** Stores the formatted data into a centralized Google Sheet for future reference or outreach\n\n\u2705 **Result:** Your influencer data is persistently stored and ready to be used for marketing, analytics, or CRM integration.\n\n---\n\n## \u2705 Final Workflow Summary\n\n```plaintext\n[Form Trigger] \n   \u2b07\ufe0f\n[Apify HTTP Request] \n   \u2b07\ufe0f\n[Format Fields]\n   \u2b07\ufe0f\n[Google Sheet Append]\n```"
      },
      "typeVersion": 1
    },
    {
      "id": "1552dfc6-f98c-45e1-bb18-071fbb69a159",
      "name": "Sticky Note9",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1800,
        -1460
      ],
      "parameters": {
        "color": 4,
        "width": 1300,
        "height": 320,
        "content": "=======================================\n            WORKFLOW ASSISTANCE\n=======================================\nFor any questions or support, please contact:\n    Yaron@nofluff.online\n\nExplore more tips and tutorials here:\n   - YouTube: https://www.youtube.com/@YaronBeen/videos\n   - LinkedIn: https://www.linkedin.com/in/yaronbeen/\n=======================================\n"
      },
      "typeVersion": 1
    },
    {
      "id": "91ca76cf-d9dd-489c-a9de-357c876d00e2",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1800,
        -1120
      ],
      "parameters": {
        "color": 4,
        "width": 1289,
        "height": 2418,
        "content": "# \ud83e\udde0 **Workflow Overview: Instagram Profile Scraper using Apify & Google Sheets in n8n**\n\n## \ud83d\udd0d **Purpose**\n\nThis n8n automation workflow allows you to **scrape Instagram profile data** using the **Apify Instagram Scraper** and **store the results in Google Sheets** for marketing, outreach, or analytics. It's designed to be simple, efficient, and extendable \u2014 ideal for influencer marketers, social analysts, or growth teams who want actionable Instagram data without writing code.\n\n---\n\n## \ud83e\udde9 **Core Workflow Logic**\n\n### \ud83d\udca1 What It Does\n\n1. **Receives an Instagram username** (via form or manual trigger)\n2. **Sends the username to Apify** to scrape public profile data\n3. **Extracts key details** (followers, bio, profile pic, etc.)\n4. **Appends the cleaned data** to a structured Google Sheet\n\n---\n\n## \ud83c\udfd7\ufe0f **Workflow Structure & Components**\n\n## \ud83d\udcca **Data Flow Example**\n\n### \ud83d\udd38 **Input (Submitted via Form or Manual Trigger):**\n\n```json\n{\n  \"username\": \"influencer_1\"\n}\n```\n\n### \ud83d\udd39 **Output (Saved to Google Sheets):**\n\n| Username      | Full Name | Followers | Following | Bio    | Profile Pic URL | Website                                                        |                                            |\n| ------------- | --------- | --------- | --------- | ------ | --------------- | -------------------------------------------------------------- | ------------------------------------------ |\n| influencer\\_1 | Jane Doe  | 12,500    | 320       | Travel | Lifestyle \ud83c\udf0d    | [https://instagram.com/pic.jpg](https://instagram.com/pic.jpg) | [https://janedoe.com](https://janedoe.com) |\n\n---\n\n## \ud83d\udee0\ufe0f **Built With**\n\n* [n8n](https://n8n.io/) \u2013 Open-source workflow automation\n* [Apify](https://apify.com/) \u2013 Instagram Profile Scraper actor\n* Google Sheets (native integration via n8n)\n\n---\n\n## \ud83d\udd10 **Authentication & API Notes**\n\n* **Apify Token**: Required in the HTTP Request URL\n* **Google Sheets Access**: OAuth2 credentials configured in n8n\n* **Security Tip**: Store secrets as [n8n environment variables](https://docs.n8n.io/hosting/environment-variables/)\n\n---\n\n## \ud83d\udcbc **Real-World Use Cases**\n\n| Use Case                  | Description                                                   |\n| ------------------------- | ------------------------------------------------------------- |\n| \ud83d\udc69\u200d\ud83d\udcbc Influencer Outreach | Automatically collect Instagram metrics for campaign planning |\n| \ud83d\udcca Competitor Analysis    | Track follower growth and bio updates for competitors         |\n| \ud83d\udccb CRM Enrichment         | Enrich influencer records with live Instagram data            |\n\n---\n\n## \ud83d\ude80 **Enhancements & Ideas**\n\n* \ud83d\udd01 **Loop from Google Sheets:** Read a batch of usernames and scrape in loop\n* \ud83d\udeab **Avoid Duplicates:** Add an `IF` node to skip usernames already scraped\n* \ud83d\udce9 **Send Slack/Email Alerts** when new data is added\n* \ud83e\udde0 **Filter Low Engagement Accounts** (e.g., if followers < 1,000)\n\n---\n\n## \ud83d\udcf8 **Visual Workflow Map**\n\n```plaintext\n[Trigger: On Form Submission]\n          \u2b07\ufe0f\n[Scrape Instagram Profile via Apify]\n          \u2b07\ufe0f\n[Format Instagram Profile Data]\n          \u2b07\ufe0f\n[Append Profile to Google Sheet]\n```\n\n---\n\n## \ud83e\uddfe **Conclusion**\n\nThis workflow is a **powerful no-code solution** to streamline the process of gathering Instagram profile data. It integrates the flexibility of n8n, the scraping power of Apify, and the accessibility of Google Sheets to form a seamless automation \u2014 perfect for creators, marketers, and analysts.\n\n"
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "0073a2a2-78d1-4806-b6f9-216a99a06107",
  "connections": {
    "Provide Usernames": {
      "main": [
        [
          {
            "node": "Scrape Instagram Profile via Apify",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Format Instagram Profile Data": {
      "main": [
        [
          {
            "node": "Append Profile to Google Sheet",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Scrape Instagram Profile via Apify": {
      "main": [
        [
          {
            "node": "Format Instagram Profile Data",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}

Credentials you'll need

Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.

Pro

For the full experience including quality scoring and batch install features for each workflow upgrade to Pro

About this workflow

This cutting-edge n8n automation is a powerful social media intelligence gathering tool designed to transform Instagram profile research into a seamless, automated process. By intelligently combining web scraping, data formatting, and cloud storage technologies, this workflow:…

Source: https://n8n.io/workflows/4587/ — original creator credit. Request a take-down →

More Web Scraping workflows → · Browse all categories →

Related workflows

Workflows that share integrations, category, or trigger type with this one. All free to copy and import.

Web Scraping

Automatically scrapes Google My Business listings using Apify's Google Maps Scraper, filters results to businesses with 1-star reviews, and exports structured lead data into a dedicated Google Sheet t

Form Trigger, HTTP Request, Google Sheets +1
Web Scraping

Users who want to automatically fetch and organize property listings from 99Acres and MagicBricks into Google Sheets without manual copying. Users submit search URLs via a form. The workflow uses Apif

Google Sheets, HTTP Request, Form Trigger
Web Scraping

This workflow is perfect for content strategists, SEO specialists, marketing agencies, and virtual assistants who need to quickly audit and collect blog content from client websites into a structured

Form Trigger, Google Sheets, HTTP Request
Web Scraping

This workflow is for marketers, growth hackers, and social media managers who want to collect and analyze comments from LinkedIn posts without manual copy-pasting. It is especially useful for communit

Form Trigger, Google Sheets, HTTP Request
Web Scraping

Automate LinkedIn lead generation by scraping comments from targeted posts and enriching profiles with detailed data

Form Trigger, HTTP Request, Google Sheets