# Truth Social Multi-Profile Scraper (`scrapers-hub/truth-social-multi-scraper`) Actor

🔎 Truth Social Multi-Profile Scraper gathers public data from multiple profiles—bio, username, name, followers, following, posts, links & more. ⚡ Bulk, fast, reliable. 📊 Export CSV/JSON for OSINT, marketing, lead gen, and brand monitoring.

- **URL**: https://apify.com/scrapers-hub/truth-social-multi-scraper.md
- **Developed by:** [Scrapers Hub](https://apify.com/scrapers-hub) (community)
- **Categories:** Social media, Automation, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.99 / 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 Multi-Profile Scraper

The Truth Social Multi-Profile Scraper is a purpose-built Truth Social profile scraping tool that collects recent statuses (posts) from multiple user profiles in one run. Whether you’re a marketer, researcher, analyst, or an OSINT practitioner, this Truth Social multi profile scraper automates bulk profile extraction, acts as a Truth Social API alternative scraper, and scales monitoring across many accounts—saving you hours of manual work.

### Why choose Truth Social Multi-Profile Scraper?

| Feature | Benefit |
| --- | --- |
| ✅ **All-in-one bulk scraping** | Add multiple handles or profile URLs and collect recent posts from each in a single run. |
| ✅ **Structured JSON output** | Gets raw status JSON and adds a clear `user_handle`, making it a reliable Truth Social data export tool. |
| ✅ **Stability with impersonation** | Uses curl_cffi with Safari impersonation to reduce blocks—great for Truth Social web scraping automation. |
| ✅ **Configurable per-profile limits** | Control volume with `maximumPostsPerHandle` to balance speed and costs. |
| ✅ **Proxy compatible** | Works smoothly with Apify Proxy to improve reliability on tougher networks. |
| ✅ **No login required** | Scrapes publicly available statuses without cookies, sessions, or personal accounts. |

### Key features

- 🧰 **Multi-profile in one run**: Paste several usernames or profile URLs to run a Truth Social bulk profile scraper workflow without extra setup.
- 🌐 **Flexible input formats**: Accepts plain handles, @handles, or full profile URLs—ideal for a Truth Social multi-user scraping bot.
- 🛡️ **Resilient HTTP requests**: curl_cffi with Safari impersonation helps reduce bot defenses for more consistent scraping.
- 🎚️ **Per-handle limits**: Use `maximumPostsPerHandle` to cap how many recent posts you collect per account.
- 📦 **JSON-first dataset**: Each status is stored as the original JSON plus `user_handle`—perfect for ETL and API pipelines.
- 🔄 **Pagination handling**: Automatically paginates through timelines until your per-handle limit is reached.
- 🔐 **Public-only access**: No login or cookies; a clean Truth Social API alternative scraper for public data.

### Input

Provide input via an input.json file. Example structure:

```json
{
  "handles": [
    "MTG",
    "https://truthsocial.com/@RepMTG"
  ],
  "maximumPostsPerHandle": 20
}
````

#### Input Fields

| Field | Required | Description |
| --- | --- | --- |
| handles | Yes | List of Truth Social usernames or profile URLs to scrape. You can mix plain handles (e.g., MTG), @handles, and full profile URLs (e.g., https://truthsocial.com/@RepMTG). |
| maximumPostsPerHandle | No | Maximum number of posts to retrieve for each user. Defaults to 20 and must be at least 1. |

### Output

After execution, the actor saves each status to the Apify Dataset in JSON format. Each dataset item contains the full, original Truth Social status object plus an added `user_handle` field indicating the source profile.

```json
[
  {
    "id": "111234567890123456",
    "user_handle": "RepMTG"
  },
  {
    "id": "111234567890123457",
    "user_handle": "MTG"
  }
]
```

#### Output Fields

| Field | Type | Description |
| --- | --- | --- |
| id | string | Unique ID of the status from Truth Social. |
| user\_handle | string | Normalized handle that was scraped for this status. |

Note: The actor preserves every original field from the Truth Social status JSON unchanged. You can export the dataset to JSON or CSV for downstream analysis.

### How to use Truth Social Multi-Profile Scraper (via Apify Console)

1. Open Apify Console\
   Go to https://console.apify.com and sign in to your account.

2. Find the actor\
   Search for “Truth Social Multi-Profile Scraper” and open the actor detail page.

3. Configure input
   - In the INPUT tab, enter multiple handles or profile URLs in the “Handles / URLs” field.
   - Example: MTG, RepMTG, or https://truthsocial.com/@RepMTG.

4. Set per-profile limits\
   Use “Max Posts Per Handle” to control how many recent posts you collect from each account (default 20).

5. (Optional) Enable proxy\
   In the Run settings, enable Apify Proxy for higher reliability if your network is strict or you encounter blocks.

6. Run the actor\
   Click Start. The actor will look up each handle, fetch statuses, and write results to the Dataset.

7. Monitor progress\
   Watch the logs for which handles are being processed and how many statuses are collected per account.

8. Access and export results\
   Open the Dataset to preview results, filter, and export to JSON or CSV for your reporting or analytics tools.

No coding required—get accurate multi-profile results in minutes.

### Advanced features & SEO optimization

- ⚙️ **Input normalization**: Handles @usernames and full URLs seamlessly—ideal for a Truth Social profile data extractor in varied pipelines.
- 📈 **OSINT-ready design**: Built for Truth Social OSINT profile scraper use cases that need reliable, repeatable exports.
- 📝 **Detailed logging**: Clear info logs on lookups and fetches help you monitor bulk runs at scale.
- 🔄 **Automation-friendly**: A pragmatic Truth Social API alternative scraper for scheduled jobs and data lake ingestion.

### Best use cases

- 📣 **Social listening for analysts**: Track narratives and topics by pulling recent posts from many profiles simultaneously.
- 🏛️ **Competitive & political research**: Monitor public figures and organizations with a Truth Social profile crawler for faster insights.
- 🕵️ **OSINT & incident monitoring**: Collect timelines from multiple accounts to support investigations and alerts.
- 📬 **Lead discovery & outreach**: Identify active posters using a Truth Social multi account data scraper and enrich downstream systems.
- 📰 **Journalism & media tracking**: Bulk-capture posts from sources for editorial review and fact-checking.
- 🔗 **API pipeline integration**: Use the raw JSON output in ETL jobs, analytics stacks, or a Truth Social scraping Python script.

### Technical specifications

- Supported Input Formats
  - ✅ Plain handles (e.g., MTG)
  - ✅ @handles (e.g., @RepMTG)
  - ✅ Full profile URLs (e.g., https://truthsocial.com/@RepMTG)

- Proxy Support
  - ✅ Compatible with Apify Proxy (recommended for reliability on strict networks)

- Retry Mechanism
  - ❌ No explicit automatic retry logic; the actor performs a single request per step and logs failures.

- Dataset Structure
  - ✅ One dataset item per status (original Truth Social status JSON)
  - ✅ Adds `user_handle` to each item for source attribution

- Rate Limits & Performance
  - ⚠️ Throughput depends on network conditions and target responsiveness; pagination is handled automatically until limits are reached.

- Limitations
  - ❌ Scrapes only publicly available statuses (no login).
  - ❌ Replies are excluded by design (requests use `exclude_replies=true`).
  - ❌ Private or non-public content is not accessible.

### FAQ

#### Do I need to log in or provide cookies to scrape profiles?

✅ No. The actor requests publicly available endpoints and does not require login or cookies.

#### How many profiles can I scrape in one run?

✅ You can add multiple handles or profile URLs to the input. The actor processes them sequentially and respects your per-profile limit with `maximumPostsPerHandle`.

#### Can I use this as a Truth Social API alternative scraper?

✅ Yes. The actor outputs the original status JSON plus `user_handle`, making it practical for automation, ETL, or a Truth Social scraping Python script.

#### What data does each result contain?

✅ Each dataset item is the original Truth Social status object augmented with `user_handle`. The status `id` is included, and all original fields are preserved as returned by Truth Social.

#### Does it work behind protections like Cloudflare?

✅ It uses curl\_cffi with Safari impersonation to reduce blocks. For tougher environments, enabling Apify Proxy can further improve stability.

#### Can I export the data?

✅ Yes. Open the Apify Dataset and export your results to JSON or CSV for use in analytics tools and pipelines.

#### Are replies included in the results?

❌ No. The actor requests statuses with `exclude_replies=true`, focusing on main posts only.

#### Is it legal to scrape Truth Social with this tool?

✅ When used responsibly. Collect only public data and ensure compliance with platform terms and laws such as GDPR/CCPA for your specific use case.

### Support & feature requests

We welcome feedback and ideas to improve the Truth Social Multi-Profile Scraper.

- 💡 Feature Requests: Ask for enhancements like additional filters, reply inclusion options, or extended export presets.
- 📧 Contact: Reach us via Apify Support at mailto:support@apify.com.

Your feedback shapes the roadmap—thank you for helping us build a better Truth Social profile analytics scraper.

### Closing CTA / Final thoughts

*Get started with the Truth Social Multi-Profile Scraper and turn public timelines into structured, automation-ready insights.*\
*The most practical way to run a Truth Social multi profile scraper for scaled monitoring and reporting.*

### Disclaimer

These scrapers collect information only from **publicly accessible sources**. They do not access private profiles, authenticated data, or password-protected pages. Legal compliance (including GDPR, CCPA, platform ToS, and anti-spam regulations) is the user’s responsibility. For data-related concerns, contact mailto:support@apify.com. Always use this tool responsibly, ethically, and for legitimate purposes.

# Actor input Schema

## `handles` (type: `array`):

List of Truth Social usernames or profile URLs to scrape.

## `maximumPostsPerHandle` (type: `integer`):

Maximum number of posts to retrieve for each user.

## Actor input object example

```json
{
  "handles": [
    "MTG",
    "RepMTG"
  ],
  "maximumPostsPerHandle": 20
}
```

# 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 = {
    "handles": [
        "MTG",
        "RepMTG"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapers-hub/truth-social-multi-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 = { "handles": [
        "MTG",
        "RepMTG",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("scrapers-hub/truth-social-multi-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 '{
  "handles": [
    "MTG",
    "RepMTG"
  ]
}' |
apify call scrapers-hub/truth-social-multi-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Truth Social Multi-Profile Scraper",
        "description": "🔎 Truth Social Multi-Profile Scraper gathers public data from multiple profiles—bio, username, name, followers, following, posts, links & more. ⚡ Bulk, fast, reliable. 📊 Export CSV/JSON for OSINT, marketing, lead gen, and brand monitoring.",
        "version": "1.0",
        "x-build-id": "hTvCVj2oFURklZjGR"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/scrapers-hub~truth-social-multi-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-scrapers-hub-truth-social-multi-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/scrapers-hub~truth-social-multi-scraper/runs": {
            "post": {
                "operationId": "runs-sync-scrapers-hub-truth-social-multi-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/scrapers-hub~truth-social-multi-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-scrapers-hub-truth-social-multi-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",
                "required": [
                    "handles"
                ],
                "properties": {
                    "handles": {
                        "title": "Handles / URLs",
                        "type": "array",
                        "description": "List of Truth Social usernames or profile URLs to scrape.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "maximumPostsPerHandle": {
                        "title": "Max Posts Per Handle",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Maximum number of posts to retrieve for each user.",
                        "default": 20
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
