> ## Documentation Index
> Fetch the complete documentation index at: https://docs.particle.pro/llms.txt
> Use this file to discover all available pages before exploring further.

# particle_podcast_get_share_of_voice

> Split a person's, company's or entity's podcast mentions, or the lines that say a keyword, by the speakers' occupations or fields of research.

Split a person's, company's or entity's podcast mentions by who said them: the speakers' occupations (SOC 2018) or fields of research (ANZSRC 2020). It answers "who is talking about NVIDIA: investors, engineers, journalists?" in one call. For each group you get its mention lines, its share, and the distinct speakers and episodes over a window, optionally bucketed by day, week or month.

* `speakers="guests"` leaves hosts out.
* `level="detailed"` splits into detailed occupations or ANZSRC groups instead of SOC major groups or ANZSRC divisions.
* `podcast_slug` or `publisher_slug` narrows the split to one show or network.

Shares are of the mentions spoken by someone with an expertise read. A person listed under several codes counts in each, so shares can sum past 100%. Ad reads are left out unless `include_ads` is set: ad copy is not a speaker's voice.

Each group's code is a `guest_occupation` (or `guest_field`) value. To read what that group said about an entity, pass it to [`particle_podcast_find_mentions`](https://docs.particle.pro/mcp/tools/podcasts/podcast-find-mentions) with the same entity. `find_mentions` takes no keyword: for a keyword, [`particle_podcast_search_transcripts`](https://docs.particle.pro/mcp/tools/podcasts/podcast-search-transcripts) with the same `keyword_search` and the code finds candidate passages. Its guest filters keep segments where such a guest speaks, not lines, so check each matching line's speaker; host lines counted by the default all-speakers split are not reached that way.

## Keywords

`keyword_search` splits the lines that say a word or phrase instead of an entity's mentions, so "who is talking about prior authorization?" has a per-speaker answer. A line counts only when its own speaker said every word in it, case-insensitive. Wrap words in double quotes to require them adjacent and in order. Words are matched as spoken: a word with two meanings counts both, and `authorization` does not match `authorizations`. Lines in intros, transitions and outros count as an entity's mentions do, and ad reads stay out unless `include_ads` is set.

A keyword's window may span at most 90 days. A keyword said in more than 3,000 episodes in the window, or matching more content than the keyword index will count, returns `validation_error` with ways to narrow it: a shorter window, `podcast_slug` or `publisher_slug`, or a quoted phrase. A keyword over 500 characters, or one with no words (`""`), returns `validation_error` too. Finding a broad keyword's lines reads every transcript that says it, so a call over a busy word can take around 20 seconds; a specific phrase answers in a few.

