# Truth Social Scraper (`khadinakbar/truth-social-all-in-one-scraper`) Actor

Scrape Truth Social profiles, posts, replies, comments, search, hashtags and trending truths. MCP-ready, auto-detects mode from input.

- **URL**: https://apify.com/khadinakbar/truth-social-all-in-one-scraper.md
- **Developed by:** [Khadin Akbar](https://apify.com/khadinakbar) (community)
- **Categories:** Social media, News, MCP servers
- **Stats:** 1 total users, 0 monthly users, 0.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

from $4.00 / 1,000 results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.

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

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

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

## Truth Social Scraper — Posts, Profiles, Comments, Search & Trends

**Truth Social Scraper** extracts public data from [Truth Social](https://truthsocial.com) — profile timelines, individual posts ("truths"), reply threads, keyword and hashtag search, and trending truths — and returns it as clean, structured JSON. One actor covers every surface: paste a username, a profile URL, a post URL or ID, a `#hashtag`, or the word `trending`, and the scraper auto-detects what you want. Built HTTP-first on the Mastodon-compatible Truth Social API, it is fast, reliable, and ready to call from AI agents over MCP.

Truth Social has **no official API and no public documentation**. This actor gives you a dependable, structured-JSON interface to its public data, with residential-proxy rotation to stay reliable behind Cloudflare and optional authentication for accounts that Truth Social now hides behind login.

---

### What can I extract with Truth Social Scraper?

| Mode | What you get | Works in public mode? |
|------|--------------|------------------------|
| **Profile timeline** | A user's posts ("truths") with full text, timestamps, engagement, and media | ✅ Yes (prominent accounts) |
| **Single post** | One truth by URL or 18-digit ID, with all metadata | ✅ Yes |
| **Profile metadata** | Bio, follower/following counts, verification, avatar — without posts | ✅ Yes (prominent accounts) |
| **Comment thread** | A post plus its full reply/comment tree | 🔑 Needs token |
| **Keyword search** | Posts, accounts, or hashtags matching a search term | 🔑 Needs token |
| **Hashtag timeline** | Recent public posts for a `#hashtag` | 🔑 Needs token |
| **Trending truths** | The posts currently trending across Truth Social | 🔑 Needs token |

> **Public vs authenticated.** Since August 2025 Truth Social serves the timelines and posts of **prominent/public accounts** (e.g. `realDonaldTrump`) without login, but gates **search, hashtag timelines, trending, comment threads, and non-prominent profiles** behind authentication. Supply an optional **Access Token** (or username + password) to unlock those — see *Authentication* below. Public mode alone fully covers the most common job: monitoring prominent figures' posts.

Every post record includes: `id`, `url`, `content`, `createdAt` (ISO 8601), `language`, `authorUsername`, `authorDisplayName`, `authorVerified`, `authorFollowers`, `repliesCount`, `retruthsCount`, `likesCount`, `isReply`, `isRetruth`, `hasMedia`, `media[]`, `mentions[]`, `hashtags[]`, `card` (link preview), and `poll`. Profile records add `bio`, `followersCount`, `followingCount`, `statusesCount`, and `avatarUrl`.

### Use cases for Truth Social data

- **Political monitoring** — track Donald Trump, J.D. Vance, and other public figures in near real time; archive statements as they post.
- **Trading & market signals** — pipe new truths into alerting and trading workflows that react to policy or market-moving posts.
- **Journalism & research** — build datasets for sentiment analysis, NLP, and cross-platform comparison.
- **OSINT & brand monitoring** — watch mentions, hashtags, and accounts of interest.
- **Scheduled tracking** — use *Only New Since Last Run* to capture only fresh posts on each scheduled run.

### How to use Truth Social Scraper

1. Set **Query** to one of:
   - a username — `realDonaldTrump` or `@realDonaldTrump`
   - a profile URL — `https://truthsocial.com/@realDonaldTrump`
   - a post URL or 18-digit ID — `https://truthsocial.com/@realDonaldTrump/posts/114784862292392723`
   - a hashtag — `#MAGA`
   - the word `trending`
2. Or set **Search Terms** for keyword search, or **Start URLs** for a batch of profile/post/hashtag URLs.
3. Set **Maximum Results** to cap volume (and cost).
4. Run. Results stream into the dataset as clean JSON.

The mode is auto-detected — you rarely need to touch the **Mode** override.

#### Scrape Truth Social by URL or search term

- **By profile:** Query = `realDonaldTrump` → returns the latest posts. Toggle *Include Replies* or *Only Posts With Media* to filter.
- **By post + comments:** Query = a post URL, plus *Include Comment Thread* → returns the post and its replies.
- **By keyword:** Search Terms = `tariffs` with *Search Type* = Posts → returns matching truths.
- **By hashtag:** Query = `#MAGA` → returns the hashtag timeline.
- **Trending:** Query = `trending` → returns the current trending truths.

### How much will scraping Truth Social cost?

This actor uses **pay-per-result** pricing:

- **$0.004 per result** (a post, comment, profile, or hashtag written to the dataset)
- **$0.00005 actor start** (per run)

Worked examples:

| Job | Results | Approx. cost |
|-----|---------|--------------|
| Latest 50 Trump posts | 50 | ~$0.20 |
| 500-post timeline | 500 | ~$2.00 |
| Post + 200 comments | 201 | ~$0.80 |
| 1,000 search results | 1,000 | ~$4.00 |

The maximum cost of any run is shown in the run log before charging begins, and you set the ceiling with **Maximum Results**.

### ⬇️ Input

```json
{
  "query": "realDonaldTrump",
  "maxResults": 50,
  "includeReplies": false,
  "onlyMedia": false,
  "cleanContent": true
}
````

Single post with its comment thread:

```json
{
  "query": "https://truthsocial.com/@realDonaldTrump/posts/114784862292392723",
  "includeComments": true,
  "maxComments": 100,
  "maxResults": 101
}
```

Keyword search:

```json
{
  "searchTerms": ["tariffs", "#economy"],
  "searchType": "statuses",
  "maxResults": 200
}
```

### ⬆️ Output

```json
{
  "type": "post",
  "id": "114784862292392723",
  "url": "https://truthsocial.com/@realDonaldTrump/114784862292392723",
  "content": "MAKE AMERICA GREAT AGAIN!",
  "createdAt": "2026-05-30T14:22:01.000Z",
  "language": "en",
  "authorUsername": "realDonaldTrump",
  "authorDisplayName": "Donald J. Trump",
  "authorVerified": true,
  "authorFollowers": 9500000,
  "repliesCount": 12000,
  "retruthsCount": 8000,
  "likesCount": 45000,
  "isReply": false,
  "isRetruth": false,
  "hasMedia": true,
  "mediaCount": 1,
  "media": [{ "type": "image", "url": "https://static-assets.truthsocial.com/media/img.jpg" }],
  "mentions": [],
  "hashtags": ["MAGA"],
  "scrapedAt": "2026-06-01T00:00:00.000Z",
  "sourceUrl": "realDonaldTrump"
}
```

### Authentication (optional)

Since August 2025, Truth Social shows the public profile and posts of **prominent accounts** (such as `realDonaldTrump`) without login, but **requires authentication for most other accounts**. To scrape non-prominent profiles, provide either:

- an **Access Token** — an OAuth bearer token from a logged-in Truth Social web session, or
- a **Username** + **Password** — used once at runtime to obtain a token.

Both are stored encrypted and never written to logs. Leave them empty for public mode.

### Scrape any social platform with dedicated scrapers

Pair Truth Social Scraper with the rest of the suite for cross-platform social intelligence:

- [X / Twitter Tweet Scraper](https://apify.com/khadinakbar/x-tweet-scraper)
- [Twitter Profile & Followers Scraper](https://apify.com/khadinakbar/twitter-profile-followers-scraper)
- [Reddit Posts & Comments Scraper](https://apify.com/khadinakbar/reddit-posts-comments-scraper)
- [TikTok Profile Scraper](https://apify.com/khadinakbar/tiktok-profile-scraper)
- [Instagram Posts Scraper](https://apify.com/khadinakbar/instagram-posts-scraper)
- [YouTube Comments Scraper](https://apify.com/khadinakbar/youtube-comments-scraper)
- [Telegram Channel Scraper](https://apify.com/khadinakbar/telegram-channel-scraper)
- [Pinterest Scraper](https://apify.com/khadinakbar/pinterest-scraper)
- [Meta Ad Library Scraper](https://apify.com/khadinakbar/meta-ad-library-scraper)

### ❓ FAQ

#### How many results can I scrape with Truth Social Scraper?

As many as you set in **Maximum Results** — from a single post to entire timelines. The actor paginates automatically and stops at your limit. Very large jobs are bounded only by Truth Social's own rate limits, which the scraper respects.

#### Can I integrate Truth Social Scraper with other apps?

Yes. Results are stored in an Apify dataset you can export to JSON, CSV, or Excel, or push to Zapier, Make, webhooks, Google Sheets, and other integrations from the Apify platform.

#### Can I use Truth Social Scraper with the Apify API?

Yes. Start runs and fetch the dataset through the Apify API or any Apify client (JavaScript, Python). Pass the same input fields shown above.

#### Can I use Truth Social Scraper through an MCP Server?

Yes. This actor is MCP-ready and exposed via the Apify MCP server, so AI agents (Claude, ChatGPT, and others) can call it directly — for example, "get the latest truths from realDonaldTrump." Inputs and outputs are structured for agent consumption.

#### Do I need proxies to scrape Truth Social?

Yes — Truth Social sits behind Cloudflare and blocks datacenter and local IPs. The actor uses Apify **residential** proxies by default, which is the recommended setting. You do not need to configure anything.

#### Is it legal to scrape Truth Social data?

This actor collects only **publicly available** data and is intended for legitimate uses such as research, journalism, market analysis, and monitoring. You are responsible for complying with Truth Social's Terms of Service, applicable laws (including data-protection and copyright law), and for how you use the data. Do not use it to scrape private data or to harass individuals. When supplying your own credentials, use an account you are authorized to use. This tool is not affiliated with, endorsed by, or connected to Truth Social or Trump Media & Technology Group.

#### Your feedback

We improve this scraper continuously. If you hit an issue, have a feature request, or want another data field, open an issue on the actor's page — feedback is welcome and acted on.

# Actor input Schema

## `query` (type: `string`):

The main input, auto-detected. Accepts a username ('realDonaldTrump' or '@realDonaldTrump'), a profile URL ('https://truthsocial.com/@realDonaldTrump'), a post URL or 18-digit post ID, a '#hashtag', or the word 'trending'. Defaults to 'realDonaldTrump'. NOT for keyword search — use the Search Terms field for that. Ignored when Start URLs or Search Terms are provided.

## `searchTerms` (type: `array`):

Keywords or hashtags to search Truth Social for (e.g. 'tariffs', '#MAGA'). Each term runs a search and returns matching posts, accounts, or hashtags depending on Search Type. Requires authentication (Access Token or username/password) — Truth Social gates search behind login. This is keyword search, NOT a username lookup.

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

A batch of Truth Social URLs to scrape — profile URLs, post URLs, or hashtag URLs (https://truthsocial.com/tags/MAGA). Each URL's mode is auto-detected. Use this for bulk runs across many profiles or posts. Takes priority over Query when both are set.

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

Force a specific scrape mode instead of auto-detecting from the input. 'auto' (default) infers the mode from Query/Start URLs. In public mode only profile, post, and profileMetadata work; comments, search, hashtag, and trending need an Access Token. 'profileMetadata' returns just bio + follower counts without posts.

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

The total maximum number of records (posts, profiles, comments, etc.) to return across the whole run. Controls cost: each result is billed once. Set higher for full timelines, lower for a quick sample. Minimum 1.

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

In profile mode, include the user's reply posts in addition to their main posts. When false (default), only top-level posts are returned. Has no effect in other modes.

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

In profile/hashtag mode, return only posts that contain media (images or video). When false (default), all posts are returned. Useful for collecting visual content only.

## `includeComments` (type: `boolean`):

When scraping a single post, also fetch its full comment/reply thread. Each comment counts as one result toward Maximum Results. When false (default), only the post itself is returned. Equivalent to selecting the 'comments' mode.

## `maxComments` (type: `integer`):

Cap on the number of comments fetched per post when Include Comment Thread is on. Defaults to 40. Counts toward the overall Maximum Results limit.

## `searchType` (type: `string`):

What kind of results keyword search returns: 'statuses' (posts, default), 'accounts' (user profiles), or 'hashtags' (tag suggestions). Only applies when Search Terms are used.

## `includeProfileInfo` (type: `boolean`):

In profile mode, emit one profile-metadata record (bio, follower counts, avatar) before the posts. When false (default), only posts are returned. The profile record counts as one result.

## `cleanContent` (type: `boolean`):

Strip HTML tags from post content and return readable plain text (default). When false, the original HTML markup is preserved in the 'contentHtml' field. Mentions and hashtags are always also returned as structured arrays.

## `sinceLastRun` (type: `boolean`):

Incremental mode: for profile/hashtag scrapes, return only posts newer than the most recent post seen on the previous run (tracked per target in the key-value store). Ideal for scheduled monitoring. When false (default), a normal full scrape runs.

## `accessToken` (type: `string`):

Optional OAuth bearer token from a logged-in Truth Social web session. Truth Social now requires authentication to view non-prominent profiles; supply a token to unlock them. Leave empty for public mode (prominent accounts like realDonaldTrump work without it). Stored encrypted and never logged.

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

Optional Truth Social account username for password login, used to auto-fetch an access token when no Access Token is given. Pair with Password. Leave empty for public mode. Use a throwaway/research account, not a primary one.

## `password` (type: `string`):

Password for the Truth Social Username above, used only to obtain an OAuth token at runtime. Stored encrypted and never logged. Leave empty for public mode.

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

Proxy settings. RESIDENTIAL Apify Proxy is strongly recommended and on by default — Truth Social is behind Cloudflare and blocks datacenter IPs. Leave the default unless you have a specific reason to change it.

## Actor input object example

```json
{
  "query": "realDonaldTrump",
  "searchTerms": [
    "tariffs"
  ],
  "startUrls": [],
  "mode": "auto",
  "maxResults": 50,
  "includeReplies": false,
  "onlyMedia": false,
  "includeComments": false,
  "maxComments": 40,
  "searchType": "statuses",
  "includeProfileInfo": false,
  "cleanContent": true,
  "sinceLastRun": false,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# Actor output Schema

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

All scraped Truth Social records as structured JSON.

# 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 = {
    "query": "realDonaldTrump",
    "searchTerms": [
        "tariffs"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("khadinakbar/truth-social-all-in-one-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 = {
    "query": "realDonaldTrump",
    "searchTerms": ["tariffs"],
}

# Run the Actor and wait for it to finish
run = client.actor("khadinakbar/truth-social-all-in-one-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 '{
  "query": "realDonaldTrump",
  "searchTerms": [
    "tariffs"
  ]
}' |
apify call khadinakbar/truth-social-all-in-one-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=khadinakbar/truth-social-all-in-one-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Truth Social Scraper",
        "description": "Scrape Truth Social profiles, posts, replies, comments, search, hashtags and trending truths. MCP-ready, auto-detects mode from input.",
        "version": "1.0",
        "x-build-id": "1nIpoC8z3uLkPp0HA"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/khadinakbar~truth-social-all-in-one-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-khadinakbar-truth-social-all-in-one-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/khadinakbar~truth-social-all-in-one-scraper/runs": {
            "post": {
                "operationId": "runs-sync-khadinakbar-truth-social-all-in-one-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/khadinakbar~truth-social-all-in-one-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-khadinakbar-truth-social-all-in-one-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": {
                    "query": {
                        "title": "Query (username, URL, post ID, #hashtag, or 'trending')",
                        "type": "string",
                        "description": "The main input, auto-detected. Accepts a username ('realDonaldTrump' or '@realDonaldTrump'), a profile URL ('https://truthsocial.com/@realDonaldTrump'), a post URL or 18-digit post ID, a '#hashtag', or the word 'trending'. Defaults to 'realDonaldTrump'. NOT for keyword search — use the Search Terms field for that. Ignored when Start URLs or Search Terms are provided.",
                        "default": "realDonaldTrump"
                    },
                    "searchTerms": {
                        "title": "Search Terms",
                        "type": "array",
                        "description": "Keywords or hashtags to search Truth Social for (e.g. 'tariffs', '#MAGA'). Each term runs a search and returns matching posts, accounts, or hashtags depending on Search Type. Requires authentication (Access Token or username/password) — Truth Social gates search behind login. This is keyword search, NOT a username lookup.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "startUrls": {
                        "title": "Start URLs",
                        "type": "array",
                        "description": "A batch of Truth Social URLs to scrape — profile URLs, post URLs, or hashtag URLs (https://truthsocial.com/tags/MAGA). Each URL's mode is auto-detected. Use this for bulk runs across many profiles or posts. Takes priority over Query when both are set.",
                        "default": [],
                        "items": {
                            "type": "object",
                            "required": [
                                "url"
                            ],
                            "properties": {
                                "url": {
                                    "type": "string",
                                    "title": "URL of a web page",
                                    "format": "uri"
                                }
                            }
                        }
                    },
                    "mode": {
                        "title": "Mode (override auto-detect)",
                        "enum": [
                            "auto",
                            "profile",
                            "post",
                            "comments",
                            "search",
                            "hashtag",
                            "trending",
                            "profileMetadata"
                        ],
                        "type": "string",
                        "description": "Force a specific scrape mode instead of auto-detecting from the input. 'auto' (default) infers the mode from Query/Start URLs. In public mode only profile, post, and profileMetadata work; comments, search, hashtag, and trending need an Access Token. 'profileMetadata' returns just bio + follower counts without posts.",
                        "default": "auto"
                    },
                    "maxResults": {
                        "title": "Maximum Results",
                        "minimum": 1,
                        "maximum": 100000,
                        "type": "integer",
                        "description": "The total maximum number of records (posts, profiles, comments, etc.) to return across the whole run. Controls cost: each result is billed once. Set higher for full timelines, lower for a quick sample. Minimum 1.",
                        "default": 50
                    },
                    "includeReplies": {
                        "title": "Include Replies",
                        "type": "boolean",
                        "description": "In profile mode, include the user's reply posts in addition to their main posts. When false (default), only top-level posts are returned. Has no effect in other modes.",
                        "default": false
                    },
                    "onlyMedia": {
                        "title": "Only Posts With Media",
                        "type": "boolean",
                        "description": "In profile/hashtag mode, return only posts that contain media (images or video). When false (default), all posts are returned. Useful for collecting visual content only.",
                        "default": false
                    },
                    "includeComments": {
                        "title": "Include Comment Thread (post mode)",
                        "type": "boolean",
                        "description": "When scraping a single post, also fetch its full comment/reply thread. Each comment counts as one result toward Maximum Results. When false (default), only the post itself is returned. Equivalent to selecting the 'comments' mode.",
                        "default": false
                    },
                    "maxComments": {
                        "title": "Maximum Comments Per Post",
                        "minimum": 1,
                        "maximum": 10000,
                        "type": "integer",
                        "description": "Cap on the number of comments fetched per post when Include Comment Thread is on. Defaults to 40. Counts toward the overall Maximum Results limit.",
                        "default": 40
                    },
                    "searchType": {
                        "title": "Search Type",
                        "enum": [
                            "statuses",
                            "accounts",
                            "hashtags"
                        ],
                        "type": "string",
                        "description": "What kind of results keyword search returns: 'statuses' (posts, default), 'accounts' (user profiles), or 'hashtags' (tag suggestions). Only applies when Search Terms are used.",
                        "default": "statuses"
                    },
                    "includeProfileInfo": {
                        "title": "Include Profile Info Record",
                        "type": "boolean",
                        "description": "In profile mode, emit one profile-metadata record (bio, follower counts, avatar) before the posts. When false (default), only posts are returned. The profile record counts as one result.",
                        "default": false
                    },
                    "cleanContent": {
                        "title": "Clean Post Content",
                        "type": "boolean",
                        "description": "Strip HTML tags from post content and return readable plain text (default). When false, the original HTML markup is preserved in the 'contentHtml' field. Mentions and hashtags are always also returned as structured arrays.",
                        "default": true
                    },
                    "sinceLastRun": {
                        "title": "Only New Since Last Run",
                        "type": "boolean",
                        "description": "Incremental mode: for profile/hashtag scrapes, return only posts newer than the most recent post seen on the previous run (tracked per target in the key-value store). Ideal for scheduled monitoring. When false (default), a normal full scrape runs.",
                        "default": false
                    },
                    "accessToken": {
                        "title": "Truth Social Access Token (optional)",
                        "type": "string",
                        "description": "Optional OAuth bearer token from a logged-in Truth Social web session. Truth Social now requires authentication to view non-prominent profiles; supply a token to unlock them. Leave empty for public mode (prominent accounts like realDonaldTrump work without it). Stored encrypted and never logged."
                    },
                    "username": {
                        "title": "Truth Social Username (optional)",
                        "type": "string",
                        "description": "Optional Truth Social account username for password login, used to auto-fetch an access token when no Access Token is given. Pair with Password. Leave empty for public mode. Use a throwaway/research account, not a primary one."
                    },
                    "password": {
                        "title": "Truth Social Password (optional)",
                        "type": "string",
                        "description": "Password for the Truth Social Username above, used only to obtain an OAuth token at runtime. Stored encrypted and never logged. Leave empty for public mode."
                    },
                    "proxyConfiguration": {
                        "title": "Proxy Configuration",
                        "type": "object",
                        "description": "Proxy settings. RESIDENTIAL Apify Proxy is strongly recommended and on by default — Truth Social is behind Cloudflare and blocks datacenter IPs. Leave the default unless you have a specific reason to change it.",
                        "default": {
                            "useApifyProxy": true,
                            "apifyProxyGroups": [
                                "RESIDENTIAL"
                            ]
                        }
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
