---
title: "Get mention timeseries"
method: GET
path: "/v1/podcasts/mentions/timeseries"
tags: ["Podcast Episode Search", "tier:standard"]
---

# Get mention timeseries

`GET /v1/podcasts/mentions/timeseries`

## Request

- Base URL: `https://api.particle.pro`
- URL: `https://api.particle.pro/v1/podcasts/mentions/timeseries`
- Auth: one of:
  - API key in header `X-API-Key`
  - HTTP bearer

Returns time-bucketed counts of episodes mentioning an entity, plus per-bucket mention line and distinct podcast counts and range totals — the aggregate twin of `/v1/podcasts/mentions`. For windows the search can fully enumerate, bucket counts match what it returns: mentions inside ad reads are excluded by default (pass `include_ads=true` to count them), so use this for mention trend charts instead of paging the search once per period. Buckets are UTC-aligned, zero-filled, and Monday-aligned for weeks; a bucket the window cuts through, such as the current week of a window running to now, is marked `partial`, so compare full buckets with each other. Requires entity_id or company_id. Omitting since aggregates all time. Ranges are capped at 1000 buckets.

For which podcasts carried the mentions, compared with the period before, use `/v1/podcasts/mentions/by-podcast`. For appearance trends by speaker role across episode-level filters (language, duration, keyword_search) use `/v1/podcasts/episodes/timeseries` instead; its `role=mention` counts include ad reads.

## Query parameters

- `entity_id` string: Entity slug (e.g., 'sam-altman') or ID. Required when company_id is not set.
- `company_id` string: Company slug, domain, or ID. Required when entity_id is not set. Resolves to the company's linked entity.
- `publisher_id` string: Restrict to mentions on podcasts attributed to one publisher (network), by slug or ID.
- `role` 'guest' | 'host' | 'panelist' | 'correspondent' | 'mention': Constrain how the entity participates: guest, host, panelist, correspondent, or mention.
- `include_ads` boolean: Mentions inside ad reads (sponsor ad segments, or lines spoken by an advertiser) are excluded by default. Pass true to include them.
- `language` string: Restrict to episodes of podcasts in this language (ISO 639-1 code, e.g. 'fr'). Matches the podcast's primary language subtag, so 'fr' covers 'fr-FR'.
- `guest_occupation` string: Only mentions spoken by a guest listed under this SOC 2018 or ISCO-08 occupation (code, slug, or title), including a SOC group or everyday name such as physicians or doctors. A word with no occupation filters by the field of research or capacity it names: oncologists is field 3211, founders is guest_capacity=executive_founder.
- `guest_field` string: Only mentions spoken by a guest listed under this ANZSRC 2020 field of research (code, slug, or title).
- `guest_standing` 'established' | 'self_described' | 'unverified': Only mentions spoken by a guest whose standing is recognized this way.
- `guest_seniority` 'professional' | 'senior' | 'distinguished': Only mentions spoken by a guest at this seniority or above.
- `guest_capacity` 'researcher' | 'licensed_professional' | 'practitioner' | 'executive_founder' | 'public_official' | 'journalist_analyst' | 'creator_entertainer' | 'athlete_coach' | 'clergy' | 'firsthand' | 'layperson': Only mentions spoken by a guest who knows their field in this capacity, such as executive_founder for founders. It narrows the other filters; an everyday word for a capacity passed as guest_occupation (founders, politicians) lands here too.
- `guest_practicing` boolean: Only mentions spoken by a guest who still works in guest_occupation, a SOC 2018 occupation or group.
- `guest_in_field` boolean: Only mentions spoken by a guest speaking within their field (the guest the other guest_ filters select, when given).
- `podcast_id` string: Restrict to mentions inside one podcast.
- `since` string: Only episodes published on or after this date. Omit to aggregate all time.
- `until` string: Only episodes published on or before this date. Defaults to now.
- `published_after` string: Deprecated alias of since.
- `published_before` string: Deprecated alias of until.
- `interval` 'day' | 'week' | 'month': Bucket width.

## Response `200`

OK

- MentionTimeseries
  - `buckets` MentionTimeseriesBucket[], nullable, required: Contiguous zero-filled buckets in ascending order
    - `episode_count` integer, required: Episodes with at least one counted mention in this bucket
    - `mention_count` integer, required: Counted mention lines in this bucket
    - `partial` boolean: True when the window cuts through this bucket, so it covers less than a full interval: the first bucket when since falls inside it, and the last when until does, as it does for a window that runs to now. Compare full buckets with each other.
    - `podcast_count` integer, required: Distinct podcasts those episodes aired on: how many shows carried the subject in this bucket
    - `start` string, required: Bucket start as a UTC date
  - `company` CompanyCompact
    - `description` string: Short company description, when known.
    - `domain` string: Primary website domain (e.g. 'nvidia.com'), when known.
    - `id` string, required: Company identifier (domain, slug, or encoded ID)
    - `image_url` string: Company logo or image URL
    - `name` string, required: Company name
    - `slug` string: Stable human-readable handle (the linked knowledge-graph slug, e.g. 'nvidia'), when known. Companies have no slug of their own; prefer this for display and pass it (or id) to /v1/companies.
    - `ticker` string: Primary stock ticker symbol, when listed.
  - `distinct_podcasts` integer, required: Distinct podcasts those episodes aired on
  - `end` string: UTC date of the range's exclusive upper bound. When the bound falls inside a day, such as the default of now, mentions on this date up to the bound are still counted.
  - `entity` EntityCompact
    - `company` EntityCompany
      - `domain` string: Company website domain
      - `id` string, required: Company identifier
      - `ticker` string: Primary stock ticker symbol
    - `description` string: Short description
    - `id` string, required: Entity ID
    - `image_url` string: Entity image URL
    - `name` string, required: Entity name
    - `person` EntityPerson
      - `company` string: Current company name
      - `id` string, required: Person identifier
      - `image_url` string: Person headshot URL
      - `title` string: Current role title
    - `slug` string, required: Human-readable slug identifier
    - `type` EntityType
      - `name` string, required: Human-friendly display label (e.g. 'Company').
      - `slug` string, required: Stable identifier, safe to pass to the type query parameter (e.g. 'company').
    - `wikipedia_url` string: Wikipedia URL
  - `interval` 'day' | 'week' | 'month', required: Bucket width
  - `start` string: Start of the first bucket as a UTC date
  - `total_episodes` integer, required: Episodes with at least one counted mention in the range
  - `total_mentions` integer, required: Counted mention lines across those episodes

## Other responses

- `402`: Payment Required. Read error_code. payment_required is the x402 path: either a keyless request being challenged — pay $0.04 in USDC per request (requirements in the PAYMENT-REQUIRED header) or send a pp_ API key — or a supplied payment that failed settlement (details in the PAYMENT-RESPONSE header; retry the same signature before signing a new one). See https://docs.particle.pro/x402. Any other code means the credential was accepted but does not cover this request (a plan or session gate such as premium_required or paid_plan_confirmation_required); its resolve says how to obtain access, and no payment header is sent.
- `default`: Error

---

[API](https://skmtc.dev/particle/apis/particle-api.md) · [All operations](https://skmtc.dev/particle/apis/particle-api/llms.txt) · [OpenAPI document](https://skmtc.dev/particle/apis/particle-api/revisions/416ba82ab9d7?raw)
