# Content Analysis API guide



## Choose a Content Analysis operation



Start with the object your task needs. The groups below use the current catalogue; open an endpoint to check accepted identifiers, filters, price and availability before retrieving.



### Products and categories



- [Content Analysis categories](https://www.monocrawl.com/docs/endpoints/content_analysis/categories) — Monocrawl's own mention-classification taxonomy (taxonomy id monocrawl.content_analysis.v1), including the full keyword list behind each category so any classification can be audited. Static, costs no credits.



### Other operations



- [Content Analysis filters](https://www.monocrawl.com/docs/endpoints/content_analysis/filters) — The filterable fields for the content analysis endpoints — field, type, operators, allowed values, which endpoints accept it and whether it is applied upstream or locally. Generated from the adapter's own filter implementation, so it cannot drift. Static, costs no credits.

- [Content Analysis languages](https://www.monocrawl.com/docs/endpoints/content_analysis/languages) — Reference list of the ISO-639-1 language codes content analysis can genuinely filter on, each marked with which source honours it. Static, costs no credits.

- [Content Analysis locations](https://www.monocrawl.com/docs/endpoints/content_analysis/locations) — Reference list of the ISO-3166 alpha-2 country codes content analysis can genuinely filter on — publisher country for news, storefront for rating-distribution. Static, costs no credits.

- [Keyword mention trends](https://www.monocrawl.com/docs/endpoints/content_analysis/phrase-trends) — Mention volume and sentiment for a keyword bucketed by day, week or month across the sources we can reach. Bucket heights are bounded by each source's per-query cap, so the series is a shape, not a census — the response says so explicitly.

- [Keyword rating distribution](https://www.monocrawl.com/docs/endpoints/content_analysis/rating-distribution) — Real 1-5 star histogram for a keyword that resolves to an App Store app, built from actual published reviews plus Apple's own lifetime average. If the keyword resolves to nothing rateable it returns 404 — no histogram is ever synthesised.

- [Keyword sentiment breakdown](https://www.monocrawl.com/docs/endpoints/content_analysis/sentiment) — Positive / neutral / negative split for a keyword with mean, median and a score histogram, plus the most positive and most negative mentions. Lexicon-based and fully deterministic — the method, its thresholds and its limits are returned with every response.

- [Keyword mention summary](https://www.monocrawl.com/docs/endpoints/content_analysis/summary) — Aggregate view of a keyword's mentions: volume, per-source breakdown, sentiment split, category mix, top publishers and top terms — all computed deterministically from the mentions we could reach.



### Search and discovery



- [Keyword mention search](https://www.monocrawl.com/docs/endpoints/content_analysis/search) — Web citations of a keyword from news, Hacker News and Reddit with deterministic per-mention sentiment (in-adapter lexicon, no AI), Monocrawl category labels and per-source provenance. Fans out to 3 upstreams; coverage is partial and every response names what it could not consult.



## Check fields and collection limits



Use the endpoint’s declared parameters and returned continuation. Filters from another platform do not automatically apply here. Preserve source identifiers, URLs and warnings; a successful page does not establish complete history. Published response schemas identify whether they come from a reviewed shaper or observed response shapes.



Agents can use `get_endpoint` for the current contract and `get_docs` with topic `platforms/content_analysis` to read this page. The [coverage guide](https://www.monocrawl.com/docs/data-availability) explains nulls and partial results, and the [production guide](https://www.monocrawl.com/docs/production-checklist) covers budgets and recovery.



## Endpoint reference

## content_analysis/categories

`GET /v1/content_analysis/categories`

Monocrawl's own mention-classification taxonomy (taxonomy id monocrawl.content_analysis.v1), including the full keyword list behind each category so any classification can be audited. Static, costs no credits.

*Content Analysis categories*

| Parameter | Required | Description |
| --- | --- | --- |
| `dry_run` | no | Read a zero-credit estimate without fetching sources, running AI, or reserving credits. Cache status is a snapshot, not a guarantee at execution. Accepted values: 1, 0, true, false. Case, spaces, hyphens and underscores are interchangeable. — e.g. `1` |

### Useful optional inputs

- `dry_run`: Read a free estimate before fetching sources or scheduling paid work. Zero credits; cache status and availability are snapshots rather than guarantees.

**Cost:** free — 0 credits.

```bash
curl "https://www.monocrawl.com/v1/content_analysis/categories" \
  -H "x-api-key: mn_your_key_here"
```

### Response data

Illustrative abbreviated data; documented core fields are optional and may be null. Additional source fields are allowed.

```json
{
  "_warnings": [
    "example"
  ],
  "classification": {
    "ai_used": false,
    "applied_to": "example",
    "method": "example"
  },
  "count": 0,
  "items": [
    {
      "code": "example",
      "description": "example",
      "name": "example",
      "term_count": 0,
      "terms": [
        "example"
      ]
    }
  ],
  "taxonomy": "example"
}
```

[Field reference](https://www.monocrawl.com/docs/endpoints/content_analysis/categories#response) · [JSON Schema for response.data](https://www.monocrawl.com/schemas/content_analysis/categories.json)


## content_analysis/filters

`GET /v1/content_analysis/filters`

The filterable fields for the content analysis endpoints — field, type, operators, allowed values, which endpoints accept it and whether it is applied upstream or locally. Generated from the adapter's own filter implementation, so it cannot drift. Static, costs no credits.

*Content Analysis filters*

| Parameter | Required | Description |
| --- | --- | --- |
| `dry_run` | no | Read a zero-credit estimate without fetching sources, running AI, or reserving credits. Cache status is a snapshot, not a guarantee at execution. Accepted values: 1, 0, true, false. Case, spaces, hyphens and underscores are interchangeable. — e.g. `1` |

### Useful optional inputs

- `dry_run`: Read a free estimate before fetching sources or scheduling paid work. Zero credits; cache status and availability are snapshots rather than guarantees.

**Cost:** free — 0 credits.

```bash
curl "https://www.monocrawl.com/v1/content_analysis/filters" \
  -H "x-api-key: mn_your_key_here"
```

### Response data

Illustrative abbreviated data; documented core fields are optional and may be null. Additional source fields are allowed.

```json
{
  "_warnings": [
    "example"
  ],
  "count": 0,
  "items": [
    {
      "applies_to": [
        "example"
      ],
      "doc": "example",
      "example": "example",
      "field": "example",
      "operators": [
        "example"
      ],
      "stage": "example",
      "type": "example",
      "values": [
        "example"
      ]
    }
  ],
  "stages": {
    "local": "example",
    "upstream": "example"
  },
  "syntax": "example"
}
```

[Field reference](https://www.monocrawl.com/docs/endpoints/content_analysis/filters#response) · [JSON Schema for response.data](https://www.monocrawl.com/schemas/content_analysis/filters.json)


## content_analysis/languages

`GET /v1/content_analysis/languages`

Reference list of the ISO-639-1 language codes content analysis can genuinely filter on, each marked with which source honours it. Static, costs no credits.

*Content Analysis languages*

| Parameter | Required | Description |
| --- | --- | --- |
| `dry_run` | no | Read a zero-credit estimate without fetching sources, running AI, or reserving credits. Cache status is a snapshot, not a guarantee at execution. Accepted values: 1, 0, true, false. Case, spaces, hyphens and underscores are interchangeable. — e.g. `1` |

### Useful optional inputs

- `dry_run`: Read a free estimate before fetching sources or scheduling paid work. Zero credits; cache status and availability are snapshots rather than guarantees.

**Cost:** free — 0 credits.

```bash
curl "https://www.monocrawl.com/v1/content_analysis/languages" \
  -H "x-api-key: mn_your_key_here"
```

### Response data

Illustrative abbreviated data; documented core fields are optional and may be null. Additional source fields are allowed.

```json
{
  "_warnings": [
    "example"
  ],
  "count": 0,
  "items": [
    {
      "code": "example",
      "filterable_via": [
        "example"
      ],
      "name": "example",
      "note": "example"
    }
  ]
}
```

[Field reference](https://www.monocrawl.com/docs/endpoints/content_analysis/languages#response) · [JSON Schema for response.data](https://www.monocrawl.com/schemas/content_analysis/languages.json)


## content_analysis/locations

`GET /v1/content_analysis/locations`

Reference list of the ISO-3166 alpha-2 country codes content analysis can genuinely filter on — publisher country for news, storefront for rating-distribution. Static, costs no credits.

*Content Analysis locations*

| Parameter | Required | Description |
| --- | --- | --- |
| `dry_run` | no | Read a zero-credit estimate without fetching sources, running AI, or reserving credits. Cache status is a snapshot, not a guarantee at execution. Accepted values: 1, 0, true, false. Case, spaces, hyphens and underscores are interchangeable. — e.g. `1` |

### Useful optional inputs

- `dry_run`: Read a free estimate before fetching sources or scheduling paid work. Zero credits; cache status and availability are snapshots rather than guarantees.

**Cost:** free — 0 credits.

```bash
curl "https://www.monocrawl.com/v1/content_analysis/locations" \
  -H "x-api-key: mn_your_key_here"
```

### Response data

Illustrative abbreviated data; documented core fields are optional and may be null. Additional source fields are allowed.

```json
{
  "_warnings": [
    "example"
  ],
  "count": 0,
  "items": [
    {
      "code": "example",
      "filterable_via": [
        "example"
      ],
      "name": "example",
      "note": "example"
    }
  ]
}
```

[Field reference](https://www.monocrawl.com/docs/endpoints/content_analysis/locations#response) · [JSON Schema for response.data](https://www.monocrawl.com/schemas/content_analysis/locations.json)


## content_analysis/phrase-trends

`GET /v1/content_analysis/phrase-trends`

Mention volume and sentiment for a keyword bucketed by day, week or month across the sources we can reach. Bucket heights are bounded by each source's per-query cap, so the series is a shape, not a census — the response says so explicitly.

*Keyword mention trends*

| Parameter | Required | Description |
| --- | --- | --- |
| `keyword` | yes | Phrase to trend — e.g. `kubernetes` |
| `date_from` | yes | ISO-8601 start of the window — e.g. `2026-08-01` |
| `date_to` | no | ISO-8601 end of the window (default now) — e.g. `2026-08-31` |
| `date_group` | no | day (default), week or month; max 400 buckets Accepted values: day, week, month. Case, spaces, hyphens and underscores are interchangeable. — e.g. `day` |
| `page_type` | no | all, news, forum, social or discussion Accepted values: all, news, forum, social, discussion. Case, spaces, hyphens and underscores are interchangeable. — e.g. `all` |
| `internal_list_limit` | no | Length of the embedded top-terms list (max 50) — e.g. `10` |
| `depth` | no | Items fetched PER SOURCE before bucketing (max 100) — e.g. `100` |
| `filters` | no | field:op:value segments joined by ; — see /v1/content_analysis/filters — e.g. `source:eq:hackernews` |
| `dry_run` | no | Read a zero-credit estimate without fetching sources, running AI, or reserving credits. Cache status is a snapshot, not a guarantee at execution. Accepted values: 1, 0, true, false. Case, spaces, hyphens and underscores are interchangeable. — e.g. `1` |

### Useful optional inputs

- `date_to`: Bound the end of the documented date window. Source acquisition and local filtering retain their documented costs.
- `depth`: Bound collection to the documented number of records or source pages. Depth semantics vary by endpoint and may affect the quote.
- `dry_run`: Read a free estimate before fetching sources or scheduling paid work. Zero credits; cache status and availability are snapshots rather than guarantees.

**Cost:** 5 credits at list price per successful uncached response; variable-cost operations may quote or settle a different charge. Confirmed uncharged or refunded failures report zero. Pending reconciliation can report credits_used:null; retain request_id and the original idempotency key.

```bash
curl "https://www.monocrawl.com/v1/content_analysis/phrase-trends?keyword=kubernetes&date_from=2026-08-01" \
  -H "x-api-key: mn_your_key_here"
```

### Response data

Illustrative abbreviated data; documented core fields are optional and may be null. Additional source fields are allowed.

```json
{
  "_warnings": [
    "example"
  ],
  "bucket_count": 0,
  "buckets": [
    {
      "bucket_end": "example",
      "bucket_start": "example",
      "by_source": {
        "google_news": 0,
        "hackernews": 0,
        "reddit": 0
      },
      "mentions": 0,
      "sentiment": {
        "mean_score": 0,
        "negative": 0,
        "neutral": 0,
        "positive": 0
      }
    }
  ],
  "date_from": "2026-09-01T12:00:00Z",
  "date_group": "2026-09-01T12:00:00Z",
  "date_to": "2026-09-01T12:00:00Z",
  "excluded": {
    "out_of_window_mentions": 0,
    "undated_mentions": 0
  },
  "filters_applied": [],
  "keyword": "example",
  "sentiment_method": {
    "ai_used": false,
    "kind": "example",
    "known_limits": [
      "example"
    ],
    "lexicon": {
      "diminishers": 0,
      "intensifiers": 0,
      "negative_terms": 0,
      "negators": 0,
      "positive_terms": 0,
      "total_terms": 0
    },
    "modifiers": {
      "diminisher": "example",
      "intensifier": "example",
      "matching": "example",
      "negation": "example"
    },
    "scoring": "example",
    "thresholds": {
      "negative": 0,
      "positive": 0
    }
  },
  "sources": [
    {
      "endpoint": "example",
      "error": "example",
      "kept": 0,
      "ok": false,
      "returned": 0,
      "source": "example",
      "status": 0
    }
  ],
  "sources_unavailable": [
    {
      "reason": "example",
      "source": "example"
    }
  ],
  "top_terms": [
    {
      "mentions": 0,
      "occurrences": 0,
      "term": "example"
    }
  ],
  "totals": {
    "buckets_with_mentions": 0,
    "duplicates_removed": 0,
    "gathered_before_filters": 0,
    "mentions": 0,
    "peak_bucket": {
      "bucket_start": "example",
      "mentions": 0
    },
    "sentiment": {
      "max_score": 0,
      "mean_score": 0,
      "median_score": 0,
      "min_score": 0,
      "negative": 0,
      "neutral": 0,
      "positive": 0,
      "total": 0
    }
  }
}
```

[Field reference](https://www.monocrawl.com/docs/endpoints/content_analysis/phrase-trends#response) · [JSON Schema for response.data](https://www.monocrawl.com/schemas/content_analysis/phrase-trends.json)


## content_analysis/rating-distribution

`GET /v1/content_analysis/rating-distribution`

Real 1-5 star histogram for a keyword that resolves to an App Store app, built from actual published reviews plus Apple's own lifetime average. If the keyword resolves to nothing rateable it returns 404 — no histogram is ever synthesised.

*Keyword rating distribution*

| Parameter | Required | Description |
| --- | --- | --- |
| `keyword` | yes | Name of a rateable entity — currently an App Store app — e.g. `Spotify` |
| `country` | no | 2-letter App Store storefront (default us); filters=location_code:eq:gb works too — e.g. `us` |
| `depth` | no | Pages of up to 50 reviews to sample (max 5) — e.g. `3` |
| `filters` | no | Only location_code applies here — see /v1/content_analysis/filters — e.g. `location_code:eq:gb` |
| `dry_run` | no | Read a zero-credit estimate without fetching sources, running AI, or reserving credits. Cache status is a snapshot, not a guarantee at execution. Accepted values: 1, 0, true, false. Case, spaces, hyphens and underscores are interchangeable. — e.g. `1` |

### Useful optional inputs

- `country`: Select the documented market or country filter. Read this endpoint’s country semantics; filtering and source request location can differ.
- `depth`: Bound collection to the documented number of records or source pages. Depth semantics vary by endpoint and may affect the quote.
- `dry_run`: Read a free estimate before fetching sources or scheduling paid work. Zero credits; cache status and availability are snapshots rather than guarantees.

**Cost:** 3 credits at list price per successful uncached response; variable-cost operations may quote or settle a different charge. Confirmed uncharged or refunded failures report zero. Pending reconciliation can report credits_used:null; retain request_id and the original idempotency key.

```bash
curl "https://www.monocrawl.com/v1/content_analysis/rating-distribution?keyword=Spotify" \
  -H "x-api-key: mn_your_key_here"
```

### Response data

Illustrative abbreviated data; documented core fields are optional and may be null. Additional source fields are allowed.

```json
{
  "_warnings": [
    "example"
  ],
  "distribution": [
    {
      "count": 0,
      "rating": 0,
      "share": 0
    }
  ],
  "filters_applied": [],
  "histogram": {},
  "keyword": "example",
  "mean_rating": 0,
  "resolved_entity": {
    "developer": "example",
    "exact_name_match": false,
    "id": "example",
    "name": "example",
    "search_rank": 0,
    "type": "example",
    "url": "https://example.com/example"
  },
  "reviews_sampled": 0,
  "sources": [
    {
      "endpoint": "example",
      "ok": false,
      "returned": 0,
      "source": "example"
    }
  ],
  "sources_unavailable": [
    {
      "reason": "example",
      "source": "example"
    }
  ],
  "store_reported": {
    "average_rating": 0,
    "note": "example",
    "rating_count": 0
  },
  "storefront": "example"
}
```

[Field reference](https://www.monocrawl.com/docs/endpoints/content_analysis/rating-distribution#response) · [JSON Schema for response.data](https://www.monocrawl.com/schemas/content_analysis/rating-distribution.json)


## content_analysis/search

`GET /v1/content_analysis/search`

Web citations of a keyword from news, Hacker News and Reddit with deterministic per-mention sentiment (in-adapter lexicon, no AI), Monocrawl category labels and per-source provenance. Fans out to 3 upstreams; coverage is partial and every response names what it could not consult.

*Keyword mention search*

| Parameter | Required | Description |
| --- | --- | --- |
| `keyword` | yes | Phrase to find mentions of — e.g. `kubernetes` |
| `page_type` | no | all, news, forum, social or discussion — maps onto our source roster; review/blog/ecommerce classes are rejected with an explanation rather than silently served from the wrong sources Accepted values: all, news, forum, social, discussion. Case, spaces, hyphens and underscores are interchangeable. — e.g. `all` |
| `search_mode` | no | as_is (default) or one_per_domain (keep the first mention per publisher) Accepted values: as_is, one_per_domain. Case, spaces, hyphens and underscores are interchangeable. — e.g. `as_is` |
| `limit` | no | Mentions per page after merging (max 100) — e.g. `25` |
| `cursor` | no | Offset into the merged result set, from a previous response — e.g. `25` |
| `order_by` | no | published_at:desc\|asc, sentiment:desc\|asc, source or relevance Accepted values: published_at:desc, published_at:asc, sentiment:desc, sentiment:asc, source, relevance. Case, spaces, hyphens and underscores are interchangeable. — e.g. `published_at:desc` |
| `depth` | no | Items fetched PER SOURCE before merging (max 100) — e.g. `25` |
| `positive_connotation_threshold` | no | Score in (0,1] at or above which a mention is labelled positive — e.g. `0.25` |
| `sentiments_connotation_threshold` | no | Score magnitude at or below which a mention is labelled negative — e.g. `0.25` |
| `filters` | no | field:op:value segments joined by ; — see /v1/content_analysis/filters — e.g. `source:in:hackernews,reddit;sentiment:eq:negative` |
| `dry_run` | no | Read a zero-credit estimate without fetching sources, running AI, or reserving credits. Cache status is a snapshot, not a guarantee at execution. Accepted values: 1, 0, true, false. Case, spaces, hyphens and underscores are interchangeable. — e.g. `1` |

### Useful optional inputs

- `limit`: Bound the returned rows to what your task needs. A smaller limit does not necessarily reduce source calls or price; inspect the quote.
- `depth`: Bound collection to the documented number of records or source pages. Depth semantics vary by endpoint and may affect the quote.
- `dry_run`: Read a free estimate before fetching sources or scheduling paid work. Zero credits; cache status and availability are snapshots rather than guarantees.

**Cost:** 3 credits at list price per successful uncached response; variable-cost operations may quote or settle a different charge. Confirmed uncharged or refunded failures report zero. Pending reconciliation can report credits_used:null; retain request_id and the original idempotency key.

```bash
curl "https://www.monocrawl.com/v1/content_analysis/search?keyword=kubernetes" \
  -H "x-api-key: mn_your_key_here"
```

### Response data

Illustrative abbreviated data; documented core fields are optional and may be null. Additional source fields are allowed.

```json
{
  "_warnings": [
    "example"
  ],
  "count": 0,
  "cursor": null,
  "dropped": 0,
  "duplicates_removed": 0,
  "filters_applied": [],
  "gathered": 0,
  "items": [
    {
      "author": "example",
      "categories": [
        "example"
      ],
      "engagement": {
        "comments": 0,
        "score": 0
      },
      "matched_terms": [
        {}
      ],
      "primary_category": "example",
      "published_at": "2026-09-01T12:00:00Z",
      "publisher": "example",
      "raw_sentiment_score": 0,
      "sentiment": {
        "label": "example",
        "score": 0
      },
      "source": "example",
      "text_source": "example",
      "title": "example",
      "url": "https://example.com/example"
    }
  ],
  "keyword": "example",
  "order_by": "example",
  "search_mode": "example",
  "sentiment_method": {
    "ai_used": false,
    "kind": "example",
    "known_limits": [
      "example"
    ],
    "lexicon": {
      "diminishers": 0,
      "intensifiers": 0,
      "negative_terms": 0,
      "negators": 0,
      "positive_terms": 0,
      "total_terms": 0
    },
    "modifiers": {
      "diminisher": "example",
      "intensifier": "example",
      "matching": "example",
      "negation": "example"
    },
    "scoring": "example",
    "thresholds": {
      "negative": 0,
      "positive": 0
    }
  },
  "sources": [
    {
      "endpoint": "example",
      "error": "example",
      "kept": 0,
      "ok": false,
      "returned": 0,
      "source": "example",
      "status": 0
    }
  ],
  "sources_unavailable": [
    {
      "reason": "example",
      "source": "example"
    }
  ],
  "total_matched": 0
}
```

[Field reference](https://www.monocrawl.com/docs/endpoints/content_analysis/search#response) · [JSON Schema for response.data](https://www.monocrawl.com/schemas/content_analysis/search.json)


## content_analysis/sentiment

`GET /v1/content_analysis/sentiment`

Positive / neutral / negative split for a keyword with mean, median and a score histogram, plus the most positive and most negative mentions. Lexicon-based and fully deterministic — the method, its thresholds and its limits are returned with every response.

*Keyword sentiment breakdown*

| Parameter | Required | Description |
| --- | --- | --- |
| `keyword` | yes | Phrase to score — e.g. `kubernetes` |
| `page_type` | no | all, news, forum, social or discussion Accepted values: all, news, forum, social, discussion. Case, spaces, hyphens and underscores are interchangeable. — e.g. `all` |
| `positive_connotation_threshold` | no | Score in (0,1] at or above which a mention is positive — e.g. `0.25` |
| `sentiments_connotation_threshold` | no | Score magnitude at or below which a mention is negative — e.g. `0.25` |
| `depth` | no | Items fetched PER SOURCE before aggregating (max 100) — e.g. `50` |
| `filters` | no | field:op:value segments joined by ; — see /v1/content_analysis/filters — e.g. `source:eq:hackernews` |
| `dry_run` | no | Read a zero-credit estimate without fetching sources, running AI, or reserving credits. Cache status is a snapshot, not a guarantee at execution. Accepted values: 1, 0, true, false. Case, spaces, hyphens and underscores are interchangeable. — e.g. `1` |

### Useful optional inputs

- `depth`: Bound collection to the documented number of records or source pages. Depth semantics vary by endpoint and may affect the quote.
- `dry_run`: Read a free estimate before fetching sources or scheduling paid work. Zero credits; cache status and availability are snapshots rather than guarantees.

**Cost:** 3 credits at list price per successful uncached response; variable-cost operations may quote or settle a different charge. Confirmed uncharged or refunded failures report zero. Pending reconciliation can report credits_used:null; retain request_id and the original idempotency key.

```bash
curl "https://www.monocrawl.com/v1/content_analysis/sentiment?keyword=kubernetes" \
  -H "x-api-key: mn_your_key_here"
```

### Response data

Illustrative abbreviated data; documented core fields are optional and may be null. Additional source fields are allowed.

```json
{
  "_warnings": [
    "example"
  ],
  "by_source": [
    {
      "max_score": 0,
      "mean_score": 0,
      "median_score": 0,
      "min_score": 0,
      "negative": 0,
      "neutral": 0,
      "positive": 0,
      "source": "example",
      "total": 0
    }
  ],
  "counts": {
    "negative": 0,
    "neutral": 0,
    "positive": 0,
    "total": 0
  },
  "filters_applied": [],
  "keyword": "example",
  "max_score": 0,
  "mean_score": 0,
  "median_score": 0,
  "min_score": 0,
  "most_negative": [
    {
      "matched_terms": [
        {}
      ],
      "published_at": "2026-09-01T12:00:00Z",
      "sentiment": {
        "label": "example",
        "score": 0
      },
      "source": "example",
      "title": "example",
      "url": "https://example.com/example"
    }
  ],
  "most_positive": [
    {
      "matched_terms": [
        {}
      ],
      "published_at": "2026-09-01T12:00:00Z",
      "sentiment": {
        "label": "example",
        "score": 0
      },
      "source": "example",
      "title": "example",
      "url": "https://example.com/example"
    }
  ],
  "score_histogram": [
    {
      "from": 0,
      "mentions": 0,
      "to": 0
    }
  ],
  "sentiment_method": {
    "ai_used": false,
    "kind": "example",
    "known_limits": [
      "example"
    ],
    "lexicon": {
      "diminishers": 0,
      "intensifiers": 0,
      "negative_terms": 0,
      "negators": 0,
      "positive_terms": 0,
      "total_terms": 0
    },
    "modifiers": {
      "diminisher": "example",
      "intensifier": "example",
      "matching": "example",
      "negation": "example"
    },
    "scoring": "example",
    "thresholds": {
      "negative": 0,
      "positive": 0
    }
  },
  "share": {
    "negative": 0,
    "neutral": 0,
    "positive": 0
  },
  "sources": [
    {
      "endpoint": "example",
      "error": "example",
      "kept": 0,
      "ok": false,
      "returned": 0,
      "source": "example",
      "status": 0
    }
  ],
  "sources_unavailable": [
    {
      "reason": "example",
      "source": "example"
    }
  ],
  "unscored_mentions": 0,
  "volume": {
    "duplicates_removed": 0,
    "gathered_before_filters": 0,
    "mentions": 0
  }
}
```

[Field reference](https://www.monocrawl.com/docs/endpoints/content_analysis/sentiment#response) · [JSON Schema for response.data](https://www.monocrawl.com/schemas/content_analysis/sentiment.json)


## content_analysis/summary

`GET /v1/content_analysis/summary`

Aggregate view of a keyword's mentions: volume, per-source breakdown, sentiment split, category mix, top publishers and top terms — all computed deterministically from the mentions we could reach.

*Keyword mention summary*

| Parameter | Required | Description |
| --- | --- | --- |
| `keyword` | yes | Phrase to summarise mentions of — e.g. `kubernetes` |
| `page_type` | no | all, news, forum, social or discussion Accepted values: all, news, forum, social, discussion. Case, spaces, hyphens and underscores are interchangeable. — e.g. `all` |
| `positive_connotation_threshold` | no | Score in (0,1] at or above which a mention is positive — e.g. `0.25` |
| `sentiments_connotation_threshold` | no | Score magnitude at or below which a mention is negative — e.g. `0.25` |
| `internal_list_limit` | no | Length of the embedded top-terms / category / publisher lists (max 50) — e.g. `10` |
| `depth` | no | Items fetched PER SOURCE before aggregating (max 100) — e.g. `50` |
| `filters` | no | field:op:value segments joined by ; — see /v1/content_analysis/filters — e.g. `category:eq:reliability_outage` |
| `dry_run` | no | Read a zero-credit estimate without fetching sources, running AI, or reserving credits. Cache status is a snapshot, not a guarantee at execution. Accepted values: 1, 0, true, false. Case, spaces, hyphens and underscores are interchangeable. — e.g. `1` |

### Useful optional inputs

- `depth`: Bound collection to the documented number of records or source pages. Depth semantics vary by endpoint and may affect the quote.
- `dry_run`: Read a free estimate before fetching sources or scheduling paid work. Zero credits; cache status and availability are snapshots rather than guarantees.

**Cost:** 3 credits at list price per successful uncached response; variable-cost operations may quote or settle a different charge. Confirmed uncharged or refunded failures report zero. Pending reconciliation can report credits_used:null; retain request_id and the original idempotency key.

```bash
curl "https://www.monocrawl.com/v1/content_analysis/summary?keyword=kubernetes" \
  -H "x-api-key: mn_your_key_here"
```

### Response data

Illustrative abbreviated data; documented core fields are optional and may be null. Additional source fields are allowed.

```json
{
  "_warnings": [
    "example"
  ],
  "by_category": [
    {
      "code": "example",
      "mean_score": 0,
      "mentions": 0,
      "name": "example"
    }
  ],
  "by_source": [
    {
      "mentions": 0,
      "sentiment": {
        "max_score": 0,
        "mean_score": 0,
        "median_score": 0,
        "min_score": 0,
        "negative": 0,
        "neutral": 0,
        "positive": 0,
        "total": 0
      },
      "source": "example"
    }
  ],
  "filters_applied": [],
  "first_mention_at": "2026-09-01T12:00:00Z",
  "keyword": "example",
  "last_mention_at": "2026-09-01T12:00:00Z",
  "sentiment": {
    "max_score": 0,
    "mean_score": 0,
    "median_score": 0,
    "min_score": 0,
    "negative": 0,
    "neutral": 0,
    "positive": 0,
    "total": 0
  },
  "sentiment_method": {
    "ai_used": false,
    "kind": "example",
    "known_limits": [
      "example"
    ],
    "lexicon": {
      "diminishers": 0,
      "intensifiers": 0,
      "negative_terms": 0,
      "negators": 0,
      "positive_terms": 0,
      "total_terms": 0
    },
    "modifiers": {
      "diminisher": "example",
      "intensifier": "example",
      "matching": "example",
      "negation": "example"
    },
    "scoring": "example",
    "thresholds": {
      "negative": 0,
      "positive": 0
    }
  },
  "sources": [
    {
      "endpoint": "example",
      "error": "example",
      "kept": 0,
      "ok": false,
      "returned": 0,
      "source": "example",
      "status": 0
    }
  ],
  "sources_unavailable": [
    {
      "reason": "example",
      "source": "example"
    }
  ],
  "top_publishers": [
    {
      "mean_score": 0,
      "mentions": 0,
      "publisher": "example"
    }
  ],
  "top_terms": [
    {
      "mentions": 0,
      "occurrences": 0,
      "term": "example"
    }
  ],
  "uncategorised_mentions": 0,
  "volume": {
    "duplicates_removed": 0,
    "gathered_before_filters": 0,
    "mentions": 0,
    "sources_attempted": 0,
    "sources_succeeded": 0,
    "undated": 0
  }
}
```

[Field reference](https://www.monocrawl.com/docs/endpoints/content_analysis/summary#response) · [JSON Schema for response.data](https://www.monocrawl.com/schemas/content_analysis/summary.json)

