Truth Social Scraper — Profiles, Posts & Monitor avatar

Truth Social Scraper — Profiles, Posts & Monitor

Pricing

from $1.30 / 1,000 profile results

Go to Apify Store
Truth Social Scraper — Profiles, Posts & Monitor

Truth Social Scraper — Profiles, Posts & Monitor

Scrape public Truth Social profiles, timelines, pinned and media posts, individual Truths, engagement, polls, cards, and oEmbed records. Monitor multiple accounts without login.

Pricing

from $1.30 / 1,000 profile results

Rating

0.0

(0)

Developer

ScrapingMonkey

ScrapingMonkey

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

13 days ago

Last modified

Share

Truth Social Scraper - Profiles, Posts, Timelines and Monitoring

Collect public Truth Social profiles, account timelines, individual Truths, pinned posts, media posts, and engagement data in a clean Apify dataset.

  • Extract profile names, handles, bios, verification flags, avatars, headers, and audience counts
  • Paginate public account timelines and choose whether to include replies and Retruths
  • Collect individual Truths, pinned posts, and media-only timelines with text, media, dates, visibility, and engagement
  • Preserve available mentions, hashtags, emojis, link cards, polls, quotes, and Retruth relationships
  • Monitor public accounts and save only new or changed Truths on scheduled runs
  • Process multiple handles, profile URLs, Truth IDs, and post URLs in one run
  • No Truth Social account, cookies, browser, or user-supplied proxy is required; requests use the built-in Apify Residential Proxy
  • Export results to JSON, CSV, Excel, XML, RSS, or access them through the Apify API

What can you do with this Actor?

Mode / actionInputOutputBest for
timelinesPublic handles or profile URLsCursor-paginated public truth rowsContent research, publishing analysis, and social listening
profilesPublic handles or profile URLsOne normalized profile row per targetAudience and creator research
truthsTruth IDs or full public Truth URLsComplete public truth rowsPost-level content, media, and engagement analysis
pinnedPublic handles or profile URLsPinned public truth rowsTracking prominently featured posts
mediaPublic handles or profile URLsPublic truth rows that contain mediaMedia monitoring and asset discovery
oembedFull public Truth URLsLightweight oembed rowsEmbeds, previews, and link enrichment
autoMixed public profile and Truth targetsprofile or truth rows selected from each targetBatch processing mixed known targets
monitorPublic handles plus a stable monitorKeyOnly new or new-and-changed truth rowsScheduled account monitoring

Choose one mode per run. Multiple targets can be processed together, and maxItems applies separately to each timeline-style target.

Quick start

  1. Open the Actor and click Try for free.
  2. Keep Timelines selected or choose another workflow.
  3. Enter one or more public handles, profile URLs, Truth IDs, or post URLs and set the result limit.
  4. Click Start.
  5. Preview the single Results table or download it in your preferred format.

The default input collects the public timeline for realDonaldTrump and is ready to run.

Input examples

Public timeline

{
"mode": "timelines",
"targets": [
"realDonaldTrump"
],
"maxItems": 100,
"country": "US"
}

Profiles

{
"mode": "profiles",
"targets": [
"realDonaldTrump",
"truthsocial"
],
"country": "US"
}

Truth details

{
"mode": "truths",
"targets": [
"114000000000000000"
],
"country": "US"
}

oEmbed

{
"mode": "oembed",
"targets": [
"https://truthsocial.com/@truthsocial/114000000000000000"
],
"country": "US"
}

Pinned Truths

{
"mode": "pinned",
"targets": [
"realDonaldTrump"
],
"maxItems": 20,
"country": "US"
}

Media Truths

{
"mode": "media",
"targets": [
"realDonaldTrump"
],
"maxItems": 50,
"country": "US"
}

Monitor a public timeline

{
"mode": "monitor",
"targets": [
"realDonaldTrump"
],
"maxItems": 100,
"monitorMode": "onlyNew",
"monitorKey": "truth-account-daily",
"country": "US"
}

Auto-detect mixed public targets

