# Truthsocial Posts Listing Scraper (`ecomscrape/truthsocial-posts-listing-scraper`) Actor

TruthSocial.com Posts Listings Scraper automates extraction of user posts, engagement metrics, and conversation threads. Efficiently collect social media data from Truth Social profiles for sentiment analysis, political research, brand monitoring, and audience intelligence.

- **URL**: https://apify.com/ecomscrape/truthsocial-posts-listing-scraper.md
- **Developed by:** [ecomscrape](https://apify.com/ecomscrape) (community)
- **Categories:** Automation, Developer tools, Social media
- **Stats:** 2 total users, 1 monthly users, 93.1% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.50 / 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 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

## Contact

If you encounter any issues or need to exchange information, please feel free to contact us through the following link:
[My posts](https://apify.com/ecomscrape)

## TruthSocial.com Posts Listings Scraper: Extract Social Media Data for Political & Brand Analysis

### Introduction

Truth Social is a social networking platform that has gained significant attention as an alternative social media space, particularly among conservative audiences and political figures. The platform hosts millions of posts from verified accounts, political figures, influencers, and everyday users discussing current events, politics, business, and culture.

For researchers, political analysts, brand managers, and data scientists, accessing structured post data from Truth Social is valuable for understanding public discourse, tracking narrative trends, monitoring brand mentions, and analyzing political messaging. However, manually collecting posts from user profiles is inefficient when analyzing posting patterns, engagement trends, or conducting sentiment analysis across thousands of posts.

The TruthSocial.com Posts Listings Scraper automates this process, enabling systematic collection of post data including content, timestamps, engagement metrics, replies, and media attachments from any public profile.

### Scraper Overview

The TruthSocial.com Posts Listings Scraper is designed to extract comprehensive post data from user profiles on Truth Social. It captures post content, engagement metrics (replies, reposts, favorites), conversation threads, media attachments, and temporal data.

Key advantages include username-based extraction, pagination support via post ID tracking, and configurable extraction limits. It's valuable for political campaign analysts tracking messaging strategies, researchers studying social media discourse, brand managers monitoring mentions and sentiment, competitive intelligence teams analyzing influencer content, and data scientists building social media datasets.

The scraper extracts rich metadata including post visibility settings, language detection, content warnings, quoted posts, reply chains, poll data, and edit history—providing complete context for each post beyond just the text content.

### Input and Output Details

#### Input Format

```json
{
  "username": "realDonaldTrump",
  "last_post_id": "",
  "max_items_per_url": 20
}
```

**The `username` parameter**: Enter the username of the Truth Social profile to scrape. This should be the exact username as it appears in the profile URL (e.g., "realDonaldTrump" for truth social.com/@realDonaldTrump). Required field that determines which user's posts will be extracted.

**The `last_post_id` parameter**: Enter the last post ID to start scraping from. Leave empty to start from the most recent posts. Use this for pagination—after scraping the first batch, use the ID of the last post to continue from that point, enabling systematic collection of historical posts without duplication.

**The `max_items_per_url` parameter**: Limit the number of posts to scrape per execution. Default is 20. Adjust based on your needs—use smaller values for recent monitoring, larger values for comprehensive historical collection.

#### Output Format

```json
[
  {
  "id": "116278963682644203",
  "created_at": "2026-03-23T14:29:39.237Z",
  "in_reply_to_id": null,
  "quote_id": null,
  "in_reply_to_account_id": null,
  "sensitive": false,
  "spoiler_text": "",
  "visibility": "public",
  "language": null,
  "uri": "https://truthsocial.com/@realDonaldTrump/116278963682644203",
  "url": "https://truthsocial.com/@realDonaldTrump/116278963682644203",
  "content": "<p>RT <span class=\"h-card\"><a href=\"https://truthsocial.com/@realDonaldTrump\" class=\"u-url mention\">@<span>realDonaldTrump</span></a></span>I am a BIG proponent of ICE wearing masks as they search for, and are forced to deal with, hardened criminals, many of whom were let into our Country by Sleepy Joe Biden and his wonderful “Border Czar,” Kamala (she never even went to the Border!), through their absolutely INSANE Open Border Policy. I would greatly appreciate, however, NO MASKS, when helping our Country out of the Democrat caused MESS at the airports, etc. Thank you! President DJT</p>",
  "account": {
    "id": "107780257626128497",
    "username": "realDonaldTrump",
    "acct": "realDonaldTrump",
    "display_name": "Donald J. Trump",
    "locked": false,
    "bot": false,
    "discoverable": false,
    "group": false,
    "created_at": "2022-02-11T16:16:57.705Z",
    "note": "<p></p>",
    "url": "https://truthsocial.com/@realDonaldTrump",
    "avatar": "https://static-assets-1.truthsocial.com/tmtg:prime-ts-assets/accounts/avatars/107/780/257/626/128/497/original/454286ac07a6f6e6.jpeg",
    "avatar_static": "https://static-assets-1.truthsocial.com/tmtg:prime-ts-assets/accounts/avatars/107/780/257/626/128/497/original/454286ac07a6f6e6.jpeg",
    "header": "https://static-assets-1.truthsocial.com/tmtg:prime-ts-assets/accounts/headers/107/780/257/626/128/497/original/ba3b910ba387bf4e.jpeg",
    "header_static": "https://static-assets-1.truthsocial.com/tmtg:prime-ts-assets/accounts/headers/107/780/257/626/128/497/original/ba3b910ba387bf4e.jpeg",
    "followers_count": 11995511,
    "following_count": 69,
    "statuses_count": 32461,
    "last_status_at": "2026-03-23",
    "verified": true,
    "location": "",
    "website": "www.DonaldJTrump.com",
    "unauth_visibility": true,
    "chats_onboarded": true,
    "feeds_onboarded": true,
    "accepting_messages": false,
    "show_nonmember_group_statuses": false,
    "emojis": [],
    "fields": [],
    "tv_onboarded": false,
    "tv_account": false,
    "premium": true
  },
  "media_attachments": [],
  "mentions": [],
  "tags": [],
  "card": null,
  "group": null,
  "quote": null,
  "in_reply_to": null,
  "reblog": {
    "id": "116278600245530358",
    "created_at": "2026-03-23T12:57:13.665Z",
    "in_reply_to_id": null,
    "quote_id": null,
    "in_reply_to_account_id": null,
    "sensitive": false,
    "spoiler_text": "",
    "visibility": "public",
    "language": "en",
    "uri": "https://truthsocial.com/@realDonaldTrump/116278600245530358",
    "url": "https://truthsocial.com/@realDonaldTrump/116278600245530358",
    "content": "<p>I am a BIG proponent of ICE wearing masks as they search for, and are forced to deal with, hardened criminals, many of whom were let into our Country by Sleepy Joe Biden and his wonderful “Border Czar,” Kamala (she never even went to the Border!), through their absolutely INSANE Open Border Policy. I would greatly appreciate, however, NO MASKS, when helping our Country out of the Democrat caused MESS at the airports, etc. Thank you! President DJT</p>",
    "account": {
      "id": "107780257626128497",
      "username": "realDonaldTrump",
      "acct": "realDonaldTrump",
      "display_name": "Donald J. Trump",
      "locked": false,
      "bot": false,
      "discoverable": false,
      "group": false,
      "created_at": "2022-02-11T16:16:57.705Z",
      "note": "<p></p>",
      "url": "https://truthsocial.com/@realDonaldTrump",
      "avatar": "https://static-assets-1.truthsocial.com/tmtg:prime-ts-assets/accounts/avatars/107/780/257/626/128/497/original/454286ac07a6f6e6.jpeg",
      "avatar_static": "https://static-assets-1.truthsocial.com/tmtg:prime-ts-assets/accounts/avatars/107/780/257/626/128/497/original/454286ac07a6f6e6.jpeg",
      "header": "https://static-assets-1.truthsocial.com/tmtg:prime-ts-assets/accounts/headers/107/780/257/626/128/497/original/ba3b910ba387bf4e.jpeg",
      "header_static": "https://static-assets-1.truthsocial.com/tmtg:prime-ts-assets/accounts/headers/107/780/257/626/128/497/original/ba3b910ba387bf4e.jpeg",
      "followers_count": 11995511,
      "following_count": 69,
      "statuses_count": 32461,
      "last_status_at": "2026-03-23",
      "verified": true,
      "location": "",
      "website": "www.DonaldJTrump.com",
      "unauth_visibility": true,
      "chats_onboarded": true,
      "feeds_onboarded": true,
      "accepting_messages": false,
      "show_nonmember_group_statuses": false,
      "emojis": [],
      "fields": [],
      "tv_onboarded": false,
      "tv_account": false,
      "premium": true
    },
    "media_attachments": [],
    "mentions": [],
    "tags": [],
    "card": null,
    "group": null,
    "quote": null,
    "in_reply_to": null,
    "reblog": null,
    "sponsored": false,
    "replies_count": 2024,
    "reblogs_count": 4676,
    "favourites_count": 19841,
    "reaction": null,
    "upvotes_count": 19841,
    "downvotes_count": 0,
    "favourited": false,
    "reblogged": false,
    "muted": false,
    "pinned": false,
    "bookmarked": false,
    "poll": null,
    "emojis": [],
    "votable": false,
    "edited_at": null,
    "version": "1",
    "editable": false,
    "title": null
  },
  "sponsored": false,
  "replies_count": 0,
  "reblogs_count": 0,
  "favourites_count": 1,
  "reaction": null,
  "upvotes_count": 1,
  "downvotes_count": 0,
  "favourited": false,
  "reblogged": false,
  "muted": false,
  "pinned": false,
  "bookmarked": false,
  "poll": null,
  "emojis": [],
  "votable": false,
  "edited_at": null,
  "version": "1",
  "editable": false,
  "title": null,
  "from_url": "https://truthsocial.com/api/v1/accounts/107780257626128497/statuses?max_id=&page=1&exclude_replies=true&limit=20&exclude_replies=true&only_replies=false&with_muted=true"
}
]
```

The scraper returns detailed post data with each field serving specific analytical purposes:

- **ID**: Unique post identifier. *Essential for tracking posts over time, building conversation threads, and detecting deletions.*

- **Created At**: Post timestamp. *Critical for temporal analysis, posting pattern identification, and time-series research.*

- **In Reply To ID**: ID of post being replied to. *Enables conversation thread reconstruction and reply chain analysis.*

- **Quote ID**: ID of quoted/retweeted post. *Tracks content amplification and quote-tweet dynamics.*

- **In Reply To Account ID**: Account ID of reply target. *Identifies interaction patterns and conversation partners.*

- **Sensitive**: Content warning flag. *Indicates controversial or sensitive content for filtering.*

- **Spoiler Text**: Content warning message. *Provides context for sensitive content classification.*

- **Visibility**: Post visibility setting (public, unlisted, etc.). *Important for understanding intended audience reach.*

- **Language**: Detected post language. *Enables language-specific analysis and multilingual research.*

- **URI**: Unique resource identifier. *Technical reference for the post.*

- **URL**: Direct link to post. *Enables verification and sharing.*

- **Content**: Full post text/HTML. *Core data for sentiment analysis, keyword extraction, and content research.*

- **Account**: Full account information of poster. *Provides author context, verification status, follower counts.*

- **Media Attachments**: Attached images, videos, files. *Visual content analysis, media type tracking.*

- **Mentions**: Tagged users in post. *Network analysis, influence mapping, interaction patterns.*

- **Tags**: Hashtags used. *Topic identification, trend analysis, campaign tracking.*

- **Card**: Link preview card data. *URL sharing patterns, content source analysis.*

- **Group**: Associated group if applicable. *Community context and organized discussion tracking.*

- **Quote**: Full quoted post data if quote-tweet. *Content amplification analysis, narrative tracking.*

- **In Reply To**: Complete reply target post data. *Conversation context and thread analysis.*

- **Reblog**: Reposted content data. *Content amplification and sharing pattern analysis.*

- **Sponsored**: Paid promotion indicator. *Distinguishes organic vs. paid content.*

- **Replies Count**: Number of replies. *Engagement metric, conversation starter identification.*

- **Reblogs Count**: Number of reposts. *Viral spread metric, amplification tracking.*

- **Favourites Count**: Number of likes/favorites. *Core engagement metric, content resonance indicator.*

- **Reaction**: Reaction type data. *Emotional response tracking beyond simple likes.*

- **Upvotes Count**: Positive vote count. *Community approval metric.*

- **Downvotes Count**: Negative vote count. *Controversial content identification.*

- **Favourited**: User's favorite status. *Personal engagement tracking.*

- **Reblogged**: User's reblog status. *Sharing behavior tracking.*

- **Muted**: Mute status. *Content filtering indicator.*

- **Pinned**: Profile pin status. *Highlighted content identification.*

- **Bookmarked**: Bookmark status. *Saved content tracking.*

- **Poll**: Poll data and voting results. *Audience opinion measurement, engagement tactic analysis.*

- **Emojis**: Custom emoji usage. *Platform-specific communication patterns.*

- **Votable**: Poll voting capability. *Interactive content identification.*

- **Edited At**: Last edit timestamp. *Content modification tracking.*

- **Version**: Edit version number. *Edit frequency analysis.*

- **Editable**: Edit capability flag. *Post mutability indicator.*

- **Title**: Post title if applicable. *Long-form content organization.*

Each field enables sophisticated analysis including engagement pattern detection, narrative evolution tracking, network analysis, sentiment measurement, and temporal trend identification.

### Usage Guide

#### Setting Up Profile Scraping

**Step 1: Identify Target Username**

Navigate to Truth Social and locate the profile you want to scrape. Copy the exact username from the URL (e.g., @realDonaldTrump → use "realDonaldTrump").

**Step 2: Configure Extraction Parameters**

Set `max_items_per_url` based on your needs:

- 20-50 for recent post monitoring
- 100-200 for comprehensive historical collection
- Balance between data volume and processing time

**Step 3: Implement Pagination for Historical Data**

For collecting extensive post history:

1. Run initial scrape with empty `last_post_id`
2. Extract ID from the last post in results
3. Use that ID in `last_post_id` for next run
4. Repeat until reaching desired historical depth

#### Best Practices

**Username Targeting:**

- Verify usernames are exactly as shown in Truth Social URLs
- Track multiple accounts by running separate scrapes
- Build profile lists for comparative analysis

**Pagination Strategy:**

- Store last\_post\_id values to maintain scraping position
- Implement automated pagination for large-scale collection
- Monitor for account suspensions or deletions

**Data Collection Planning:**

- Schedule regular scrapes for monitoring active accounts
- Prioritize high-engagement posts for detailed analysis
- Archive historical data before accounts are deleted

**Analysis Applications:**

**Political Campaign Research:**

- Track messaging evolution over time
- Analyze engagement patterns by topic
- Monitor reply networks and interactions
- Identify viral content characteristics

**Brand Monitoring:**

- Search for brand mentions across posts
- Track sentiment in conversation threads
- Monitor competitor account activity
- Identify influencer partnerships

**Social Network Analysis:**

- Map interaction networks via mentions/replies
- Identify influential conversation participants
- Track content amplification patterns
- Analyze community formation

#### Common Troubleshooting

**Username Issues:**

- Verify exact spelling and capitalization
- Check if account is suspended or deleted
- Ensure profile is public, not private

**Pagination Problems:**

- Validate last\_post\_id format matches Truth Social's ID structure
- Handle cases where posts are deleted between scrapes
- Reset pagination if encountering errors

**Rate Limiting:**

- Implement delays between large scraping runs
- Monitor for access restrictions
- Adjust max\_items\_per\_url if encountering blocks

### Benefits and Applications

**Primary Applications:**

**Political Analysis:** Track political messaging strategies, analyze campaign communication patterns, monitor public figure statements, measure engagement with political content, and build political discourse datasets.

**Sentiment Analysis:** Measure public opinion on issues, track sentiment trends over time, analyze emotional responses to events, identify controversial topics, and monitor brand perception.

**Narrative Tracking:** Follow story evolution across posts, identify emerging narratives, track hashtag campaigns, monitor information spread patterns, and detect coordinated messaging.

**Competitive Intelligence:** Monitor competitor social presence, analyze content strategies, track engagement tactics, identify successful messaging approaches, and benchmark performance.

**Academic Research:** Study social media discourse patterns, analyze political communication, research online community formation, investigate misinformation spread, and build research datasets.

**Advantages:**

- Complete post metadata for comprehensive analysis
- Engagement metrics for virality prediction
- Conversation thread reconstruction via reply chains
- Media attachment access for multimedia analysis
- Edit history tracking for content evolution study
- Temporal data enabling time-series analysis

The structured output integrates with analytical tools, sentiment analysis platforms, network analysis software, and research databases for immediate use in political research, brand monitoring, and social media intelligence.

### Conclusion

The TruthSocial.com Posts Listings Scraper enables systematic collection of social media data from Truth Social profiles. By automating post extraction with complete metadata and engagement metrics, it empowers researchers, analysts, and organizations to understand social media discourse, track political messaging, and conduct sophisticated social media analysis.

Whether monitoring political campaigns, analyzing brand sentiment, researching social networks, or building comprehensive datasets, this scraper provides the extraction capabilities needed for professional social media intelligence.

## Your feedback

We are always working to improve Actors' performance. So, if you have any technical feedback about Truthsocial Posts Listings Scraper or simply found a bug, please create an issue on the Actor's Issues tab in Apify Console.

# Actor input Schema

## `username` (type: `string`):

Enter the Username of the profile to scrape

## `last_post_id` (type: `string`):

Enter the last post ID to start from

## `max_items_per_url` (type: `integer`):

Limit the number of items per URL you want to scrape

## Actor input object example

```json
{
  "username": "realDonaldTrump",
  "max_items_per_url": 20
}
```

# 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 = {
    "username": "realDonaldTrump",
    "last_post_id": "",
    "max_items_per_url": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("ecomscrape/truthsocial-posts-listing-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 = {
    "username": "realDonaldTrump",
    "last_post_id": "",
    "max_items_per_url": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("ecomscrape/truthsocial-posts-listing-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 '{
  "username": "realDonaldTrump",
  "last_post_id": "",
  "max_items_per_url": 20
}' |
apify call ecomscrape/truthsocial-posts-listing-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

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