# AI Social Listening & Sentiment (`fuze/ai-social-listening`) Actor

Add the AI intelligence layer on top of any social scraper: sentiment, themes, share of voice vs competitors, emerging topics and recommended actions from a dataset of posts, comments or reviews. Actively maintained. · More no-code data tools → datatools-hub.vercel.app

- **URL**: https://apify.com/fuze/ai-social-listening.md
- **Developed by:** [Fredrik Hansson](https://apify.com/fuze) (community)
- **Categories:** AI, Social media
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $44.00 / 1,000 posts analyzed (per batch)s

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## AI Social Listening & Sentiment

Add the **AI intelligence layer** on top of any social scraper: sentiment, themes, share of voice vs. competitors, emerging topics and recommended actions.

The social scrapers on Apify give you raw posts. **This actor gives you the meaning.**

![AI Social Listening & Sentiment — input and sample output](https://datatools-hub.vercel.app/actor-shots/ai-social-listening.png)

### 🔗 Chain it after your scraper

Already scraping with **[Instagram Scraper (`apify/instagram-scraper`)](https://apify.com/apify/instagram-scraper)**, **[TikTok Scraper (`clockworks/tiktok-scraper`)](https://apify.com/clockworks/tiktok-scraper)** or **[Tweet Scraper (`apidojo/tweet-scraper`)](https://apify.com/apidojo/tweet-scraper)**? Pipe the dataset straight in — paste its dataset ID and get sentiment, themes, share of voice and recommended actions over all those posts. Works with any social or review scraper's output (Reddit, YouTube, Trustpilot and more).

### Quick start

1. **Fill in the input** — set the fields in the input tab (prefilled with a working example).
2. **Click Start** — the Actor runs and writes one record per item to the dataset.
3. **Get your data** — export to **JSON, CSV or Excel**, or pull it via the API.

### What it does

Point it at the **dataset from any social or review scraper** — Instagram, TikTok, X, YouTube, Reddit, Google or Trustpilot reviews — or paste text directly, and it:

- Tags every post with **sentiment** and normalized **themes**
- Aggregates them into **theme rollups** with share, sentiment split and example quotes
- Computes **brand mentions and share of voice** (when you provide a brand + competitors)
- Writes a **narrative summary** with concrete top praises, top complaints, emerging topics and **recommended actions**

Schedule it to track sentiment over time.

### Clean by design

It analyzes the output of a scraper **you** already run — you do the compliant collection, this does the analysis.

### Input

| Field | Type | Description |
|---|---|---|
| `datasetId` | string | Dataset ID from any social/review scraper. |
| `items` | array | Or paste post/review texts directly. |
| `textField` | string | Which field holds the text (auto-detected if empty). |
| `brand` | string | Brand to track (enables share of voice). |
| `competitors` | array | Competitor names. |
| `topic` | string | Context to steer the analysis. |
| `maxItems` | integer | Max posts to analyze (default 500). |

```json
{
  "datasetId": "YOUR_SCRAPER_DATASET_ID",
  "brand": "Acme",
  "competitors": ["Globex", "Initech"],
  "topic": "customer reactions to our new pricing"
}
```

Or with raw text:

```json
{
  "brand": "Acme",
  "items": ["Love the new Acme dashboard!", "Acme support ignored my ticket", "Globex is cheaper than Acme"]
}
```

### Output

Per-post rows, theme rollups, and a `summary` record:

```json
{
  "recordType": "summary",
  "totalPosts": 500,
  "sentimentBreakdown": { "positive": 260, "negative": 140, "neutral": 100 },
  "overallSentiment": "positive",
  "netSentimentScore": 24,
  "shareOfVoice": 77,
  "topThemes": [{ "theme": "customer support", "mentions": 83, "dominant": "negative", "examples": ["…"] }],
  "topPraises": ["Fast, intuitive dashboard"],
  "topComplaints": ["App crashes after updates"],
  "recommendedActions": ["Prioritize a mobile-stability fix", "Review pricing for small teams"]
}
```

### Pricing (pay-per-event)

| Event | When | Price |
|---|---|---|
| `posts-analyzed` | per batch of up to 25 posts | $0.10 |
| `insight-report` | per run (aggregated analysis) | $0.50 |

### Who it's for

Social and brand teams, agencies, product and CX teams who want insight — not just raw posts.

### Notes

- Requires an OpenAI API key (`OPENAI_API_KEY`).
- Pair it with any Apify social/review scraper: run the scraper, then feed its `datasetId` here (or chain them).

### Related actors

- [Ad Radar — AI Ad & Creative Intelligence](https://apify.com/fuze/ad-radar) — Analyze competitors' ads (from any Meta Ad Library scraper) for hooks, offers, angles
- [Google Reviews Insights (AI)](https://apify.com/fuze/google-reviews-insights) — Turns Google reviews into concrete insights for a business and its competitors: top
- [AI Brand Visibility Tracker (GEO/AEO)](https://apify.com/fuze/ai-brand-visibility) — Track how visible your brand is in AI answer engines — are you recommended when people

# Actor input Schema

## `datasetId` (type: `string`):

The dataset ID produced by any social/review scraper (Instagram, TikTok, X, YouTube, Reddit, Google/Trustpilot reviews…). We read its items and analyze the text. Leave empty if you pass 'items' directly.

## `items` (type: `array`):

Optional. Paste post/comment/review texts directly (one per line) instead of a dataset.

## `textField` (type: `string`):

Which field in the dataset holds the post text. Leave empty to auto-detect (text, caption, content, title, message, reviewText…).

## `brand` (type: `string`):

Optional. The brand to track — enables brand mention counting and share of voice.

## `competitors` (type: `array`):

Optional competitor names for share-of-voice comparison — one per line.

## `topic` (type: `string`):

Optional context to steer the analysis (e.g. 'customer reactions to our new pricing').

## `maxItems` (type: `integer`):

Cap on how many posts to analyze this run.

## `model` (type: `string`):

OpenAI model for analysis. gpt-4o-mini is the cost-effective default.

## Actor input object example

```json
{
  "items": [],
  "competitors": [],
  "maxItems": 500,
  "model": "gpt-4o-mini"
}
```

# Actor output Schema

## `insights` (type: `string`):

All per-post analyses, theme rollups and the summary in the default dataset.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "items": [],
    "competitors": []
};

// Run the Actor and wait for it to finish
const run = await client.actor("fuze/ai-social-listening").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "items": [],
    "competitors": [],
}

# Run the Actor and wait for it to finish
run = client.actor("fuze/ai-social-listening").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "items": [],
  "competitors": []
}' |
apify call fuze/ai-social-listening --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,fuze/ai-social-listening"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/KBSh3aHRPAaaKOzOC/builds/d9h86Ygb8oMbuvy04/openapi.json