{
"mode": "auto",
"targets": [
"realDonaldTrump",
"https://truthsocial.com/@truthsocial/114000000000000000"
],
"country": "US"
}

maxItems limits retained timeline, pinned, or media rows per target. Profile, individual Truth, and oEmbed requests normally return one row per target.

Complete output examples

Every result row contains exactly 56 top-level fields. The same complete key set makes mixed result types predictable in JSON exports and keeps every field visible in the single Results view.

Complete profile row — 56 top-level fields

{
"recordType": "profile",
"sourceMode": "profiles",
"sourceTarget": "example-target",
"sourceUrl": "https://example.com/public-result",
"sourceEndpoints": [],
"id": "example-id",
"uri": "example-id",
"url": "https://example.com/public-result",
"username": null,
"acct": null,
"displayName": "Example public record",
"profileUrl": "https://example.com/public-result",
"createdAt": "2026-08-13T12:00:00Z",
"publishedAt": "2026-08-13T12:00:00Z",
"indexedAt": "2026-08-13T12:00:00Z",
"contentText": "Example public content",
"contentHtml": "Example public content",
"bioText": "Example public content",
"bioHtml": "Example public content",
"language": null,
"visibility": null,
"sensitive": false,
"spoilerText": null,
"verified": false,
"locked": false,
"bot": false,
"discoverable": false,
"group": false,
"avatarUrl": "https://cdn.example.com/image.jpg",
"headerUrl": "https://cdn.example.com/image.jpg",
"followersCount": 0,
"followingCount": 0,
"postsCount": 0,
"repliesCount": 0,
"retruthedCount": 0,
"likesCount": 0,
"inReplyToId": "example-id",
"inReplyToAccountId": "example-id",
"quoteId": "example-id",
"pinned": false,
"mediaAttachments": [],
"mentions": [],
"hashtags": [],
"emojis": [],
"card": {},
"poll": {},
"retruthedTruth": {},
"quotedTruth": {},
"author": {},
"oembed": {},
"isPartial": false,
"monitorStatus": null,
"changedFields": [],
"previousCapturedAt": "2026-08-13T12:00:00Z",
"capturedAt": "2026-08-13T12:00:00Z",
"raw": {}
}

Complete truth row — 56 top-level fields

{
"recordType": "truth",
"sourceMode": "timelines",
"sourceTarget": "example-target",
"sourceUrl": "https://example.com/public-result",
"sourceEndpoints": [],
"id": "example-id",
"uri": "example-id",
"url": "https://example.com/public-result",
"username": null,
"acct": null,
"displayName": "Example public record",
"profileUrl": "https://example.com/public-result",
"createdAt": "2026-08-13T12:00:00Z",
"publishedAt": "2026-08-13T12:00:00Z",
"indexedAt": "2026-08-13T12:00:00Z",
"contentText": "Example public content",
"contentHtml": "Example public content",
"bioText": "Example public content",
"bioHtml": "Example public content",
"language": null,
"visibility": null,
"sensitive": false,
"spoilerText": null,
"verified": false,
"locked": false,
"bot": false,
"discoverable": false,
"group": false,
"avatarUrl": "https://cdn.example.com/image.jpg",
"headerUrl": "https://cdn.example.com/image.jpg",
"followersCount": 0,
"followingCount": 0,
"postsCount": 0,
"repliesCount": 0,
"retruthedCount": 0,
"likesCount": 0,
"inReplyToId": "example-id",
"inReplyToAccountId": "example-id",
"quoteId": "example-id",
"pinned": false,
"mediaAttachments": [],
"mentions": [],
"hashtags": [],
"emojis": [],
"card": {},
"poll": {},
"retruthedTruth": {},
"quotedTruth": {},
"author": {},
"oembed": {},
"isPartial": false,
"monitorStatus": null,
"changedFields": [],
"previousCapturedAt": "2026-08-13T12:00:00Z",
"capturedAt": "2026-08-13T12:00:00Z",
"raw": {}
}

Complete oembed row — 56 top-level fields

