{
  "name": "TikTok post scraper via keywords | Bright Data + Sheets integration",
  "nodes": [
    {
      "id": "3c96466a-128d-403a-8449-b54001944b1d",
      "name": "Google Sheets",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        -540,
        -560
      ]
    },
    {
      "id": "e7b9dde9-0cd6-429e-b5ea-1e8269d7df7e",
      "name": "Decode Snapshot from Response",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -900,
        -560
      ]
    },
    {
      "id": "461df00a-925d-4bbf-b28e-7aa367ad54d5",
      "name": "Wait 1 minute",
      "type": "n8n-nodes-base.wait",
      "position": [
        -1540,
        -540
      ]
    },
    {
      "id": "f15192de-4d53-4716-a2d1-876494712c81",
      "name": "Accepts keyword input from the user.",
      "type": "n8n-nodes-base.formTrigger",
      "position": [
        -2580,
        -540
      ]
    },
    {
      "id": "a1bcfe64-ac31-43c2-b0d5-33caa9ef50a6",
      "name": "Sends keyword to Bright Data's Discover API to start scraping.",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -2280,
        -540
      ]
    },
    {
      "id": "da3fc0d4-98a6-48a3-b691-6e29db0969c0",
      "name": "Checks the scraping status using snapshot ID.",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -1880,
        -540
      ]
    },
    {
      "id": "76797c1e-d329-4003-af3f-fac14a3fbdc8",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -2660,
        -680
      ],
      "parameters": {
        "width": 280,
        "height": 340,
        "content": "🟥 1. Form Trigger Node\n📌 Purpose:\n\nUser submits a keyword input.\n\nThis starts the scraping process.\n\n"
      }
    },
    {
      "id": "b849575e-2a93-42e3-a084-f536e634e035",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -2360,
        -760
      ],
      "parameters": {
        "width": 340,
        "height": 420,
        "content": "🟩 2. HTTP Request (Trigger Scraping on Bright Data)\n🔗 POST to Bright Data\n\nSends the keyword to Bright Data.\n\nTriggers scraping using dataset ID.\n\nTikTok keyword-based discovery initiated.\n\n"
      }
    },
    {
      "id": "e3648a2b-a0e7-41ab-9794-bd8fa1faf16a",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1980,
        -700
      ],
      "parameters": {
        "width": 320,
        "height": 360,
        "content": "🟦 3. Snapshot Progress Check\n🔍 GET - snapshot status\n\nFetches the current snapshot_id.\n\nChecks if the scraping task is finished (status == ready)."
      }
    },
    {
      "id": "850f3c9d-2184-42b7-b6c5-e155c2d43f57",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1320,
        -720
      ],
      "parameters": {
        "width": 260,
        "height": 360,
        "content": "🟪 4. IF Node (Check Completion)\n📌 Condition:\n\nIf snapshot is ready → move forward.\n\nElse → wait and retry."
      }
    },
    {
      "id": "3a54a9d4-07ff-4e04-831b-f618e9bdd48b",
      "name": "Check Final Status",
      "type": "n8n-nodes-base.if",
      "position": [
        -1240,
        -540
      ]
    },
    {
      "id": "5cca9c7d-d10c-4817-9d10-d0c904ad059b",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1640,
        -720
      ],
      "parameters": {
        "width": 280,
        "height": 380,
        "content": "🟥 5. Wait Node\n🕒 Delays by 1 minute\n\nIf snapshot is not ready, pause for 1 minute.\n\nThen return to recheck loop."
      }
    },
    {
      "id": "75b635ea-6e6c-41e7-8cae-168b2c6f8c00",
      "name": "Sticky Note6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -640,
        -740
      ],
      "parameters": {
        "width": 300,
        "height": 380,
        "content": "🟨 6. Final Data Storage\n📌 Google Sheets Integration:\n\nStores extracted TikTok data.\n\nIncludes all post metrics and profile info.\n\n"
      }
    }
  ],
  "connections": {
    "Google Sheets": {
      "main": [
        []
      ]
    },
    "Wait 1 minute": {
      "main": [
        [
          {
            "node": "Check Final Status",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Check Final Status": {
      "main": [
        [
          {
            "node": "Decode Snapshot from Response",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Checks the scraping status using snapshot ID.",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Decode Snapshot from Response": {
      "main": [
        [
          {
            "node": "Google Sheets",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Accepts keyword input from the user.": {
      "main": [
        [
          {
            "node": "Sends keyword to Bright Data's Discover API to start scraping.",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Checks the scraping status using snapshot ID.": {
      "main": [
        [
          {
            "node": "Wait 1 minute",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Sends keyword to Bright Data's Discover API to start scraping.": {
      "main": [
        [
          {
            "node": "Checks the scraping status using snapshot ID.",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}