Skip to content

Content Analysis API Fresh

Content Analysis API helps you discover citations of a target keyword or brand across the web and analyze the sentiment around those mentions. It powers brand monitoring, reputation management, and competitive content research at scale.

The API identifies positive, negative, and neutral polarity in any text and detects the following sentiment connotations:

  • Anger
  • Happiness
  • Love
  • Sadness
  • Share (desire to share the content)
  • Fun

Method: Live only — all endpoints return instant results without a task queue.

Rate limit: Up to 2,000 API calls per minute.

All Endpoints (6 total)

EndpointMethodDescriptionCost Est.
/v3/content_analysis/search/livePOSTAll citations for a keyword with full metadata per citation~$0.005
/v3/content_analysis/summary/livePOSTAggregate citation stats — total count, domain breakdown, avg sentiment~$0.002
/v3/content_analysis/sentiment_analysis/livePOSTCitation counts broken down by polarity and connotation~$0.002
/v3/content_analysis/rating_distribution/livePOSTCitation distribution by content safety rating~$0.002
/v3/content_analysis/phrase_trends/livePOSTCitation volume and sentiment by date — build trend charts~$0.002
/v3/content_analysis/category_trends/livePOSTCitation trends by date within a specific content category~$0.002

Available Endpoints (Detail)

EndpointWhat it returns
SearchAll citations for a target keyword with full detail on each citation
SummaryComplete overview of citation data for the target keyword
Sentiment AnalysisCitation breakdown by positive/negative/neutral polarity and sentiment connotations
Rating DistributionCitation stats distribution by content rating
Phrase TrendsCitation volume and sentiment trends by date for a target keyword
Category TrendsCitation trends by date within a target category

Search Endpoint

POST https://api.dataforseo.com/v3/content_analysis/search/live

Returns all citations for a keyword with full metadata per citation. Supports filtering and sorting — filtering does not incur extra charges.

Use this for:

  • Finding every page on the web that mentions your brand
  • Pulling the sentiment classification for each citation
  • Identifying the domains citing your competitors

cURL Example

bash
curl --request POST \
  --url https://api.dataforseo.com/v3/content_analysis/search/live \
  --header 'Authorization: Basic BASE64(login:password)' \
  --header 'Content-Type: application/json' \
  --data '[
    {
      "keyword": "your brand name",
      "limit": 50,
      "filters": [
        ["sentiment_connotations.positive", ">", 0]
      ]
    }
  ]'

Summary Endpoint

POST https://api.dataforseo.com/v3/content_analysis/summary/live

Returns aggregate statistics for all citations of a keyword — total count, domain breakdown, average sentiment scores, and content rating distribution. Use this as the first call to get a broad picture before diving into individual citations.

bash
curl --request POST \
  --url https://api.dataforseo.com/v3/content_analysis/summary/live \
  --header 'Authorization: Basic BASE64(login:password)' \
  --header 'Content-Type: application/json' \
  --data '[{"keyword": "your brand name"}]'

Sentiment Analysis Endpoint

POST https://api.dataforseo.com/v3/content_analysis/sentiment_analysis/live

Returns granular citation counts broken down by:

  • Polarity: positive, negative, neutral percentages
  • Connotation: anger, happiness, love, sadness, share, fun

Use this to track reputation shifts — for example, detecting a spike in negative sentiment after a product issue or policy change.

bash
curl --request POST \
  --url https://api.dataforseo.com/v3/content_analysis/sentiment_analysis/live \
  --header 'Authorization: Basic BASE64(login:password)' \
  --header 'Content-Type: application/json' \
  --data '[{"keyword": "your brand name"}]'

POST https://api.dataforseo.com/v3/content_analysis/phrase_trends/live

Returns citation volume and sentiment data by date for a target keyword. Use this to build time-series charts showing how mention volume and sentiment have changed over time.

POST https://api.dataforseo.com/v3/content_analysis/category_trends/live

Returns citation trend data for a keyword within a specific content category. Useful for understanding how mentions in a particular topic area (e.g., "technology news") have shifted over time.

Filtering

The Search endpoint supports custom filters. You can filter on:

  • Sentiment polarity values
  • Connotation scores
  • Domain or URL patterns
  • Content rating
  • Date ranges

Filters are free — applying them does not increase the cost per request.

Python Example — Brand Monitoring Pipeline

python
import requests
from requests.auth import HTTPBasicAuth
import json

LOGIN = "your_login"
PASSWORD = "your_password"

def content_analysis_request(endpoint, payload):
    url = f"https://api.dataforseo.com/v3/content_analysis/{endpoint}/live"
    r = requests.post(
        url,
        auth=HTTPBasicAuth(LOGIN, PASSWORD),
        headers={"Content-Type": "application/json"},
        data=json.dumps(payload)
    )
    return r.json()


def brand_sentiment_report(brand_name):
    # 1. Get summary stats
    summary = content_analysis_request("summary", [{"keyword": brand_name}])
    summary_data = summary["tasks"][0]["result"][0]

    # 2. Get sentiment breakdown
    sentiment = content_analysis_request("sentiment_analysis", [{"keyword": brand_name}])
    sentiment_data = sentiment["tasks"][0]["result"][0]

    # 3. Get phrase trends
    trends = content_analysis_request("phrase_trends", [{"keyword": brand_name}])
    trends_data = trends["tasks"][0]["result"][0]

    print(f"\n=== Brand Report: {brand_name} ===")
    print(f"Total citations: {summary_data.get('total_count', 'N/A')}")
    print(f"\nSentiment breakdown:")
    print(json.dumps(sentiment_data, indent=2))
    print(f"\nMention trend (last 12 months):")
    print(json.dumps(trends_data, indent=2))


def find_negative_mentions(brand_name, limit=20):
    payload = [{
        "keyword": brand_name,
        "limit": limit,
        "filters": [["sentiment_connotations.anger", ">", 0.5]],
        "order_by": ["sentiment_connotations.anger,desc"]
    }]

    results = content_analysis_request("search", payload)
    items = results["tasks"][0]["result"][0]["items"]

    print(f"\nTop {len(items)} negative mentions of '{brand_name}':")
    for item in items:
        print(f"  - {item.get('url')} | Anger: {item.get('sentiment_connotations', {}).get('anger', 0):.2f}")


# Usage
brand_sentiment_report("your company name")
find_negative_mentions("your company name")

Response Fields (Search Endpoint)

FieldTypeDescription
total_countintegerTotal citations found
items_countintegerCitations returned in response
items[].urlstringURL of the citing page
items[].domainstringDomain of the citing page
items[].titlestringPage title
items[].snippetstringRelevant excerpt containing the keyword
items[].sentiment_polaritystringpositive, negative, or neutral
items[].sentiment_connotationsobjectScores for anger, happiness, love, sadness, share, fun
items[].content_ratingstringContent safety rating
items[].date_publishedstringPublication date

Notes

  • All Content Analysis endpoints use the Live method only.
  • The Search endpoint's filtering capability does not add to cost — apply as many filters as needed.
  • Sentiment classification is automated and based on DataForSEO's NLP models. It performs best on English-language content.
  • For multi-language brand monitoring, filter results by language_code to separate analysis by market.

Internal SOP reference — not affiliated with DataForSEO.