Truth Social Scraper (it Worked) avatar

Truth Social Scraper (it Worked)

Pricing

from $0.99 / 1,000 results

Go to Apify Store
Truth Social Scraper (it Worked)

Truth Social Scraper (it Worked)

Truth Social Scraper extracts real-time posts, replies, and interaction metrics directly from user profiles. It uses browser automation to intercept official network requests, easily bypassing standard anti-bot protections to deliver clean JSON data.

Pricing

from $0.99 / 1,000 results

Rating

0.0

(0)

Developer

Luffy

Luffy

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

5 days ago

Last modified

Share

Truth Social Scraper Banner

Truth Social Scraper: Extract Posts, Media, Replies, and Engagement Data from truthsocial.com

The Truth Social scraper is a no-code data extraction tool for truthsocial.com. Point it at any public Truth Social profile and it returns clean, structured JSON: posts, replies, retruths, media attachments, follower counts, and per-post engagement numbers. No login required, no fragile CSS selectors, and no headless browser to babysit.

If you have tried to track what is posted on truth social at any real scale, you already know why this exists. The timeline is dynamic, and most generic scrapers either time out, get rate-limited into the ground, or hand back half-populated objects with missing media URLs. This actor handles all of that for you.

What this Truth Social scraper actually does

You give it a list of usernames. It fetches the user's statuses, handling proper pagination, and writes every post to a dataset. You can cap how many posts per user, filter to media-only, exclude replies, or do the opposite and pull only replies. If a previous run died halfway, you can resume from a specific post ID instead of starting over.

The output is the raw, full-fat JSON object for each status. That includes the post ID, creation timestamp, visibility, language, and source URL. You get the full post HTML and a cleaned plain-text version. The complete account object comes along with each post: display name, bio, follower count, following count, total statuses, avatar and header image URLs, verified and premium flags. Every media attachment includes both the original and preview URLs plus its type (image, video, gifv). Counts for replies, retruths, favorites, upvotes, and downvotes are all there. Mentions, hashtags, and quote or reblog references show up when present.

You can keep the raw HTML content field, or strip it out with cleanContent: true and keep only the plain text. Handy if you are dumping into a database and do not want to deal with escaping later.

Why scraping truthsocial.com is harder than it looks

A few things trip people up when they try to scrape truth social with a generic web scraper.

The site is a single-page app. The timeline you see in your browser is fetched via API after the page loads, so a basic HTTP GET of the profile URL returns almost no useful content. You need to either render JavaScript (slow, expensive) or hit the API directly (fast, but you need to know the patterns and handle the auth headers).

Account IDs are not the same as usernames. The URL says @realDonaldTrump but the API needs the numeric account ID, like 107780257626128497. You have to resolve that first, and the resolution endpoint has its own rate limits.

Pagination uses max_id cursors, not page numbers. Handle this wrong and you either re-fetch the same page in a loop forever or skip entire chunks of history without noticing.

Rate limits are real and not always documented. Hammer the endpoint and you get capped, sometimes for hours. This scraper paces requests, retries with backoff, and rotates through Apify's proxy pool so long runs do not crater halfway through.

Use cases for the Truth Social scraper

Anyone working with content from truthsocial.com at any real scale hits the same wall: you need the data in a usable format, not as screenshots or copy-pasted text. Here is where this scraper actually pays for itself.

🔬 Researchers & Academics Track political messaging, run sentiment models, or study echo chambers. The full account object lets you weight posts by reach, ensuring a 12-million-follower account doesn't get the same weight as one with 200 followers. Assemble large public datasets cleanly.

📰 Journalists & Fact-Checkers Pull exact posts from the API with verifiable timestamps and post IDs. If a public figure said something on truthsocial.com, you get a permanent record that survives even if the post is deleted later. Extract attached images to run reverse-image searches easily.

📈 Financial Markets & Hedge Funds Watch statements from political figures and CEOs that move markets. Latency matters, and so does structured data you can pipe straight into your alerting systems and trading models.

🛡️ PR & Communications Teams Watch for mentions of your company, executives, or products. Set up keyword alerts on replies to a client's account so your team finds out about negative sentiment spikes instantly.

📊 Social Media Analysts & Strategists Build per-account engagement dashboards. Favorites, retruths, and reply counts are included in every response. See what content performs best (video vs. text, links vs. native) to inform editorial decisions.