{
"recordType": "oembed",
"sourceMode": "oembed",
"sourceTarget": "example-target",
"sourceUrl": "https://example.com/public-result",
"sourceEndpoints": [],
"id": "example-id",
"uri": "example-id",
"url": "https://example.com/public-result",
"username": null,
"acct": null,
"displayName": "Example public record",
"profileUrl": "https://example.com/public-result",
"createdAt": "2026-08-13T12:00:00Z",
"publishedAt": "2026-08-13T12:00:00Z",
"indexedAt": "2026-08-13T12:00:00Z",
"contentText": "Example public content",
"contentHtml": "Example public content",
"bioText": "Example public content",
"bioHtml": "Example public content",
"language": null,
"visibility": null,
"sensitive": false,
"spoilerText": null,
"verified": false,
"locked": false,
"bot": false,
"discoverable": false,
"group": false,
"avatarUrl": "https://cdn.example.com/image.jpg",
"headerUrl": "https://cdn.example.com/image.jpg",
"followersCount": 0,
"followingCount": 0,
"postsCount": 0,
"repliesCount": 0,
"retruthedCount": 0,
"likesCount": 0,
"inReplyToId": "example-id",
"inReplyToAccountId": "example-id",
"quoteId": "example-id",
"pinned": false,
"mediaAttachments": [],
"mentions": [],
"hashtags": [],
"emojis": [],
"card": {},
"poll": {},
"retruthedTruth": {},
"quotedTruth": {},
"author": {},
"oembed": {},
"isPartial": false,
"monitorStatus": null,
"changedFields": [],
"previousCapturedAt": "2026-08-13T12:00:00Z",
"capturedAt": "2026-08-13T12:00:00Z",
"raw": {}
}

What data can you extract?

CategoryFields
Source and capturerecordType, sourceMode, sourceTarget, sourceUrl, sourceEndpoints, capturedAt
Identity and authorid, uri, url, username, acct, displayName, profileUrl, author
Dates and contentcreatedAt, publishedAt, indexedAt, contentText, contentHtml, bioText, bioHtml, language, visibility, sensitive, spoilerText
Account flags and mediaverified, locked, bot, discoverable, group, avatarUrl, headerUrl
Audience and engagementfollowersCount, followingCount, postsCount, repliesCount, retruthedCount, likesCount
RelationshipsinReplyToId, inReplyToAccountId, quoteId, pinned
Structured post datamediaAttachments, mentions, hashtags, emojis, card, poll, retruthedTruth, quotedTruth, oembed
Monitoring and diagnosticsisPartial, monitorStatus, changedFields, previousCapturedAt, raw

Nested fields such as author, mediaAttachments, mentions, hashtags, emojis, card, poll, retruthedTruth, quotedTruth, oembed, and optional raw retain Truth Social's public API structure. Their nested keys are source-controlled and can change; the 56 top-level keys above are fixed by the Actor.

Input parameters

ParameterTypeRequiredDefaultDescription
modestringNo"timelines"auto, profiles, timelines, truths, pinned, media, oembed, or monitor.
targetsstring[]Yes for selected mode["realDonaldTrump"]Handles or profile URLs for account modes, Truth IDs/URLs for details, and full Truth URLs for oEmbed.
maxItemsintegerNo100Maximum retained timeline-style rows per target, from 1 to 10,000.
maxPagesintegerNo20Maximum cursor pages per timeline target, from 1 to 500.
includeRepliesbooleanNotrueInclude public replies present in account timelines.
includeRetruthsbooleanNotrueInclude public boosted or Retruthed records.
maxConcurrencyintegerNo5Concurrent public targets, from 1 to 20.
countrystringNo"US"Two-letter ISO country used for the internal residential proxy region.
includeRawbooleanNofalseInclude the redacted public source object; increases dataset size.
monitorModestringNo"off"off, onlyNew, or newAndChanged.
monitorKeystringWith monitoring"default"Stable comparison-state namespace for recurring runs.
maxSessionRotationsintegerNo3Fresh residential sessions tried after blocks, from 1 to 6.
requestTimeoutSecsintegerNo45Per-request timeout in seconds, from 15 to 120.

