# X (Twitter) Posts Scraper (`saswave/x-twitter-posts-scraper`) Actor

$0.35 / 1000 results. X (Twitter) Posts Scraper. Data extraction tool designed to harvest posts (tweets), engagement metrics, and author details from X. Track viral tech threads, monitor brand mentions, or compile datasets for sentiment analysis. Capture deep metadata from public posts

- **URL**: https://apify.com/saswave/x-twitter-posts-scraper.md
- **Developed by:** [SASWAVE](https://apify.com/saswave) (community)
- **Categories:** Automation, Social media, News
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.35 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

## 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/docs.md):

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

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python/docs.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/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

### X (Twitter) Posts Scraper

Data extraction tool designed to harvest individual posts (tweets), engagement metrics, and author details from X.

Track viral tech threads, monitor brand mentions, or compile datasets for sentiment analysis.

Capture deep metadata from public posts

### FEATURES

Complete Content Capture: Extract the full text payload across multiple fields (text, body, and headline) ensuring no character limits break your text data.

Granular Engagement Metrics: Track real-time virality indicators including lifetime view counts (views), bookmarks, likes (likes), retweets (retweets), quotes (quotes), and deep reply counts (replies).

Author Identity Mapping: Link posts instantly to their creators with full author metadata, including author_id, author_name, @author_username, and high-resolution profile images (author_image).

Precise Chronology: Capture immutable ISO timestamps for both created_at and published_at variations to build accurate time-series datasets.

Direct Canonical Access: Automatically generates clean destination URLs (url) mapping directly back to the live status post for downstream review.


### USE CASES

Social Listening & Brand Auditing: Monitor real-time consumer conversations, tracking metrics like views and replies to gauge organic reach and public sentiment during product launches.

Trend & Viral Thread Aggregation: Programmatically isolate high-performing text posts (e.g., educational RAG or AI tutorials) that clear specific engagement thresholds (e.g., >500 likes) to power curation dashboards.

Dataset Generation for NLP Training: Gather massive amounts of natural language prose, specialized jargon, or community feedback to train custom Large Language Models (LLMs) or fine-tune sentiment analysis engines.

Competitive Intelligence: Keep tabs on target corporate handles or industry thought leaders to benchmark their average engagement distribution over time.

### OUTPUT

From Profile
```json
{
  "url": "https://x.com/elonmusk/status/1812256998588662068",
  "retweets": 332474,
  "quotes": 36465,
  "replies": 82667,
  "views": 224116766,
  "bookmark": 74515,
  "likes": 2195248,
  "text": "I fully endorse President Trump and hope for his rapid recovery https://t.co/ZdxkF63EqF",
  "created_at": "2024-07-14 00:45:13",
  "input": "https://x.com/elonmusk",
  "video_url": "https://video.twimg.com/amplify_video/1812256938383568896/pl/-oS-CTRNmFjed6Rm.m3u8?tag=16&v=a8d",
  "image_url": "https://pbs.twimg.com/amplify_video_thumb/1812256938383568896/img/_R5F6myzmRblxf_8.jpg",
  "quoted_tweet": ""
}
````

From Direct Post

```json
{
  "headline": "Good",
  "body": "Good",
  "created_at": "2024-08-01T17:48:24.000Z",
  "published_at": "2024-08-01T17:48:24.000Z",
  "comments": 29135,
  "post_id": "1819067673818681724",
  "url": "https://x.com/elonmusk/status/1819067673818681724",
  "text": "Good",
  "author_username": "elonmusk",
  "author_name": "Elon Musk",
  "author_url": "https://x.com/elonmusk",
  "author_id": "44196397",
  "author_image": "https://pbs.twimg.com/profile_images/2053244804520427520/m8mdWZCG_normal.jpg",
  "likes": 1707489,
  "retweets": 151317,
  "quotes": 6283,
  "replies": 29135,
  "views": 181643918,
  "bookmark": 20247,
  "input": "https://x.com/elonmusk/status/1819067673818681724",
  "video_url": "",
  "image_url": "",
  "quoted_tweet": "https://x.com/BRICSinfo/status/1818819892138668114"
}
```

### 🛟 SUPPORT

Share your runs with the developer team and create issues on error to help us improve actor quality.

You might discover edge case we didn't test yet

We stay available anytime

# Actor input Schema

## `posts` (type: `array`):

Direct post url. example, https://x.com/elonmusk/status/2077219839626641676

## `usernames` (type: `array`):

Profile to get posts from. example, for url https://x.com/elonmusk username is elonmusk

## Actor input object example

```json
{
  "posts": [],
  "usernames": [
    "elonmusk"
  ]
}
```

# Actor output Schema

## `results` (type: `string`):

No description

# 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 = {
    "posts": [],
    "usernames": [
        "elonmusk"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("saswave/x-twitter-posts-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 = {
    "posts": [],
    "usernames": ["elonmusk"],
}

# Run the Actor and wait for it to finish
run = client.actor("saswave/x-twitter-posts-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 '{
  "posts": [],
  "usernames": [
    "elonmusk"
  ]
}' |
apify call saswave/x-twitter-posts-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "X (Twitter) Posts Scraper",
        "description": "$0.35 / 1000 results. X (Twitter) Posts Scraper. Data extraction tool designed to harvest posts (tweets), engagement metrics, and author details from X. Track viral tech threads, monitor brand mentions, or compile datasets for sentiment analysis. Capture deep metadata from public posts",
        "version": "0.0",
        "x-build-id": "eB9t4eHRBTgpbjMxK"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/saswave~x-twitter-posts-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-saswave-x-twitter-posts-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/saswave~x-twitter-posts-scraper/runs": {
            "post": {
                "operationId": "runs-sync-saswave-x-twitter-posts-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/saswave~x-twitter-posts-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-saswave-x-twitter-posts-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",
                "properties": {
                    "posts": {
                        "title": "Post url",
                        "type": "array",
                        "description": "Direct post url. example, https://x.com/elonmusk/status/2077219839626641676",
                        "items": {
                            "type": "string",
                            "pattern": "^https?:\\/\\/(www\\.)?(x|twitter)\\.com\\/[a-zA-Z0-9_]+\\/status\\/\\d+(\\/?|\\?.*)$"
                        }
                    },
                    "usernames": {
                        "title": "X Usernames",
                        "type": "array",
                        "description": "Profile to get posts from. example, for url https://x.com/elonmusk username is elonmusk",
                        "items": {
                            "type": "string"
                        }
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
