For an accessible public feed, Scrape Creators is my pick for a Truth Social scraper with a simple API. Choose Apify for configurable dataset jobs, Bright Data for a custom scraper workflow, or Truthbrush if you want a Python client you maintain yourself. If you only need historical Trump posts, check an existing archive first. You may not need a scraper at all.
I work on Scrape Creators. We checked a public profile, two feed pages, and an individual post, then executed the two-page code below. This is not a cross-vendor reliability benchmark. Prices, documentation, and source repositories were checked on October 11, 2026. Account access can change.
The five options at a glance
These are five collection paths, not five interchangeable APIs. The archive is included because avoiding an unnecessary collection job can be the right answer.
| Option | Choose it for | Input and output | Cost unit to check | Main boundary |
|---|---|---|---|---|
| Scrape Creators | A public account feed in your application | Handle or user ID to JSON posts and a pagination cursor | Observed live calls: 1 credit each; $47 for 25,000 credits | Exact account accessibility; no dedicated reply-collection endpoint in the current Truth Social catalog |
| Apify Truth Social Scraper | Configurable profile or post datasets | Usernames or profile URLs to Actor dataset items | Reviewed Actor advertises pricing from $1.15 per 1,000 results | Confirm result mode, filters, and the Actor’s complete pricing configuration |
| Bright Data | Building a scraper on managed infrastructure | Describe fields and generate a custom scraper API | Page lists $1.50 per 1,000 page loads and 5,000 free page loads/month | The current page is a builder workflow; do not assume one page load equals one post |
| Truthbrush | Python research with control over collection | Python client or CLI; authentication depends on the endpoint | Open-source software; hosting, access, and maintenance are your costs | Public mode is limited, and you own breakage and account handling |
| Trump Truth Social archive | Historical analysis of one specific account | Existing JSON data rather than a new scraping job | Public download; inspect rights and operating costs separately | One-account scope; the repository’s old workflow is disabled |
A post’s replies_count is not a collection of its replies. If you need discussion text, make that a buying requirement rather than hoping it arrives with a feed response.
The five Truth Social data options
1. Scrape Creators for accessible public feeds
Our Truth Social API has profile, user-posts, and individual-post endpoints. The user-posts response includes post IDs, timestamps, text, HTML content, media attachments, engagement counters, and next_max_id for older pages.
This is the option I would start with when I already know the account and want JSON in a script or application. You supply a Scrape Creators API key, not your Truth Social password. Resolve a handle with the profile endpoint, then keep the returned user ID for subsequent feed calls.
The limitation matters: the current docs warn that many non-prominent accounts are not accessible through the public path. We verified realDonaldTrump, not every account on Truth Social. Do not turn that one successful fixture into a platform-wide coverage claim.
There is also no dedicated Truth Social comments or global keyword-search endpoint in our current catalog. The post response can carry reply and repost counters, but that does not make it a thread export. Choose another workflow if reply bodies, authenticated-account access, or broader discovery are essential.
You can create an account and check the exact profile before buying credits. The pricing section lists $47 for 25,000 credits, with no subscription and purchased credits that do not expire.
2. Apify for configurable dataset jobs
The reviewed option is Tri⟁angle’s Truth Social Scraper, not a claim about every Truth Social Actor on Apify. Its primary page documents profile and post/reply modes, usernames or profile URLs as inputs, text and media fields, date filtering, and collecting new material since a previous run.
That makes it worth considering when you want a job that produces a dataset, particularly if the Actor’s filters reduce your own processing. The page advertises pricing from $1.15 per 1,000 results. Its public Actor metadata lists tier-dependent result events: $0.005 per result on the FREE tier and $0.00115 on GOLD, plus a start-run event. That means $5 per 1,000 results on FREE before the start fee, not a universal $1.15 rate. Check your platform plan and the Actor’s current pricing configuration.
Check what “posts and replies” means for your project. Replies authored by the target account are not necessarily the replies other people left underneath that account’s posts. Ask for a small sample containing a known thread and compare parent IDs, authors, and timestamps.
Apify is a marketplace of Actors. This article reviews one named Actor’s documentation; we did not run it. Choose it when its dataset and filter model fit. Choose a direct feed API when you would rather integrate a small request contract than operate Actor jobs.
3. Bright Data for a custom scraper workflow
Bright Data’s current Truth Social page asks you to describe the data you need, generate a scraper API, and edit its code in an IDE if necessary. It also describes scheduling and managed infrastructure.
That is a different purchase from choosing a fixed public-feed endpoint. You are selecting a builder workflow whose output needs validation against your own requirements.
Its pricing panel lists $1.50 per 1,000 page loads, with 5,000 free page loads per month. Other copy on the same page talks about paying per record. Those units are not automatically equivalent. Confirm the billing unit for the scraper you actually create, including any detail-page collection.
Choose Bright Data if you want its infrastructure and builder controls. Before committing, run a sample through the generated scraper and inspect the schema, accessible accounts, page-to-record ratio, and how failures appear. We reviewed its current page, not a generated scraper’s runtime performance.
4. Truthbrush for a Python client you maintain
Truthbrush is an open-source Truth Social client. The original repository points readers to a maintained fork. That fork’s README documents user statuses, metadata, search, and comments, plus a CLI and Python interface.
Its access model needs a closer read than “free scraper.” The README describes username/password or token configuration, and a limited --no-auth mode for public endpoints. It says endpoints requiring authentication can return an error in public mode.
Choose this route if owning the Python collection code is part of the project. You can inspect how pagination works and adapt the output to your research design. But the package being available does not guarantee that your exact endpoint or account remains accessible today.
A public discussion about scraping Truth Social contains questions about blocking, historical collection, and importing the client into Python. Those are user experiences, not a documented universal rate limit. They are good reasons to budget time for maintenance and validate a small batch first.
The code uses an Apache 2.0 license. That software license does not grant rights to republish all collected content or override platform terms.
5. An existing archive when one account is enough
The Trump Truth Social archive repository describes JSON and CSV outputs, duplicate handling, and media URLs. It is a practical lead for historical research focused on Trump’s account.
Read the warning at the top. The old repository workflow was disabled on October 26, 2025, and those outputs no longer update there. The README points to a replacement JSON archive hosted by CNN. We fetched and parsed that file on the verification date; that proves a downloadable dataset existed, not complete historical coverage or a measured update cadence.
Choose the archive when its account scope and fields match your analysis. Check the earliest and latest timestamps, duplicate IDs, repost treatment, and missing periods. For changing engagement counts, determine whether the file stores first-seen values or later observations.
Do not use an old GitHub file as evidence that a live scraper is broken, or a live feed as proof that an archive contains everything. They answer different questions. The repository’s license and the rights in the underlying posts also need separate review.
A real public feed and pagination check
On October 11, we resolved realDonaldTrump, fetched the first user-posts page, passed its returned cursor into a second request, and fetched one individual post using its source URL. All four returned HTTP 200 and charged one credit each.
The two feed pages returned 20 posts each, with no overlapping post IDs between those two responses. Their request durations were 2.06 and 2.43 seconds from our runner. That is a narrow pagination observation, not proof of a fixed page size, exhaustive history, or publication-to-delivery latency.
This Python example fetches two pages and saves the actual returned posts. It requires the requests package and your key in SCRAPE_CREATORS_API_KEY.
import json
import os
from pathlib import Path
import requests
base = "https://api.scrapecreators.com"
headers = {"x-api-key": os.environ["SCRAPE_CREATORS_API_KEY"]}
user_id = "107780257626128497" # realDonaldTrump
cursor = None
seen = set()
posts = []
for _ in range(2):
params = {"user_id": user_id}
if cursor:
params["next_max_id"] = cursor
response = requests.get(
base + "/v1/truthsocial/user/posts",
params=params,
headers=headers,
timeout=30,
)
response.raise_for_status()
payload = response.json()
if not payload.get("success") or payload.get("error"):
raise RuntimeError(payload.get("message", "Feed request failed"))
page = payload.get("posts", [])
for post in page:
if post["id"] not in seen:
seen.add(post["id"])
posts.append(post)
next_cursor = payload.get("next_max_id")
if not page or not next_cursor or next_cursor == cursor:
break
cursor = next_cursor
Path("truth-posts.json").write_text(json.dumps(posts, indent=2))
print(f"Saved {len(posts)} unique posts")
We also executed this exact two-page example during preparation. Use IDs as strings: social-platform IDs can exceed JavaScript’s safe integer range. Keep the user-posts docs beside your implementation, because account access and response fields can change.
For a known post, /v1/truthsocial/post takes url. Do not substitute an undocumented id parameter just because the returned object includes an ID.
Match the output to your project
Start with the data you need, not the platform name on a vendor’s page.
| Project requirement | Data you actually need | Common mistake |
|---|---|---|
| Account activity report | Account ID, post ID, timestamp, text, source URL | Treating the profile’s status counter as an exported timeline |
| Historical corpus | Paginated posts, date boundaries, duplicate handling, coverage notes | Assuming the first page or an existing archive contains all history |
| Discussion analysis | Reply rows with authors, timestamps, parent IDs, and thread coverage | Treating replies_count as comment text |
| Media inventory | Attachment metadata and source URLs | Assuming a URL grants download or reuse rights |
| Ongoing monitoring | New-post detection, observation time, error logs, scheduling | Treating request duration as end-to-end freshness |
Keep raw content separate from cleaned text. HTML can preserve links and formatting that disappear during cleaning. Store created_at alongside your own observation timestamp so later analysis can distinguish publication from collection.
For summaries produced by an AI agent, preserve the source URL and original text before adding sentiment labels. A model’s label is a derived interpretation, not something Truth Social reported. Scheduling, storage, and notification delivery are separate from collecting a page of posts.
Our broader social scraping API comparison covers cross-platform choices. The Truth Social integration guide covers our existing feed workflow; this list is about choosing between collection models.
Compare costs with the right unit
A request, a dataset item, and a page load are different denominators.
For Scrape Creators, the $47 credit pack works out to $1.88 per 1,000 one-credit requests. Our observed feed calls charged one credit while returning multiple posts. Do not assume every future page will return 20 items or convert that into a guaranteed price per post.
For the reviewed Apify Actor, the advertised unit is results. For Bright Data’s current builder panel, it is page loads, despite other record-based language on the page. For Truthbrush, the software price leaves out the work of operating it. For an archive, a public download leaves out validation and any legal or licensing review.
Repeated polling can cost more than a one-off historical export even when very little new material appears. Budget the requests your workflow will make, not only the number of new posts it expects to find. Treat any free tier or cache behavior as conditional rather than assuming continuous collection is free.
Check coverage and freshness before buying
A comment on our Truth Social walkthrough asks about the delay between a new post and API import. That is a better acceptance question than “was the request fast?”
Record publication time, first successful observation time, and notification time separately. Add polling interval, retries, source visibility, and processing to the evaluation. A two-second request does not mean a new post becomes available within two seconds of publication.
For coverage, start with the actual accounts in your project and a known older post. Request another page and compare IDs. If you need replies, inspect real reply objects instead of accepting a nonzero counter. Document inaccessible accounts and missing fields before scaling the job.
Publicly visible data still carries platform-policy, privacy, and content-rights obligations. Review the terms and your intended use. Nothing in this comparison is a promise of private-account access, publication-before-public access, or suitability for time-sensitive trading.
Questions to settle before choosing
What is the best Truth Social scraper for public posts?
Start with Scrape Creators if your exact account works through the public feed and you want a direct API. Pick the reviewed Apify Actor if its dataset modes fit better. Pick Bright Data if you want a custom builder workflow, or Truthbrush if you are prepared to maintain the client. Check an existing archive first for one-account historical research.
Can I collect every Truth Social account?
Do not buy on that assumption. Public access varies, and the current Scrape Creators docs explicitly warn about non-prominent accounts. A tool with an authenticated mode is a different access model, not evidence that every account can be collected.
Does a feed include every comment?
No. A reply counter is not a thread. Require reply rows and inspect parent relationships, pagination, and missing branches if discussion analysis is your goal.
Can I use these tools for instant alerts?
They can be components in monitoring workflows, but this article establishes no instant-delivery guarantee. Start with a small account-specific check, save the actual data, and measure the freshness your application needs before choosing a polling schedule.

