# Twitter (X.com) Video Post Scraper (`codenest/twitter-x-com-video-post-scraper`) Actor

🎬 Download Twitter/X videos in multiple resolutions with full metadata at affordable price! Perfect for content creators 🎥, marketers 📈, journalists 📰 & researchers 🔬who need to archive, repurpose, or analyse video content with professional quality output. ✨Twitter (X.com) Video Post Scraper.

- **URL**: https://apify.com/codenest/twitter-x-com-video-post-scraper.md
- **Developed by:** [CodeNest](https://apify.com/codenest) (community)
- **Categories:** Videos, Social media, Automation
- **Stats:** 8 total users, 0 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$4.00/month + usage

To use this Actor, you pay a monthly rental fee to the developer. The rent is subtracted from your prepaid usage every month after the free trial period.You also pay for the Apify platform usage, which gets cheaper the higher Apify subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#rental-actors

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## Twitter (X.com) Video Post Scraper - High-Performance Media Extraction Tool

**Effortlessly download Twitter/X videos with our enterprise-grade powerful actor! This Apify actor enables you to batch scrape video posts while preserving multiple resolutions, comprehensive metadata, and secure Apify Storage integration.**

---

### 📖 Overview
Need to archive Twitter/X content or repurpose video posts? This **Twitter (X.com) Video Post Scraper** delivers:
- **Multiple Resolutions:** Get videos in 1280p, 852p, 568p quality tiers
- **Apify Storage:** Secure, encrypted download URLs via Key-Value Store
- **Full Metadata:** Titles, Twitter IDs, format details, and video counts
- **Batch Processing:** Handle multiple URLs per run efficiently

Perfect for researchers 🔍, marketers 📈, journalists 📰, and content analysts 📊!

### 🚀 Core Capabilities/Key Features

#### 🎥 Media Options
- **Multi-Resolution Output:** Three quality tiers per video
- **MP4 Format:** Industry-standard container format
- **Direct Downloads:** Secure Apify Storage URLs
- **Bulk Scraping:** Process multiple Twitter/X posts simultaneously

#### 📊 Metadata Mastery
- **Post Identification:** Complete Twitter/X ID tracking
- **Title Extraction:** Original post titles with emoji preservation
- **Video Analytics:** Count of available videos per post
- **Format Inventory:** Available formats and codec information

#### ⚙️ Advanced Tech
- **Secure Storage:** Key-Value Store integration for safe file hosting
- **Quality Tiers:** Multiple resolution options for different use cases
- **Error Handling:** Robust validation and fallback mechanisms
- **API Ready:** Structured JSON output for easy integration

---

### 🎯 Input Configuration
Just enter your Twitter/X post URLs in the Input Section then click "start" and wait for results. The **Twitter (X.com) Video Post Scraper** accepts input like this:

```json
{
  "key_value": true,
  "post_urls": [
    {
      "url": "https://x.com/Ndi_Muvenda_/status/1994827626960298171?s=20"
    }
  ]
}
````

#### 📋 Input Specifications

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `key_value` | Boolean | Yes | Enable Apify Key-Value Store for secure URL storage |
| `post_urls` | Array | Yes | Array of Twitter/X post URLs to scrape |
| `url` | String | Yes | Valid Twitter/X video post URL (status/ format) |

**Note:** The **Twitter (X.com) Video Post Scraper** works with public video posts containing Twitter/X's native video content.

***

### 📊 Output Structure

The **Twitter (X.com) Video Post Scraper** provides comprehensive output like this:

```json
[
  {
    "success": true,
    "tweet_url": "https://x.com/Ndi_Muvenda_/status/1994827626960298171",
    "metadata": {
      "title": "Is this real? &#x1F633;&#x1F62D;",
      "twitter_id": "1994827626960298171",
      "video_count": 3,
      "available_resolutions": ["1280p", "852p", "568p"],
      "available_formats": ["mp4"]
    },
    "videos": [
      {
        "format": "mp4",
        "codec": "avc1",
        "height": 1280,
        "width": 720,
        "quality": "1280p",
        "kv_store_url": "https://api.apify.com/v2/key-value-stores/..._1280p.mp4"
      }
    ]
  }
]
```

#### 📄 Output Field Documentation

**Status & URL Section**
| Field | Description |
|-------|-------------|
| `success` | Boolean indicating successful scrape operation |
| `tweet_url` | Cleaned Twitter/X post URL (without tracking parameters) |

**Metadata Section**
| Field | Description |
|-------|-------------|
| `metadata.title` | Original post title with HTML-encoded emojis |
| `metadata.twitter_id` | Unique Twitter/X post identifier |
| `metadata.video_count` | Number of videos available in the post |
| `metadata.available_resolutions` | Array of available quality tiers |
| `metadata.available_formats` | Supported container formats |

**Video Assets Section**
| Field | Description |
|-------|-------------|
| `format` | Container format (mp4) |
| `codec` | Video codec specification (avc1) |
| `height` | Vertical resolution in pixels |
| `width` | Horizontal resolution in pixels |
| `quality` | Quality tier label (1280p, 852p, 568p) |
| `kv_store_url` | Secure Apify Storage download URL |

***

### 🏆 Quality Tiers Available

The **Twitter (X.com) Video Post Scraper** automatically detects and provides multiple quality options:

1. **High Definition** - 1280p (1280x720) for premium viewing
2. **Standard Definition** - 852p (852x480) for balanced quality/size
3. **Mobile Optimized** - 568p (568x320) for bandwidth efficiency

Each quality tier includes complete technical specifications for professional workflows.

***

### ⚙️ Technical Features

#### 🔧 Advanced Format Support

- **MP4 Container:** Industry-standard video format
- **AVC/H.264 Codec:** High compression efficiency
- **Multiple Resolutions:** Three quality tiers per video
- **Secure Storage:** Apify Key-Value Store integration

#### 📊 Metadata Extraction

- **Complete Post Data:** Titles, IDs, and video counts
- **Resolution Mapping:** Detailed quality tier information
- **Format Detection:** Container and codec specifications
- **URL Normalization:** Clean, parameter-free Twitter/X URLs

#### 🛡️ Reliability Features

- **Secure Storage URLs:** Protected download access
- **Multi-Quality Fallback:** Multiple resolution options
- **Comprehensive Validation:** URL and response checking
- **Structured Output:** Consistent JSON formatting

***

### 💼 Use Cases

- **Content Marketers** – Archive competitor video strategies
- **Researchers** – Study social media video trends
- **Journalists** – Preserve news-related Twitter/X videos
- **Developers** – Build Twitter/X video aggregation tools
- **Educators** – Create learning materials from Twitter/X content
- **Analysts** – Track video performance metrics

***

#### ✅ Why Choose Our Twitter (X.com) Video Post Scraper?

- **Reliable Performance:** Stable and efficient scraping process
- **Multiple Resolutions:** Three quality options for every use case
- **User-Friendly:** Simple interface for beginners and experts
- **Regular Updates:** Maintained for Twitter/X platform changes
- **Secure Storage:** Apify Key-Value Store for protected downloads
- **Comprehensive Metadata:** All essential data in structured format

***

#### ⚠️ Limitations

- Only works with public Twitter/X video posts
- Dependent on Twitter/X's video availability and API stability
- May encounter rate limits based on Twitter/X's restrictions
- Requires valid video content in the target posts

***

### 🔗🛠 Related Actors (Full Content Scraping Suite)

Explore our comprehensive scraping suite for enhanced social media extraction:

#### 🐦 Twitter/X.com Specialized Actors:

- [Twitter (X.com) Image Downloader](https://apify.com/codenest/twitter-x-com-image-downloader)
- [Twitter(X.com) Tweets Scraper](https://apify.com/codenest/twitter-x-com-tweets-scraper)
- [Twitter (X.com) mp3/Audio Downloader](https://apify.com/codenest/twitter-x-com-mp3-audio-downloader)

#### 📸 Instagram Scrapers:

- [Instagram Reels Downloader](https://apify.com/codenest/instagram-reels-downloader)

#### 🎥 YouTube Scrapers:

- [YouTube Video Scraper](https://apify.com/codenest/youtube-video-scraper)
- [YouTube Video Transcript Scraper](https://apify.com/codenest/youtube-video-transcript-scraper)

***

### 📧 Need Customization?

Want **higher resolutions, batch processing enhancements, or extended metadata** from our **Twitter (X.com) Video Post Scraper**?

✉ Email **<codenest2.0@gmail.com>** for tailored solutions!

***

*The **Twitter (X.com) Video Post Scraper** is your go-to solution for efficient Twitter/X video extraction with multiple quality options and secure storage integration.*

# Actor input Schema

## `post_urls` (type: `array`):

A list of public Twitter/X post URLs (videos and/or images).

## `key_value` (type: `boolean`):

Enable or disable storing files in the key-value store.

## Actor input object example

```json
{
  "post_urls": [
    {
      "url": "https://x.com/iamsrk/status/1994361290421383203"
    }
  ],
  "key_value": false
}
```

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "post_urls": [
        {
            "url": "https://x.com/iamsrk/status/1994361290421383203"
        }
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("codenest/twitter-x-com-video-post-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "post_urls": [{ "url": "https://x.com/iamsrk/status/1994361290421383203" }] }

# Run the Actor and wait for it to finish
run = client.actor("codenest/twitter-x-com-video-post-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "post_urls": [
    {
      "url": "https://x.com/iamsrk/status/1994361290421383203"
    }
  ]
}' |
apify call codenest/twitter-x-com-video-post-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=codenest/twitter-x-com-video-post-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Twitter (X.com) Video Post Scraper",
        "description": "🎬 Download Twitter/X videos in multiple resolutions with full metadata at affordable price! Perfect for content creators 🎥, marketers 📈, journalists 📰 & researchers 🔬who need to archive, repurpose, or analyse video content with professional quality output. ✨Twitter (X.com) Video Post Scraper.",
        "version": "0.0",
        "x-build-id": "fX3lBlB6jtBeLtnTw"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/codenest~twitter-x-com-video-post-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-codenest-twitter-x-com-video-post-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/codenest~twitter-x-com-video-post-scraper/runs": {
            "post": {
                "operationId": "runs-sync-codenest-twitter-x-com-video-post-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/codenest~twitter-x-com-video-post-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-codenest-twitter-x-com-video-post-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "post_urls"
                ],
                "properties": {
                    "post_urls": {
                        "title": "Twitter/X Post URLs",
                        "type": "array",
                        "description": "A list of public Twitter/X post URLs (videos and/or images).",
                        "items": {
                            "type": "object",
                            "properties": {
                                "url": {
                                    "title": "Post URL",
                                    "description": "The full URL of the public Twitter/X post.",
                                    "type": "string",
                                    "pattern": "^https://(www\\.)?(twitter\\.com|x\\.com)/[^/]+/status/"
                                }
                            },
                            "required": [
                                "url"
                            ]
                        }
                    },
                    "key_value": {
                        "title": "Store files in the key-value store?",
                        "type": "boolean",
                        "description": "Enable or disable storing files in the key-value store.",
                        "default": false
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
