CoolFace
Datasetpublic

chrissoria/trump-truth-social

Trump Truth Social Posts Archive Public posts ("Truths") by Donald J. Trump on Truth Social, enriched with market data, geopolitical event indicators, and LLM-based post classifications. Collected for academic research purposes. Fields Post metadata Field Type Description date string Post date (YYYY-MM-DD) time string Post time in UTC (HH:MM:SS) time_eastern string Post time in US Eastern (HH:MM:SS, DST-aware) day_of_week string Day… See the full description on the dataset page: https://huggingface.co/datasets/chrissoria/trump-truth-social.

sourceHugging Facecc-by-nc-4.0updated 4mo agoView on Hugging Face
4likes150downloads
Dataset Card

Trump Truth Social Posts Archive

Public posts ("Truths") by Donald J. Trump on Truth Social, enriched with market data, geopolitical event indicators, and LLM-based post classifications. Collected for academic research purposes.

Dataset Description

  • —Source: CNN/Stiles Truth Social Archive (live-updating public archive)
  • —Posts: ~32,000+ (growing)
  • —Date range: February 2022 – present
  • —Update frequency: Daily (Truth Social), weekly (all other sources)
  • —Maintainer: Chris Soria (UC Berkeley)

Fields

Post metadata

FieldTypeDescription
datestringPost date (YYYY-MM-DD)
timestringPost time in UTC (HH:MM:SS)
time_easternstringPost time in US Eastern (HH:MM:SS, DST-aware)
day_of_weekstringDay name (Monday, Tuesday, etc.)
datetimestringFull ISO 8601 timestamp (UTC)
textstringPlain text content (HTML stripped)
content_htmlstringOriginal HTML content
urlstringDirect link to post on Truth Social
post_idstringTruth Social post ID
is_presidentboolWhether Trump was serving as president at time of post
is_president_electboolWhether Trump was president-elect at time of post
during_market_hoursboolWhether post was made during US market hours (9:30 AM – 4:00 PM ET, weekdays)
market_periodstringOne of: before_market, during_market, after_market

Engagement

FieldTypeDescription
replies_countintNumber of replies
reblogs_countintNumber of re-truths (reposts)
favourites_countintNumber of likes

Media

FieldTypeDescription
media_urlsstringSemicolon-separated image/video URLs attached to the post
linksstringSemicolon-separated URLs found in post text
has_mediaboolWhether post contains media attachments
image_alt_textstringAI-generated factual image description for accessibility (in progress)

Post classification (5-model ensemble)

LLM-classified post categories using a 5-model unanimous-vote ensemble (Llama 4 Maverick, Qwen3-32B, Claude 3 Haiku, GPT-4o-mini, Gemini 2.0 Flash). Multi-label: a post can belong to multiple categories. Available for posts with text since Nov 5, 2024 (election day onwards). Values: 1 = present, 0 = not present.

FieldTypeDescription
cat_attacking_individualfloatTargeting a specific person by name
cat_attacking_oppositionfloatTargeting Democrats, a party, or political group broadly
cat_threatening_intlfloatConditional threats, tariff warnings, military posturing
cat_enacting_aggressivefloatImposing tariffs, sanctions, bans, military action (already done)
cat_enacting_nonaggressivefloatSigning bills, executive orders, domestic programs, appointments
cat_deescalatingfloatToning down, announcing deals, peace talks, ceasefire
cat_praising_endorsingfloatPositive statements about a person, leader, ally
cat_self_promotionfloatBoasting about achievements, economy, polls, ratings
cat_otherfloatDoes not fit any above category

Market data (18 tickers)

Each ticker has 7 columns following the pattern {ticker}_{metric}. Daily open/close prices are available for all posts. Intraday prices (1hr before through 1hr after) use the highest available resolution: 1-minute (last ~7 days), 5-minute (last ~60 days), or hourly (last ~2 years). Weekend/holiday posts use the most recent trading day. The sp500_resolution column indicates the intraday data resolution.

Metrics per ticker:

SuffixDescription
_openDaily open price
_closeDaily close price
_1hr_beforePrice 1 hour before the post
_5min_beforePrice 5 minutes before the post
_at_postPrice at time of post
_5min_afterPrice 5 minutes after the post
_1hr_afterPrice 1 hour after the post

Tickers:

PrefixTickerNameCategory
sp500_^GSPCS&P 500Broad market
dia_DIASPDR Dow Jones Industrial Average ETFBroad market
qqq_QQQInvesco QQQ (Nasdaq-100)Tech/growth
djt_DJTTrump Media & Technology GroupTrump-linked
lmt_LMTLockheed MartinDefense
war_WARThemes US Military Academy ETFDefense
xli_XLIIndustrial Select Sector SPDRIndustrials
xlv_XLVHealth Care Select Sector SPDRHealthcare
xph_XPHSPDR S&P Pharmaceuticals ETFPharma
cnrg_CNRGSPDR S&P Kensho Clean Power ETFClean energy
gld_GLDSPDR Gold SharesGold/commodities
uso_USOUnited States Oil FundOil/energy
fxi_FXIiShares China Large-Cap ETFChina/trade
eww_EWWiShares MSCI Mexico ETFMexico/trade
vgk_VGKVanguard FTSE Europe ETFEurope
ibit_IBITiShares Bitcoin ETFCrypto
tlt_TLTiShares 20+ Year Treasury Bond ETFBonds/rates
uup_UUPInvesco DB US Dollar IndexUSD strength