Pay-per-event result types

EventCharged when
profile-resultOne profile row is accepted by the Dataset.
truth-resultOne truth row is accepted by the Dataset.
oembed-resultOne oembed row is accepted by the Dataset.

The Actor does not emit a paid error event. Failed targets are counted by category in RUN_SUMMARY; successful targets continue. Actual event prices are shown on the Actor's Pricing tab.

Use cases

Track public accounts and publishing activity

Collect profiles, timelines, pinned posts, and media posts for creator, political, media, and brand research.

Analyze content and engagement

Compare public text, media, replies, Retruths, likes, cards, polls, and account metrics in a consistent dataset.

Build recurring monitoring workflows

Run scheduled monitor jobs and send new rows through webhooks to Google Sheets, Airtable, Make, Zapier, n8n, Airbyte, or a data warehouse.

Performance and cost

Direct HTTP generally uses substantially less memory and bandwidth than launching a browser, but source response size, retries, optional enrichment, raw objects, and pagination determine actual cost. Start with a small limit, inspect the Dataset and RUN_SUMMARY, then scale. Lower concurrency is usually more reliable on stricter public sites.

API usage

Replace YOUR_USERNAME with the publishing Apify username after publication:

curl -X POST \
"https://api.apify.com/v2/acts/YOUR_USERNAME~truth-social-scraper/runs?token=APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"mode": "timelines",
"targets": ["realDonaldTrump"],
"maxItems": 100,
"country": "US"
}'

The request body is the same JSON used in Apify Console. Read results from the run's default Dataset or use the output link that opens view=overview.

Best for / not for

Best for: public profile enrichment, account timeline exports, post-level research, pinned/media monitoring, and lightweight oEmbed enrichment.

Not for: private posts, follower lists, global search, discussion-context expansion, authenticated feeds, groups, or account actions.

Limits and good to know

This Actor uses anonymous Mastodon-compatible endpoints exposed by Truth Social. Search, discussion-context expansion, private posts, follower lists, and authenticated timelines are intentionally not claimed.

A missing public value is returned as null or an empty array. One failed input does not create a frightening error row in Results. If every input fails, the run fails after writing diagnostic counts to RUN_SUMMARY.

Frequently asked questions

What input should I provide?

Use public handles or profile URLs for profile and timeline modes, Truth IDs or full URLs for truths, and full public Truth URLs for oembed.

How many results can I extract?

maxItems accepts 1-10,000 per timeline-style target, while maxPages accepts 1-500. Source availability, deleted content, and cursor exhaustion can return fewer rows.

Can I process multiple inputs?

Yes. Add multiple values to targets; failures are isolated per target and successful targets continue.

Can I schedule recurring runs?

Yes. Use Apify schedules with mode: "monitor" and a stable monitorKey, then connect webhooks for downstream automation.

Does this Actor open a browser?

No. Runtime extraction uses direct HTTP only and contains no Playwright, Selenium, Chromium, or browser installation.

Do I need an account or cookies?

No. The supported modes use public pages and anonymous endpoints. Cookies or authorization values from research captures are never embedded in the release.

Do I need to configure a proxy?

No. On Apify, the Actor creates a Residential Proxy configuration internally and does not expose proxy settings in Input. Local developers may privately point the documented test-only environment variable at a proxy file; that variable is not an Actor input and is ignored on the platform.

Why are some fields empty?

The single Results view covers every result type. Fields that do not apply to a row remain empty, while the complete key set is preserved in JSON.

Responsible use

Collect only public Truth Social data you are permitted to process. Respect applicable law, privacy rights, platform terms, rate limits, and intellectual-property rights. This Actor is not affiliated with or endorsed by Truth Social.

Support

For a reproducible issue, include the Apify run ID, mode, a non-sensitive public target, expected result, and actual result. Never send account credentials, cookies, access tokens, proxy passwords, or private content.

Local development

For local read-only smoke tests only, TRUTH_TEST_PROXY_FILE may point to a private file containing one login:password@host:port proxy per line. The file is never read on Apify and must not be committed.