Threads Video Downloader
Pricing
$1.75 / 1,000 video links
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é
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
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.
- Download a public Threads video from its post URL with Threads Video Downloader.
- Use a public Threads post URL on an Android device with How To Download Threads Videos On Android.
- Try a 4K download example from a public Threads post with Threads Video Download Without Watermark in 4K.
- Open the direct media address for a public post with Threads Download Link.
- Use a public post URL for a no-watermark example with Threads Video Downloader Without Watermark.
📦 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
- Paste one or more full public Threads post URLs into
postUrls. - Start the Actor.
- Open the
datasetlink or the overview view. - Use each
videos[].videoUrlvalue 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
| Field | Type | What it does |
|---|---|---|
postUrls | array of objects | Lists the public Threads post URL entries to process. |
postUrls[].url | string (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
| Field | Type | What it does |
|---|---|---|
dataset | string link | Opens the default dataset overview with the saved video rows. |
Video result row
| Field | Type | What it does |
|---|---|---|
postUrl | string (URL) | Gives the public Threads post URL for this row. Required. |
postId | string | Gives the stable Threads post identifier, when available. |
caption | string | Gives the original post caption or text, when available. |
author | object | Holds author details, when available. |
author.username | string | Gives the author username shown by Threads. |
author.profileUrl | string (URL) | Gives the public Threads profile URL for the author. |
publishedAt | string (date-time) | Gives the original publication time, when available. |
likeCount | integer | Gives the number of likes shown by the source, when available. |
commentCount | integer | Gives the number of comments shown by the source, when available. |
videos | array of objects | Lists the source video files found in the post. It contains at least one item. Required. |
videos.videoUrl | string (URL) | Gives the direct source URL for downloading the video. Required for each video. |
videos.thumbnailUrl | string (URL) | Gives the source thumbnail or preview image URL, when available. |
videos.mediaType | string | Gives the source media type, when available. |
videos.fileExtension | string | Gives the source file extension, when available. |
videos.quality | string | Gives the source quality label, when available. |
videos.width | integer | Gives the video width in pixels, when available. |
videos.height | integer | Gives the video height in pixels, when available. |
videos.resolution | string | Gives the source resolution label, when available. |
videos.duration | number | Gives 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.
Why can a video link stop working later?
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 🫡
🔗 Related Actors
- Facebook Media Downloader retrieves direct links and available details from public Facebook videos, reels, and photos.
- TikTok Video Downloader returns direct video or audio links from known public TikTok video URLs.
- Instagram Downloader API returns direct media links and public details from Instagram posts, reels, and TV pages.
- Pinterest Video Downloader returns video and image links from public Pinterest pins.
- YouTube Shorts Downloader returns media links and metadata from known public YouTube Shorts URLs.
Made with ❤️ by Maxime Dupré