How to use it: 3 steps
- Make a free Apify accountApify is the cloud platform where our tools run. The free plan gives you $5 of usage every month, no credit card needed. You pay Apify, not us.
- Paste your input and press StartNo code needed: you fill in a form (the input). It already has a working example. For example:
realDonaldTrumpin Usernames or profile URLs. Each start is one run. - Download the resultsWhen the run ends, the results are in a table (the dataset). Open Output, press Export and pick Excel or CSV. JSON and the API are there too.
This tool is an Apify Actor: a small program that runs on Apify. You can also run it on a schedule, for example every Monday. New to it? Read how it works, step by step and the 8 words you need first.
What it does
Scrape public Truth Social posts and profiles by username with no login, and get clean JSON rows with post text, media, link cards, quotes, ReTruths, reply/ReTruth/like counts and the author's follower count.
Good for
- Follow what a list of public accounts posted today or in the last week.
- Build a dataset of posts with text, media links and engagement counts.
- Get follower counts, bios and join dates of many accounts at once.
- Feed fresh posts to an AI agent, a spreadsheet or a news alert flow.
Not a good fit
- No search, trends, groups, comments by other people, followers lists or DMs: only posts and profiles of the usernames you give.
- Only public accounts. Private (locked) accounts are reported as
privatewith no posts. - Truth Social allows only a few requests per minute, and the Actor respects that limit. It saves about 60–100 posts per minute, so 1,000 posts take about 14 minutes.
- At most 100 usernames per run and 2,000 posts per account. 100 accounts with 20 posts each take about 40 minutes.
Who uses it
Journalists
Follow what a list of public accounts posted this week.
Researchers
Build a post dataset with engagement counts.
Alert builders
Send fresh posts to a sheet or an AI agent.
Price
Pay per event: you pay for each result the tool saves, plus a small start fee for each run. The price includes Apify platform costs. Apify bills you, not us. Prices below are for the Apify free plan.
| What you pay for | Price | When |
|---|---|---|
| Post | $0.0015 (from $0.00125 on paid Apify plans) | One Truth Social post row saved to the Dataset. |
| Account checked | $0.0025 | One username that Truth Social answered about: found, not found or private. In profiles mode, the profile row. Invalid usernames are free. |
Examples
- One post: about $0.0015.
- 1,000 posts: about $1.50.
- Every day 100 posts, for 30 days: about $4.50 a month.
Free to try: the Apify free plan gives you $5 of usage every month, no credit card needed. That is enough for about 3,300 posts.
Prices checked on 24 October 2026. See the current price on Apify.
Questions
Why is it slow?
Truth Social allows only a few requests per minute. The tool stays under that limit.
Can I search posts by keyword?
No. It gets posts and profiles of the usernames you add.
How many accounts can I add?
Up to 100 usernames per run and up to 2,000 posts per account.
What about private accounts?
They are marked as private, with no posts.
Do I need a Truth Social account or cookies?
No. The Actor reads only public data that Truth Social shows to logged-out visitors.
Why can't it go faster?
Truth Social limits how often a visitor can ask for data. The Actor stays under that limit, about 5 requests (up to 100 posts) per minute, and waits when Truth Social asks.
Are the counts live?
Likes, ReTruths, replies and follower counts are as they were at fetchedAt. Run again to refresh them.
Is this data complete?
It is what the public API returns for the account's timeline, newest first, up to 2,000 posts. Deleted posts and posts of private accounts are not available.
Is scraping Truth Social allowed?
The Actor reads only public pages without login, at the rate Truth Social allows, and does not bypass any login or CAPTCHA. Truth Social's terms restrict automated collection and commercial use; you are responsible for how you collect, store and reuse the content, including personal data and authors' rights.
Details
Step by step on Apify
- Open the Input tab.
- Add one or more usernames to Usernames or profile URLs (
handles), for examplerealDonaldTrump. - Keep Max posts per account (
maxPostsPerUser) at 20, or set a higher number. - Click Start.
- Open the Output tab: the Posts view shows date, author, text, link and counts.
Use cases
| Task | Input | You get | Key fields | Next step |
|---|---|---|---|---|
| Daily monitoring of a few accounts | handles + since: "1 day" | post | createdAt, text, url, media | Schedule + webhook, Google Sheets |
| Engagement research | handles + maxPostsPerUser | post | favouritesCount, reblogsCount, repliesCount | CSV / Excel export |
| Account directory | mode: "profiles" | profile | followersCount, postsCount, bio, createdAt | API, spreadsheet |
| AI agent context | handles (small) | post | text, createdAt, url | MCP |
Tips for better results
- Use the date filter to get only recent posts.
- Turn off replies and ReTruths to keep original posts only.
- Plan time: about 60 to 100 posts are saved per minute.
Limits and good to know
If you set a maximum cost per run, the Actor stops before it goes over it: rows already saved stay in the Dataset, the run ends as SUCCEEDED with PARTIAL / CHARGE_LIMIT in RUN_SUMMARY, and the rest of the accounts are skipped.
- Up to 100 usernames per run, up to 2,000 posts per account (20 posts per request). 100 usernames with 20 posts each take about 40 minutes, within the default 1-hour timeout
- About 5 requests per minute, as Truth Social allows; the Actor waits when Truth Social asks it to slow down
- The default run timeout is 1 hour, enough for about 3,000–4,000 posts. If the timeout comes first, saved rows stay and the run is
PARTIAL/TIME_LIMIT
For developers
Sample result
One result from a real test run, in JSON. Real values change from run to run. In Excel or CSV each field is a column.
{
"type": "post",
"id": "117435353994630003",
"url": "https://truthsocial.com/@realDonaldTrump/117435353994630003",
"inputHandle": "realDonaldTrump",
"account": {
"id": "107780257626128497",
"username": "realDonaldTrump",
"displayName": "Donald J. Trump",
"url": "https://truthsocial.com/@realDonaldTrump",
"followersCount": 13111621,
"followingCount": 69,
"postsCount": 37168,
"verified": true,
"avatarUrl": "https://static-assets-1.truthsocial.com/tmtg:prime-ts-assets/accounts/avatars/107/780/257/626/128/497/original/454286ac07a6f6e6.jpeg"
},
"createdAt": "2026-10-13T19:54:55.085Z",
"editedAt": null,
"text": "Don’t ever mess with nature! President DJT",
"contentHtml": "<p>Don’t ever mess with nature! President DJT</p>",
"language": "en",
"repliesCount": 791,
"reblogsCount": 1825,
"favouritesCount": 7100,
"isReply": false,
"inReplyToId": null,
"inReplyToAccountId": null,
"isReblog": false,
"reblog": null,
"isQuote": false,
"quoteId": null,
"quote": null,
"sensitive": false,
"spoilerText": null,
"visibility": "public",
"pinned": false,
"mentions": [],
"hashtags": [],
"media": [
{
"id": "117435345857080951",
"type": "video",
"url": "https://static-assets-1.truthsocial.com/tmtg:prime-ts-assets/media_attachments/files/117/435/345/857/080/951/original/98bf6e8266e6ae0a.mp4",
"previewUrl": "https://static-assets-1.truthsocial.com/tmtg:prime-ts-assets/media_attachments/thumbnails/117/435/345/857/080/951/original/72433ae574eb1d6c.jpg",
"width": 1078,
"height": 1148,
"durationSecs": 41.563719,
"description": null
}
],
"card": null,
"poll": null,
"source": "truthsocial.com",
"fetchedAt": "2026-10-14T03:59:02Z"
}Use it from code
Actor ID: cliqtomedia/truth-social-scraper. You need your Apify API token from Apify Console → Settings → API & Integrations.
from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("cliqtomedia/truth-social-scraper").call(run_input={
"handles": [
"realDonaldTrump"
],
"mode": "posts"
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item)curl -X POST "https://api.apify.com/v2/acts/cliqtomedia~truth-social-scraper/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"handles": ["realDonaldTrump"], "mode": "posts"}'# pip install langchain-apify
# set APIFY_TOKEN in your environment
from langchain_apify import ApifyActorsTool
tool = ApifyActorsTool("cliqtomedia/truth-social-scraper")
result = tool.invoke({"run_input": {"handles": ["realDonaldTrump"], "mode": "posts"}})
print(result)The cURL call waits for the results, up to 300 seconds. For longer runs, start a run (/runs) and get the results with a webhook or by checking the run. Apify API docs. LlamaIndex, MCP for AI agents and the JavaScript client: AI agents & MCP.
Data fields (6)
| Field | Type | Meaning |
|---|---|---|
type | string | post (posts mode) or profile (profiles mode). |
id | string | Truth Social post or account ID. |
url | string | Public URL of the post or profile. |
inputHandle | string | The username the row was fetched for, as normalized from the input. |
fetchedAt | string | When the run fetched the data (UTC). |
source | string | Always truthsocial.com. |
Input settings (6)
The main fields of the input form. With the API you send them as JSON.
| Setting | Name in the API | Type | Example value |
|---|---|---|---|
| Usernames or profile URLs required | handles | array | ["realDonaldTrump"] |
| What to scrape | mode | string | "posts" |
| Max posts per account | maxPostsPerUser | integer | 20 |
| Only posts since | since | string | |
| Include replies | includeReplies | boolean | false |
| Include ReTruths | includeReblogs | boolean | true |
