kazkndata

Home / Actors / Comment & Review Sentiment Analysis

Comment Sentiment Analysis: One Label per Comment, Plus What Changed

This comment sentiment analysis tool reads comments and reviews you already collected, either from an Apify Dataset or as a pasted list, and returns one row per comment with its sentiment, detected language, duplicate and spam flags and, in monitor mode, whether it is new or changed since the last run. It is built for brand and community managers, e-commerce and support teams, agencies and analysts who handle comments in English, French, German, Spanish, Italian or Portuguese and do not want to send them to an outside AI service.

Run it on Apify
  • $1.50 per 1,000 results
  • 1 user in the last 30 days
  • Export: JSON, CSV, Excel, API
Real output row · Comment & Review Sentiment Analysis · run of 2026-11-08
recordId
comment-1
sourceRef
inline:sha256:3d574e210bd9e7318776c5e6bb66314db953811021d6c8c276bbcc72…
text
I love this product and the delivery was fast.
textHash
b092984bd4deaffa20514da5ea47e7ef273b04ef9c8da5537d41fa11176f4751
language
en
languageSource
detected
languageScore
1
complaintSignal
not_evaluated
sentiment
positive

What you get

  • recordId Your own comment ID, or a SHA-256 hash of it if you turn source IDs off
  • text The comment itself, left out when you uncheck the text option
  • sentiment positive, neutral or negative
  • confidence Model score between 0 and 1 for the sentiment label
  • language en, fr, de, es, it or pt, or und when the text is too short to tell
  • languageSource Whether the language came from your data, was detected, or stayed undetermined
  • complaintSignal Beta flag for Spanish, Italian and Portuguese: possible, not_detected or not_evaluated
  • isDuplicate true when the comment repeats an earlier one word for word
  • isSpam true when basic spam rules match
  • status Monitor mode only: NEW, CHANGED or UNCHANGED compared with the previous run
  • processingStatus OK, or ERROR for an invalid comment that is not billed
  • errorCode Reason a comment was rejected, such as invalid text
  • textHash SHA-256 hash of the comment text
  • observedAt Date mapped from your source data, when you provide one
  • modelVersion Version of the local model that produced the label

What people use it for

Sort reviews after a scrape

Run any reviews scraper on Apify, copy the Dataset ID of that run and paste it into this actor with the name of the field that holds the review text. Sort the output by sentiment and read the negative rows first instead of scrolling through every review.

Weekly brand report

Set the mode to monitor, give it a fixed state key such as brand-weekly and schedule it on Apify every week after your comments scraper. Each row comes back as NEW, CHANGED or UNCHANGED, and the SUMMARY record gives the sentiment split and daily volume for the report.

Find polite complaints in Southern European markets

Spanish, Italian and Portuguese customers often describe a problem in a friendly tone, which a sentiment label alone can read as neutral. Filter on complaintSignal set to possible to pull out those comments for the support team, then check them by hand since the signal is a beta triage aid.

Analyze comments without sharing them

Paste your own list of comments as JSON with an id and a text for each one. The models run inside the actor, so the text is not sent to an AI provider, and you can hide the text and hash the IDs in the output if you only need the labels.

Who it is for

  • Brand managers who track how people talk about a product from week to week
  • Community managers who want the negative comments under a video or post at the top of the list
  • E-commerce and app teams who sort store and marketplace reviews before replying
  • Support leads who use the complaint signal to find problem reports in Spanish, Italian and Portuguese
  • Agencies and analysts who compare sentiment across markets for a client report

How to run it

  1. Open Comment & Review Sentiment Analysis on Apify and sign in to go to its Input tab.
  2. Paste the Dataset ID of a comments or reviews scraper run, or paste your comments as a JSON list in the inline field.
  3. Set the text field name if it is not text, and choose Analyze for a one-off run or Monitor changes with a state key for repeat runs.
  4. Start the run and wait for one row per comment to appear in the output Dataset, with the SUMMARY record in the key-value store.
  5. Download the results as JSON, CSV, Excel or HTML, or read them through the Apify API from Python, Node.js or any HTTP client.

Pricing

You pay per result, through your Apify account: $1.50 per 1,000 results at the time of writing (2026-11-08). No subscription to this actor. Apify's free plan includes monthly platform credit, enough to test it. The current price is always the one shown on the Apify page.

Questions

Is it legal to run sentiment analysis on social media comments?

Analyzing comments is generally allowed, but comments can contain personal data, which the GDPR and similar laws protect. Only process comments you have a legitimate reason to handle, and keep the output small by hiding text or hashing IDs if you do not need them. The actor does not copy author profiles. If you are unsure about your case, ask a lawyer.

Does this tool scrape the comments for me?

No. It only analyzes comments you already have, either from another Apify actor's Dataset or from a list you paste. To get comments from a platform, run a comments or reviews scraper first and pass its Dataset ID to this actor. No social account, cookie or proxy is needed.

How much does comment sentiment analysis cost?

Pricing is pay per event with no subscription. Each analyzed comment costs $0.0015, so 1,000 comments cost $1.50, plus a start fee of $0.0005 per GB of memory for each run. Comments rejected as invalid come back as ERROR rows and are not charged, and you can set a maximum cost per run in Apify.

Which languages does it support?

Sentiment covers English, French, German, Spanish, Italian and Portuguese, with language detection for each comment. The complaint signal only covers Spanish, Italian and Portuguese. Very short comments may get the language code und when there is not enough text to decide.

How accurate is the sentiment?

The README reports a macro-F1 of 0.870 on 612 annotated test sentences across the six languages, and lower scores on short extracts of real reviews. Sarcasm, jargon, mixed opinions and indirect complaints can be labeled neutral when a person would call them negative. Check a sample of your own data before you rely on the labels for decisions.

What export formats can I get?

The output Dataset can be downloaded as JSON, CSV, Excel or HTML, read through the Apify API, or sent to Google Sheets and other tools through Apify integrations. Summary figures are stored separately in the SUMMARY record of the run's key-value store.

What are the limits per run?

One run reads up to 10,000 comments, and each comment can be up to 5,000 characters. Longer or malformed comments become ERROR rows while the rest continue. The actor needs at least 2 GB of memory, and only one monitor run per state key can run at a time.