# Truth Social Hashtag Scraper (`memo23/truthsocial-hashtag-scraper`) Actor

Truth Social Hashtag Scraper — pull every post under any hashtag with author, engagement counts and media. Paginates the full tag timeline with media-only and since-date filters; reblogs are auto-unwrapped so content is never blank. Pure HTTP, no browser. JSON or CSV out.

- **URL**: https://apify.com/memo23/truthsocial-hashtag-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 Hashtag Scraper</h1>

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

Scrape every post under any **Truth Social** hashtag — content, author, engagement counts and media — straight from Truth Social's timeline API.

| Input you give it | Rows you get back |
|---|---|
| One or more hashtags (`maga`, `trump2024`) | Every post in each tag timeline |
| `onlyMedia` toggle | Only posts with an image or video |
| `date` since-filter | Posts on or after that date |

> Pure HTTP. No browser, no CAPTCHA solver. Reblogs (ReTruths) are automatically unwrapped so content is never blank.

### Why Use This Scraper?

- **Any hashtag, full timeline** — paginates the entire tag feed, not just the first page.
- **Media-only filter** — keep just posts that carry an image or video.
- **Since-date filter** — stop once posts get older than a date you set, ideal for incremental pulls.
- **Reblogs handled** — a ReTruth's original text and author are surfaced, so you never get empty rows.
- **Clean flat rows** — content, author, engagement counts and media, ready for analysis.

### Overview

This actor turns any Truth Social hashtag into structured data for social listening, political-trend research, and content monitoring. Each row is one post, flattened into stable top-level fields.

### Supported Inputs

| Input | Example | Notes |
|---|---|---|
| Hashtags | `maga`, `#trump2024` | With or without the leading `#` |
| Media-only | `true` | Restrict to posts with attachments |
| Since date | `2026-07-01` | Only posts on/after this date (YYYY-MM-DD) |

**Not supported:** private accounts, DMs, or any content behind login beyond public tag timelines.

### Use Cases

| Who | What they pull |
|---|---|
| Social researchers | Full post streams for a hashtag over time |
| Journalists & analysts | Real-time coverage of trending political tags |
| Brand & reputation teams | Mentions of a campaign or slogan hashtag |
| Data scientists | Labeled post corpora for NLP / sentiment |

### How It Works

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

1. **Input** — one or more hashtags, plus optional media-only and since-date filters.
2. **Fetch** — the actor paginates the tag timeline through Truth Social's API over a residential proxy.
3. **Emit** — each post is flattened into a clean row (reblogs unwrapped), bounded by `maxItems`.

### Input Configuration

| Field | Type | Notes |
|---|---|---|
| `hashtags` | string[] | Hashtags to scrape (with or without `#`) |
| `maxItems` | integer | Cap on posts across all hashtags |
| `onlyMedia` | boolean | Keep only posts with media. Default `false` |
| `date` | string | Only posts on/after this date (`YYYY-MM-DD`) |
| `proxy` | object | Optional — defaults to residential |

#### Example input

```json
{ "hashtags": ["maga", "trump2024"], "maxItems": 500, "onlyMedia": false }
````

### Output Overview

One row per post. Reblogs are unwrapped: if a post is a ReTruth, `content`/`url` come from the original and `isReblog` is `true` with `reblogOf` linking back.

### Output Sample

```jsonc
{
  "hashtag": "maga",
  "id": "116946137373047062",
  "createdAt": "2026-07-19T10:20:41.850Z",
  "username": "RealDeaconDavid",
  "displayName": "David Koven",
  "accountId": "108320312174983288",
  "content": "<p>I wouldn't want to make her mad …</p>",
  "url": "https://truthsocial.com/@RealDeaconDavid/posts/116946137373047062",
  "isReblog": false,
  "reblogOf": null,
  "repliesCount": 4,
  "reblogsCount": 12,
  "favouritesCount": 58,
  "mediaAttachments": [],
  "scrapedAt": "2026-07-19T10:21:02.001Z"
}
```

### Key Output Fields

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

### FAQ

**Do I include the `#`?** Either way works — `maga` and `#maga` are equivalent.

**How far back does it go?** The full tag timeline, until `maxItems` or your `date` cutoff.

**What about reblogs?** A ReTruth's original content and author are surfaced automatically, so rows are never blank.

**Is content plain text?** It's the Truth Social HTML fragment — strip tags for plain text if needed.

**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 Comment 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 posts 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 hashtag scraper, truth social api, truth social data extraction, social media scraper, hashtag timeline scraper, political social listening, truth social posts export, trump social media data, truthsocial bulk export, social media monitoring, truth social json export, truth social csv export, mastodon hashtag scraper, social data api, public post extraction

# Actor input Schema

## `hashtags` (type: `array`):

Hashtags to scrape, with or without the leading # (e.g. <code>maga</code>, <code>trump2024</code>).

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

Maximum posts to return across all hashtags.

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

Keep only posts that contain an image or video.

## `date` (type: `string`):

Only posts on or after this date. Format YYYY-MM-DD.

## `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
{
  "hashtags": [
    "maga"
  ],
  "maxItems": 100,
  "onlyMedia": false
}
```

# 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 = {
    "hashtags": [
        "maga"
    ],
    "maxItems": 100
};

// Run the Actor and wait for it to finish
const run = await client.actor("memo23/truthsocial-hashtag-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 = {
    "hashtags": ["maga"],
    "maxItems": 100,
}

# Run the Actor and wait for it to finish
run = client.actor("memo23/truthsocial-hashtag-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 '{
  "hashtags": [
    "maga"
  ],
  "maxItems": 100
}' |
apify call memo23/truthsocial-hashtag-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Truth Social Hashtag Scraper",
        "description": "Truth Social Hashtag Scraper — pull every post under any hashtag with author, engagement counts and media. Paginates the full tag timeline with media-only and since-date filters; reblogs are auto-unwrapped so content is never blank. Pure HTTP, no browser. JSON or CSV out.",
        "version": "0.0",
        "x-build-id": "kPOsg3XhqXFqeCM2m"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/memo23~truthsocial-hashtag-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-memo23-truthsocial-hashtag-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-hashtag-scraper/runs": {
            "post": {
                "operationId": "runs-sync-memo23-truthsocial-hashtag-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-hashtag-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-memo23-truthsocial-hashtag-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": {
                    "hashtags": {
                        "title": "Hashtags",
                        "type": "array",
                        "description": "Hashtags to scrape, with or without the leading # (e.g. <code>maga</code>, <code>trump2024</code>).",
                        "items": {
                            "type": "string"
                        }
                    },
                    "maxItems": {
                        "title": "Max posts",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Maximum posts to return across all hashtags.",
                        "default": 1000
                    },
                    "onlyMedia": {
                        "title": "Only posts with media",
                        "type": "boolean",
                        "description": "Keep only posts that contain an image or video.",
                        "default": false
                    },
                    "date": {
                        "title": "Since date (optional)",
                        "type": "string",
                        "description": "Only posts on or after this date. Format YYYY-MM-DD."
                    },
                    "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
