Truth Social Posts Scraper
Pricing
from $0.30 / 1,000 public posts
Truth Social Posts Scraper
Collect public Truth Social posts from one or more profile URLs. Get readable text, post links, timestamps, author details, engagement counts, media, and related post data in structured rows. Set per-profile limits and filters for replies, media, pinned posts, or post IDs.
Pricing
from $0.30 / 1,000 public posts
Rating
0.0
(0)
Developer
Maxime Dupré
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
5 days ago
Last modified
Categories
Share
📰 Turn Truth Social profiles into post data
Researchers, journalists, and social media teams can collect public Truth Social posts from one or more profile URLs. Each saved row can include readable text, source links, publication and collection times, author details, engagement counts, and other public post data. This gives you a structured way to review profile activity without copying posts by hand.
- Collect reply posts from a public profile with Truth Social Replies Scraper.
- Collect posts that include media with Truth Social Media Scraper.
- Review public profile activity with Truth Social Profile Scraper.
- Collect a public post with Truth Social Post Scraper.
- Save public Truth Social posts in a dataset with Truth Social Posts.
📄 See each Truth Social post in a structured row
Each eligible post is saved as one dataset row. A row keeps the post URL and source profile URL with its text, time, author details, and other available post context. Fields that the source does not provide may be left out.
▶️ Collect public posts from profile URLs
- Add one or more public Truth Social profile URLs.
- Set a post limit for each profile, or leave it empty to return all available posts until the source is exhausted.
- Choose whether to collect replies, posts with media, or pinned posts.
- Add a post ID boundary when you want to continue a collection or reach older posts.
- Run the Actor and open the dataset.
Private or login-only profiles are not supported. The limit and filters use one shared set of choices for every profile in the run.
⚙️ Input
Input fields
| Field | Type | What it does |
|---|---|---|
profileUrls | array of objects | Lists one or more public Truth Social profile URLs to collect. |
profileUrls[].url | string | Gives the public profile URL. Private or login-only profiles are not supported. |
maxPostsPerProfile | integer | Sets a post limit for each profile. Leave it empty to return all available posts until the source is exhausted. |
postIdBoundary | string | Sets an optional numeric post ID. Use it to continue a collection or reach older posts. Leave it empty to start with the newest available posts. |
onlyReplies | boolean | Set to true to collect only posts that are replies. Set to false to include all posts. |
onlyMedia | boolean | Set to true to collect only posts with media attachments. Set to false to include posts with and without media. |
excludePinned | boolean | Set to true to skip pinned posts. Set to false to include pinned posts. |
Example input
This example is copied from the public input of a successful current-beta default-input run:
{"profileUrls": [{"url": "https://truthsocial.com/@realDonaldTrump"}],"maxPostsPerProfile": 20}
🧾 Output
Post row
| Field | Type | What it does |
|---|---|---|
id | string | Stable ID of the Truth Social post. |
publishedAt | string (date-time) | Time when the post was published. |
url | string (URI) | Public URL of the post. |
content | string | Readable plain-text content of the post. |
contentHtml | string | Original formatted content, with embedded links when available. |
sourceProfileUrl | string (URI) | Public profile URL that supplied this post. |
collectedAt | string (date-time) | Time when this post was collected. |
author | object | Available public profile details for the post author. |
author.id | string | Stable ID of the post author. |
author.username | string | Username of the post author. |
author.displayName | string | Display name of the post author. |
author.url | string (URI) | Public profile URL of the post author. |
author.verified | boolean | Says whether the source marks the author as verified. |
author.bio | string | Bio text shown on the author profile. |
author.followersCount | integer | Number of followers shown for the author. |
author.followingCount | integer | Number of accounts followed by the author. |
engagement | object | Available counts for replies, reblogs, and likes. |
engagement.replyCount | integer | Number of replies to the post. |
engagement.reblogCount | integer | Number of reblogs or reposts of the post. |
engagement.likeCount | integer | Number of likes or favorites for the post. |
votes | object | Available upvote and downvote counts for the post. |
votes.upvoteCount | integer | Number of upvotes for the post. |
votes.downvoteCount | integer | Number of downvotes for the post. |
media | array of objects | Lists images, videos, and other media attached to the post. |
media[].type | string | Kind of attached media, such as image or video. |
media[].url | string (URI) | URL of the attached media file. |
media[].altText | string | Alternative text for the media when available. |
media[].width | integer | Width of the media in pixels when available. |
media[].height | integer | Height of the media in pixels when available. |
media[].durationSeconds | number | Length of the media in seconds when available. |
language | string | Language marked on the post when available. |
visibility | string | Visibility setting marked on the post. |
sensitive | boolean | Says whether the source marks the post as sensitive. |
editedAt | string (date-time) | Time when the post was last edited, when available. |
isPinned | boolean | Says whether the post is pinned on the source profile. |
isSponsored | boolean | Says whether the source marks the post as sponsored. |
hashtags | array of strings | Lists hashtags included in the post. |
tags | array of strings | Lists other tags included in the post. |
mentions | array of objects | Lists accounts mentioned in the post. |
mentions[].id | string | Stable ID of the mentioned account. |
mentions[].username | string | Username of the mentioned account. |
mentions[].displayName | string | Display name of the mentioned account. |
mentions[].url | string (URI) | Public profile URL of the mentioned account. |
replyTo | object | Gives the post that this post replies to, when available. |
replyTo.id | string | Stable ID of the post being answered. |
replyTo.url | string (URI) | Public URL of the post being answered. |
replyTo.authorUsername | string | Username of the author of the post being answered. |
quotedPost | object | Gives available context for the post quoted by this post. |
quotedPost.id | string | Stable ID of the quoted post. |
quotedPost.url | string (URI) | Public URL of the quoted post. |
quotedPost.authorUsername | string | Username of the quoted post author. |
quotedPost.content | string | Plain-text content of the quoted post. |
rebloggedPost | object | Gives available context for the post reblogged or retruthed by this post. |
rebloggedPost.id | string | Stable ID of the reblogged post. |
rebloggedPost.url | string (URI) | Public URL of the reblogged post. |
rebloggedPost.authorUsername | string | Username of the reblogged post author. |
rebloggedPost.content | string | Plain-text content of the reblogged post. |
poll | object | Gives available poll information attached to the post. |
poll.id | string | Stable ID of the poll. |
poll.expiresAt | string (date-time) | Time when the poll expires, when available. |
poll.expired | boolean | Says whether the poll has expired. |
poll.multipleChoice | boolean | Says whether the poll allows more than one choice. |
poll.votesCount | integer | Total votes recorded for the poll. |
poll.options | array of objects | Lists choices offered by the poll. |
poll.options[].title | string | Text of the poll choice. |
poll.options[].votesCount | integer | Votes recorded for this choice. |
linkPreview | object | Gives available preview or link-card details for a link in the post. |
linkPreview.url | string (URI) | Page URL shown by the link preview. |
linkPreview.title | string | Title shown by the link preview. |
linkPreview.description | string | Description shown by the link preview. |
linkPreview.domain | string | Domain shown by the link preview. |
linkPreview.imageUrl | string (URI) | URL of the image used by the link preview. |
Example post row
This is one genuine row from a successful current-beta default-input run. It is unshortened.
{"id": "117156926105160416","publishedAt": "2026-08-25T15:47:02.651Z","url": "https://truthsocial.com/@realDonaldTrump/117156926105160416","content": "RT: https://truthsocial.com/users/realDonaldTrump/statuses/117156925333799291","contentHtml": "<p><span class=\"quote-inline\"><br/>RT: https://truthsocial.com/users/realDonaldTrump/statuses/117156925333799291</span></p>","sourceProfileUrl": "https://truthsocial.com/@realDonaldTrump","collectedAt": "2026-08-25T16:42:38.066Z","author": {"id": "107780257626128497","username": "realDonaldTrump","displayName": "Donald J. Trump","url": "https://truthsocial.com/@realDonaldTrump","verified": true,"bio": "<p></p>","followersCount": 13006458,"followingCount": 69},"engagement": {"replyCount": 333,"reblogCount": 1009,"likeCount": 3508},"votes": {"upvoteCount": 3508,"downvoteCount": 0},"media": [{"url": "https://static-assets-1.truthsocial.com/tmtg:prime-ts-assets/media_attachments/files/117/156/925/919/981/035/original/8b429cf93eaa56fb.jpg","type": "image","width": 953,"height": 1078}],"hashtags": [],"tags": [],"mentions": [{"id": "107780257626128497","username": "realDonaldTrump","url": "https://truthsocial.com/@realDonaldTrump"}],"visibility": "public","sensitive": false,"isPinned": false,"isSponsored": false,"quotedPost": {"id": "117156925333799291","url": "https://truthsocial.com/@realDonaldTrump/117156925333799291","authorUsername": "realDonaldTrump","content": ""}}
💳 Pricing
Pricing is based on each successfully collected public post saved to the dataset. The current tiered rate is shown in the Apify run panel. Use the per-profile limit and filters to control how many posts you request.
🔌 Integrations
Read saved post rows in the Apify dataset after a run. For a walkthrough, watch:
❓ FAQ
How do I collect only reply posts?
Set onlyReplies to true. The dataset then contains posts that are replies when the source provides them.
How do I collect posts with media?
Set onlyMedia to true. This keeps posts that have one or more media attachments.
Can I skip pinned posts?
Yes. Set excludePinned to true to leave pinned posts out.
Can I leave the post limit empty?
Yes. Leave maxPostsPerProfile empty to return all available posts until the source is exhausted.
Can I collect older posts or continue a past collection?
Use a known numeric post ID in postIdBoundary to continue a collection or reach older posts. Leave it empty when you want to start with the newest available posts.
Can one run collect more than one profile?
Yes. Add more than one profile URL. The same post limit and filter choices apply to every profile in that run.
Can I use private or login-only profiles?
No. This Actor collects public profile URLs. It does not support private or login-only profiles.
Does this search Truth Social by keyword?
No. It collects posts from the profile URLs you submit. It does not search site-wide timelines, keywords, or hashtags.
Do I need to provide a Truth Social login?
No. The Actor retrieves public profile and post data without buyer-supplied source login information.
📝 Changelog
0.0: Initial release
- Initial release.
🆘 Support
For issues, questions, or feature requests, file a ticket and I'll fix or implement it in less than 24h 🫡
🔗 Related Actors
- Twitter (X) Scraper for collecting public X posts, profiles, and engagement data.
- Facebook User Posts Scraper for collecting public Facebook profile and Page posts with media and engagement data.
- VK Posts Scraper for collecting public VK wall posts, repost data, and media details.
- Truth Social Profile Posts Scraper for collecting posts from a specified Truth Social profile.
- Truth Social Post Extractor for extracting public Truth Social post fields for a separate workflow.
Made with ❤️ by Maxime Dupré