Guides · Updated 2026-10-25

Download Instagram and TikTok Videos in n8n

A common automation: someone drops a Reel or TikTok link into a form, a sheet or a Telegram chat, and the video should land in Google Drive, get sent back, or go into an editing pipeline. n8n doesn't have a built-in Instagram or TikTok downloader node, but two HTTP Request nodes and the soclip API do the job.

1. Create the credential

Get an API key by signing in with GitHub at soclip.dev (500 free credits; each video costs 2). In n8n, create a new credential of type Header Auth:

  • Name: Authorization
  • Value: Bearer sc_live_your_api_key

2. HTTP Request node: resolve the URL

Add an HTTP Request node after whatever trigger gives you the link. This example assumes the incoming item has a field called url.

  • Method: POST
  • URL: https://api.soclip.dev/v1/media
  • Authentication: Generic Credential Type → Header Auth → the credential from step 1
  • Send Body: on · Body Content Type: JSON · Specify Body: Using Fields Below
  • Body parameter: name url, value {{ $json.url }}

The node outputs JSON like this:

{
  "success": true,
  "credits_used": 2,
  "credits_remaining": 498,
  "data": {
    "source": "instagram",
    "title": "Caption of the post",
    "author": "creator_username",
    "thumbnail": "https://scontent-...cdninstagram.com/...",
    "duration": 0,
    "medias": [
      { "label": "HD", "type": "video", "ext": "mp4", "quality": "hd", "url": "https://api.soclip.dev/v1/dl?..." },
      { "label": "SD", "type": "video", "ext": "mp4", "quality": "sd", "url": "https://api.soclip.dev/v1/dl?..." }
    ]
  }
}

3. HTTP Request node: download the file

Add a second HTTP Request node:

  • Method: GET
  • URL: {{ $json.data.medias[0].url }}
  • Authentication: None (the media link doesn't need your key)
  • Options → Response → Response Format: File · Put Output in Field: data

medias[0] is the HD video for Reels, TikToks and X/Facebook videos. For a photo post it's the first image. If you want the TikTok soundtrack instead, filter for the entry with type equal to audio.

4. Send it somewhere

The binary is now in the data field. Typical next nodes:

  • Google Drive → Upload file, Input Data Field Name data. Use {{ $('HTTP Request').item.json.data.author }} in the file name.
  • Telegram → Send Video, Binary File on, Input Binary Field data — a simple "send me the link, get the video back" bot.
  • AWS S3 or Cloudflare R2 → Upload, for a pipeline that transcribes or edits the video next.

Handling failures

Turn on Retry On Fail for the first node (3 tries, 5 seconds apart) — it covers the occasional 502. A 400 means the post is private, deleted or the link isn't supported, and retrying won't help; set the node's On Error setting to continue and branch those items to a notification. Failed lookups aren't charged.

Make and Zapier

Same two calls, different UI. In Make, use HTTP → Make a request with method POST, the URL above, an Authorization header and a JSON body, then HTTP → Get a file with the media URL. In Zapier, use Webhooks by Zapier → Custom Request for the first call and pass data.medias[0].url to the next step's file field.

Building with an AI agent instead? The MCP server exposes the same lookup as a tool for Claude Desktop and Cursor.

500 free credits on signup — 250 lookups across Instagram, TikTok, X and Facebook. Credits never expire.

Related guides