GDELT geopolitical events (daily)

Daily aggregates of US-involved events from the GDELT Project via BigQuery. Each row gets the event counts for its post date. Based on CAMEO event coding of global news coverage.

Note: GDELT daily exports are typically available with a ~1 day lag. Posts from the most recent day may have null GDELT columns until the next daily update backfills them.

Raw counts:

FieldTypeDescription
gdelt_militaryintUS military assault/force/mass violence events (CAMEO 18-20)
gdelt_sanctionsintSanctions/embargo events (CAMEO 17)
gdelt_threatintThreat events (CAMEO 13)
gdelt_protestintProtest events (CAMEO 14)
gdelt_force_postureintForce posturing events (CAMEO 15)
gdelt_diplomaticintDiplomatic cooperation events (CAMEO 01-08)
gdelt_material_conflictintMaterial conflict events (QuadClass 4)
gdelt_verbal_conflictintVerbal conflict events (QuadClass 3)
gdelt_material_cooperationintMaterial cooperation events (QuadClass 2)
gdelt_verbal_cooperationintVerbal cooperation events (QuadClass 1)
gdelt_goldstein_avgfloatAverage Goldstein scale for the day (-10 = max conflict, +10 = max cooperation)
gdelt_avg_tonefloatAverage news tone for the day (negative = negative coverage)
gdelt_total_eventsintTotal US-involved events

Derived:

SuffixDescription
_pctShare of total events (e.g., gdelt_military_pct = military events as % of total)
_zscoreStandard deviations above/below historical mean (flags unusual days)
_deltaDay-over-day change from previous day

Available for: military, sanctions, threat, protest, force_posture, diplomatic (pct); military, sanctions, threat, protest, material_conflict (zscore and delta); goldstein_avg, avg_tone (delta).

Intended Use

This dataset is intended for academic research in political science, computational social science, NLP, finance, and related fields. Example use cases:

  • —Analyzing the relationship between presidential social media activity and market movements
  • —Studying the timing and framing of aggressive policy announcements
  • —Discourse analysis and political communication research
  • —Event-driven analysis correlating posts with GDELT geopolitical indicators
  • —Accessibility research using AI-generated image descriptions

Fair Use Notice

This dataset is compiled from publicly available posts by a public figure for academic research purposes under fair use (17 U.S.C. § 107). The data consists of factual records of public political speech. Source data is from the CNN/Stiles public archive. Market data sourced from Yahoo Finance via yfinance. Geopolitical data from the GDELT Project. Multiple peer-reviewed publications have established precedent for academic use of Truth Social data (see ICWSM 2023, arXiv:2411.01330).

Citation

If you use this dataset in your research, please cite this dataset and the underlying data sources:

This dataset

bibtex
@misc{soria2026trump_truth_social,
  title={Trump Truth Social Posts Archive},
  author={Soria, Christopher},
  year={2026},
  publisher={HuggingFace},
  url={https://huggingface.co/datasets/chrissoria/trump-truth-social}
}

Source data: Truth Social posts

The raw post data is sourced from Matt Stiles' CNN Truth Social archive:

bibtex
@misc{stiles2024truthsocial,
  title={Trump Truth Social Archive},
  author={Stiles, Matt},
  year={2024},
  publisher={CNN},
  url={https://github.com/stiles/trump-truth-social-archive}
}

Market data: Yahoo Finance

Stock and ETF price data is sourced from Yahoo Finance via the yfinance Python library:

bibtex
@software{yfinance,
  title={yfinance: Download market data from Yahoo! Finance API},
  author={Aroussi, Ran},
  url={https://github.com/ranaroussi/yfinance},
  license={Apache-2.0}
}

Geopolitical events: GDELT Project

Daily geopolitical event aggregates are sourced from the GDELT Project:

bibtex
@article{leetaru2013gdelt,
  title={GDELT: Global Data on Events, Location and Tone, 1979--2012},
  author={Leetaru, Kalev and Schrodt, Philip A.},
  journal={ISA Annual Convention},
  year={2013},
  url={https://www.gdeltproject.org/}
}

LLM classification and image descriptions

Post classifications were generated using cat-stack with a 5-model ensemble (Llama 4 Maverick, Qwen3-32B, Claude 3 Haiku, GPT-4o-mini, Gemini 2.0 Flash). Image descriptions were generated using Qwen2.5-VL-72B.

bibtex
@software{soria2026catstack,
  title={cat-stack: Domain-agnostic text, image, and PDF classification engine powered by LLMs},
  author={Soria, Christopher},
  year={2026},
  url={https://github.com/chrissoria/cat-stack}
}

Part of the cat-pol ecosystem

This dataset is part of the cat-pol political text analysis toolkit. Install with:

bash
pip install "cat-pol[sources]"
python
from cat_pol.sources import fetch_trump_truths
df = fetch_trump_truths(since="2024-01-01")