This is not what [`particle_podcast_get_episode_timeseries`](https://docs.particle.pro/mcp/tools/podcasts/podcast-get-episode-timeseries) counts with `keyword_search` and `guest_occupation`. That count is episode-level and never checks who spoke: a matching segment counts when its episode had such a guest, even if the host said the words.

For an entity's mention lines themselves, use [`particle_podcast_find_mentions`](https://docs.particle.pro/mcp/tools/podcasts/podcast-find-mentions); for a keyword's passages, [`particle_podcast_search_transcripts`](https://docs.particle.pro/mcp/tools/podcasts/podcast-search-transcripts). For a brand's mention volume over time and the shows carrying it, use [`particle_podcast_get_mention_trends`](https://docs.particle.pro/mcp/tools/podcasts/podcast-get-mention-trends).

## Inputs

| Field | Type | Required | Default | Description |
| - | - | - | - | - |
| `person_slug` | string | one of | — | Person slug from `particle_person_resolve` (e.g. `"sam-altman"`). Exactly one of `person_slug`, `company_slug`, `entity_slug` or `keyword_search` is required. |
| `company_slug` | string | one of | — | Company slug or domain from `particle_company_resolve` (e.g. `"nvidia"`). Resolves to the company's linked entity. |
| `entity_slug` | string | one of | — | Knowledge-graph entity slug from `particle_entity_resolve`, for anything that isn't a person or company (e.g. `"germany"`). |
| `keyword_search` | string | one of | — | Split the lines that say these words instead of an entity's mentions: every word in one line, case-insensitive; wrap words in double quotes to require them adjacent and in order. See [Keywords](#keywords). |
| `by` | string | no | `occupation` | Group the speakers by `occupation` (SOC 2018) or `field` (ANZSRC 2020 fields of research). |
| `level` | string | no | `major` | Group level: `major` (SOC major groups or ANZSRC divisions) or `detailed` (detailed occupations or ANZSRC groups). |
| `speakers` | string | no | `all` | Whose lines count: `all` (hosts included) or `guests` (guests and panelists only). |
| `podcast_slug` | string | no | — | Only mentions inside this podcast (slug from `particle_podcast_resolve`). |
| `publisher_slug` | string | no | — | Only mentions on podcasts of this publisher (network), by slug. |
| `include_ads` | boolean | no | `false` | Count mentions inside ad reads too. |
| `published_after` | string | no | 30 days before `published_before` | Only episodes published on or after this date (`YYYY-MM-DD`). The window may span at most 365 days, or 90 for a keyword. |
| `published_before` | string | no | now | Only episodes published on or before this date (`YYYY-MM-DD`). |
| `interval` | string | no | — | Add each group's mentions per `day`, `week` or `month`. |
| `limit` | integer (1–50) | no | 10 | Groups to return, most mentioned first. |

Passing no subject returns `missing_parameter`, and passing two returns `invalid_input`: call once per subject. A window longer than 365 days (90 for a keyword) returns `invalid_parameter`. A subject slug that matches nothing returns `unresolved_reference`, so an unknown name is never read as "nobody mentions it". A keyword names no record, so a keyword nobody said returns an empty split.

## Output

A markdown document headed `## Share of voice — <Name> (<slug>) by <occupation|field> (<major|detailed>)` (`lines saying <keyword>` in place of the name for a keyword), then two rows:

* `**Window:**` — `start to end (end excluded)`. The window is `[start, end)`, so a `published_before` date shows as the day after it.
* `**Mentions:**` — the total mention lines, and how many of them were spoken by someone with an expertise read, with that share. Group shares are of the attributed lines.

A `### Groups` section follows, with numbered lines formatted `N. Title (code) — M mentions, share S%, P speakers, E episodes`. With `interval`, each group gets an indented line of `bucket-start count` pairs joined by `·`. A closing paragraph repeats that shares can sum past 100% and names the `guest_occupation` (or `guest_field`) parameter for a group's lines: with [`particle_podcast_find_mentions`](https://docs.particle.pro/mcp/tools/podcasts/podcast-find-mentions) for an entity, or, for a keyword, [`particle_podcast_search_transcripts`](https://docs.particle.pro/mcp/tools/podcasts/podcast-search-transcripts) and the same `keyword_search` to find candidate passages whose speakers you then check.

When no mention in the window was spoken by someone with an expertise read, a single paragraph says so and suggests widening the window. A person with no linked knowledge-graph entity gets a note instead of a split.

Sample (`company_slug="nvidia", speakers="guests", limit=3`, truncated):

```markdown theme={"dark"}
## Share of voice — NVIDIA (nvidia) by occupation (major)

**Window:** 2026-09-10 to 2026-10-11 (end excluded)
**Mentions:** 4812 lines, 2967 spoken by someone with an expertise read (61.66%); shares are of those

### Groups

1. Business and Financial Operations Occupations (13-0000) — 1194 mentions, share 40.24%, 412 speakers, 803 episodes
2. Management Occupations (11-0000) — 1071 mentions, share 36.10%, 389 speakers, 731 episodes
3. Computer and Mathematical Occupations (15-0000) — 402 mentions, share 13.55%, 141 speakers, 287 episodes

A person listed under several codes counts in each, so shares can sum past 100%. Read a group's lines with particle_podcast_find_mentions and guest_occupation=<code>.
```

Sample (`keyword_search="\"prior authorization\"", limit=3`):

```markdown theme={"dark"}
## Share of voice — lines saying "prior authorization" by occupation (major)

**Window:** 2026-09-11 to 2026-10-11 (end excluded)
**Mentions:** 613 lines, 554 spoken by someone with an expertise read (90.38%); shares are of those
### Groups

1. Healthcare Practitioners and Technical Occupations (29-0000) — 186 mentions, share 33.60%, 90 speakers, 103 episodes
2. Management Occupations (11-0000) — 101 mentions, share 18.20%, 49 speakers, 50 episodes
3. Legal Occupations (23-0000) — 85 mentions, share 15.30%, 7 speakers, 7 episodes
```

## Example

```text theme={"dark"}
Agent calls: particle_podcast_get_share_of_voice {
  "company_slug": "nvidia",
  "by": "occupation",
  "level": "detailed",
  "speakers": "guests",
  "interval": "week"
}
```

Then read what the leading group said:

```text theme={"dark"}
Agent calls: particle_podcast_find_mentions {
  "company_slug": "nvidia",
  "guest_occupation": "13-2051"
}
```

## Related

* REST equivalent: [`GET /v1/podcasts/mentions/share-of-voice`](https://docs.particle.pro/people/expertise#share-of-voice).
* Read a group's mention lines with [`particle_podcast_find_mentions`](https://docs.particle.pro/mcp/tools/podcasts/podcast-find-mentions) and its `guest_` filters.
* Look up an occupation or field with [`particle_expertise_resolve`](https://docs.particle.pro/mcp/tools/people/expertise-resolve).


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.