# Twitter X Image Downloader (`solid-scraper/twitter-x-image-downloader`) Actor

📥 Download Twitter/X images fast with X Image Downloader! 🚀 Save posts, photos, and media in high quality in seconds. Perfect for creators, marketers, and researchers. 🔍 No hassle—start downloading now! ⚡️

- **URL**: https://apify.com/solid-scraper/twitter-x-image-downloader.md
- **Developed by:** [SolidScraper](https://apify.com/solid-scraper) (community)
- **Categories:** Social media, Automation, Developer tools
- **Stats:** 18 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per usage

This Actor is paid per platform usage. The Actor is free to use, and you only pay for the Apify platform usage, which gets cheaper the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-usage

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — 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) Image Downloader 🖼️

**Twitter (X.com) Image Downloader** extracts image metadata and high-quality thumbnails from Twitter/X post links. If you’re trying to **save Twitter images**, build media collections, or quickly analyze image content at scale, this actor streamlines the process using your provided Twitter/X status URLs—saving you hours of manual work. Whether you’re a marketer, data analyst, researcher, or media ops specialist, this **Twitter image downloader** helps you turn X links into structured, usable output—like the **X.com image downloader** workflow for bulk download and media-aware pipelines.

***

### Why choose Twitter (X.com) Image Downloader?

| Feature | Benefit |
| --- | --- |
| ✅ **Post URL support** | Lets you scrape Twitter/X post URLs directly (bulk-friendly) |
| ✅ **Structured JSON output** | Returns consistent fields like `metadata` and `images` for easy downstream use |
| ✅ **Built-in resilience** | Includes retries and fallbacks for resilience across runs |
| ✅ **Proxy support** | Helps with reliable scraping by using built-in proxy support for large batches |
| ✅ **Single-run batching** | Processes many links in one actor run and emits results as they’re ready |
| ✅ **Export-ready records** | Produces media data that can be exported (JSON/CSV) from Apify outputs |

***

### Key features

- 🧩 **Twitter/X status URL support**: Feed one or more post links via `post_urls`, including standard `.../status/<id>` URLs.
- 📊 **Image metadata + thumbnail extraction**: Each result includes `metadata` (title, `twitter_id`, thumbnail, and `image_count`) plus an `images` array.
- 💾 **Optional Key-Value Store URL generation**: When `key_value` is enabled, the actor generates `kv_store_url` entries instead of direct image URLs.
- 🔄 **Retry logic for reliability**: Uses up to **3 attempts** per post URL to improve success rates when extraction fails temporarily.
- 🛡️ **Proxy-friendly scraping**: Uses built-in proxy support to keep runs stable, especially for bulk requests.
- 🧠 **Clean, usable titles**: Normalizes the extracted title (removes newlines, extra whitespace, and formats it into a cleaner single line).
- ⚡ **Results streamed to output**: Each processed URL pushes its `result` immediately, so you can monitor progress during long runs.

***

### Input

Provide input via an `input.json` file. Example structure:

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

#### Input Fields

| Field | Required | Description |
| --- | --- | --- |
| `post_urls` | ✅ | List of Twitter/X status URLs to scrape. Provide one URL per item (e.g., links containing `/status/<id>`). |
| `key_value` | ❌ | When set to `true`, the actor generates URLs pointing to records in a key-value store (simulated). When `false`, it returns direct image `url` values. |

***

### Output

The actor saves each post’s extracted data in JSON format.

Sample output:

```json
[
  {
    "success": true,
    "tweet_url": "https://x.com/iamsrk/status/1994361290421383203",
    "metadata": {
      "title": "Some post title",
      "twitter_id": "1994361290421383203",
      "thumbnail": "https://example.com/thumbnail.jpg",
      "image_count": 1
    },
    "images": [
      {
        "format": "jpg",
        "width": 1200,
        "height": 675,
        "resolution": "1200x675",
        "url": "https://example.com/image.jpg"
      }
    ]
  }
]
```

#### Output Fields

