Appearance
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)
| Endpoint | Method | Description | Cost Est. |
|---|---|---|---|
/v3/content_analysis/search/live | POST | All citations for a keyword with full metadata per citation | ~$0.005 |
/v3/content_analysis/summary/live | POST | Aggregate citation stats — total count, domain breakdown, avg sentiment | ~$0.002 |
/v3/content_analysis/sentiment_analysis/live | POST | Citation counts broken down by polarity and connotation | ~$0.002 |
/v3/content_analysis/rating_distribution/live | POST | Citation distribution by content safety rating | ~$0.002 |
/v3/content_analysis/phrase_trends/live | POST | Citation volume and sentiment by date — build trend charts | ~$0.002 |
/v3/content_analysis/category_trends/live | POST | Citation trends by date within a specific content category | ~$0.002 |
Available Endpoints (Detail)
| Endpoint | What it returns |
|---|---|
| Search | All citations for a target keyword with full detail on each citation |
| Summary | Complete overview of citation data for the target keyword |
| Sentiment Analysis | Citation breakdown by positive/negative/neutral polarity and sentiment connotations |
| Rating Distribution | Citation stats distribution by content rating |
| Phrase Trends | Citation volume and sentiment trends by date for a target keyword |
| Category Trends | Citation 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"}]'Phrase Trends Endpoint
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.
Category Trends Endpoint
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)
| Field | Type | Description |
|---|---|---|
total_count | integer | Total citations found |
items_count | integer | Citations returned in response |
items[].url | string | URL of the citing page |
items[].domain | string | Domain of the citing page |
items[].title | string | Page title |
items[].snippet | string | Relevant excerpt containing the keyword |
items[].sentiment_polarity | string | positive, negative, or neutral |
items[].sentiment_connotations | object | Scores for anger, happiness, love, sadness, share, fun |
items[].content_rating | string | Content safety rating |
items[].date_published | string | Publication 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_codeto separate analysis by market.