This guide covers Truth Social profile and post lookups via /v1/truthsocial/** — profile by handle, cursor-paginated profile posts, and single post by URL. Truth Social's app is for posting and account management, not backend enrichment; DIY HTTP clients work for scripts but you own auth, pagination, and field drift. See Social Fetch vs DIY scraping for the broader comparison.
The shortest path is a single request:
curl -sS \
-H "x-api-key: $SOCIALFETCH_API_KEY" \
"https://api.socialfetch.dev/v1/truthsocial/profiles/realDonaldTrump"You'll need an API key and curl or the TypeScript SDK. New to the API? Start with the Quickstart.
Using the Social Fetch API
Social Fetch exposes Truth Social under documented /v1/truthsocial/** routes. One header authenticates every call; responses share the same data + meta envelope as Instagram or Telegram.
Hover underlined tokens for details.
Get a profile
The same lookup in cURL, the TypeScript SDK, Python, and more — switch tabs to match your stack:
const response = await fetch(
"https://api.socialfetch.dev/v1/truthsocial/profiles/realDonaldTrump",
{
headers: {
"x-api-key": process.env.SOCIALFETCH_API_KEY,
},
}
);
const body = await response.json();
console.log(response.status, body);Truth Social profile lookups are credit-metered when the lookup completes (including not_found outcomes that still return HTTP 200). Trust meta.creditsCharged on every response. Pass the public username with or without @.
List a profile's posts
const response = await fetch(
"https://api.socialfetch.dev/v1/truthsocial/profiles/realDonaldTrump/posts",
{
headers: {
"x-api-key": process.env.SOCIALFETCH_API_KEY,
},
}
);
const body = await response.json();
console.log(response.status, body);Full parameters: Get Truth Social profile and Profile posts. Each completed page is a separate credit charge.
Get a single post by URL
When you already have a public status permalink, hydrate it directly:
const params = new URLSearchParams({"url":"https://truthsocial.com/@realDonaldTrump/posts/114000000000000000"});
const response = await fetch(
`https://api.socialfetch.dev/v1/truthsocial/posts?${params.toString()}`,
{
headers: {
"x-api-key": process.env.SOCIALFETCH_API_KEY,
},
}
);
const body = await response.json();
console.log(response.status, body);Docs: Get Truth Social post.
Paginate through posts
Profile post list endpoints return one page plus an opaque cursor. Pass the cursor back verbatim until hasMore is false:
import { SocialFetchClient } from "@socialfetch/sdk";
const client = new SocialFetchClient({
apiKey: process.env.SOCIALFETCH_API_KEY!,
});
const allPosts = [];
let cursor: string | undefined;
do {
const result = await client.truthsocial.getProfilePosts({
handle: "realDonaldTrump",
cursor,
});
if (!result.ok) {
console.error(result.error.code, result.error.requestId);
break;
}
if (result.value.data.lookupStatus !== "found") {
console.warn(result.value.data.lookupStatus);
break;
}
allPosts.push(...(result.value.data.posts ?? []));
cursor = result.value.data.hasMore
? (result.value.data.cursor ?? undefined)
: undefined;
} while (cursor);Stop when data.hasMore is false or data.cursor is null. Don't invent page numbers. The cursor is the source of truth. Each page is a separate completed lookup for billing.
Reading the response
A successful response wraps the payload alongside billing metadata:
{
"data": {
"lookupStatus": "found",
"profile": {
"platform": "truthsocial",
"handle": "realDonaldTrump",
"displayName": "Donald J. Trump",
"profileUrl": "https://truthsocial.com/@realDonaldTrump",
"isVerified": true,
"isLocked": false,
"isBot": false,
"metrics": {
"followers": 12928913,
"following": 69,
"posts": 35171
}
}
},
"meta": {
"requestId": "req_01example",
"creditsCharged": 1,
"version": "v1"
}
}The one gotcha: an HTTP 200 does not guarantee lookupStatus: "found". A missing handle or deleted status can return 200 with not_found — handle it in application logic. Every response carries meta.requestId for support tracing. See Errors and Credits.
What you can build
- Political and news monitors — hydrate high-signal Truth Social accounts that often do not mirror the same text on X or Facebook.
- CRM / enrichment jobs — resolve handles before outreach or brand-safety review, then page posts only for accounts you still care about.
- Agent and MCP workflows — call the same typed tools from Cursor or Claude with the same credit metering as REST.
For vendor shopping without implementation detail, see Best Truth Social APIs & scrapers in 2026. For listening dashboards across networks, see Social listening dashboard.
FAQ
Is scraping Truth Social legal?
It depends on your jurisdiction, what data you collect, and how you use it. Collecting publicly visible profile and status data for B2B analytics is a common pattern. You remain responsible for Truth Social's terms, applicable privacy law, and your own contracts. This is a technical guide, not legal advice — talk to counsel if you're collecting at scale.
Can't I just use Truth Social's app or scrape the site myself?
Use the official app for posting and account management. DIY HTTP or browser clients can work for personal scripts, but you own maintenance. For public enrichment in a multi-platform backend, a data API is the usual fit.
How fresh is the data?
Each request fetches live at call time — there's no cache returning an hour-old snapshot. If a number looks off, meta.requestId lets support trace that specific lookup.
What happens if a profile doesn't exist?
Check data.lookupStatus. Don't treat a 200 alone as "data is present" — a missing handle returns 200 with not_found. Details in Errors.
How are credits charged?
Credits charge when a lookup completes, including 200 outcomes like not_found. Each Truth Social profile, profile-posts page, and post lookup is credit-metered. Validation failures and upstream lookup_failed / temporary unavailability do not bill the same way — see Credits. Always reconcile against meta.creditsCharged.
How does this compare to other providers?
See Best Truth Social APIs & scrapers in 2026, plus vs Apify, vs Bright Data, and the full compare hub.
Ready to try it? Get an API key — new accounts include 100 free credits. Platform hub: /platforms/truthsocial.