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

Extract Truths (posts) and profiles from Truth Social via its Mastodon-compatible API. Get author feeds, engagement metrics, media, hashtags, and full profile data. Optional search mode with your own Truth Social account.

- **URL**: https://apify.com/brick\_joey\_yto/truth-social-scraper.md
- **Developed by:** [William Billings](https://apify.com/brick_joey_yto) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.40 / 1,000 result items

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

Scrape Truths (posts) and profile data from any Truth Social user at scale for OSINT research, political sentiment analysis, and misinformation tracking. Get full author profiles, engagement metrics, media URLs, and parsed hashtags/mentions — no authentication required for author and profile modes. Optional search mode with your own account.

### What you get

- **Post content** — full Truth text (HTML stripped), post ID, posted date, and direct post URL
- **Author profile** — username, display name, avatar, follower/following/post counts, verified status
- **Engagement metrics** — replies, retruths (reblogs), favourites, and quotes per post
- **Media & metadata** — image and video URLs with media type detection, plus hashtags, mentions, language, sensitivity flags, and link preview cards

### Sample output

```json
{
  "id": "109876543210987654321",
  "text": "Sample Truth text goes here.",
  "posted_date": "2026-09-20T14:30:00.000Z",
  "url": "https://truthsocial.com/@realDonaldTrump/109876543210987654321",
  "author": {
    "id": "107780257626128497",
    "username": "realDonaldTrump",
    "acct": "realDonaldTrump",
    "display_name": "Donald J. Trump",
    "avatar": "https://static-assets-1.truthsocial.com/.../avatar.png",
    "followers_count": 13100000,
    "following_count": 69,
    "statuses_count": 24000,
    "url": "https://truthsocial.com/@realDonaldTrump",
    "is_verified": true,
    "is_bot": false
  },
  "replies_count": 3400,
  "reblogs_count": 8900,
  "favourites_count": 52100,
  "quotes_count": 450,
  "hashtags": ["MAGA"],
  "mentions": [],
  "has_media": true,
  "media_urls": ["https://static-assets-1.truthsocial.com/.../image.jpg"],
  "media_types": ["image"],
  "language": "en",
  "sensitive": false,
  "spoiler_text": "",
  "is_reply": false,
  "is_retruth": false,
  "in_reply_to_id": null,
  "visibility": "public",
  "card": null
}
```

### Use cases

- **Political discourse analysis** — Track narratives and sentiment on Truth Social in real time
- **Misinformation & extremism research** — Monitor alternative-platform content for academic and compliance teams
- **Brand & public figure monitoring** — Follow what public figures post on Truth Social
- **News cycle tracking** — Truth Social often breaks stories first for its audience; capture them as they happen
- **Cross-platform comparison** — Compare messaging across Truth Social, Gab, and other alternative platforms

### Input

| Field              | Type    | Required       | Default         | Description                                                                                            |
| ------------------ | ------- | -------------- | --------------- | ------------------------------------------------------------------------------------------------------ |
| mode               | string  | Yes            | author          | `author` for user posts, `profile` for profile only, `search` for keyword search                       |
| username           | string  | author/profile | realDonaldTrump | Truth Social username (e.g., `realDonaldTrump`)                                                        |
| searchQuery        | string  | search         | —               | Keyword or hashtag to search                                                                           |
| maxResults         | integer | No             | 5               | Maximum Truths to return (1-10,000)                                                                    |
| includeReplies     | boolean | No             | false           | Include reply posts — author mode only                                                                 |
| onlyMedia          | boolean | No             | false           | Only return Truths with media — author mode only                                                       |
| minPostDate        | string  | No             | —               | Only Truths on/after this date (`YYYY-MM-DD`) — stops pagination early, ideal for scheduled monitoring |
| truthUsername      | string  | search         | —               | Your Truth Social username/email (search mode only)                                                    |
| truthPassword      | string  | search         | —               | Your Truth Social password (search mode only)                                                          |
| truthAccessToken   | string  | No             | —               | Pre-issued OAuth access token — skips login (search mode, advanced)                                     |
| proxyConfiguration | object  | No             | —               | Apify proxy settings — enable RESIDENTIAL if you hit Cloudflare blocks                                 |

### Pricing

**from $1 per 1,000 results** You only pay for the data you actually receive — failed or empty requests are not charged.

| Plan             | Price per 1,000 results |
| ---------------- | ----------------------- |
| Free             | $1.00                   |
| Starter (Bronze) | $0.80                   |
| Scale (Silver)   | $0.60                   |
| Business (Gold)  | $0.40                   |

The first run is free under Apify's free tier, so you can test with a small batch before scaling up.

### Technical details

- **API used:** Truth Social's Mastodon-compatible API (`/api/v1/accounts/lookup`, `/api/v1/accounts/{id}/statuses`, `/api/v2/search`) — Truth Social is built on a fork of Mastodon
- **Cloudflare handling:** All API calls execute inside a real browser context to satisfy Cloudflare checks. If your runs are blocked, enable RESIDENTIAL proxies in `proxyConfiguration`.
- **Modes:** Author mode (all Truths from a user's feed), profile mode (profile data only), and search mode (keyword search — requires your own Truth Social credentials)
- **Pagination:** Automatic `max_id` pagination up to 10,000 results per run
- **Filters:** `includeReplies` to include replies, `onlyMedia` to filter to posts with media
- **Search requires credentials** — Truth Social's search API needs an authenticated user token. Provide `truthUsername`/`truthPassword` and the actor obtains a token via OAuth. If your login triggers a device security-code challenge, pass `truthAccessToken` instead: log in at truthsocial.com, open devtools → Application → Local Storage → `truth:auth` → `users` → copy `access_token`.
- **Export formats:** JSON, CSV, XML, Excel, or HTML via Apify
- **Integrations:** REST API, webhooks, Zapier, Make, Airbyte, and LangChain

#### FAQ

**Do I need a Truth Social account?**
No for author and profile modes — those use public API endpoints. Search mode requires a Truth Social account because the platform gates search behind authentication.

**What is a "Truth"?**
Truth Social's name for a post. "Retruths" are reposts (equivalent to Mastodon reblogs / Twitter retweets).

**Why does the run take a few seconds to start?**
The actor launches a real browser to pass Truth Social's Cloudflare protection, then makes fast API calls inside that session. Cold start is ~10-20 seconds.

**How many results can I get per run?**
Up to 10,000 results per run using the `maxResults` parameter.

#### Is scraping Truth Social legal?

This scraper only accesses publicly available data through Truth Social's Mastodon-compatible API. Author and profile modes require no authentication. Search mode uses your own account credentials, subject to Truth Social's Terms of Service. Always review how you use scraped data against applicable laws and platform terms.

#### Related actors

| Actor                                                                               | Platform  | Use case                              |
| ----------------------------------------------------------------------------------- | --------- | ------------------------------------- |
| [Gab Scraper](https://apify.com/brick_joey_yto/gab-search-scraper)                  | Gab       | Alternative social posts & profiles   |
| [BitChute Video Scraper](https://apify.com/brick_joey_yto/bitchute-search-scraper)  | BitChute  | Alternative video platform data       |
| [Spoutible Scraper](https://apify.com/brick_joey_yto/spoutible-scraper)             | Spoutible | Twitter alternative monitoring        |
| [Bluesky Search Scraper](https://apify.com/brick_joey_yto/bluesky-search-scraper)   | Bluesky   | Decentralized social posts & profiles |
| [Threads Profile Scraper](https://apify.com/brick_joey_yto/threads-profile-scraper) | Threads   | Meta's text platform                  |
| [Substack Notes Scraper](https://apify.com/brick_joey_yto/substack-notes-scraper)   | Substack  | Writer platform notes                 |
| [Farcaster Cast Scraper](https://apify.com/brick_joey_yto/farcaster-scraper)        | Farcaster | Web3 social data                      |

#### Support

Need a custom feature or found a bug? Open an issue on the Actor's page and we'll respond within 24 hours. We can also build custom scrapers for your specific use case — just reach out.

# Actor input Schema

## `mode` (type: `string`):

Author: get Truths from a specific user. Profile: get user profile data only. Search: find Truths by keyword (requires your Truth Social credentials).

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

Truth Social username to scrape (author/profile modes)

## `searchQuery` (type: `string`):

Keyword or hashtag to search for (search mode only)

## `maxResults` (type: `integer`):

Maximum number of Truths to extract

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

Include reply posts in results (author mode only)

## `onlyMedia` (type: `boolean`):

Only return Truths with media attachments (author mode only)

## `minPostDate` (type: `string`):

Only return Truths posted on or after this date (e.g., 2026-09-20). Pagination stops early — ideal for scheduled monitoring that only wants new posts.

## `truthUsername` (type: `string`):

Your Truth Social username or email — required for search mode only (unless Access Token is provided)

## `truthPassword` (type: `string`):

Your Truth Social password — required for search mode only (unless Access Token is provided). Stored encrypted by Apify.

## `truthAccessToken` (type: `string`):

Optional: a Truth Social OAuth access token. When set, login is skipped entirely — useful if your account requires a device security code. Find it in browser devtools: Application → Local Storage → truth:auth → users → access\_token. Stored encrypted by Apify.

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

Proxy settings for accessing Truth Social. Residential proxies are recommended because Truth Social uses Cloudflare protection and may block datacenter IPs.

## Actor input object example

```json
{
  "mode": "author",
  "username": "realDonaldTrump",
  "maxResults": 5,
  "includeReplies": false,
  "onlyMedia": false,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# Actor output Schema

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

Dataset containing the scraped data items

# 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",
    "maxResults": 5,
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("brick_joey_yto/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 = {
    "username": "realDonaldTrump",
    "maxResults": 5,
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
    },
}

# Run the Actor and wait for it to finish
run = client.actor("brick_joey_yto/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 '{
  "username": "realDonaldTrump",
  "maxResults": 5,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}' |
apify call brick_joey_yto/truth-social-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,brick_joey_yto/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/RTTcPQ7jgBoRQbesS/builds/OgFx7jswAQfFhJ2WH/openapi.json
