# Truth Social Scraper (`kinaesthetic_millionaire/truth-social-scraper`) Actor

Extracts posts and profile details from public Truth Social accounts, including post text, engagement counts, media, hashtags, and mentions.

- **URL**: https://apify.com/kinaesthetic\_millionaire/truth-social-scraper.md
- **Developed by:** [Parsedom Inc](https://apify.com/kinaesthetic_millionaire) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.70 / 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/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## 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.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Truth Social Scraper - Extract Posts, Profiles & Engagement Data

Scrape posts and profile details from any public [Truth Social](https://truthsocial.com) account without logging in. For every post this Truth Social scraper returns the text, engagement counts (replies, re-Truths, favourites), media attachments, hashtags, mentions, and timestamp; for every profile it returns the follower, following, and post counts. Results are returned as structured JSON, ready to export to CSV or Excel.

<img src="https://i.postimg.cc/0yjPBsK2/how-the-truth-social-scraper-works.png" alt="How the Truth Social Scraper Apify Actor works: provide input, the actor scrapes the site, get structured output"/>

### Features

- **Post extraction** - text, replies, re-Truths, favourites, timestamp, language, media attachments, hashtags, and mentions
- **Author profile fields on every post** - display name, bio, follower and following counts, total posts, and verified status, flattened onto each post row
- **Flexible input** - profile URLs, bare handles (`realDonaldTrump`, `@realDonaldTrump`), or single post URLs
- **Pagination support** - walks back through an account's timeline until Max Items is reached
- **Replies filter** - replies to other accounts are excluded by default, so you get the account's own posts
- **Per-project caching** - set a project name and the Actor remembers what it already returned for that project, skipping it next time. Each project keeps its own history, so different projects never interfere.
- **Cloudflare-resilient** - loads through a real Firefox browser to get past Truth Social's bot protection, so it keeps working where plain HTTP requests get blocked
- **No proxy needed** - the Actor works without a proxy; enable one for large runs
- **Both plain text and HTML** - `content` is readable text, `contentHtml` keeps the original markup

### Input Configuration

| Field | Type | Required | Default | Description |
|-------|------|----------|---------|-------------|
| Profiles or posts | array | Yes | `https://truthsocial.com/@realDonaldTrump` | Truth Social profile URLs, bare handles, or single post URLs. Any other URL is discarded. |
| Max posts per profile | integer | - | 20 | Maximum posts to scrape for each profile. A single post URL always returns exactly one item. |
| Include replies | boolean | - | false | Include posts that are replies to other accounts. |
| Project name (enables caching) | string | - | — | Set a project name to enable cross-run caching, for example "social". The Actor remembers the posts it returned under that project and skips them in later runs of the same project. Each project keeps its own separate history, so using a different name starts fresh. Leave empty to scrape everything every time. |
| Proxy configuration | object | - | No proxy | Proxy settings used for all requests. |

### Output

The dataset has a single **Posts** view. Every row is a post, with the author's profile fields (bio, avatar, follower/following counts, verified status, etc.) flattened onto it, so there's one consistent record shape across the whole dataset.

**Sample output:**

```json
[
  {
    "itemType": "post",
    "postId": "117243065120671432",
    "url": "https://truthsocial.com/@realDonaldTrump/posts/117243065120671432",
    "content": "RT @realDonaldTrump The Failing New York Times...",
    "contentHtml": "<p>RT <span class=\"h-card\">...</span></p>",
    "createdAt": "2026-09-09T20:53:19.718Z",
    "replies": 1467,
    "reblogs": 3359,
    "favourites": 11515,
    "language": "en",
    "isReply": false,
    "inReplyToId": null,
    "isReblog": false,
    "authorAccountId": "107780257626128497",
    "authorUsername": "realDonaldTrump",
    "authorDisplayName": "Donald J. Trump",
    "authorBio": "45th & 47th President of the United States",
    "authorProfileUrl": "https://truthsocial.com/@realDonaldTrump",
    "authorAvatarUrl": "https://static-assets-1.truthsocial.com/.../avatar.jpg",
    "authorFollowers": 13043723,
    "authorFollowing": 82,
    "authorPostsCount": 36524,
    "authorVerified": true,
    "authorCreatedAt": "2022-02-11T18:04:34.552Z",
    "hashtags": [],
    "mentions": ["realDonaldTrump"],
    "media": [
      { "type": "video", "url": "https://static-assets-1.truthsocial.com/.../video.mp4", "previewUrl": "https://.../preview.jpg", "description": null }
    ],
    "cardUrl": null,
    "cardTitle": null,
    "scrapedAt": "2026-09-10T13:33:02.204Z"
  }
]
```

### Uses of This Data

- Track posting activity and engagement for public figures and organisations
- Monitor a set of accounts for new posts on a schedule, returning only what is new
- Build datasets for media monitoring, political research, and academic study
- Analyse hashtag and mention networks across accounts
- Archive an account's public post history with full engagement metrics

### How to Use This Truth Social Scraper

1. [Sign up](https://apify.com/sign-up) for a free Apify account - includes **$5 monthly credit**.
2. Open the Actor page and click **Try for free**.
3. Enter a handle, profile URL, or post URL.
4. Click **Start** and wait for the run to complete.
5. Download results from the **Output** tab in JSON, CSV, or Excel format.

You can also run this actor via the [Apify API](https://docs.apify.com/api/v2) or integrate it directly into your workflows using [Zapier](https://zapier.com/apps/apify), [Make](https://www.make.com/), or [n8n](https://n8n.io/).

### Limitations & Known Issues

- **Public accounts only** - private or suspended accounts are not accessible.
- **Media-only posts have empty text** - a post that is just an image or video genuinely carries no text, so `content` is `null` for those. The media URLs are still returned in the `media` array.
- **Engagement counts are a snapshot** - counts are read at scrape time and keep changing afterwards.
- **Search is not available** - the platform requires a logged-in account for keyword search, so this Actor works from handles and URLs rather than search terms.

### Notes

- **No proxy required** - the Actor runs fine without one. For high-volume runs, enable the Apify Proxy to spread requests across IPs.
- **API integration** - This actor can be called as an API from any automation platform (Zapier, Make, n8n, custom scripts).
- **Both text formats are returned** - use `content` for analysis and `contentHtml` when you need the original links and formatting.

### 🔗 Other Actors from Parsedom Inc

| Category | Actor | What it does |
|----------|-------|--------------|
| 📸 Social Media | [Instagram Reels Audio Scraper](https://apify.com/kinaesthetic_millionaire/instagram-reels-audio-scraper) | Extracts detailed data from Instagram Reels that use a given audio track. |
| 💼 Company Data & Leads | [LinkedIn Company Detail And Email Scraper](https://apify.com/kinaesthetic_millionaire/linkedin-company-detail-email-scraper) | Scrapes LinkedIn company profiles by name or URL and finds business emails, industry, size, and headquarters. |
| 🏢 Company Data & Leads | [Kununu Company and Leads Scraper](https://apify.com/kinaesthetic_millionaire/kununu-company-and-leads-scraper) | Scrapes company profile data from kununu.com, including ratings, industry, headquarters location, and recommendation rate. |
| 🟢 Monitoring | [Website Uptime Checker](https://apify.com/kinaesthetic_millionaire/website-uptime-checker) | Monitors websites and APIs for availability, response time, SSL certificate expiry, and expected content, sending email or webhook alerts when something goes wrong. |
| 📈 SEO | [Ahref Website Authority Checker](https://apify.com/kinaesthetic_millionaire/ahref-website-authority-checker) | Extracts website authority metrics from Ahrefs including Domain Rating (DR), backlinks, and referring domains - useful for competitor analysis and link building. |
| 💇 Lead Generation | [Booksy Leads Scraper](https://apify.com/kinaesthetic_millionaire/booksy-leads-scraper) | Extracts business profiles from Booksy including names, addresses, phone numbers, emails, social media, and ratings. Built for beauty and wellness lead generation. |
| 🎬 Facebook | [Facebook Reels Scraper and Video Downloader](https://apify.com/kinaesthetic_millionaire/facebook-reels-scraper) | Scrapes reels from public Facebook pages, including captions, views, reactions, and optionally downloads the video. |

### FAQ

**Is this Truth Social scraper legal to use?**
Yes. It only reads publicly available profile and post data, the same information anyone can see without logging in. No login credentials are used and no private or protected content is accessed. Always check the target platform's terms of service and applicable laws before scraping.

**Do I need a Truth Social account or API key to use this Actor?**
No. The Actor calls Truth Social's public data endpoints directly and does not require an account, login, or API key.

**Can I scrape a single post instead of a whole profile?**
Yes. Paste a post URL (e.g. `https://truthsocial.com/@realDonaldTrump/posts/123456789`) into the same input field used for profile URLs and handles - the Actor detects it automatically and returns exactly one item.

**Can I scrape private or suspended accounts?**
No. Only public accounts are accessible. Private or suspended accounts return no data.

**How many posts can I scrape per account?**
Set the **Max posts per profile** input to any number you need. The Actor paginates through the account's timeline until that limit is reached or there are no more posts.

**How do I avoid scraping the same posts twice across multiple runs?**
Set a **Project name** in the input. The Actor remembers which posts it already returned for that project and skips them on the next run, so scheduled runs only return new posts.

**What format is the output in?**
JSON by default, with one-click export to CSV, Excel, HTML table, or XML from the Apify platform's **Output** tab.

### Support & Contact

If extraction quality drops or you want a custom apify actor then you can:

- Email us at <info@parsedom.com>
- Visit [parsedom.com](https://parsedom.com)
- Visit our profile on Fiverr: [fiverr.com/s/rEmNqEb](https://www.fiverr.com/s/rEmNqEb)
- Apify public page: [apify.com/kinaesthetic\_millionaire](https://apify.com/kinaesthetic_millionaire)
- You can also contact us if you want to build a custom actor.

# Actor input Schema

## `startUrls` (type: `array`):

Truth Social profile URLs, bare handles (realDonaldTrump or @realDonaldTrump), or single post URLs. Profiles are crawled for their posts up to Max Items; post URLs return that one post.

## `maxItems` (type: `integer`):

Maximum number of posts to scrape for each profile. Single post URLs always return exactly one item.

## `includeReplies` (type: `boolean`):

Include posts that are replies to other accounts. Off by default, so only the account's own posts are returned.

## `projectName` (type: `string`):

Set a project name to enable cross-run caching, for example "social". The Actor remembers the posts it returned under that project and skips them in later runs of the same project. Each project keeps its own separate history, so using a different name starts fresh. Leave empty to scrape everything every time.

## `proxyConfiguration` (type: `object`):

Proxy settings used for all requests. The Actor works without a proxy; enable one for large runs to spread requests across IPs.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://truthsocial.com/@realDonaldTrump"
    }
  ],
  "maxItems": 5,
  "includeReplies": false,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `overview` (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 = {
    "startUrls": [
        {
            "url": "https://truthsocial.com/@realDonaldTrump"
        }
    ],
    "maxItems": 5
};

// Run the Actor and wait for it to finish
const run = await client.actor("kinaesthetic_millionaire/truth-social-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 = {
    "startUrls": [{ "url": "https://truthsocial.com/@realDonaldTrump" }],
    "maxItems": 5,
}

# Run the Actor and wait for it to finish
run = client.actor("kinaesthetic_millionaire/truth-social-scraper").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 '{
  "startUrls": [
    {
      "url": "https://truthsocial.com/@realDonaldTrump"
    }
  ],
  "maxItems": 5
}' |
apify call kinaesthetic_millionaire/truth-social-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,kinaesthetic_millionaire/truth-social-scraper"
        }
    }
}
```

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/zfhfdd0emzOxqHGDc/builds/K62accTGw3MfbOCcf/openapi.json
