X (Twitter) Media Downloader
Pricing
from $4.00 / 1,000 results
X (Twitter) Media Downloader
Download high-quality images, videos, and GIFs from X/Twitter — including tweets, replies, quote tweets, threads, and public profiles.
Pricing
from $4.00 / 1,000 results
Rating
0.0
(0)
Developer

mikolabs
Actor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
X (Twitter) Media Downloader
Download high-quality X (Twitter) images, videos, and GIFs from tweets, replies, and public profiles.
This Apify Actor extracts original-quality media along with tweet metadata including text, engagement statistics, and dates. It supports tweets, quote tweets, replies, threads, and entire public profiles.
No login required. Public content only.
Features
- Extracts original-resolution images (no compression)
- Downloads the highest available video quality
- Saves animated GIFs in original format
- Collects tweet metadata (stats, author info, timestamps)
- Supports profile media tab scraping
- Automatic retries, proxy rotation, and queue optimization included
When to Use This Actor
| Use Case | Benefit |
|---|---|
| Content archival | Preserve high-quality media |
| Social media research | Analyze viral trends and media patterns |
| ML dataset creation | Collect visual assets for AI and ML pipelines |
| Competitor monitoring | Track engagement performance |
| Media curation | Build collections of trending posts |
Input Parameters
| Field | Type | Optional | Default | Description |
|---|---|---|---|---|
| tweetUrls | array(string) | Yes | [] | Tweet URLs or IDs |
| extractMainTweet | boolean | Yes | true | Extract media from main tweet |
| extractRepliesMedia | boolean | Yes | false | Extract media from replies |
| maxReplies | integer | Yes | 10 | Max replies to scrape (1–100) |
| twitterHandles | array(string) | Yes | [] | Profile usernames (without @) |
| extractProfileMedia | boolean | Yes | false | Scrape media tab on profiles |
| profileMediaMaxItems | integer | Yes | 10 | Max media items per profile (1–1000) |
| mediaTypeFilter | string | Yes | all | Filter: all, images, videos, gifs |
| includeImages | boolean | Yes | true | Include images |
| includeVideos | boolean | Yes | true | Include videos |
| includeGifs | boolean | Yes | true | Include GIFs |
| includeAllQualityVersions | boolean | Yes | false | Include all video qualities |
| minLikes | integer | Yes | 0 | Minimum likes filter |
| minRetweets | integer | Yes | 0 | Minimum retweets filter |
| minReplies | integer | Yes | 0 | Minimum replies filter |
| onlyVerified | boolean | Yes | false | Filter for verified users |
| tweetLanguage | string | Yes | "" | Filter by language code (en, es, etc.) |
| includeTweetMetadata | boolean | Yes | true | Include metadata (text, stats, date) |
| proxyConfiguration | object | Yes | Auto | Recommended: residential proxies |
Minimal JSON Example
{"tweetUrls": ["https://x.com/example/status/123"]}
Output Format
Each scraped item includes:
| Field | Description |
|---|---|
| item_type | tweet_media, reply_media, or profile_media |
| tweet_url | Original tweet URL |
| tweet_id | Unique ID |
| username | Tweet author |
| profile_username | Target user (if profile media) |
| fullname | Display name |
| text | Tweet text |
| date | Post timestamp |
| stats | Likes, retweets, replies, views |
| media | Array of objects with type and download URLs |
| scrape_date | Timestamp of scraping activity |
Output Example
{"item_type": "tweet_media","tweet_url": "https://x.com/example/status/123","username": "elonmusk","media": [{"type": "image","url": "https://pbs.twimg.com/media/example.jpg"}],"stats": {"likes": 532000,"retweets": 98000}}
Proxy Recommendations
| Use Case | Suggested Proxy Type |
|---|---|
| Single tweet scraping | Shared/automatic |
| Profile media scraping | Residential proxies |
Residential proxies help reduce temporary rate limits.
Performance Tips
| Setting | Optimized For |
|---|---|
| maxReplies = 50–100 | Deep media extraction |
| profileMediaMaxItems > 200 | Large dataset collection |
| disable metadata | Faster execution |
Running the Actor
CLI
$apify run x-media-downloader --input=input.json
JavaScript API
await client.actor("x-media-downloader").call({tweetUrls: ["https://x.com/example/status/123"]});
Frequently Asked Questions
| Question | Answer |
|---|---|
| Supports private accounts? | No (public only) |
| Requires login? | No |
| Supports threads? | Yes (when reply scraping enabled) |
| Multiple profiles per run? | Yes |
Legal Notice
This Actor only accesses publicly viewable content. Users must comply with X/Twitter Terms of Service and applicable copyright laws.
Support
Need additional features such as hashtag scraping, automated downloading to storage, ML dataset export, or custom filters?
Contact through Apify for enhancements and support.
Feedback
If this Actor is helpful, please consider leaving a rating on Apify.