# Buzzsumo Alternative — Cited Content, Sentiment & Trends (`khadinakbar/buzzsumo-alternative`) Actor

Return Buzzsumo-style cited articles, sentiment, and citation trends for a topic or brand. Content research without a Buzzsumo login. Not live Facebook share counts. Charged $0.01/row plus $0.05/API request.

- **URL**: https://apify.com/khadinakbar/buzzsumo-alternative.md
- **Developed by:** [Khadin Akbar](https://apify.com/khadinakbar) (community)
- **Categories:** SEO tools, Social media, MCP servers
- **Stats:** 1 total users, 0 monthly users, 0.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $10.00 / 1,000 content records

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.

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

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## Buzzsumo Alternative — Cited Content, Sentiment & Trends

Turn a topic or brand into Buzzsumo-style citation rows: cited articles, a one-row summary, phrase trends, sentiment slices, and publisher-domain content. Runs without a Buzzsumo login or cookie. Built for content teams and agents that want structured content research on Apify with API, schedule, and MCP access.

### Best fit for this Actor

- Find cited articles for a topic such as `content marketing`, with publisher domain, snippet, citation score, and sentiment polarity.
- Score how a brand is discussed across news, blogs, and other indexed page types in one summary row.
- Chart citation volume by month, then keep the publishers that show up most often.

When you need live Google Search ads or organic SERP HTML instead of citation research, start with [Google SERP All-in-One Scraper](https://apify.com/khadinakbar/google-serp-all-in-one-scraper). After you pick stories to watch in news, continue with [Google News Scraper](https://apify.com/khadinakbar/google-news-scraper).

### Practical scenario

A content lead pastes `content marketing`, keeps `mode` on `content_search`, and runs the Actor. The dataset returns five rows with `title`, `url`, `domain`, `citationScore`, `dominantSentiment`, and `facebookLikeCount` when the index includes embed metrics. They then switch `mode` to `content_summary` to see total citations plus top publishing domains before pitching outreach. Unknown or empty matches finish `SUCCEEDED` with `VALID_EMPTY` and no `content-record` charge.

### Quick start input

```json
{
  "mode": "content_search",
  "keyword": "content marketing",
  "maxResults": 5,
  "searchMode": "one_per_domain"
}
```

`keyword` is the topic or brand. `domain` is only required for `domain_content`.

### Input reference

| Field | Type | What it controls |
|---|---|---|
| `mode` | enum | `content_search`, `content_summary`, `phrase_trends`, `sentiment`, or `domain_content`. Default `content_search`. |
| `keyword` | string | Topic or brand. Example: `content marketing`. |
| `domain` | string | Publisher hostname for `domain_content`. Example: `hubspot.com`. |
| `maxResults` | integer | Row cap 1–100. Default 5. Summary still writes at most one overview row. |
| `searchMode` | enum | `one_per_domain` (default) or `as_is`. |
| `pageTypes` | array | Optional `ecommerce`, `news`, `blogs`, `message-boards`, `organization`. |
| `countryCode` | string | Optional ISO country such as `US`. |
| `dateFrom` | string | `yyyy-mm-dd` start for `phrase_trends`. Defaults to six months back. |
| `dateGroup` | enum | `month` (default), `week`, or `day`. |

Owner API credentials are already configured for Store runs. This Actor does not accept user API keys.

### What data you receive

One dataset item is one cited article, summary, trend bucket, or sentiment slice.

```json
{
  "mode": "content_search",
  "keyword": "content marketing",
  "url": "https://blog.hubspot.com/marketing/content-marketing",
  "domain": "hubspot.com",
  "title": "The Ultimate Guide to Content Marketing",
  "snippet": "How teams plan, produce, and measure content that earns citations.",
  "citationScore": 5900.94,
  "dominantSentiment": "positive",
  "facebookLikeCount": 13,
  "source": "buzzsumo_alternative/content_search",
  "status": "OK",
  "fetchedAt": "2026-08-22T00:00:00.000Z"
}
```

| Field | Meaning |
|---|---|
| `citationScore` | Prominence of this citation in the index, not a Buzzsumo viral score |
| `facebookLikeCount` | Indexed Facebook embed likes when present; not a live share graph |
| `dominantSentiment` | Highest of positive / negative / neutral on the citation text |
| `source` | Mode provenance label for the row |

`OUTPUT` and `RUN_SUMMARY` in the default key-value store hold `outcome`, `itemsPushed`, `chargedEventCounts`, and `providerCostUsd`. Download the dataset as JSON, CSV, Excel, or HTML.

### Use through the API

```bash
curl -X POST "https://api.apify.com/v2/acts/khadinakbar~buzzsumo-alternative/runs" \
  -H "Authorization: Bearer $APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"mode":"content_search","keyword":"content marketing","maxResults":5}'
```

### Use with AI agents through Apify MCP

> Find Buzzsumo-style cited articles for content marketing. Return title, url, domain, citationScore, dominantSentiment, facebookLikeCount, source, and fetchedAt. Read OUTPUT.outcome and itemsPushed. Treat citationScore as an index prominence score rather than a Buzzsumo viral share count.

Connect via <https://mcp.apify.com>. Cost signal: about `$0.06` per successful content API request plus `$0.01` per saved row.

### Connect the workflow

- For current news headlines after you pick a topic, continue with [Google News Scraper](https://apify.com/khadinakbar/google-news-scraper).
- For search-interest over time instead of citation volume, continue with [Google Trends Scraper](https://apify.com/khadinakbar/google-trends-scraper).
- For live Google Search results and ads after you choose phrases, continue with [Google SERP All-in-One Scraper](https://apify.com/khadinakbar/google-serp-all-in-one-scraper).

### Pricing

This Actor uses Pay per event plus Apify platform usage. The live Pricing tab is the current source of truth for billing details.

- `apify-actor-start`: $0.00005 per run
- `content-api-request`: **$0.06** per successful upstream content API task
- `content-record`: **$0.012** per persisted row

A cited-article prefill is one API task plus up to five rows. Empty matches have no `content-record` charge. Provider cost is recorded in `RUN_SUMMARY.providerCostUsd`.

### How it works

1. Normalize the topic, domain, and filters for the selected mode.
2. Call the matching owner-managed content analysis endpoint for that mode.
3. Charge `content-api-request` after each successful task.
4. Charge `content-record`, then write each validated dataset row.

### Best results

- Use a real topic such as `content marketing` rather than a Buzzsumo app URL.
- Keep `maxResults` at 5 while you confirm the output shape, then raise it for exports.
- Treat sentiment, citation scores, and Facebook likes as indexed estimates, not live social graphs.
- A valid query with no match finishes `SUCCEEDED` with `VALID_EMPTY`.

### Builder's note

I found that classic Buzzsumo workflows still ask teams to sit in a login-walled app for “what content is cited around this topic,” while Store scrapers that promise viral Facebook shares leave share counts unread when platforms no longer expose them. Routing this SKU through owner-managed citation APIs keeps the Buzzsumo-shaped jobs (articles, summary, trends, sentiment, domain content) without claiming Buzzsumo viral scores, scraping Buzzsumo, or asking buyers for API keys. Facebook likes are only written when the citation index includes an embed metric.

### Legal and responsible use

Use this Actor with public content research you are authorized to run. Metrics are independent of BuzzSumo / Brandwatch. Follow applicable law and the upstream data provider terms, and keep the output in your own compliance workflow.

Issues and feature requests: use the Actor Issues tab on Apify.

# Actor input Schema

## `mode` (type: `string`):

Which Buzzsumo-style report to run. content\_search lists cited articles for a topic. content\_summary returns one citation overview. phrase\_trends returns citation volume by date. sentiment splits positive, negative, and neutral citation counts. domain\_content lists citations on one publisher domain. Default content\_search. This is NOT a Buzzsumo login or API key field.

## `keyword` (type: `string`):

Topic, brand, or phrase to find citations for. Example: content marketing. Use quotes in the phrase only when you need an exact match. Prefill content marketing. Not a Buzzsumo project URL and not an API key.

## `domain` (type: `string`):

Website to restrict domain\_content mode. Accepts hubspot.com or https://www.hubspot.com. Protocol and www are stripped to the hostname. Ignored in other modes. Not a keyword and not a Buzzsumo app URL.

## `maxResults` (type: `integer`):

Maximum dataset rows to write (1-100). Defaults to 5 so quality tests and agent calls stay cheap. content\_summary still writes at most one overview row. Caps search, trend, and sentiment slices.

## `searchMode` (type: `string`):

How cited articles are grouped. one\_per\_domain returns one citation per publisher. as\_is returns every matching citation. Defaults to one\_per\_domain. Applies to cited-article and trend modes. This is not a sort field.

## `pageTypes` (type: `array`):

Optional page-type filter. Allowed values: ecommerce, news, blogs, message-boards, organization. Leave empty to include all indexed types. Example: \["blogs","news"]. This is not a country filter.

## `countryCode` (type: `string`):

Optional 2-letter ISO country filter such as US or GB. Leave empty for all countries. Defaults empty. This is a country code, not a language name like English.

## `dateFrom` (type: `string`):

Start date for phrase\_trends, as yyyy-mm-dd. Defaults to six months before the run date, and never earlier than 2022-10-31. Ignored in other modes. This is not an article publish filter for content\_search.

## `dateGroup` (type: `string`):

How phrase\_trends buckets dates. month is the default. week and day produce more rows. Ignored in other modes. This is not maxResults.

## Actor input object example

```json
{
  "mode": "content_search",
  "keyword": "content marketing",
  "domain": "hubspot.com",
  "maxResults": 5,
  "searchMode": "one_per_domain",
  "pageTypes": [
    "blogs",
    "news"
  ],
  "countryCode": "US",
  "dateFrom": "2026-02-22",
  "dateGroup": "month"
}
```

# Actor output Schema

## `results` (type: `string`):

Citation, summary, trend, or sentiment rows.

## `summary` (type: `string`):

Compact OUTPUT record with outcome, itemsPushed, charges, and warnings.

## `runSummary` (type: `string`):

Detailed RUN\_SUMMARY including providerCostUsd and request counts.

# 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 = {
    "mode": "content_search",
    "keyword": "content marketing",
    "domain": "hubspot.com",
    "maxResults": 5,
    "searchMode": "one_per_domain",
    "pageTypes": [
        "blogs",
        "news"
    ],
    "dateFrom": "2026-02-22",
    "dateGroup": "month"
};

// Run the Actor and wait for it to finish
const run = await client.actor("khadinakbar/buzzsumo-alternative").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 = {
    "mode": "content_search",
    "keyword": "content marketing",
    "domain": "hubspot.com",
    "maxResults": 5,
    "searchMode": "one_per_domain",
    "pageTypes": [
        "blogs",
        "news",
    ],
    "dateFrom": "2026-02-22",
    "dateGroup": "month",
}

# Run the Actor and wait for it to finish
run = client.actor("khadinakbar/buzzsumo-alternative").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 '{
  "mode": "content_search",
  "keyword": "content marketing",
  "domain": "hubspot.com",
  "maxResults": 5,
  "searchMode": "one_per_domain",
  "pageTypes": [
    "blogs",
    "news"
  ],
  "dateFrom": "2026-02-22",
  "dateGroup": "month"
}' |
apify call khadinakbar/buzzsumo-alternative --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,khadinakbar/buzzsumo-alternative"
        }
    }
}

```

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/s32bTeuJbb6vNNtBz/builds/HVoFHMj1GvVhhQICD/openapi.json