| Field | Type | Description |
| --- | --- | --- |
| `success` | boolean | `true` if the actor extracted the post successfully; `false` if it failed. |
| `tweet_url` | string | The original Twitter/X URL that was processed. |
| `metadata` | object | Post-level info including `title`, `twitter_id`, `thumbnail`, and `image_count`. |
| `metadata.title` | string | Cleaned title extracted from the post info. |
| `metadata.twitter_id` | string | The extracted status ID from the URL (or the `info.id` fallback). |
| `metadata.thumbnail` | string | A thumbnail URL for the post (parameters are stripped if present). |
| `metadata.image_count` | number | Number of image entries included in `images`. |
| `images` | array | Image objects for the selected thumbnail resolution. |
| `images[].format` | string | Image format (the actor sets `"jpg"`). |
| `images[].width` | number | Image width (set to `1200`). |
| `images[].height` | number | Image height (set to `675`). |
| `images[].resolution` | string | Resolution string in the form `1200x675`. |
| `images[].url` | string | Present when `key_value` is `false`: direct image URL from the extracted data. |
| `images[].kv_store_url` | string | Present when `key_value` is `true`: a generated key-value store record URL for the image. |
| `error` | string | Present when `success` is `false`: the error message text. |

> You can export results from Apify outputs (typically JSON/CSV depending on your workflow).

***

### How to use Twitter (X.com) Image Downloader (via Apify Console)

1. **Open Apify Console**\
   Log in at https://console.apify.com and go to the **Actors** page.

2. **Find Twitter (X.com) Image Downloader**\
   Search for **Twitter (X.com) Image Downloader** and open the actor details page.

3. **Click “Run”**\
   Start a new run using the input form.

4. **Enter your `post_urls`**\
   Paste one or many Twitter/X post links into `post_urls`. Each item should be a URL to a status (commonly includes `/status/<id>`).

5. **Optional: enable `key_value`**\
   If you want image entries to include `kv_store_url` instead of direct `url`, set `key_value` to `true`.

6. **Select proxy settings (if shown in the UI)**\
   The actor is designed to use built-in proxy support for more reliable extraction during bulk runs.

7. **Monitor logs and retries**\
   During the run, you’ll see processing messages per URL. If a URL fails, the actor attempts retries before recording a failure.

8. **Open the dataset output and export**\
   After the run, open the **OUTPUT** dataset to review results and export your data (JSON/CSV via Apify UI).

No coding required—get Twitter image downloader results in minutes.

***

### Advanced features & SEO optimization

- 🖼️ **Engineered for “save Twitter images” use cases**: The actor returns thumbnail URLs and a structured `images` array for easy media-aware workflows.
- 🌐 **Bulk-friendly Twitter photo downloader workflow**: Provide multiple X links in `post_urls` and get consistent, export-ready records.
- 🔄 **Resilient extraction behavior**: Includes retries (up to **3 attempts per URL**) to handle temporary extraction issues.
- 🛡️ **Proxy support for reliability**: Built-in proxy support helps keep large batches stable when scraping publicly available data.
- 🔎 **Use your keywords and filters in your pipeline**: While this actor focuses on link-based extraction, it’s designed to plug into lead-gen and research pipelines that also filter by domains, themes, or other business rules.

***

### Best use cases

- 📈 **Lead generation teams**: Build media-enriched lead research from batches of X post links for outreach research.
- 🧑‍🔬 **Market researchers**: Collect thumbnail and title metadata from Twitter (X.com) Image Downloader outputs to support qualitative analysis.
- 🎯 **Influencer marketers**: Quickly compile a visual snapshot library using a Twitter image downloader approach for campaign planning.
- 📰 **Content teams**: Organize image assets by post URL and export structured metadata to streamline curation workflows.
- 💻 **Developer pipelines**: Feed consistent JSON into downstream scripts for indexing, archiving, or media categorization.
- 📊 **Data analysts**: Compare title/thumbnail metadata across many posts using bulk download X images records.
- 🗂️ **Brand monitoring**: Track and save Twitter images from specific accounts’ posts to support recurring reporting.

***

### Technical specifications

- **Supported Input Formats**
  - ✅ `post_urls`: array of Twitter/X status URLs (string items)
