# Truth Social Comment Scraper (`memo23/truthsocial-comment-scraper`) Actor

Truth Social Comment Scraper — get the full reply thread on any post by URL or numeric ID: every descendant reply with author, content, engagement counts and media, sortable by oldest, newest or most-engagement, each linked to its root post. Pure HTTP, no browser. JSON out.

- **URL**: https://apify.com/memo23/truthsocial-comment-scraper.md
- **Developed by:** [Muhamed Didovic](https://apify.com/memo23) (community)
- **Categories:** Social media, AI, Agents
- **Stats:** 12 total users, 11 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $5.00 / 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.

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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js/docs.md):

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

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python/docs.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

<h1 align="center">Truth Social Comment Scraper</h1>

<p align="center">
  <img src="https://raw.githubusercontent.com/muhamed-didovic/muhamed-didovic.github.io/main/assets/truthsocial-comments-logo.png" alt="Truth Social Comment Scraper" width="180" />
</p>

Scrape the full **comment / reply thread** on any **Truth Social** post — every descendant reply, with author, content, engagement and media.

| Input you give it | Rows you get back |
|---|---|
| Post URL (`…/posts/123…`) | Every reply beneath that post |
| Bare status ID (`116921…`) | Same — no URL needed |
| `sortBy` | Replies ordered oldest / newest / most-engagement |

> Pure HTTP. No browser, no CAPTCHA solver. Returns the whole reply tree, not just top-level comments.

### Why Use This Scraper?

- **Whole reply tree** — all descendants of a post, not only the direct replies.
- **Sort any way** — oldest first, newest first, or most-engagement first.
- **URL or ID** — accepts full post URLs *or* bare numeric status IDs.
- **Clean flat rows** — each reply carries author, content, engagement and media, linked back to the root post.

### Overview

This actor turns any Truth Social post's discussion into structured data for sentiment analysis, community research, and engagement studies. Each row is one reply, flattened into stable top-level fields, with `rootStatusId` linking it to the post it belongs to.

### Supported Inputs

| Input | Example | Notes |
|---|---|---|
| Post URLs | `https://truthsocial.com/@user/posts/116921…` | Any public post |
| Status IDs | `116921039818358068` | Bare numeric ID |

**Not supported:** replies on private accounts, or content behind login.

### Use Cases

| Who | What they pull |
|---|---|
| Sentiment analysts | Full reply corpora for a viral post |
| Community researchers | Who engages, and how, under a given account's posts |
| Journalists | Public reaction threads to a newsworthy post |
| Data scientists | Labeled reply datasets for NLP |

### How It Works

<p align="center">
  <img src="https://raw.githubusercontent.com/muhamed-didovic/muhamed-didovic.github.io/main/assets/truthsocial-comments-how-it-works.png" alt="How the Truth Social Comment Scraper works" width="820" />
</p>

1. **Input** — post URLs or status IDs, plus a sort order.
2. **Fetch** — the actor pulls each post's context (descendants) from Truth Social's API over a residential proxy.
3. **Emit** — every reply is flattened into a clean row, sorted, and bounded by `maxItems`.

### Input Configuration

| Field | Type | Notes |
|---|---|---|
| `postUrls` | string[] | Post URLs or numeric status IDs |
| `sortBy` | enum | `oldest` (default), `newest`, `mostEngagement` |
| `maxItems` | integer | Cap on comments across all posts |
| `proxy` | object | Optional — defaults to residential |

#### Example input

