Skip to main content

Command Palette

Search for a command to run...

Truth Social Has No Public API — Here's the Alternative

Updated
7 min readView as Markdown
H

I build systems that blend AI and automation to solve real-world problems

If you've spent any time searching for the "Truth Social API," you've probably hit the same wall everyone does: there isn't one. No developer portal, no API key signup, no official documentation, no support channel. The pages that claim to document an official Truth Social API are SEO spam — one widely-circulated "complete guide" even asserts the API adheres to Meta's developer policies, which is nonsense, since Truth Social has nothing to do with Meta.

So if you're trying to pull posts, profiles, or engagement metrics off Truth Social programmatically, you have a decision to make. This post explains why no public API exists, what your actual options are, what each one really costs you in time and fragility, and the path I'd recommend for almost everyone.

Why there's no official API

Truth Social is built on a fork of Mastodon, the open-source, AGPL-licensed social network server. That's not speculation — it's visible in the platform's own behavior. The login page calls /api/v1/instance, a distinctive Mastodon endpoint, and the source was published under the AGPL until uploads quietly stopped at the end of 2022.

Because the platform inherited Mastodon's architecture, it also inherited Mastodon's REST API structure. The endpoints exist. They're just not for you. Trump Media never built a public developer program on top of them, never documented them, and never committed to keeping them stable. They're internal plumbing that the web and mobile apps talk to — and internal plumbing changes whenever the company feels like it.

That's the crux of the problem. The data is reachable, but there is no contract. Nothing promises an endpoint will exist next week, return the same fields, or let you in without authentication.

Option 1: Hit the undocumented endpoints yourself

The DIY route is real and people do it. Truth Social retained Mastodon-compatible endpoints like /api/v1/accounts/{id}/statuses for public account data, and the JSON closely follows Mastodon's schema — id, an HTML content field, an ISO 8601 created_at, a reblog field, a media_attachments array, and so on.

Here's roughly what a naive polling approach looks like:

import requests
from bs4 import BeautifulSoup

# You first have to resolve the account ID from the handle,
# then page through statuses.
ACCOUNT_ID = "107780257626128497"  # realDonaldTrump
url = f"https://truthsocial.com/api/v1/accounts/{ACCOUNT_ID}/statuses"

resp = requests.get(url, params={"limit": 20})
for status in resp.json():
    text = BeautifulSoup(status["content"], "html.parser").get_text()
    print(status["created_at"], text)

Looks simple. It isn't, once you try to run it reliably. Here's what bites you:

  • Authentication walls. Since around August 2025, Truth Social restricts unauthenticated viewing to a handful of prominent accounts (Trump, Vance). For most other public profiles you now need to be logged in, which means managing credentials, tokens, and the very real risk of your account getting flagged.

  • Rate limits. The Mastodon-compatible endpoints allow roughly 300 requests per 5-minute window per IP. Monitor more than a few accounts at any frequency and you're into proxy rotation territory.

  • A CDN cache layer. Responses are cached for a few seconds, so polling faster than every 2–3 seconds buys you nothing but a higher chance of tripping abuse detection.

  • No stability guarantee. These endpoints are undocumented. They can change shape or disappear without notice, and when they do, your pipeline breaks silently.

  • ToS and account risk. Hammering undocumented internal APIs with an authenticated account is a good way to get that account suspended.

  • The grunt work. Resolving handles to numeric IDs, paginating, stripping HTML, normalizing reposts to their original author, parsing polls and link cards — none of it is hard individually, all of it is tedious, and all of it is yours to maintain forever.

The DIY route makes sense if you're scraping one or two prominent accounts for a hobby project and you enjoy maintaining scrapers. For anything beyond that, the maintenance burden outweighs the savings fast.

Option 2: A managed actor that does it for you

This is the gap my Truth Social Scraper on Apify fills. Instead of standing up and babysitting a scraping pipeline, you hand it a list of profiles and it returns clean, structured JSON — no API key on Truth Social's side, no proxy config, no credential management.

You can pass profiles in whatever format you have them:

from apify_client import ApifyClient

client = ApifyClient("<YOUR_APIFY_TOKEN>")

run = client.actor("hgservices/truth-social-scraper").call(run_input={
    "identifiers": [
        "https://truthsocial.com/@realDonaldTrump",  # full URL
        "@realDonaldTrump",                           # handle
        "realDonaldTrump",                            # bare username
    ],
    "maxItems": 25,
})

for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item["created_at"], item["text"])

The output is the part that actually saves you time. Each post comes back as a structured record with the fields you'd otherwise have to assemble yourself:

  • Post content in both raw HTML (content) and stripped plain text (text), plus language, visibility, and sensitivity flags.

  • Engagement metrics — replies, reblogs, favorites, upvotes, downvotes.

  • Full profile data for the account, not just a username: bio, avatar, follower/following counts, verified and premium flags, creation date, website.

  • Repost handling done right — you get both the timeline URL and the original post URL, plus the full profile of the original author in original_account.

  • Rich content — quote posts, polls, link preview cards, mentions, and hashtags.

  • Media attachments with complete metadata: original and preview URLs, dimensions, aspect ratios, and blurhash thumbnails.

You can export it as JSON, CSV, Excel, JSONL, RSS, or HTML, pull it via the Apify API, pipe it through webhooks, or wire it into Zapier, Make, n8n, or a direct S3/Google Drive dump. And because it's on Apify, cron scheduling is built in — hourly monitoring of a watch-list is a config setting, not a server you have to run.

DIY vs. managed: the honest comparison

Roll your own Truth Social Scraper
Setup Resolve IDs, handle auth, configure proxies Paste handles, click Start
Auth for non-prominent accounts Your problem (and account risk) Handled
Rate limits / proxies Your problem Handled
Repost → original author Manual original_account included
Profile depth Whatever you build Full profile, every run
Media metadata URL only, unless you build more URL, preview, dimensions, blurhash
When endpoints change You find out when it breaks Maintained for you
Output formats Whatever you write JSON, CSV, Excel, JSONL, RSS, HTML
Cost "Free" + your time forever From $2 / 1,000 results

What about the third-party "API" services?

There are a few hosted services that wrap these same Mastodon-compatible endpoints and resell them as a "Truth Social API." They work, broadly, but they inherit the same underlying constraints — several openly note that as of late 2025 only prominent accounts are reachable without auth. You're paying a subscription for someone else's wrapper around the same fragile endpoints. The actor model gives you the same convenience with pay-per-result pricing and no monthly commitment, plus you own the raw structured output rather than calling through someone's opinionated endpoint shape.

Who this is for

The managed route is the obvious fit if you're a:

  • Journalist or researcher archiving public posts before they vanish from a timeline.

  • OSINT analyst who needs rich post and profile metadata without building infrastructure.

  • Brand or comms team monitoring public mentions and engagement.

  • Developer feeding clean JSON into an analytics pipeline, BI tool, or LLM.

The bottom line

There is no official Truth Social API, and there's no sign one is coming. Your real choice is between maintaining a fragile scraper against undocumented endpoints that fight you on auth and rate limits — or handing that whole problem to a managed actor and getting structured data back in seconds.

If you've already tried the DIY path and gotten tired of it breaking, give the Truth Social Scraper a run. Paste a handle, set your item count, and see the structured output for yourself.

Click here for a full working downloadable code examples for truth social scrapers


Questions or feature requests? Open an issue on the Actor's page on Apify.