Automate TikTok Video Downloads to Google Drive with HTTP Request API

Streamline your TikTok video downloads directly to Google Drive using the HTTP Request API. This automation eliminates the hassle of manual downloads and ensures you have your favorite content stored securely in the cloud. Features include seamless API integration for real-time file transfers, automatic file naming conventions, and easy access to your downloaded videos on any device. Perfect for developers and integrators looking to automate media management, this workflow simplifies the process of storing TikTok videos for content creators and marketers. Requires 1 account: Google Drive OAuth. Save 3 hours weekly by automating video downloads and ensure instant access to your media library without the need for manual intervention.

1 Trigger
17,530 views10 nodesMar 2025Jessica Martinez

Categories

File Management

APIs

Google Drive API

Credentials

1 required

Quick Actions

Copy or download to import into your n8n instance

Workflow JSON
{
  "id": "aVienX696oMCH1DR",
  "meta": {
    "instanceId": "dce6d05169adc9f802863a06c3edb9925b178c4fce2360953cce9c1b509705cc"
  },
  "name": "Tiktok Downloader",
  "tags": [],
  "nodes": [
    {
      "id": "4dc30078-c7df-4bcb-91ed-953cd6da4a13",
      "name": "When clicking ‘Test workflow’",
      "type": "n8n-nodes-base.manualTrigger",
      "position": [
        -280,
        20
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "5598aa10-f667-4023-b9de-fe07e86badec",
      "name": "Get TikTok Video Page Data",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        40,
        20
      ],
      "parameters": {
        "url": "https://www.tiktok.com/@randomspamvideos25/video/7251387037834595630",
        "options": {
          "response": {
            "response": {
              "fullResponse": true,
              "responseFormat": "text"
            }
          }
        },
        "sendHeaders": true,
        "headerParameters": {
          "parameters": [
            {
              "name": "User-Agent",
              "value": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) Chrome/91.0.4472.124"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "734a5304-f67f-4ace-a1da-0d268664452c",
      "name": "Scrape raw video URL",
      "type": "n8n-nodes-base.code",
      "position": [
        480,
        20
      ],
      "parameters": {
        "jsCode": "const html = $input.first().json.data;\nconst headers = $input.first().json.headers || {};\nconst cookies = headers['set-cookie'] || [];\n\nif (!html) {\n  throw new Error(\"HTML body is undefined. Check the previous node's output.\");\n}\nconst regex = /<script id=\"__UNIVERSAL_DATA_FOR_REHYDRATION__\" type=\"application\\/json\">([\\s\\S]*?)<\\/script>/;\nconst match = html.match(regex);\n\nif (match) {\n  const jsonStr = match[1];\n  const data = JSON.parse(jsonStr);\n  const videoUrl = data?.__DEFAULT_SCOPE__?.[\"webapp.video-detail\"]?.itemInfo?.itemStruct?.video?.playAddr;\n  if (!videoUrl) {\n    throw new Error(\"Could not find video URL in the JSON data.\");\n  }\n  return [{ json: { videoUrl, cookies: cookies.join('; ') } }];\n} else {\n  throw new Error(\"Could not find __UNIVERSAL_DATA_FOR_REHYDRATION__ script in the HTML.\");\n}"
      },
      "typeVersion": 2
    },
    {
      "id": "f574ccb8-6f5f-4e55-a2d5-7ad775d3c4e5",
      "name": "Output video file without watermark",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        900,
        20
      ],
      "parameters": {
        "url": "={{ $json.videoUrl }}",
        "options": {
          "response": {
            "response": {
              "responseFormat": "file"
            }
          },
          "allowUnauthorizedCerts": true
        },
        "sendHeaders": true,
        "headerParameters": {
          "parameters": [
            {
              "name": "User-Agent",
              "value": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36"
            },
            {
              "name": "Referer",
              "value": "https://www.tiktok.com/"
            },
            {
              "name": "Accept",
              "value": "video/mp4,video/webm,video/*;q=0.9,application/octet-stream;q=0.8"
            },
            {
              "name": "Accept-Language",
              "value": "en-US,en;q=0.5"
            },
            {
              "name": "Connection",
              "value": "keep-alive"
            },
            {
              "name": "Cookie",
              "value": "={{ $json.cookies }}"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "73d4ffa7-2264-4a84-9ab2-2004342e3039",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -140,
        -180
      ],
      "parameters": {
        "color": 6,
        "width": 460,
        "height": 360,
        "content": "## 1. Load the video page\nOpen this node and replace the URL with the one of the video you want to download without a watermark.\n\nA Tiktok video URL looks like: https://www.tiktok.com/@Username_here/video/Video_ID_Here\n\nOutputs the returned page HTML along with the session cookies\n\n"
      },
      "typeVersion": 1
    },
    {
      "id": "848fc04b-2620-4d83-8701-52c053f7c017",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        340,
        -180
      ],
      "parameters": {
        "color": 5,
        "width": 380,
        "height": 360,
        "content": "## 2. Find the raw video URL\nParses through all of the HTML and finds the section containing the video URL before the watermark is applied"
      },
      "typeVersion": 1
    },
    {
      "id": "40b3a2bd-5733-43a8-951c-d5fa26647615",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        740,
        -180
      ],
      "parameters": {
        "color": 4,
        "width": 400,
        "height": 360,
        "content": "## 3. Output video file without watermark\nUsing the cookies from step 1, a request is made to access the original video file as shown on TikTok"
      },
      "typeVersion": 1
    },
    {
      "id": "36629265-f139-433f-9603-0670a08be1ed",
      "name": "Upload to Google Drive",
      "type": "n8n-nodes-base.googleDrive",
      "position": [
        300,
        360
      ],
      "parameters": {
        "name": "={{ $node[\"Get TikTok Video Page Data\"].parameter[\"url\"].match(/\\/video\\/(\\d+)/)[1] + \".mp4\" }}",
        "driveId": {
          "__rl": true,
          "mode": "list",
          "value": "My Drive"
        },
        "options": {},
        "folderId": {
          "__rl": true,
          "mode": "list",
          "value": "root",
          "cachedResultUrl": "https://drive.google.com/drive",
          "cachedResultName": "/ (Root folder)"
        }
      },
      "credentials": {
        "googleDriveOAuth2Api": {
          "id": "ZvDuyVfbZJbDJXcS",
          "name": "Google Drive account"
        }
      },
      "typeVersion": 3
    },
    {
      "id": "94364c83-14ce-48c3-afe5-b7cd8addd2a0",
      "name": "Set file permissions to public with link",
      "type": "n8n-nodes-base.googleDrive",
      "position": [
        560,
        360
      ],
      "parameters": {
        "fileId": {
          "__rl": true,
          "mode": "id",
          "value": "={{ $json.id }}"
        },
        "options": {},
        "operation": "share",
        "permissionsUi": {
          "permissionsValues": {
            "role": "writer",
            "type": "anyone",
            "allowFileDiscovery": true
          }
        }
      },
      "credentials": {
        "googleDriveOAuth2Api": {
          "id": "ZvDuyVfbZJbDJXcS",
          "name": "Google Drive account"
        }
      },
      "typeVersion": 3
    },
    {
      "id": "d37ad36c-0b7f-4c2c-9538-dc8bf75e997f",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        260,
        200
      ],
      "parameters": {
        "color": 7,
        "width": 500,
        "height": 320,
        "content": "## (Optional) Upload video to Google Drive\nAn expression is used to save the file to your Google Drive as Video_ID.mp4\n\nNote: Must have Google Drive API enabled in [Google Cloud Console](https://console.cloud.google.com/apis/api/drive.googleapis.com/overview) OAuth ClientID and Client Secret credentials setup"
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "pinData": {},
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "70234bbb-ccaf-4291-a50b-063e07303678",
  "connections": {
    "Scrape raw video URL": {
      "main": [
        [
          {
            "node": "Output video file without watermark",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Upload to Google Drive": {
      "main": [
        [
          {
            "node": "Set file permissions to public with link",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get TikTok Video Page Data": {
      "main": [
        [
          {
            "node": "Scrape raw video URL",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "When clicking ‘Test workflow’": {
      "main": [
        [
          {
            "node": "Get TikTok Video Page Data",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Output video file without watermark": {
      "main": [
        [
          {
            "node": "Upload to Google Drive",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}

Related Workflows

Automate PDF Customer Support with OpenAI and Google Drive API

Automate customer support inquiries by integrating PDF documents with an AI assistant powered by OpenAI GPT. This workflow allows communication teams to extract information from product PDFs and provide instant answers to customer questions around the clock. Features real-time PDF processing, contextual AI responses, and seamless integration with Google Drive for document storage. Perfect for communication teams in e-commerce managing 100+ daily inquiries or tech support handling extensive product documentation. Requires 3 accounts: OpenAI API Key, Google Drive OAuth, and Gmail OAuth2. Save up to 5 hours each week by automating responses and reducing inquiry resolution time by 90%.

19,801 views
File ManagementAI Summarization

Automate Customer Support Responses with Local File Trigger and AI Chat

Automate customer support responses for your e-commerce store using a local File Trigger and AI Chat powered by Mistral Cloud. This workflow enables you to upload product documents and automatically respond to inquiries, ensuring 24/7 availability for your customers. Features real-time command execution, structured output parsing for accurate answers, and seamless integration with your existing systems. Perfect for e-commerce businesses handling over 50 inquiries daily. Requires 1 account: Mistral Cloud API. Save up to 5 hours each week by managing inquiries instantly and improving response accuracy by 90%.

14,579 views
File ManagementAI Summarization

Automate Customer Support with OpenAI GPT for Instant Answers

Automate customer support inquiries using an AI assistant powered by OpenAI GPT. Set up an HTTP request to gather data, process it with OpenAI, and provide real-time responses to customer questions. Features include conversation memory for context-aware interactions, automatic processing of inquiries, and instant feedback. Perfect for e-commerce stores receiving 50+ daily inquiries or SaaS platforms in need of efficient support solutions. Requires 1 account: OpenAI API Key. Save up to 5 hours a week by handling over 100 inquiries daily with accurate, automated responses tailored to your product documentation.

13,003 views
File ManagementMultimodal AI

Automate Saving Telegram Files to Google Drive for Team Collaboration

Automatically save new files received on Telegram directly to Google Drive using the Google Drive API and Telegram integration. This workflow streamlines file management by ensuring that all important documents shared in Telegram are instantly stored in a secure location. Key features include real-time file transfers, automated sorting based on content type, and seamless integration with your existing Google Drive structure. Perfect for business teams managing project files, client documents, or team resources through Telegram. Requires 2 accounts: Telegram Bot Token and Google Drive OAuth. Save up to 10 hours weekly by eliminating manual downloads and ensuring all team members have instant access to shared files.

10,435 views
File Management

How to Use This Workflow

1Import to n8n

  1. Copy the JSON using the button above
  2. Open your n8n instance
  3. Click “Import workflow” or press Ctrl+V
  4. Paste the JSON and click “Import”

2Before Running

Configure credentials and update service-specific settings before executing the workflow. Review required credentials in the Technical Details section above.

17.5K