```json
{
  "postUrls": ["https://truthsocial.com/@realDonaldTrump/posts/116921039818358068"],
  "sortBy": "mostEngagement",
  "maxItems": 500
}
````

### Output Overview

One row per reply. `rootStatusId` links each reply to the post it was scraped from; `inReplyToId` gives the immediate parent in the thread.

### Output Sample

```jsonc
{
  "rootStatusId": "116921039818358068",
  "input": "https://truthsocial.com/@realDonaldTrump/posts/116921039818358068",
  "id": "116921301553481902",
  "createdAt": "2026-07-14T23:58:50.718Z",
  "username": "ErichDerbsch",
  "displayName": "Erich Derbsch",
  "content": "<p>God bless you, President Trump!</p>",
  "url": "https://truthsocial.com/@ErichDerbsch/posts/116921301553481902",
  "repliesCount": 0,
  "reblogsCount": 1,
  "favouritesCount": 9,
  "inReplyToId": "116921039818358068",
  "mediaAttachments": [],
  "scrapedAt": "2026-07-19T10:25:11.400Z"
}
```

### Key Output Fields

- **Context:** `rootStatusId`, `input`, `id`, `url`, `createdAt`, `scrapedAt`
- **Author:** `username`, `displayName`, `accountId`
- **Content:** `content`, `mediaAttachments`
- **Engagement:** `repliesCount`, `reblogsCount`, `favouritesCount`
- **Thread:** `inReplyToId`, `isReblog`, `reblogOf`

### FAQ

**URL or ID?** Either — the actor extracts the status ID from a URL, or takes a bare ID directly.

**Does it get nested replies?** Yes — the whole descendant tree, not just direct replies.

**How do I order replies?** `sortBy`: `oldest`, `newest`, or `mostEngagement`.

**Do some replies have empty content?** Media-only replies (an image with no text) legitimately have empty `content` but carry `mediaAttachments`.

**Do I need my own account?** No — the actor is fully self-contained.

### Support

Found a bug or need a field added? Open an issue on the actor's Issues tab, or email **muhamed.dido@gmail.com**.

### Explore More Scrapers

Pairs with the **Truth Social Hashtag Scraper** and **Truth Social Trends Scraper**. Browse the full catalog at [muhamed-didovic.github.io](https://muhamed-didovic.github.io/).

### ⚠️ Disclaimer

This Actor accesses publicly available replies on Truth Social for legitimate research, journalism, and market-intelligence purposes. Use of this Actor must comply with Truth Social's Terms of Service and all applicable laws including data-protection regulations (GDPR, CCPA, etc.). The Actor's authors are not responsible for any misuse. We do not store any scraped data; the Actor returns it directly to your Apify dataset for your authorized use.

### SEO Keywords

truth social scraper, truth social comment scraper, truth social replies scraper, truth social api, truth social data extraction, social media comment scraper, reply thread scraper, sentiment analysis data, truth social posts export, trump social media data, truthsocial bulk export, comment thread extraction, social media monitoring, truth social json export, truth social csv export, public reply extraction

# Actor input Schema

## `postUrls` (type: `array`):

Truth Social post URLs (e.g. <code>https://truthsocial.com/@realDonaldTrump/posts/123...</code>) or bare numeric status IDs. The actor returns every comment/reply beneath each.

## `sortBy` (type: `string`):

Order replies within each thread.

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

Maximum comments to return across all posts.

## `proxy` (type: `object`):

Leave empty — the actor routes through its built-in residential proxy. Only set to use your own.

## Actor input object example

```json
{
  "postUrls": [
    "https://truthsocial.com/@realDonaldTrump/posts/113000000000000000"
  ],
  "sortBy": "oldest",
  "maxItems": 100
}
```

# 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 = {
    "postUrls": [
        "https://truthsocial.com/@realDonaldTrump/posts/113000000000000000"
    ],
    "maxItems": 100
};

// Run the Actor and wait for it to finish
const run = await client.actor("memo23/truthsocial-comment-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 = {
    "postUrls": ["https://truthsocial.com/@realDonaldTrump/posts/113000000000000000"],
    "maxItems": 100,
}

# Run the Actor and wait for it to finish
run = client.actor("memo23/truthsocial-comment-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 '{
  "postUrls": [
    "https://truthsocial.com/@realDonaldTrump/posts/113000000000000000"
  ],
  "maxItems": 100
}' |
apify call memo23/truthsocial-comment-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Truth Social Comment Scraper",
        "description": "Truth Social Comment Scraper — get the full reply thread on any post by URL or numeric ID: every descendant reply with author, content, engagement counts and media, sortable by oldest, newest or most-engagement, each linked to its root post. Pure HTTP, no browser. JSON out.",
        "version": "0.0",
        "x-build-id": "oNBZOvfJKZZyhhFeF"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/memo23~truthsocial-comment-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-memo23-truthsocial-comment-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/memo23~truthsocial-comment-scraper/runs": {
            "post": {
                "operationId": "runs-sync-memo23-truthsocial-comment-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/memo23~truthsocial-comment-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-memo23-truthsocial-comment-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": {
                    "postUrls": {
                        "title": "Post URLs or IDs",
                        "type": "array",
                        "description": "Truth Social post URLs (e.g. <code>https://truthsocial.com/@realDonaldTrump/posts/123...</code>) or bare numeric status IDs. The actor returns every comment/reply beneath each.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "sortBy": {
                        "title": "Sort replies by",
                        "enum": [
                            "oldest",
                            "newest",
                            "mostEngagement"
                        ],
                        "type": "string",
                        "description": "Order replies within each thread.",
                        "default": "oldest"
                    },
                    "maxItems": {
                        "title": "Max comments",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Maximum comments to return across all posts.",
                        "default": 1000
                    },
                    "proxy": {
                        "title": "Proxy configuration (optional override)",
                        "type": "object",
                        "description": "Leave empty — the actor routes through its built-in residential proxy. Only set to use your own."
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
