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

# Particle: Get Publisher Advertising Leaderboard

> Rank podcast publishers (networks) by an advertising metric such as ad_count, unique_sponsors or ads_per_active_podcast.

Rank podcast publishers (networks) by an advertising metric such as ad\_count, unique\_sponsors or ads\_per\_active\_podcast.

> [!NOTE]
>
> Tool ID: `particle_get_publisher_advertising_leaderboard`

## Run this action

Use the TypeScript SDK for one call. Use `ctx.tools.execute(...)` inside a Play for durable calls, scheduled calls, or CSV processing.

```ts theme={"languages":{"custom":["/languages/deepline-prompt.json"]}}
import { Deepline } from 'deepline';

const deepline = await Deepline.connect();
const result = await deepline.tools.execute(
  'particle_get_publisher_advertising_leaderboard',
  {
    "limit": 25,
    "cursor": "cursor_123",
    "metric": "ad_count"
  },
);

console.log(result.toolResponse.raw);
```

### CLI

```bash theme={"languages":{"custom":["/languages/deepline-prompt.json"]}}
deepline tools execute particle_get_publisher_advertising_leaderboard --input '{
  "limit": 25,
  "cursor": "cursor_123",
  "metric": "ad_count"
}' --json
```

## Example response

The SDK returns this shape at `result.toolResponse.raw`. The example values illustrate the response.

```json theme={"languages":{"custom":["/languages/deepline-prompt.json"]}}
{
  "data": {
    "data": [
      {
        "ad_count": 123,
        "ads_per_active_podcast": 123,
        "coverage": {
          "active_coverage": 123,
          "active_podcasts": 123,
          "total_podcasts": 123
        },
        "episode_reach": 123,
        "publisher": {
          "id": "id_123",
          "name": "Example"
        },
        "rank": 123,
        "unique_sponsors": 123
      }
    ],
    "has_more": true
  }
}
```

Use `deepline describe particle_get_publisher_advertising_leaderboard --json` for the latest machine-readable contract.

## Input reference

Ranks podcast publishers by an advertising activity metric across their entire catalog. ads\_per\_active\_podcast is the monetization-density metric — small sub-networks (e.g. 'iHeartPodcasts and The Volume', 'Dan Patrick Network') typically rank far above broad catalogs on this dimension.

| Name | Type | Required | Default | Details |
| - | - | - | - | - |
| `payload.limit` | `integer` | No | `25` | Results per page Format: `int64`. Minimum: 1. Maximum: 100. |
| `payload.cursor` | `string` | No | — | Opaque pagination cursor from previous response |
| `payload.metric` | `"ad_count" \| "unique_sponsors" \| "podcast_reach" \| "episode_reach" \| "ads_per_active_podcast"` | No | `"ad_count"` | Metric to rank publishers by. ads\_per\_active\_podcast surfaces monetization density (small sub-networks often outrank big catalogs). Ranking reflects an all-time MV-fresh snapshot. This endpoint does not currently support time-window filters. Allowed: `ad_count`, `unique_sponsors`, `podcast_reach`, `episode_reach`, `ads_per_active_podcast`. |
| `payload.min_active_podcasts` | `integer` | No | `5` | Only rank publishers with at least this many active podcasts (catalog podcasts that have run at least one detected ad). Guards ads\_per\_active\_podcast and the other density-style metrics against tiny catalogs dominating the leaderboard — single-show publishers can otherwise rank #1 on ads\_per\_active\_podcast purely on noise. Format: `int64`. Minimum: 1. Maximum: 1000. |

<details>
  <summary>Show raw input schema</summary>

  ### Input JSON Schema

  ```json theme={"languages":{"custom":["/languages/deepline-prompt.json"]}}
  {
    "type": "object",
    "description": "Ranks podcast publishers by an advertising activity metric across their entire catalog. ads_per_active_podcast is the monetization-density metric — small sub-networks (e.g. 'iHeartPodcasts and The Volume', 'Dan Patrick Network') typically rank far above broad catalogs on this dimension.",
    "properties": {
      "limit": {
        "type": "integer",
        "description": "Results per page",
        "default": 25,
        "minimum": 1,
        "maximum": 100,
        "format": "int64"
      },
      "cursor": {
        "type": "string",
        "description": "Opaque pagination cursor from previous response"
      },
      "metric": {
        "type": "string",
        "description": "Metric to rank publishers by. ads_per_active_podcast surfaces monetization density (small sub-networks often outrank big catalogs). Ranking reflects an all-time MV-fresh snapshot; this endpoint does not currently support time-window filters.",
        "default": "ad_count",
        "enum": [
          "ad_count",
          "unique_sponsors",
          "podcast_reach",
          "episode_reach",
          "ads_per_active_podcast"
        ]
      },
      "min_active_podcasts": {
        "type": "integer",
        "description": "Only rank publishers with at least this many active podcasts (catalog podcasts that have run at least one detected ad). Guards ads_per_active_podcast and the other density-style metrics against tiny catalogs dominating the leaderboard — single-show publishers can otherwise rank #1 on ads_per_active_podcast purely on noise.",
        "default": 5,
        "minimum": 1,
        "maximum": 1000,
        "format": "int64"
      }
    },
    "required": [],
    "additionalProperties": false
  }
  ```
</details>

## Output reference

Standard tool result payload.