💾 Archivists & Intelligence Teams Drop the JSON output straight into Elasticsearch, Postgres, or a vector store. The startPostId parameter lets you do clean incremental backups without re-fetching the same data every time.

Try it now on Apify

Input parameters

ParameterTypeDefaultDescription
profilesarray["realDonaldTrump"]List of Truth Social usernames to scrape. No @ prefix needed.
maxItemsPerProfileinteger100Maximum number of posts to extract per profile. Set higher for backfills.
onlyMediabooleanfalseReturn only posts with at least one media attachment.
onlyRepliesbooleanfalseReturn only posts that are replies to other posts.
excludeRepliesbooleantrueSkip replies. Mutually exclusive with onlyReplies.
cleanContentbooleanfalseDrop the raw HTML content field and keep only contentText.
startPostIdstring""Resume from a specific post ID. Useful for incremental scheduled runs.

Example input

{
"profiles": ["realDonaldTrump", "KariLake"],
"maxItemsPerProfile": 50,
"onlyMedia": false,
"excludeReplies": true,
"cleanContent": true
}

This pulls the 50 most recent non-reply posts from both accounts, strips the HTML, and returns plain text plus all metadata.

Output format

Each item in the dataset is one post. The schema mirrors the Truth Social API response one-to-one, with three extra convenience fields (contentText, authorUsername, authorDisplayName) added so you do not have to dig into the nested account object for the common cases.

{
"id": "116636418903333996",
"created_at": "2026-05-25T17:35:13.050Z",
"in_reply_to_id": null,
"quote_id": null,
"sensitive": false,
"visibility": "public",
"url": "https://truthsocial.com/@realDonaldTrump/116636418903333996",
"account": {
"id": "107780257626128497",
"username": "realDonaldTrump",
"acct": "realDonaldTrump",
"display_name": "Donald J. Trump",
"locked": false,
"bot": false,
"created_at": "2022-02-11T16:16:57.705Z",
"url": "https://truthsocial.com/@realDonaldTrump",
"avatar": "https://static-assets-1.truthsocial.com/.../454286ac07a6f6e6.jpeg",
"header": "https://static-assets-1.truthsocial.com/.../ba3b910ba387bf4e.jpeg",
"followers_count": 12700424,
"following_count": 69,
"statuses_count": 33786,
"verified": true,
"premium": true
},
"media_attachments": [
{
"id": "116636113195300888",
"type": "image",
"url": "https://static-assets-1.truthsocial.com/.../6bc73b77e61e7830.jpg",
"preview_url": "https://static-assets-1.truthsocial.com/.../6bc73b77e61e7830.jpg"
}
],
"mentions": [],
"tags": [],
"replies_count": 1024,
"reblogs_count": 2464,
"favourites_count": 8283,
"upvotes_count": 8283,
"downvotes_count": 1,
"contentText": "Example parsed plain text here",
"authorUsername": "realDonaldTrump",
"authorDisplayName": "Donald J. Trump"
}

Output Sample

How to run it

Three options, use whichever fits your workflow.

Run it on the Apify platform with no code. Open the actor page, paste your usernames into the input form, hit start. Results land in the default dataset and you can export to JSON, CSV, or Excel from the UI. Good for one-off pulls and for non-developers on the team.

Run it from Python. Install apify-client, drop in your API token, call run with the input dict, iterate the dataset. Five lines of real code. This is how you wire it into an existing data pipeline.

Run it from Node.js. Same idea on the JavaScript side: npm install apify-client, instantiate the client, call the actor, await the dataset. Works in any backend, serverless function, or scheduled job.

For ongoing collection, use Apify's built-in scheduler. Set it to every 30 minutes, every hour, or every day, whatever your use case needs. Pass the last seen startPostId between runs and you only fetch new posts each time.

Public posts on truthsocial.com are, by definition, public. Scraping them for research, journalism, archival, or analytics is generally fine. How you use that data is on you. Do not use it to harass individuals, build surveillance products targeting private citizens, or break Truth Social's terms in ways that will get you banned. If you republish content, follow normal attribution and fair-use practices. If you are not sure whether your use case is acceptable, talk to a lawyer, not a scraper README.