- **Key fields required**
  - ✅ `post_urls`
- **Proxy Support**
  - ✅ Built-in proxy support for reliable scraping in bulk scenarios
- **Retry Mechanism**
  - ✅ Up to **3 attempts per URL**
- **Dataset Structure**
  - ✅ JSON records pushed per processed URL with:
    - `success`, `tweet_url`, `metadata`, `images` (or `error` on failure)
- **Rate Limits & Performance**
  - ✅ No hard limits are stated in the actor code; performance depends on public page accessibility and network conditions
- **Limitations**
  - ❌ If `post_urls` is empty or contains no valid URL strings, the actor logs an error and stops.
  - ❌ If extraction fails for a URL, the output record will include `success: false` and an `error` field.

***

### FAQ

#### Can I download multiple Twitter (X.com) images in one run?

✅ Yes. Add multiple Twitter/X status links to `post_urls`. The actor processes each URL and pushes a structured result for every processed link.

#### What does the actor return for each tweet link?

✅ Each processed URL returns `success`, the original `tweet_url`, a `metadata` object (including `title`, `twitter_id`, `thumbnail`, and `image_count`), and an `images` array containing the image entry fields.

#### Do I get direct image URLs or key-value store record URLs?

✅ It depends on your input: when `key_value` is `false`, image entries include `images[].url`. When `key_value` is `true`, image entries include `images[].kv_store_url` instead.

#### How does it handle failures?

✅ If extraction fails after the actor’s retry attempts, it outputs a record with `success: false`, the `tweet_url`, and an `error` field containing the error message.

#### Is authentication required for using this Twitter (X.com) Image Downloader?

✅ No authentication is described in the actor inputs. The actor is built to scrape publicly available data from provided post links.

#### Can I use this as part of a lead generation workflow?

✅ Yes. While this actor focuses on Twitter photo downloader-style media extraction from post URLs, you can combine its output with your own filtering logic in your pipeline (for example, matching themes or other business rules).

#### Does it support exporting data to other formats?

✅ In the Apify workflow, you can typically export dataset results from the **OUTPUT** tab (commonly as JSON/CSV depending on your setup).

***

### Support & feature requests

Want to improve your Twitter (X.com) Image Downloader results? Share feedback and feature requests—we’re building this Twitter image downloader for real-world extraction workflows.

- 💡 **Feature Requests**: Examples include adding more image resolutions, richer metadata fields, or different output shaping for bulk download X images workflows.
- 📧 **Contact**: For support or suggestions, email <dataforleads@gmail.com>.

Your feedback helps shape the roadmap for this Twitter (X.com) Image Downloader.

***

### Closing CTA / Final thoughts

*If you’re looking for an SEO-optimized way to extract media from Twitter/X links, Twitter (X.com) Image Downloader is built for fast, structured results at scale.* Try it today and turn post URLs into a clean media dataset in minutes.

***

### Disclaimer

**This tool accesses publicly accessible sources only.** It does not access private profiles, authenticated data, or password-protected pages. It’s your responsibility to comply with applicable laws (including GDPR/CCPA where relevant), spam regulations, and each platform’s Terms of Service.

If you need data removal, contact <dataforleads@gmail.com>. Always use Twitter (X.com) Image Downloader responsibly, ethically, and for legitimate purposes.

# Actor input Schema

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

List of Twitter/X status URLs to scrape.

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

If true, generates URLs pointing to records in the key-value store (simulated).

## Actor input object example

```json
{
  "post_urls": [
    "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": [
        "https://x.com/iamsrk/status/1994361290421383203"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("solid-scraper/twitter-x-image-downloader").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": ["https://x.com/iamsrk/status/1994361290421383203"] }

# Run the Actor and wait for it to finish
run = client.actor("solid-scraper/twitter-x-image-downloader").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).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": [
    "https://x.com/iamsrk/status/1994361290421383203"
  ]
}' |
apify call solid-scraper/twitter-x-image-downloader --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,solid-scraper/twitter-x-image-downloader"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/VZ9uohkf40KjYvlL5/builds/gL8JD4yw7GuwudDgc/openapi.json
