# Podcast Category & Network Benchmark Report (`taroyamada/podcast-category-network-benchmark-report`) Actor

Build podcast advertising shortlists from Apple search terms and public RSS feeds with source-linked fit evidence and export rows.

- **URL**: https://apify.com/taroyamada/podcast-category-network-benchmark-report.md
- **Developed by:** [naoki anzai](https://apify.com/taroyamada) (community)
- **Categories:** Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $8.00 / 1,000 podcast show benchmarkeds

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## Podcast Category & Network Benchmark Report

The default `initialRunMode: "baseline_only"` stores the first portfolio baseline with zero rows and zero charge. Later unchanged runs emit zero rows and zero charge. Use `emit_backfill` only when you explicitly want current benchmark rows, a category report, and an export delivered.

Podcast networks, agencies, and portfolio teams use this actor to benchmark categories, publishers, and show groups from Apple metadata and public RSS.

Input named watchlists, podcast RSS feeds, public show URLs, category keywords, or Apple search terms.

Get show benchmark rows, network signals, category reports, and portfolio exports.

### Store Quickstart

1. Start with the first input example below using `dryRun=false`.
2. Keep `emitUnchanged=false` so repeated no-change runs emit zero rows and zero charges.
3. Review `billingEventName` before scheduling recurring runs.

### Run the next report

- Use [Apple Podcasts Scraper](https://apify.com/taroyamada/apple-podcast-scraper) first when you only need broad Apple Podcasts show metadata.
- Generate source-linked sponsor evidence with [Podcast Sponsor Evidence Report Scraper](https://apify.com/taroyamada/podcast-sponsor-evidence-report-scraper).

### Input Examples

```json
{
  "rssFeedUrls": [
    "https://feeds.npr.org/510289/podcast.xml"
  ],
  "showUrls": [],
  "searchTerms": [
    "business podcast advertising"
  ],
  "targetKeywords": [
    "business",
    "marketing",
    "startup",
    "saas"
  ],
  "maxEpisodesPerFeed": 8,
  "initialRunMode": "emit_backfill",
  "generateReport": true,
  "emitRawRows": false,
  "emitShortlistExport": true,
  "emitUnchanged": false,
  "dryRun": false
}
````

```json
{
  "rssFeedUrls": [],
  "showUrls": [],
  "searchTerms": [
    "fintech podcast",
    "ecommerce podcast"
  ],
  "targetKeywords": [
    "fintech",
    "payments",
    "commerce"
  ],
  "maxEpisodesPerFeed": 12,
  "emitShortlistExport": true,
  "emitUnchanged": false,
  "dryRun": false
}
```

```json
{
  "rssFeedUrls": [
    "https://feeds.npr.org/510289/podcast.xml"
  ],
  "showUrls": [],
  "searchTerms": [],
  "targetKeywords": [
    "founder",
    "growth",
    "analytics"
  ],
  "maxEpisodesPerFeed": 6,
  "emitShortlistExport": false,
  "emitUnchanged": false,
  "dryRun": false
}
```

### Sample Output

```json
{
  "rowType": "podcast_shortlist_export",
  "billingEventName": "podcast-category-benchmark-report",
  "sourceName": "Podcast Media Buyer Shortlist",
  "sourceUrl": "https://feeds.npr.org/510289/podcast.xml",
  "showTitle": "Planet Money",
  "matchedKeywords": ["business", "marketing"],
  "mediaBuyerFitScore": 84,
  "recommendedNextStep": "Review source-linked fit evidence before campaign planning.",
  "authorizationBasis": "public RSS and Apple Podcasts search metadata"
}
```

See `docs/sample-output.json` for the complete row set.

### Output Fields

Every row includes:

- `billingEventName` for PAY\_PER\_EVENT charging
- `sourceName`, `sourceUrl`, `retrievedAt`, and `sourceMethod`
- `showTitle`, `publisher`, `matchedKeywords`, and `mediaBuyerFitScore` when available
- `authorizationBasis`
- `limitations` and `prohibitedInterpretations`

### Pricing

This actor uses PAY\_PER\_EVENT pricing. You are charged only when candidate, fit evidence, or shortlist export rows are emitted:

- `podcast-show-benchmarked`: $0.008 per benchmarked show row
- `podcast-network-signal`: $0.08 per source-linked network signal
- `podcast-category-benchmark-report`: $2.50 per generated benchmark report row
- `podcast-benchmark-export`: $2.00 per generated export row

No-change runs must emit zero default dataset rows and zero billable events by default.

`maxChargeUsd` is an optional positive per-run cap. The actor estimates every output row from the configured PAY\_PER\_EVENT unit prices before calling `pushData`; if the estimate exceeds the cap, it fails before charging. `0` preserves the existing no-explicit-cap behavior. Delivery journal entries record pending, charged, failed, and uncertain attempts so a partial retry can deduplicate confirmed charges and refuses to retry an uncertain charge.

### Compliance Guardrails

- Use public RSS, public show pages, and public podcast search surfaces.
- Use shortlist rows only for source-linked media planning research and human review.
- Do not imply endorsement by Apple, publishers, or podcast networks.

### See Also

- [Apple Podcasts Scraper](https://apify.com/taroyamada/apple-podcast-scraper) for Apple Podcasts show metadata.
- [Apple Podcast Chart Tracker](https://apify.com/taroyamada/apple-podcast-chart-tracker) for chart movement workflows.

# Actor input Schema

## `rssFeedUrls` (type: `array`):

Public podcast RSS feed URLs to score for shortlist fit.

## `showUrls` (type: `array`):

Public podcast show or publisher pages to include as fit evidence surfaces.

## `searchTerms` (type: `array`):

Apple iTunes Search API terms for public feed discovery.

## `targetKeywords` (type: `array`):

Campaign, audience, category, or topic keywords used to score candidate shows.

## `maxEpisodesPerFeed` (type: `integer`):

Maximum RSS episode items to inspect per feed.

## `emitShortlistExport` (type: `boolean`):

Generate benchmark export for this run.

## `emitUnchanged` (type: `boolean`):

When false, previously seen candidate rows are suppressed.

## `dryRun` (type: `boolean`):

When true, emit sample rows locally without external live calls or billing.

## `watchlists` (type: `array`):

Named portfolio watch definitions.

## `monitorKey` (type: `string`):

Monitor key for this run.

## `initialRunMode` (type: `string`):

Initial run mode for this run.

## `generateReport` (type: `boolean`):

Generate report for this run.

## `emitRawRows` (type: `boolean`):

Emit raw rows for this run.

## `maxChargeUsd` (type: `number`):

Maximum charge (USD) for this run.

## Actor input object example

```json
{
  "rssFeedUrls": [
    "https://feeds.npr.org/510289/podcast.xml"
  ],
  "showUrls": [],
  "searchTerms": [
    "business podcast advertising"
  ],
  "targetKeywords": [
    "business",
    "marketing",
    "startup",
    "saas"
  ],
  "maxEpisodesPerFeed": 8,
  "emitShortlistExport": true,
  "emitUnchanged": false,
  "dryRun": true,
  "watchlists": [],
  "monitorKey": "",
  "initialRunMode": "baseline_only",
  "generateReport": true,
  "emitRawRows": false,
  "maxChargeUsd": 0
}
```

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {};

// Run the Actor and wait for it to finish
const run = await client.actor("taroyamada/podcast-category-network-benchmark-report").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {}

# Run the Actor and wait for it to finish
run = client.actor("taroyamada/podcast-category-network-benchmark-report").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{}' |
apify call taroyamada/podcast-category-network-benchmark-report --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=taroyamada/podcast-category-network-benchmark-report",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Podcast Category & Network Benchmark Report",
        "description": "Build podcast advertising shortlists from Apple search terms and public RSS feeds with source-linked fit evidence and export rows.",
        "version": "0.1",
        "x-build-id": "GZn9mkLITH6YLVMMD"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/taroyamada~podcast-category-network-benchmark-report/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-taroyamada-podcast-category-network-benchmark-report",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/taroyamada~podcast-category-network-benchmark-report/runs": {
            "post": {
                "operationId": "runs-sync-taroyamada-podcast-category-network-benchmark-report",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/taroyamada~podcast-category-network-benchmark-report/run-sync": {
            "post": {
                "operationId": "run-sync-taroyamada-podcast-category-network-benchmark-report",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "rssFeedUrls": {
                        "title": "RSS feed URLs",
                        "type": "array",
                        "description": "Public podcast RSS feed URLs to score for shortlist fit.",
                        "items": {
                            "type": "string"
                        },
                        "default": [
                            "https://feeds.npr.org/510289/podcast.xml"
                        ]
                    },
                    "showUrls": {
                        "title": "Show URLs",
                        "type": "array",
                        "description": "Public podcast show or publisher pages to include as fit evidence surfaces.",
                        "items": {
                            "type": "string"
                        },
                        "default": []
                    },
                    "searchTerms": {
                        "title": "Apple Podcast search terms",
                        "type": "array",
                        "description": "Apple iTunes Search API terms for public feed discovery.",
                        "items": {
                            "type": "string"
                        },
                        "default": [
                            "business podcast advertising"
                        ]
                    },
                    "targetKeywords": {
                        "title": "Target keywords",
                        "type": "array",
                        "description": "Campaign, audience, category, or topic keywords used to score candidate shows.",
                        "items": {
                            "type": "string"
                        },
                        "default": [
                            "business",
                            "marketing",
                            "startup",
                            "saas"
                        ]
                    },
                    "maxEpisodesPerFeed": {
                        "title": "Max episodes per feed",
                        "minimum": 1,
                        "maximum": 50,
                        "type": "integer",
                        "description": "Maximum RSS episode items to inspect per feed.",
                        "default": 8
                    },
                    "emitShortlistExport": {
                        "title": "Generate benchmark export",
                        "type": "boolean",
                        "description": "Generate benchmark export for this run.",
                        "default": true
                    },
                    "emitUnchanged": {
                        "title": "Emit unchanged",
                        "type": "boolean",
                        "description": "When false, previously seen candidate rows are suppressed.",
                        "default": false
                    },
                    "dryRun": {
                        "title": "Dry run",
                        "type": "boolean",
                        "description": "When true, emit sample rows locally without external live calls or billing.",
                        "default": true
                    },
                    "watchlists": {
                        "title": "Portfolio watchlists",
                        "type": "array",
                        "description": "Named portfolio watch definitions.",
                        "default": []
                    },
                    "monitorKey": {
                        "title": "Monitor key",
                        "type": "string",
                        "description": "Monitor key for this run.",
                        "default": ""
                    },
                    "initialRunMode": {
                        "title": "Initial run mode",
                        "enum": [
                            "baseline_only",
                            "emit_backfill"
                        ],
                        "type": "string",
                        "description": "Initial run mode for this run.",
                        "default": "baseline_only"
                    },
                    "generateReport": {
                        "title": "Generate report",
                        "type": "boolean",
                        "description": "Generate report for this run.",
                        "default": true
                    },
                    "emitRawRows": {
                        "title": "Emit raw rows",
                        "type": "boolean",
                        "description": "Emit raw rows for this run.",
                        "default": false
                    },
                    "maxChargeUsd": {
                        "title": "Maximum charge (USD)",
                        "minimum": 0,
                        "type": "number",
                        "description": "Maximum charge (USD) for this run.",
                        "default": 0
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
