Social Media Sentiment Analyzer
Pricing
from $3.00 / 1,000 post analyzeds
Social Media Sentiment Analyzer
Analyze social media sentiment for any keyword, hashtag, or brand across Reddit, YouTube, X/Twitter, and Instagram. Returns per-post sentiment, emotion, aspect breakdown, language, and toxicity, plus an AI brand-health report with top praise, complaints, and crisis signals. MCP/API-ready.
Pricing
from $3.00 / 1,000 post analyzeds
Rating
0.0
(0)
Developer
Khadin Akbar
Maintained by CommunityActor stats
0
Bookmarked
8
Total users
1
Monthly active users
8 days ago
Last modified
Categories
Share
Social Media Sentiment Analyzer — AI Emotion & Brand Health
Analyze public social sentiment for any keyword, hashtag, or brand across Reddit, YouTube, X/Twitter, and Instagram in one Apify run. It accepts a search query plus optional platform, time window, engine, and credential settings, then returns one aggregate brand-health record and one record per analyzed post or comment. The useful fields include sentiment, sentiment score, confidence, emotions, aspects, language, toxicity, source URL, author, title, engagement, and timestamps. The outcome is a structured sentiment snapshot plus an AI brand-health report with overall score, headline, summary, sentiment split, praise themes, complaints, crisis signals, and recommendations.
Best fit and connected workflows
This Actor fits workflows where a search term needs to become a cross-platform sentiment summary with evidence behind it. It connects naturally to:
- social listening for products, campaigns, competitors, or public topics
- launch and campaign tracking across Reddit, YouTube, X/Twitter, and Instagram
- brand-health review for teams that want both per-post detail and an aggregate report
- AI agent workflows that need one tool call for structured sentiment analysis
- moderation and brand-safety checks when
includeToxicityis enabled
For related enrichment after you identify relevant creators or audiences, pair this Actor with Social Media Influencer Scraper.
Example scenario
Maya is a brand analyst preparing a weekly check on Tesla. She starts with query: "Tesla", selects Reddit and YouTube, and keeps the default 7-day window. The Actor returns the report record with brandHealthScore, headline, summary, topPraise, topComplaints, and crisisSignals, followed by post records with platform, sentiment, sentimentScore, confidence, emotions, language, and sourceUrl. Maya sees representative praise and complaint themes in the report, then uses the source URLs to review the original public posts before sharing the findings with her team.
Input
The required input is a search query. Platform selection, time range, engine choice, report generation, and optional credentials refine how the Actor searches and scores public content.
| Field | Type | Description |
|---|---|---|
query | string | Search term, hashtag, brand, or topic to analyze. Defaults to ChatGPT. |
platforms | array | Platforms to analyze: reddit, youtube, twitter, instagram. Defaults to Reddit and YouTube. |
maxItems | integer | Hard cap on total analyzed posts or comments across selected platforms. Range 10-1000. |
timeRange | string | Time window: 24h, 7d, 30d, or all. |
engine | string | llm for AI scoring or lexicon for fast polarity-only scoring. |
llmProvider | string | Preferred provider when using llm: anthropic or openai. |
llmApiKey | string | Optional bring-your-own key for the selected LLM provider. |
includeToxicity | boolean | Adds a per-post toxicity score when the AI engine is used. |
includeReport | boolean | Generates the aggregate AI brand-health report. |
responseFormat | string | concise or detailed per-post output shape. |
xAuthToken | string | X auth_token cookie for X/Twitter runs. |
xCt0 | string | X ct0 cookie for X/Twitter runs. |
instagramSessionCookies | string | Instagram session cookies for Instagram runs. |
maxCostUsd | number | Cost ceiling for this Actor's own pay-per-event charges. |
Focused input example
{"query": "ChatGPT","platforms": ["reddit", "youtube"],"maxItems": 100,"timeRange": "7d","engine": "llm","llmProvider": "anthropic","includeToxicity": true,"includeReport": true,"responseFormat": "detailed","maxCostUsd": 0.5}
Output
The dataset starts with one report record, followed by individual analyzed post records. The report captures the aggregate view, while post records preserve the evidence behind that summary.
| Field | Type | Description |
|---|---|---|
recordType | string | report for the first record, post for each analyzed item. |
_summary | boolean or null | True on the report record. |
query | string or null | The analyzed search query. |
brandHealthScore | number or null | Overall 0-100 health score on the report record. |
headline | string or null | One-line AI headline on the report record. |
summary | string or null | Plain-English narrative summary on the report record. |
sentimentBreakdown | object or null | Aggregate sentiment counts and percentages. |
emotionDistribution | object or null | Aggregate emotion counts. |
topPraise | array or null | Top positive themes with example quotes. |
topComplaints | array or null | Top negative themes with example quotes. |
crisisSignals | array or null | Detected reputational risks with severity and evidence. |
recommendations | array or null | Suggested next steps from the AI report. |
platformCounts | object or null | Posts analyzed per platform. |
platform | string or null | Source platform on post records. |
sourceUrl | string or null | Direct URL to the post or comment. |
author | string or null | Author handle or username. |
text | string or null | The analyzed post or comment text. |
title | string or null | Parent post or video title, where available. |
publishedAt | string or null | ISO 8601 timestamp when available. |
engagement | object or null | Engagement metrics such as likes, comments, shares, score, or upvotes. |
sentiment | string or null | positive, neutral, negative, or mixed. |
sentimentScore | number or null | Sentiment score from -1.0 to +1.0. |
confidence | number or null | Confidence score from 0 to 1. |
emotions | array or null | Detected emotions for LLM runs. |
aspects | array or null | Aspect-based sentiment for LLM runs. |
language | string or null | Detected ISO 639-1 language code for LLM runs. |
toxicity | number or null | Toxicity score from 0 to 1 for LLM runs when enabled. |
warnings | array or null | Non-fatal warnings, such as a platform being skipped. |
scrapedAt | string or null | ISO 8601 timestamp when the record was produced. |
Illustrative output record
{"recordType": "post","platform": "reddit","sourceUrl": "https://www.reddit.com/r/example/comments/abc123","author": "sample_user","text": "I like the new release, but the pricing is still a concern.","title": "Discussion thread about the launch","publishedAt": "2026-06-01T10:30:00Z","sentiment": "mixed","sentimentScore": 0.1,"confidence": 0.92,"emotions": ["anticipation", "trust"],"aspects": [{"aspect": "release","sentiment": "positive"},{"aspect": "pricing","sentiment": "negative"}],"language": "en","toxicity": 0.02,"scrapedAt": "2026-06-01T10:35:00Z"}
How it works
This Actor orchestrates dedicated scrapers for the selected platforms, then normalizes their results into one schema. It applies the chosen sentiment engine to each post, with llm providing sentiment, emotion, aspects, language detection, and optional toxicity, and lexicon providing a fast polarity-only score. When includeReport is enabled, it also produces one aggregate AI brand-health record with overall score, breakdowns, themes, crisis signals, and recommendations. The first dataset item is the report record, followed by the post records.
Pricing
This Actor uses Pay per event plus Apify platform usage. Its charged events are:
- Actor Start
- Post analyzed
- AI brand-health report
The primary event is Post analyzed, which is charged for each analyzed post or comment. The report event is charged once per run when the aggregate report is generated. Apify platform usage is billed separately from these event charges. For the current live values and any updates, open the Pricing tab on the Actor page.
For example, a run that analyzes one hundred posts and generates the report uses one start event, one hundred post events, and one report event. That means the Actor charges cover the start charge, one hundred per-post charges, and one report charge, plus separate Apify platform usage.
Use with AI agents (MCP)
This Actor is usable through Apify MCP. It exposes a structured tool for turning a search query into a brand-health report and a dataset of analyzed posts that an AI agent can inspect, summarize, compare, or cite.
Exact Actor identity: khadinakbar/social-media-sentiment-analyzer
Tool description: analyze public social sentiment for a keyword, hashtag, or brand across Reddit, YouTube, X/Twitter, and Instagram, then return per-post sentiment, emotion, aspects, language, toxicity, and an AI brand-health report.
Analyze the public sentiment around "ChatGPT" across Reddit and YouTube for the last 7 days. Return the brand-health report first, then list a few representative posts with sentiment, emotions, and source URLs.
Output interpretation:
- The first dataset record is the aggregate report (
recordType: "report"). - Remaining records are analyzed posts or comments (
recordType: "post"). - Use
sentimentScoreandconfidencefor machine comparison, andsourceUrlfor provenance. warningscaptures non-fatal platform notes, such as a selected source being skipped.
Scope, pagination, and cost guidance:
querydefines the topic searched across selected platforms.platformscontrols which sources are included.maxItemscaps the total analyzed posts or comments.includeReportadds the aggregate AI report.responseFormat: "concise"is the lighter option when an agent needs compact per-post records.maxCostUsdcan bound this Actor's own pay-per-event charges.
Run via the Apify API
JavaScript
import { ApifyClient } from 'apify-client';const client = new ApifyClient({token: process.env.APIFY_TOKEN,});const run = await client.actor('khadinakbar/social-media-sentiment-analyzer').call({query: 'Tesla',platforms: ['reddit', 'youtube'],maxItems: 50,timeRange: '7d',engine: 'llm',includeReport: true,responseFormat: 'detailed',});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items[0]);
Python
from apify_client import ApifyClientimport osclient = ApifyClient(os.environ["APIFY_TOKEN"])run = client.actor("khadinakbar/social-media-sentiment-analyzer").call(run_input={"query": "Tesla","platforms": ["reddit", "youtube"],"maxItems": 50,"timeRange": "7d","engine": "llm","includeReport": True,"responseFormat": "detailed",})items = client.dataset(run["defaultDatasetId"]).list_items().itemsprint(items[0])
Best results and outcome guidance
For a broad brand snapshot, start with a short search term and the default Reddit plus YouTube sources. For a launch or crisis watch, use timeRange: "24h" or timeRange: "7d" and keep includeReport enabled so the aggregate record captures the overall direction plus the strongest themes. When you want a compact agent-friendly payload, set responseFormat: "concise"; when you want richer review data for dashboards, use responseFormat: "detailed". If you are comparing runs, keep maxItems consistent so the dataset shape stays easier to compare.
Design note
I found that the dataset contract puts the aggregate report first and marks it with recordType: "report" and _summary: true, while each analyzed item uses recordType: "post". That visible contract makes it straightforward to separate the executive summary from the evidence layer in downstream workflows.
FAQ
Which input should I use for a brand check?
Use a keyword, hashtag, or brand name in query. The Actor searches public posts and comments across the selected platforms.
How does this Actor split results across platforms?
maxItems sets the total cap across all selected platforms, and the budget is divided across the chosen sources.
What if I only want post-level sentiment?
Set includeReport to false to receive only analyzed post records.
Which platforms work without credentials?
Reddit and YouTube work without platform credentials. X/Twitter and Instagram use encrypted session cookies when selected.
How should I read the first dataset item?
Treat it as the aggregate report. It summarizes sentiment, emotions, themes, risks, and recommendations for the full run.
Related Actors
- Social Media Influencer Scraper - use this after sentiment analysis when you want to enrich creator or audience research from a relevant social source.
Responsible use
Use this Actor for analysis of publicly available social content in line with platform terms and applicable law. Provide only credentials you are authorized to use. Treat sentiment, emotion, toxicity, and crisis signals as automated analytical outputs that support review and decision-making. When sharing results, preserve the source URLs and context of the original posts.