| Name | Type | Required | Default | Details |
| - | - | - | - | - |
| `result.data` | `object` | Yes | — | Provider response payload. |
| `result.data.cursor` | `string` | No | — | Pass to next request for more results |
| `result.data.data` | `array` | Yes | — | List of results |
| `result.data.data[].ad_count` | `integer` | Yes | — | Total ads across the publisher's catalog Format: `int64`. |
| `result.data.data[].ads_per_active_podcast` | `number` | Yes | — | Mean ad count across active podcasts — monetization density. Format: `double`. |
| `result.data.data[].coverage` | `object` | Yes | — | — |
| `result.data.data[].coverage.active_coverage` | `number` | Yes | — | active\_podcasts / total\_podcasts, clamped to \[0, 1]. Treat as a confidence proxy for the rolled-up totals. Format: `double`. |
| `result.data.data[].coverage.active_podcasts` | `integer` | Yes | — | Number of catalog podcasts that have at least one detected ad. Format: `int64`. |
| `result.data.data[].coverage.total_podcasts` | `integer` | Yes | — | Number of podcasts in the publisher's catalog (denormalized from podcast\_publishers.podcast\_count). Format: `int64`. |
| `result.data.data[].episode_reach` | `integer` | Yes | — | Distinct episodes with ads Format: `int64`. |
| `result.data.data[].publisher` | `object` | Yes | — | — |
| `result.data.data[].publisher.id` | `string` | Yes | — | Publisher ID |
| `result.data.data[].publisher.name` | `string` | Yes | — | Publisher name |
| `result.data.data[].publisher.slug` | `string` | No | — | Human-readable slug identifier (e.g., 'goalhanger', 'iheartpodcasts'). When present, accepted in place of the ID anywhere a publisher reference is taken in the API. Occasionally absent on publishers whose name doesn't slugify (e.g., scripts not representable in ASCII URL slugs). |
| `result.data.data[].rank` | `integer` | Yes | — | Position in the leaderboard Format: `int64`. |
| `result.data.data[].unique_sponsors` | `integer` | Yes | — | Distinct sponsors across the catalog Format: `int64`. |
| `result.data.has_more` | `boolean` | Yes | — | Whether more results exist |
| `result.meta` | `object` | No | — | Additional response metadata (status, paging). |

<details>
  <summary>Show raw output schema</summary>

  ### Output JSON Schema

  ```json theme={"languages":{"custom":["/languages/deepline-prompt.json"]}}
  {
    "type": "object",
    "description": "Standard tool result payload.",
    "properties": {
      "data": {
        "type": "object",
        "description": "Provider response payload.",
        "properties": {
          "cursor": {
            "type": "string",
            "description": "Pass to next request for more results"
          },
          "data": {
            "type": "array",
            "description": "List of results",
            "items": {
              "type": "object",
              "properties": {
                "ad_count": {
                  "type": "integer",
                  "description": "Total ads across the publisher's catalog",
                  "format": "int64"
                },
                "ads_per_active_podcast": {
                  "type": "number",
                  "description": "Mean ad count across active podcasts — monetization density.",
                  "format": "double"
                },
                "coverage": {
                  "type": "object",
                  "properties": {
                    "active_coverage": {
                      "type": "number",
                      "description": "active_podcasts / total_podcasts, clamped to [0, 1]. Treat as a confidence proxy for the rolled-up totals.",
                      "format": "double"
                    },
                    "active_podcasts": {
                      "type": "integer",
                      "description": "Number of catalog podcasts that have at least one detected ad.",
                      "format": "int64"
                    },
                    "total_podcasts": {
                      "type": "integer",
                      "description": "Number of podcasts in the publisher's catalog (denormalized from podcast_publishers.podcast_count).",
                      "format": "int64"
                    }
                  },
                  "required": [
                    "total_podcasts",
                    "active_podcasts",
                    "active_coverage"
                  ],
                  "additionalProperties": false
                },
                "episode_reach": {
                  "type": "integer",
                  "description": "Distinct episodes with ads",
                  "format": "int64"
                },
                "publisher": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "description": "Publisher ID"
                    },
                    "name": {
                      "type": "string",
                      "description": "Publisher name"
                    },
                    "slug": {
                      "type": "string",
                      "description": "Human-readable slug identifier (e.g., 'goalhanger', 'iheartpodcasts'). When present, accepted in place of the ID anywhere a publisher reference is taken in the API. Occasionally absent on publishers whose name doesn't slugify (e.g., scripts not representable in ASCII URL slugs)."
                    }
                  },
                  "required": [
                    "id",
                    "name"
                  ],
                  "additionalProperties": false
                },
                "rank": {
                  "type": "integer",
                  "description": "Position in the leaderboard",
                  "format": "int64"
                },
                "unique_sponsors": {
                  "type": "integer",
                  "description": "Distinct sponsors across the catalog",
                  "format": "int64"
                }
              },
              "required": [
                "rank",
                "publisher",
                "coverage",
                "ad_count",
                "unique_sponsors",
                "episode_reach",
                "ads_per_active_podcast"
              ],
              "additionalProperties": false
            }
          },
          "has_more": {
            "type": "boolean",
            "description": "Whether more results exist"
          }
        },
        "required": [
          "data",
          "has_more"
        ],
        "additionalProperties": false
      },
      "meta": {
        "type": "object",
        "description": "Additional response metadata (status, paging).",
        "additionalProperties": true
      }
    },
    "required": [
      "data"
    ],
    "additionalProperties": false
  }
  ```
</details>

## Deepline cost

* Pricing model: `fixed` (per call).
* Estimated Deepline credits: `0` per pricing unit.
* Provider-native pricing may still exist outside Deepline credit billing.

## Related documentation

* [Particle provider guide](https://deepline.com/docs/providers/particle/guide.md)
* [SDK V2 quickstart](https://deepline.com/docs/sdk-v2/quickstart.md)
* [SDK reference](https://deepline.com/docs/sdk-v2/sdk-reference.md)
* [Run tools across a CSV](https://deepline.com/docs/sdk-v2/batch-csv.md)


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