Threads Video Downloader avatar

Threads Video Downloader

Pricing

$1.75 / 1,000 video links

Go to Apify Store
Threads Video Downloader

Threads Video Downloader

Get direct source video links and available post details from public Threads post URLs. No login is needed for public posts.

Pricing

$1.75 / 1,000 video links

Rating

0.0

(0)

Developer

Maxime Dupré

Maxime Dupré

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Share

🎬 Download videos from public Threads posts

For creators, researchers, and developers who already have public Threads post URLs, this Actor gives you direct video links hosted by the source in a structured dataset. You can use these links in your own workflow. Each saved row includes the source post URL and any caption, author, post time, likes, comments, and video details that Threads provides. No Threads login is needed, and the Actor does not host or copy the media files.

📦 What each Threads video row contains

Saved row

Each row is the first saved match for a public Threads post with video available. It has the submitted post URL and one or more video entries. Other post and video details appear when Threads provides them.

Direct links are hosted by the source. They can expire or stop working when the source changes, so use important links soon after the run.

▶️ Run the Threads video downloader

Steps

  1. Paste one or more full public Threads post URLs into postUrls.
  2. Start the Actor.
  3. Open the dataset link or the overview view.
  4. Use each videos[].videoUrl value in your own browser, downloader, or workflow.

To keep a run focused, submit only the post URLs you need. The Actor does not search Threads for posts. It does not handle private, login-gated, deleted, or otherwise unreachable posts. If the same post URL is submitted more than once, only its first saved match is kept and later repeats are ignored.

⚙️ Input

Input fields

FieldTypeWhat it does
postUrlsarray of objectsLists the public Threads post URL entries to process.
postUrls[].urlstring (URL)Gives one full public Threads post URL that contains video.

The postUrls field is required and must contain at least one entry. The schema does not set a fixed maximum. Use full post URLs only. Profile, search, and private post links are not supported.

Example input

This is the public input from a successful beta run using the schema's default URL:

{
"postUrls": [
{
"url": "https://www.threads.com/@mariners/post/DKTSy7DN1eN"
}
]
}

🧾 Output

Output link

FieldTypeWhat it does
datasetstring linkOpens the default dataset overview with the saved video rows.

Video result row

FieldTypeWhat it does
postUrlstring (URL)Gives the public Threads post URL for this row. Required.
postIdstringGives the stable Threads post identifier, when available.
captionstringGives the original post caption or text, when available.
authorobjectHolds author details, when available.
author.usernamestringGives the author username shown by Threads.
author.profileUrlstring (URL)Gives the public Threads profile URL for the author.
publishedAtstring (date-time)Gives the original publication time, when available.
likeCountintegerGives the number of likes shown by the source, when available.
commentCountintegerGives the number of comments shown by the source, when available.
videosarray of objectsLists the source video files found in the post. It contains at least one item. Required.
videos.videoUrlstring (URL)Gives the direct source URL for downloading the video. Required for each video.
videos.thumbnailUrlstring (URL)Gives the source thumbnail or preview image URL, when available.
videos.mediaTypestringGives the source media type, when available.
videos.fileExtensionstringGives the source file extension, when available.
videos.qualitystringGives the source quality label, when available.
videos.widthintegerGives the video width in pixels, when available.
videos.heightintegerGives the video height in pixels, when available.
videos.resolutionstringGives the source resolution label, when available.
videos.durationnumberGives the video duration in seconds, when available.

Example video row

This complete row comes from the newest successful run of the current beta build. Its source URLs and public values are shown as returned.

