# Journalist and Media List Builder (`mambalabs/journalist-media-list-builder`) Actor

Build a media list from the news. Enter your beats or topics and get the journalists who wrote about them recently: name, outlet, author page, matching article count, latest article, and the article links as proof. Press release wires left out. No key needed. Clay ready.

- **URL**: https://apify.com/mambalabs/journalist-media-list-builder.md
- **Developed by:** [Mamba Labs](https://apify.com/mambalabs) (community)
- **Categories:** Lead generation, Marketing, News
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $6.80 / 1,000 journalist returneds

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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 and Media List Builder

Build a media list from what journalists actually wrote. Enter the beats or topics you want press for, such as `"sales automation"` or `fintech funding`, and get one row per journalist and outlet: the name from the byline, the outlet, their author page, how many matching articles they wrote, their latest one, and the article links as proof.

Bought by PR agencies, founders, and comms teams who want reporters who covered the topic in the last weeks, not a stale database export.

Rows are flat and snake_case, so they load straight into a spreadsheet, a CRM, or a Clay table.

### ✨ Features

- **Topics in, journalists out.** Up to 20 topics per run. Google News search words work, such as quotes for an exact phrase and `OR`.
- **Read from the byline.** Each article page is read for its author: the article's structured data first, then the author meta tag, then author links. A name is kept only when it reads as a person.
- **Proof on every row.** The matching article count, the newest article with its date, and up to 10 article links.
- **Author page and X handle** when the article page links them.
- **Press release wires left out** by default, because their author is the company issuing the release.
- **Outlet filters.** Keep only the outlets you pitch, or leave out ones you never pitch.
- **No key, no login.**

### 🔧 How it works

1. This actor starts the Mamba Labs [News and Media Mention Monitor](https://apify.com/mambalabs/news-media-mention-monitor?fpr=mamba) (Actor ID `gol1PPUKrsIk4QLBd`) on your Apify account with your topics. It returns the newest articles for each topic with the publisher's own URL.
2. Each article page is read once, with robots.txt honored, and its byline is extracted.
3. Bylines are grouped by journalist and outlet, counted, and sorted: most matching articles first, then the newest.

### 📥 Input

| Field | Type | Description |
|---|---|---|
| `topics` | list | 1 to 20 topics or beats. Required |
| `since_days` | string | Days back, 1 to 90. Default 30 |
| `country` | string | Google News country edition, two letters. Default US |
| `language` | string | Language code. Default `en` |
| `outlets_include` | list | Only these outlet domains |
| `outlets_exclude` | list | Never these outlet domains |
| `include_press_releases` | string | `false` (default) or `true` |
| `min_articles` | string | Least matching articles per journalist, 1 to 20. Default 1 |
| `max_articles_per_topic` | string | Newest articles read per topic, 1 to 100. Default 30 |
| `max_journalists` | string | Most journalist rows, 1 to 500. Default 50 |
| `max_charge_usd` | string | Optional cap on the whole run, the news run included |

Example:

```json
{ "topics": ["\"sales automation\"", "\"revenue operations\""], "since_days": "30", "min_articles": "1" }
```

### 📤 Output

One row per journalist and outlet. Every row carries every field; a field that does not apply is null.

| Field | Example | Notes |
|---|---|---|
| `journalist_name` | `Ramin Skibba` | From the article byline |
| `outlet`, `outlet_domain` | `The Guardian`, `theguardian.com` | The same name at two outlets is two rows |
| `author_page_url` | `https://www.theguardian.com/profile/ramin-skibba` | When the article links it |
| `x_handle` | `@dannyvena` | When the article page names it for this author |
| `article_count` | `2` | Matching articles with this byline at this outlet |
| `latest_article_title`, `latest_article_url`, `latest_published_at` | | Their newest matching article |
| `topics_matched` | `["\"sales automation\""]` | Which of your topics found them |
| `article_urls` | | Up to 10 matching articles, newest first |
| `byline_source` | `jsonld` | `jsonld`, `meta`, or `rel_author` |
| `news_run_id` | | The news run this actor started, for audit |
| `row_type`, `row_status` | `journalist`, `ok` | |
| `billable_events_json` | `{"journalist-row":1}` | What the row was billed as; `{}` is free |
| `since_days`, `country`, `language`, `source`, `checked_at` | | |

When a run returns no journalist, it returns one free `summary` row instead, with the article, page, and byline counts and the reason.

Emails are not returned. To find a journalist's work email, pass `journalist_name` and `outlet_domain` to an email finder on your own key.

### 📏 Measured results

Measured on the private build on 2026-10-28, before launch:

| Run | Topics | Articles found | Article pages read | Named a journalist | Journalist rows |
|---|---:|---:|---:|---:|---:|
| Three topics (`"sales automation"`, `"revenue operations"`, `fintech funding`), 30 days, 30 articles each | 3 | 62 | 49 | 21 | 16 |
| Five company and topic terms, 14 days (byline check on the article list) | 5 | 87 | 65 | 31 | 33 |

On the three topic run that is about 3.9 articles read per journalist row, so the run cost at the free plan prices was 16 journalist rows plus 62 articles from the news run plus the two start fees. Press release wires were left out of both (4 and 5 articles).

### 💵 Pricing

Pay per event. You pay for each journalist returned and a small start fee per run. The articles come from the News and Media Mention Monitor run this actor starts on your Apify account, which charges its own price per article read.

| Event | Free plan | Bronze | Silver | Gold |
|---|---|---|---|---|
| Journalist returned (`journalist-row`), per journalist and outlet | $0.008 ($8.00 per 1,000) | $0.0076 ($7.60 per 1,000) | $0.0072 ($7.20 per 1,000) | $0.0068 ($6.80 per 1,000) |
| Actor start (`apify-actor-start`), per run | $0.0025 | $0.0025 | $0.0025 | $0.0025 |
| Article from the news run (`article-row`), per article read | $0.0023 | $0.002185 | $0.00207 | $0.001955 |
| News run start (`apify-actor-start`), per run | $0.0015 | $0.0015 | $0.0015 | $0.0015 |

- About half of news article pages name a journalist in their markup, so expect roughly 2 to 3 articles per journalist row. See the measured numbers above. `max_articles_per_topic` sets how many articles are read, and so the news run's cost.
- A summary row is free, and so is the row for a refused input; the start fee is charged on every run that starts.
- `max_charge_usd` covers both actors: up to 60 percent goes to the news run, always leaving room for one journalist row, and the run stops before the total would pass it. A cap too small for one article and one journalist row starts no news run and returns one free summary row. A run also stops at the maximum cost per run you set in Apify.
- Free Apify plan: 1.50 USD of evaluation a month for this actor, which is 188 journalists at the free plan price. Any paid Apify plan removes the cap.
- The events above are all you pay. Mamba Labs pays the platform costs of your run, Apify proxy traffic included.

### 🚀 Usage examples

**Reporters on your beat this month.**

```json
{ "topics": ["\"sales automation\"", "\"sales tech\" startup"], "since_days": "30", "max_journalists": "40" }
```

**Only repeat writers at the outlets you pitch.**

```json
{ "topics": ["fintech funding"], "outlets_include": ["techcrunch.com", "fintechfutures.com", "finextra.com"], "min_articles": "2" }
```

**Clay.** Call the actor from a Clay column with a topic column mapped to `topics`. Clay sends every field as a string, which this actor accepts.

**API.** `POST https://api.apify.com/v2/acts/mambalabs~journalist-media-list-builder/runs` with the input above, then read the default dataset.

**MCP.** The `@mambalabsdev/mcp-journalist-media-list-builder` server exposes the tool `find_journalists` to AI agents.

### ⚠️ Error handling

| Situation | What you get |
|---|---|
| Input with no usable topic, or a value of the wrong kind | One free row, `row_status` `error`, `error_reason` starting with `input_invalid:`. The run succeeds and no news run starts. No journalist is charged; the run start fee applies, because Apify charges it when the run starts. A missing or empty `topics` list gets the same row |
| No article matched | One free summary row, `no_results` |
| Google News did not answer | One free summary row, `blocked` |
| Articles were read but none named a journalist | One free summary row, `no_results`, with the counts |
| The news run did not succeed, or refused its input | One free summary row, `error`, starting with `stage_failed:` and naming the run |
| An article page refuses or does not answer | That article is skipped; the run goes on |

### ⚠️ Limitations

- About half of news pages carry a byline in their markup. Paywalled pages, pages that block automated reads, and pages that print the byline only as plain text are skipped.
- A journalist who wrote about your topic outside Google News's newest 100 articles per topic is missed.
- Emails and phone numbers are not returned.
- Agency and wire bylines (Reuters, Associated Press, staff and desk labels) are left out on purpose.
- The same person at two outlets is two rows, because you pitch a person at an outlet.

### 🧩 Want other GTM data?

Mamba Labs builds custom actors for B2B go-to-market teams. The public versions of that work live here on the Store.

| Actor | Actor ID |
|---|---|
| [Account Hiring Watch](https://apify.com/mambalabs/account-hiring-watch?fpr=mamba) | `gRAZA5WBi1r6L0gy7` |
| [Agent Accessibility Auditor](https://apify.com/mambalabs/agent-accessibility-auditor?fpr=mamba) | `anxbRv0lKrpQ1pnua` |
| [Agent to Brokerage Resolver](https://apify.com/mambalabs/agent-brokerage-resolver?fpr=mamba) | `ePRRGLxOGyaVHO4dI` |
| [AI Tooling Detector](https://apify.com/mambalabs/ai-tooling-detector?fpr=mamba) | `EwkHhmqiuJgRoVEbE` |
| [B2B Reddit Conversation Monitor](https://apify.com/mambalabs/b2b-reddit-conversation-monitor?fpr=mamba) | `SoDryzzsjmY3SsiyG` |
| [Bluesky Brand Presence Mapper](https://apify.com/mambalabs/bluesky-brand-presence-mapper?fpr=mamba) | `eLpxzP4IuXznlFVND` |
| [Career Change Signal Engine](https://apify.com/mambalabs/career-change-signal-engine?fpr=mamba) | `vX2Yga1a6wGaXaP14` |
| [Company Change Event Feed](https://apify.com/mambalabs/company-change-event-feed?fpr=mamba) | `oX44rS0fkEJ3rXLWe` |
| [Company Contact Details Extractor](https://apify.com/mambalabs/company-contact-details-extractor?fpr=mamba) | `4mMncKaJykiq94grz` |
| [Company Discovery List Builder](https://apify.com/mambalabs/company-discovery-list-builder?fpr=mamba) | `jch0HdaZnpbMqlcGS` |
| [Company Firmographic Enricher](https://apify.com/mambalabs/company-firmographic-enricher?fpr=mamba) | `YlUtLWjfPpqykmB8g` |
| [Company Funding Record](https://apify.com/mambalabs/funding-investor-record?fpr=mamba) | `OFS4Mt1gyYNtGfUbE` |
| [Company Headcount Estimator](https://apify.com/mambalabs/company-headcount-estimator?fpr=mamba) | `aHC4GROnNt6kfZe5r` |
| [Company Identity Resolver](https://apify.com/mambalabs/company-identity-resolver?fpr=mamba) | `lr8fTRAmZCBZmuwwh` |
| [Company Social Presence Mapper](https://apify.com/mambalabs/company-social-presence-mapper?fpr=mamba) | `4k6CCemkgBDz18m2h` |
| [Competitor Price, Stock, and Changelog Monitor](https://apify.com/mambalabs/competitor-price-stock-changelog-monitor?fpr=mamba) | `yxdgCbUQ4PYQWwRNU` |
| [Contact Classifier](https://apify.com/mambalabs/contact-classifier?fpr=mamba) | `0lGSeYJmniXhGANnO` |
| [Contractor License Lookup](https://apify.com/mambalabs/contractor-license-lookup?fpr=mamba) | `WBYK3CPI2kdeq4bP1` |
| [Cookie Consent Audit](https://apify.com/mambalabs/cookie-consent-audit?fpr=mamba) | `TrKyOS0KBoGC35nbr` |
| [Domain Deliverability Checker](https://apify.com/mambalabs/domain-deliverability-checker?fpr=mamba) | `0tVgxI7A6o9jMlxmc` |
| [Domain to LinkedIn URL Resolver](https://apify.com/mambalabs/domain-to-linkedin-url-resolver?fpr=mamba) | `3HtnSaqPHOg1Qg5gx` |
| [Ecommerce Platform Profiler](https://apify.com/mambalabs/ecommerce-platform-profiler?fpr=mamba) | `5G2NeYjBbQTjaTn9L` |
| [Ecommerce Store Discovery](https://apify.com/mambalabs/ecommerce-store-discovery?fpr=mamba) | `PeHu4sLyFvQHXUUrX` |
| [Event Presence Index](https://apify.com/mambalabs/event-presence-index?fpr=mamba) | `WLhMy8fMDgsxdYxv5` |
| [Expert Witness Directory](https://apify.com/mambalabs/expert-witness-directory?fpr=mamba) | `LIpwlgfE3LaQBaXd4` |
| [Funding and Press Signal Scanner](https://apify.com/mambalabs/funding-press-signal-scanner?fpr=mamba) | `FS13X6dhQVgX3XOM6` |
| [GitHub Organization Signal Scanner](https://apify.com/mambalabs/github-organization-signal-scanner?fpr=mamba) | `ahF8RRpv5mzPao5CN` |
| [Google Ads Transparency Monitor](https://apify.com/mambalabs/google-ads-transparency-monitor?fpr=mamba) | `1eOwxhBVxzvOXAm4s` |
| [Government Contract Award Monitor](https://apify.com/mambalabs/public-award-monitor?fpr=mamba) | `zhEtllASykOcx9hJ8` |
| [GTM Hiring Signal Scraper](https://apify.com/mambalabs/gtm-hiring-signal-scraper?fpr=mamba) | `D7O1SA2EqwHGsGr1P` |
| [GTM Signals Aggregator](https://apify.com/mambalabs/b2b-buying-signals-hiring-tech-stack-intent-for-clay?fpr=mamba) | `xKdRfnfFNkdMpFuNs` |
| [ICP Fit Scorer](https://apify.com/mambalabs/icp-account-lead-scoring-fit-scorer-0-100-for-clay?fpr=mamba) | `W161DT8W4kW55dMFh` |
| [Influencer Change Monitor](https://apify.com/mambalabs/creator-change-monitor?fpr=mamba) | `d2VVgahNL6UmcLkhg` |
| [Influencer Finder](https://apify.com/mambalabs/creator-finder?fpr=mamba) | `tpkedmloIIWtXx6sg` |
| [Influencer Lead List Builder](https://apify.com/mambalabs/creator-lead-list-all-in-one?fpr=mamba) | `KnmByszcv135yM30G` |
| [Influencer Profile Scraper](https://apify.com/mambalabs/creator-profile-reader?fpr=mamba) | `EqEnklDVMIcB1V499` |
| [Influencer Talent Agency Lookup](https://apify.com/mambalabs/talent-agency-lookup?fpr=mamba) | `zCuX4Mgyg6JvXgGzd` |
| [Instagram Facebook Brand Presence Mapper](https://apify.com/mambalabs/meta-brand-presence-mapper?fpr=mamba) | `HXh65I0JBjPsunbY8` |
| [Integration and Marketplace Presence Mapper](https://apify.com/mambalabs/integration-marketplace-presence-mapper?fpr=mamba) | `V0guNuvM85Q61f2gj` |
| [Job Board Keyword Signal Scanner](https://apify.com/mambalabs/job-board-keyword-signal-scanner?fpr=mamba) | `4DvqpvhMR74NLcDDY` |
| [Job Change Tracker](https://apify.com/mambalabs/job-change-tracker?fpr=mamba) | `L8UbEmMJC1XYPSZOb` |
| [Job Posting Monitor](https://apify.com/mambalabs/gtm-job-discovery?fpr=mamba) | `QCfICD9kOPiOdj5iI` |
| [Legal Entity Resolver](https://apify.com/mambalabs/legal-entity-resolver?fpr=mamba) | `KHFyPCDIx7CyqULYm` |
| [Link in Bio Scraper and Newsletter Detector](https://apify.com/mambalabs/link-in-bio-newsletter-checker?fpr=mamba) | `OorucdheTIgu7RFzK` |
| [LinkedIn Company Page Mapper](https://apify.com/mambalabs/linkedin-company-presence-mapper?fpr=mamba) | `zOPm6A9JEhUGcIdFW` |
| [LinkedIn Post Tracker](https://apify.com/mambalabs/linkedin-post-engager-capture?fpr=mamba) | `oiGLNPuaf5BRaz9K5` |
| [Local Business Lead Builder](https://apify.com/mambalabs/local-business-lead-builder?fpr=mamba) | `qMN97aoHhsAS5bznV` |
| [Local Rank and Map Pack Tracker](https://apify.com/mambalabs/local-rank-map-pack-tracker?fpr=mamba) | `gv0kyHGDIg8XscclB` |
| [Lookalike Company Finder](https://apify.com/mambalabs/lookalike-company-finder?fpr=mamba) | `e2O426WBAbLLQL4Z2` |
| [Manufacturer and Supplier Finder](https://apify.com/mambalabs/manufacturer-supplier-finder?fpr=mamba) | `Qcsdmd0lUfPzVkonh` |
| [Meta Ad Library Monitor](https://apify.com/mambalabs/meta-ad-library-monitor?fpr=mamba) | `J1GWlSXfSGU3u8Wng` |
| [Mobile Phone Waterfall](https://apify.com/mambalabs/mobile-phone-waterfall-orchestrator?fpr=mamba) | `6OOgPktf7RIa5XCOP` |
| [New Company Registrations Feed](https://apify.com/mambalabs/new-company-registrations-feed?fpr=mamba) | `g2WfZhWvCtc57g2Jo` |
| [New Hire Finder](https://apify.com/mambalabs/new-hire-finder?fpr=mamba) | `cKuc38p4nYHNF3IW8` |
| [Newsletter Sponsor Tracker](https://apify.com/mambalabs/newsletter-sponsor-tracker?fpr=mamba) | `qSwpqxD1TiPZpLQHv` |
| [Open Tender and RFP Finder](https://apify.com/mambalabs/open-tender-rfp-finder?fpr=mamba) | `kPTGz6t6TFoUUyfaO` |
| [Outbound Stack Detector](https://apify.com/mambalabs/outbound-infrastructure-fingerprint?fpr=mamba) | `v43UJC8r7qW7cBSTG` |
| [Page Finder and Extractor](https://apify.com/mambalabs/page-finder-extractor?fpr=mamba) | `TpurgcOZbVnknlaiC` |
| [Partner and Member Directory Extractor](https://apify.com/mambalabs/partner-member-directory-extractor?fpr=mamba) | `ZX0XJPPUvnFJxeC1a` |
| [People Finder & Email Verifier](https://apify.com/mambalabs/people-finder?fpr=mamba) | `LEgloG7tWgQl4o6TD` |
| [Person LinkedIn URL Resolver](https://apify.com/mambalabs/person-linkedin-url-resolver?fpr=mamba) | `ssuyPV8LnEsL8qbnb` |
| [Person Social Footprint Mapper](https://apify.com/mambalabs/person-social-footprint-mapper?fpr=mamba) | `jfQXa2zW9FHCJot9K` |
| [Personal Email to Company Resolver](https://apify.com/mambalabs/personal-email-to-company-resolver?fpr=mamba) | `AefT5Ye6YNPFQwJBf` |
| [Pinterest Brand Presence Mapper](https://apify.com/mambalabs/pinterest-brand-presence-mapper?fpr=mamba) | `d1HvjZfKhgvWsoEwn` |
| [Podcast Guest and Host Finder](https://apify.com/mambalabs/podcast-guest-host-finder?fpr=mamba) | `o2MGSvgbSLeeXOsIo` |
| [Prospect Engine](https://apify.com/mambalabs/b2b-prospect-engine?fpr=mamba) | `q9rT6v64nUJdPexOQ` |
| [Public Feature Board and Roadmap Monitor](https://apify.com/mambalabs/public-feature-board-roadmap-monitor?fpr=mamba) | `rcHF5gj5r2Vqnry35` |
| [Publishing Frequency Tracker](https://apify.com/mambalabs/blog-publishing-frequency?fpr=mamba) | `TbLwaUUATdYb6wp4N` |
| [Reddit Brand Presence Mapper](https://apify.com/mambalabs/reddit-brand-presence-mapper?fpr=mamba) | `pKQZmDaT70SEb54bZ` |
| [Reporting Window Finder](https://apify.com/mambalabs/public-company-reporting-window-finder?fpr=mamba) | `uINxR7a1IW8qUTRUX` |
| [Sequencer Event Poller](https://apify.com/mambalabs/sequencer-event-poller?fpr=mamba) | `S6s8Rjd61tGdrMRk4` |
| [Sequencer Lead Push](https://apify.com/mambalabs/clay-to-instantly-smartlead-push?fpr=mamba) | `0Jv27VeWM5tSZQs9x` |
| [Team Page People Extractor](https://apify.com/mambalabs/team-page-people-extractor?fpr=mamba) | `j8a9zX0k4mNbvDbWK` |
| [Tech Stack Signal Detector](https://apify.com/mambalabs/gtm-tech-stack-signal-scraper?fpr=mamba) | `qyd7nNyqFPelQViBx` |
| [TikTok Brand Presence Mapper](https://apify.com/mambalabs/tiktok-brand-presence-mapper?fpr=mamba) | `fco8FvoJcSafbeyd1` |
| [Trustpilot Reputation Enricher](https://apify.com/mambalabs/review-platform-reputation-enricher?fpr=mamba) | `3lIqfCt61j4hqE1xz` |
| [VC and Accelerator Portfolio List Builder](https://apify.com/mambalabs/vc-accelerator-portfolio-list-builder?fpr=mamba) | `chH8hrfuoqqolW06m` |
| [WCAG Accessibility Audit](https://apify.com/mambalabs/wcag-accessibility-audit?fpr=mamba) | `P3jBj3FRghKEhX52z` |
| [Website Phrase and Business Model Classifier](https://apify.com/mambalabs/website-phrase-business-model-classifier?fpr=mamba) | `CBuZ9k7sRwBeiKiCS` |
| [Website Traffic Rank Estimator](https://apify.com/mambalabs/website-traffic-rank-estimator?fpr=mamba) | `GnOFUzlNVIoXgeJjH` |
| [Work Email Waterfall](https://apify.com/mambalabs/email-waterfall-orchestrator?fpr=mamba) | `OT6xqTFThC0Rjf7Zj` |
| [Workplace Program Detector](https://apify.com/mambalabs/workplace-program-detector?fpr=mamba) | `Li6pPDhqbdzFz3h7G` |
| [X Brand Presence Mapper](https://apify.com/mambalabs/x-brand-presence-mapper?fpr=mamba) | `oLOgadhHUkNAyDA3w` |
| [YouTube Channel Stats Extractor](https://apify.com/mambalabs/youtube-channel-transcript-extractor?fpr=mamba) | `6hSpD3kd2s2IQ4VSs` |

> Every actor in the suite takes a domain, a company, or a person and returns flat rows, so they stack in the same table without reshaping anything.

> 🛠️ **Need something custom built?** [Talk to Mamba Labs](https://mambabuilt.com/contact).

### 🆘 Support

Found a bug? Open an issue on the **Issues** tab. Response time is typically within 48 hours.

> ℹ️ **Sourcing.** Articles come from public Google News pages through the Mamba Labs News and Media Mention Monitor; bylines come from each article's own public page, read directly with robots.txt honored. No key, no login. You are responsible for how you use the output.

Built by [Mamba Labs](https://apify.com/mambalabs?fpr=mamba).

# Actor input Schema

## `topics` (type: `array`):

1 to 20 topics, beats, or search terms, for example "sales automation" or "fintech funding". Each one is a Google News search. Put a phrase in double quotes for an exact match.

## `since_days` (type: `string`):

How many days of articles to read, from 1 to 90. Default 30.

## `country` (type: `string`):

The Google News country edition, as a two letter code. Default US.

## `language` (type: `string`):

The language code of the edition, for example en, de, fr, es, or pt-419. Default en.

## `outlets_include` (type: `array`):

Optional. Outlet domains to keep, for example techcrunch.com. Empty keeps every outlet.

## `outlets_exclude` (type: `array`):

Optional. Outlet domains never to return, for example your own blog.

## `include_press_releases` (type: `string`):

false (default): articles on press release wires (PR Newswire, Business Wire, GlobeNewswire, and others) are left out, because their author is the issuing company, not a journalist. true keeps them.

## `min_articles` (type: `string`):

Return a journalist only when they wrote at least this many of the matching articles, from 1 to 20. Default 1.

## `max_articles_per_topic` (type: `string`):

How many of the newest articles to read for each topic, from 1 to 100. Default 30. Each article is one article-row charge of the News and Media Mention Monitor run this actor starts.

## `max_journalists` (type: `string`):

The most journalist rows to return, from 1 to 500. Default 50. The journalists with the most matching articles come first.

## `max_charge_usd` (type: `string`):

Optional. Covers both this actor's charges and the news run it starts: up to 60 percent of it goes to the news run, and the run stops before any charge that would pass the total.

## `source_tag` (type: `string`):

Internal attribution tag. Leave empty.

## Actor input object example

```json
{
  "topics": [
    "\"sales automation\""
  ],
  "since_days": "14",
  "country": "US",
  "language": "en",
  "include_press_releases": "false",
  "min_articles": "1",
  "max_articles_per_topic": "10",
  "max_journalists": "50"
}
```

# Actor output Schema

## `results` (type: `string`):

No description

## `run_summary` (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 = {
    "topics": [
        "\"sales automation\""
    ],
    "since_days": "14",
    "max_articles_per_topic": "10"
};

// Run the Actor and wait for it to finish
const run = await client.actor("mambalabs/journalist-media-list-builder").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 = {
    "topics": ["\"sales automation\""],
    "since_days": "14",
    "max_articles_per_topic": "10",
}

# Run the Actor and wait for it to finish
run = client.actor("mambalabs/journalist-media-list-builder").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 '{
  "topics": [
    "\\"sales automation\\""
  ],
  "since_days": "14",
  "max_articles_per_topic": "10"
}' |
apify call mambalabs/journalist-media-list-builder --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,mambalabs/journalist-media-list-builder"
        }
    }
}
```

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/mAfizsZC8qRoR0ecS/builds/YaAOisdtCogjduxH7/openapi.json
