# Journalist, Podcast & Creator Pitch Dossier Generator (`atlasdean/media-guest-pitch-dossier`) Actor

Research what a journalist, podcaster or creator covered in the last 30 days and get their strong opinions, a tailored pitch subject line and a personalized opening hook. Charged only when recent work is found.

- **URL**: https://apify.com/atlasdean/media-guest-pitch-dossier.md
- **Developed by:** [Jonny Dean](https://apify.com/atlasdean) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $100.00 / 1,000 pitch dossiers

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/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## 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.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Journalist, Podcast & Creator Pitch Dossier Generator

**Researches what a journalist, podcaster, or creator covered in the last 30 days and returns their recent topics, strong opinions, a tailored pitch subject line, and a personalized opening hook.**

Built for PR agencies, podcast guest-booking teams, founders pitching themselves as guests, and creator marketers doing media list research and personalized pitching.

### Who it's for

- **PR agencies and in-house comms teams** pitching stories and spokespeople
- **Podcast guest-booking agencies** and founders pitching themselves as guests
- **Startup founders** doing their own press outreach
- **Creator and influencer marketers** reaching out for collaborations

### What you get for each target

| Field | What it is |
|---|---|
| `creator_or_journalist_name`, `publication_or_show` | Who was researched |
| `recent_topics_covered` | 3–5 specific stories, episodes, or posts from the last 30 days, with approximate dates |
| `contrarian_or_strong_opinions` | Professional takes they've expressed recently on their beat |
| `recent_work_urls` | Links to the work that was found |
| `tailored_pitch_subject_line` | Under 70 characters, specific, no clickbait |
| `personalized_opening_hook` | 1–2 sentences tying their recent work to your pitch |
| `has_recent_signal` | `true` if specific recent work was found |
| `charged` | `false` when no recent work was found (you are not billed) |
| `cached_result` | `true` if served from the 24-hour cache |

Hooks stick to their professional work. Personal life, family, health, and politics are left out unless that's literally their beat.

### How to use it

1. Add targets as `{"name", "publication_or_show", "x_handle"}`. Each needs a name or an X handle.
2. Describe **what you're pitching** (a guest, story, dataset, or product).
3. Run it, then paste the subject line and hook into your email tool and finish the pitch yourself.

#### Example input

```json
{
  "targets": [
    { "name": "Casey Newton", "publication_or_show": "Platformer / Hard Fork", "x_handle": "CaseyNewton" },
    { "name": "Lenny Rachitsky", "publication_or_show": "Lenny's Podcast", "x_handle": "lennysan" }
  ],
  "pitch_context": "Our founder can share original data on how small teams are using AI agents to replace SaaS tools",
  "use_cache": true
}
```

### Example output

Real results from test runs on Oct 21–22, 2026, shortened for display:

| Target | Outlet / show | A recent topic found | Subject line | Charged |
|---|---|---|---|---|
| Lenny Rachitsky | Lenny's Podcast | "Why every company now needs to think and operate like a lab team" with Josh Woodward (Oct 11, 2026) | Original data: 400 small teams replacing SaaS with AI agents | yes |
| Packy McCormick | Not Boring | Weekly Dose of Optimism #215 (Oct 16, 2026) | Survey Data: Small Teams Swapping SaaS for AI Agents | yes |
| Casey Newton | Platformer / Hard Fork | "The states come for OpenAI" (Oct 15, 2026) | AI liability expert for state OpenAI suits coverage | yes |

Example hook (Lenny Rachitsky): *"Your recent episodes on Meta's Muse agent and Google Labs' experimental approach highlight how teams are rethinking tools in the AI era."*

### Pricing

Pay-per-event: **$0.10 per pitch dossier** (event `pitch-dossier`), charged **only when recent work is found**, plus a negligible Apify start fee. **No charge when nothing real is found**: targets with no findable recent work, and failed lookups, are returned free with `charged: false`. Use **maximum cost per run** to cap spend.

Free Apify plan users can research up to 3 targets per run.

### Pairs well with

- **[Live X & Web B2B Lead Enricher + Cold Email Icebreaker](https://apify.com/atlasdean/b2b-grok-lead-enricher)**: once you know which accounts to work, enrich the people there with a personalized, recent-activity icebreaker ($0.10 per enriched lead).
- **[B2B Trigger Event Radar](https://apify.com/atlasdean/b2b-trigger-event-radar)**: find which accounts have a live buying signal (funding, exec hires, launches, hiring sprees) before you prospect them ($0.05 per triggered account; quiet accounts free).

### Integrations

- **Apify API**: start runs and fetch results with the REST API or the `run-sync-get-dataset-items` endpoint (JavaScript and Python clients available).
- **Zapier, Make, and n8n**: use the official Apify apps/nodes to run this Actor from a workflow and push results to your CRM, sheet, or email tool.
- **Webhooks**: get notified when a run finishes and pull the dataset automatically.
- **AI agents**: AI assistants and agents can call this Actor as a tool through the **Apify MCP server**.
- **Exports**: download results as JSON, CSV, Excel, or HTML from the Console.

### Tips for better results

- Include the X handle and outlet. They're the strongest disambiguation signals.
- A specific pitch ("original survey data on X") produces much better hooks than "our startup".
- Always read the cited work before you send. A hook only lands if you've actually read the piece.
- Keep the 24-hour cache on to avoid paying twice for the same target and pitch.

### FAQ

**Where does the data come from?** Public articles, newsletters, podcast listings, and X posts, researched live at run time.

**Does it find email addresses?** No. Use your media database or email finder for contact details.

**Will it invent articles?** It's instructed to cite only work it actually found. When it finds nothing recent, the row is marked `has_recent_signal: false` and you aren't charged.

**Is it compliant?** It only uses publicly available information. Follow anti-spam laws (CAN-SPAM, GDPR, etc.) and each outlet's pitching guidelines.

### Support

Found a bug or want a feature? Open an issue on the Actor's **Issues** tab and I'll respond quickly.

# Actor input Schema

## `targets` (type: `array`):

Array of {"name", "publication_or_show", "x_handle"} objects. Name or x_handle required.

## `pitch_context` (type: `string`):

Who or what you're pitching (guest, story, data, product).

## `use_cache` (type: `boolean`):

Reuse results from the last 24 hours for identical inputs so you don't pay twice.

## Actor input object example

```json
{
  "targets": [
    {
      "name": "Casey Newton",
      "publication_or_show": "Platformer / Hard Fork",
      "x_handle": "CaseyNewton"
    }
  ],
  "pitch_context": "Our founder can share original data on how small teams are using AI agents to replace SaaS tools",
  "use_cache": true
}
```

# Actor output Schema

## `overview` (type: `string`):

No description

# 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 = {
    "targets": [
        {
            "name": "Casey Newton",
            "publication_or_show": "Platformer / Hard Fork",
            "x_handle": "CaseyNewton"
        }
    ],
    "pitch_context": "Our founder can share original data on how small teams are using AI agents to replace SaaS tools"
};

// Run the Actor and wait for it to finish
const run = await client.actor("atlasdean/media-guest-pitch-dossier").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 = {
    "targets": [{
            "name": "Casey Newton",
            "publication_or_show": "Platformer / Hard Fork",
            "x_handle": "CaseyNewton",
        }],
    "pitch_context": "Our founder can share original data on how small teams are using AI agents to replace SaaS tools",
}

# Run the Actor and wait for it to finish
run = client.actor("atlasdean/media-guest-pitch-dossier").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{
  "targets": [
    {
      "name": "Casey Newton",
      "publication_or_show": "Platformer / Hard Fork",
      "x_handle": "CaseyNewton"
    }
  ],
  "pitch_context": "Our founder can share original data on how small teams are using AI agents to replace SaaS tools"
}' |
apify call atlasdean/media-guest-pitch-dossier --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,atlasdean/media-guest-pitch-dossier"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/3ZHMMpQaZFbtNkTTK/builds/92RxEEAUTM8KZb0b1/openapi.json