{
"postUrl": "https://www.threads.com/@mariners/post/DKTSy7DN1eN",
"videos": [
{
"videoUrl": "https://scontent-sjc6-1.cdninstagram.com/o1/v/t2/f2/m367/AQPKA5XljwrS3qNUd9l5aXffcWE2BYTkn-927YrU7CYPV1Oi8ioGcSwYKLP4uv7QgGsqZLkb3pDfLnYgwmt73eFCg5F6Ic3-5ia7SR8.mp4?_nc_cat=104&_nc_sid=9ca052&_nc_ht=scontent-sjc6-1.cdninstagram.com&_nc_ohc=2Duz-gzPumkQ7kNvwFZw4X3&efg=eyJ2ZW5jb2RlX3RhZyI6ImlnLXhwdmRzLmZlZWQuYzItQzMuZGFzaF9yMmV2ZXZwOS1yMWdlbjJ2cDktaGZyX3E5MCIsInZpZGVvX2lkIjpudWxsLCJvaWxfdXJsZ2VuX2FwcF9pZCI6MjM4MjYwMTE4Njk3MzY3LCJjbGllbnRfbmFtZSI6ImlnIiwieHB2X2Fzc2V0X2lkIjo3MTA4OTgyNjgxNTYwNTEsImFzc2V0X2FnZV9kYXlzIjo0NTUsInZpX3VzZWNhc2VfaWQiOjEwMTY0LCJkdXJhdGlvbl9zIjozNCwiYml0cmF0ZSI6MTg1NzY2OCwidXJsZ2VuX3NvdXJjZSI6Ind3dyJ9&ccb=17-1&_nc_gid=hcW_GEtSq1OjFft5pj_xkA&_nc_ss=7a22e&_nc_zt=28&oh=00_AQJMKIDM-0GkfeeqVnmQukK7O4iPluyEPgugIi566oChgQ&oe=6A995199",
"thumbnailUrl": "https://scontent-sjc6-1.cdninstagram.com/v/t51.71878-15/502082618_1221716316111560_1699719471127938819_n.jpg?stp=dst-jpg_e15_tt6&_nc_cat=100&ig_cache_key=MzY0NDMzOTE4NzY4ODYyNjA2MQ%3D%3D.3-ccb7-5&ccb=7-5&_nc_sid=58cdad&efg=eyJ2ZW5jb2RlX3RhZyI6IkZFRUQueHBpZHMuNjQwLnNkci52aWRlb19kZWZhdWx0X2NvdmVyX2ZyYW1lLkMzIn0%3D&_nc_ohc=DkIxwp7bY8wQ7kNvwHK70js&_nc_oc=AdojhBH8aQmCAcrc1aXT3jbrjocvry601hMW3lBniceR1UhfvDVVe7hffX81uoinLUg&_nc_ad=z-m&_nc_cid=0&_nc_zt=23&_nc_ht=scontent-sjc6-1.cdninstagram.com&_nc_gid=hcW_GEtSq1OjFft5pj_xkA&_nc_ss=7a22e&oh=00_AQJSy0QlNEiXOK2VK8X1Zu-J4yD9Bum1AUKOiTsErKKXzQ&oe=6A9951AD",
"mediaType": "video/mp4",
"fileExtension": "mp4",
"quality": "720p",
"width": 1280,
"height": 720,
"resolution": "1280x720",
"duration": 34.688
}
],
"postId": "3644339187688626061_63242893209",
"caption": "Back-to-back 💣! #TridentsUp",
"author": {
"username": "mariners",
"profileUrl": "https://www.threads.com/@mariners"
},
"publishedAt": "2025-05-31T02:39:23.000Z",
"likeCount": 206,
"commentCount": 0
}

💳 Pricing

Event

Pricing is pay per event. The buyer-facing event is Video link, and it costs $0.00175 each. It covers one direct video link hosted by the source and saved when a public Threads post has video available.

🔌 Integrations

Dataset access

Open the dataset link in Apify Console, export the dataset, or use the Apify dataset API in your own workflow. The Actor returns source links only, so your workflow must download or process them while they are valid.

Video guide

❓ FAQ

What makes a post eligible for a saved row?

The post must be public and reachable, and it must have at least one video. The saved row includes the post URL and the video entries that the source provides.

Can I use a private or login-gated post?

No. This Actor is for public Threads posts. Private, login-gated, deleted, and otherwise unreachable posts are outside its scope.

Does the Actor store the video file?

No. It returns direct source-hosted links. It does not copy, transcode, or permanently host the media.

The link comes from the source and can expire or change. Use important links soon after the run, or run the Actor again to get fresh links.

What happens if I submit the same post URL twice?

Only the first saved match is kept. A later repeat of the same source post is ignored.

Can I submit a profile or search URL?

No. Add full public Threads post URLs. The Actor does not find posts through profile, search, feed, hashtag, or keyword pages.

Do I need a Threads login?

No. Public post URLs can be processed without a Threads login.

Can one post contain more than one video?

Yes. The videos array can contain one or more source video objects when the post provides them.

How many post URLs can I submit?

At least one URL is required. The input schema does not set a fixed upper limit, so use the list size that fits your run and workflow.

📝 Changelog

0.0: Initial release

🆘 Support

For issues, questions, or feature requests, file a ticket and I'll fix or implement it in less than 24h 🫡

Made with ❤️ by Maxime Dupré