Use this journalist email finder to turn Google News topics into outreach-ready journalist and publication leads. The Actor discovers recent coverage, resolves publisher articles through Google Search, extracts public author metadata, and returns any visibly published emails, social profiles, and exact evidence URLs.
Use it to find journalist contacts, build a current journalist database, or run a media contact finder workflow for digital PR prospecting, founder outreach, source research, media-list refreshes, link-building campaigns, and recurring coverage monitoring. Results are available as JSON, CSV, Excel, API output, scheduled datasets, and MCP tool calls.
What this Actor gives you
- Recent Google News articles for each topic and locale.
- Resolved publisher URLs instead of Google News wrapper links when search resolution succeeds.
- Publication name, domain, article date, headline, and snippet.
- Journalist name and author profile URL when the publisher exposes standard metadata.
- Public emails and social links found on the article or a bounded author/contact page.
contactSourceUrlsso every saved email has reviewable public evidence.- Honest
no_public_contactandarticle_unavailablerows instead of silent omissions.
This is a lead-generation workflow, not a private-data broker. It only collects information visibly published on public pages.
Who is it for?
This Actor is for PR teams, founders, media researchers, digital-PR specialists, link builders, and marketing agencies that need current, article-backed journalist and publication leads.
Common use cases
- Build a current media list for a product category, funding round, or policy topic.
- Find outlets and reporters already covering a founder's market.
- Refresh PR outreach lists weekly with scheduled runs.
- Identify publication domains for newsroom or partnership research.
- Feed article-backed media leads into a CRM, spreadsheet, agent, or enrichment pipeline.
- Monitor competitor coverage and preserve the journalist/outlet evidence behind each lead.
Input
Paste 1–20 Google News topics. A practical first run is:
{
"queries": [
"artificial intelligence startups",
"climate technology funding"
],
"maxArticlesPerQuery": 10,
"freshnessDays": 7,
"country": "US",
"language": "en",
"enrichPublisherPages": true,
"maxExtraPagesPerArticle": 1,
"includeNoContact": true
}
Input settings
| Setting | JSON key | Description |
|---|---|---|
| Google News topics | queries |
Add 1–20 searches such as climate technology funding, fintech regulation, or artificial intelligence startups. |
| Maximum articles per query | maxArticlesPerQuery |
Resolve and save up to this many recent article leads for each query. |
| Freshness window in days | freshnessDays |
Ask Google News for articles published within this many days, from 1 to 365. |
| Country | country |
Two-letter Google market code such as US, GB, PT, or DE. |
| Language | language |
Google language code such as en, de, es, or pt. |
| Inspect public publisher pages | enrichPublisherPages |
Resolve each article and inspect its public HTML for author metadata, emails, and social links. |
| Extra author or contact pages | maxExtraPagesPerArticle |
Inspect up to this many linked author, press, newsroom, staff, or contact pages after the article. Set to 0 for article-only enrichment. |
| Save leads without a public email | includeNoContact |
Keep one truthful status row for every resolved result, even when no public email is visible. |
| Run time limit in seconds | runTimeSecs |
Stop admitting new articles before this shared deadline. Use 30–270 seconds. |
| Google proxy configuration | proxyConfiguration |
The default GOOGLE_SERP proxy resolves publisher article URLs reliably. Change it only if your account requires a custom Apify proxy setup. |
Start with 5–10 articles per query. Increase volume after confirming that the chosen publishers expose the fields your campaign needs.
Input recipes
- Focused journalist list: one narrow topic, 5–10 articles, 14 days, and one extra author/contact page.
- Weekly PR refresh: two or three campaign topics, 7 days, and
includeNoContact: truefor stable downstream deduplication. - Article-only research: set
maxExtraPagesPerArticleto0to reduce requests while retaining news, outlet, and best-effort author fields. - Email-only export: set
includeNoContacttofalsewhen downstream work only accepts rows with a public email.
Output
Each dataset item is one article-backed media lead:
{
"query": "artificial intelligence startups",
"headline": "Startup launches new AI research platform - Example News",
"googleNewsUrl": "https://news.google.com/rss/articles/...",
"articleUrl": "https://example.com/technology/ai-research-platform",
"outletName": "Example News",
"outletUrl": "https://example.com/",
"publicationDomain": "example.com",
"journalistName": "Alex Rivera",
"authorProfileUrl": "https://example.com/authors/alex-rivera",
"publishedAt": "2026-08-11T10:00:00.000Z",
"publicEmails": ["newsroom@example.com"],
"primaryEmail": "newsroom@example.com",
"socialLinks": ["https://www.linkedin.com/company/example-news"],
"contactSourceUrls": ["https://example.com/contact"],
"contactConfidence": "author_or_contact_page",
"status": "found",
"error": null,
"collectedAt": "2026-08-11T21:30:00.000Z"
}
The output schema also includes the Google News snippet and explicit diagnostics for article-specific failures. The RUN_SUMMARY key-value-store record reports query coverage, saved rows, contacts found, no-contact rows, unavailable pages, and bounded errors.
Status and contact semantics
found: at least one public email was found on an inspected page.no_public_contact: the article or outlet was accessible, but no public email was visible.article_unavailable: the publisher article could not be resolved or fetched within the bounded attempt.article_page: the email appeared directly on the resolved article page.author_or_contact_page: the email appeared on a linked author, press, newsroom, staff, or contact page.none: no public email was found.
A missing email is not a failed run. Many publishers intentionally expose a contact form or social profile instead of an address.
API usage
cURL
curl -X POST "https://api.apify.com/v2/acts/fetch_cat~google-news-journalist-lead-finder/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"queries":["cybersecurity startups"],"maxArticlesPerQuery":5,"freshnessDays":14}'
JavaScript
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('fetch_cat/google-news-journalist-lead-finder').call({
queries: ['cybersecurity startups'],
maxArticlesPerQuery: 10,
freshnessDays: 14,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);
Python
from apify_client import ApifyClient
import os
client = ApifyClient(os.environ["APIFY_TOKEN"])
run = client.actor("fetch_cat/google-news-journalist-lead-finder").call(run_input={
"queries": ["cybersecurity startups"],
"maxArticlesPerQuery": 10,
"freshnessDays": 14,
})
items = client.dataset(run["defaultDatasetId"]).list_items().items
print(items)
MCP and agent use
The Actor exposes input, output, and dataset schemas, so agents can discover its fields and call it through the official Apify MCP server. For example, add the server to Claude Code:
claude mcp add --transport http apify "https://mcp.apify.com?tools=fetch_cat/google-news-journalist-lead-finder"
Then ask your MCP client to run the Actor and inspect its dataset. Example configuration for clients that use JSON:
{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com?tools=fetch_cat/google-news-journalist-lead-finder",
"headers": {
"Authorization": "Bearer YOUR_APIFY_TOKEN"
}
}
}
}
Example prompts:
- "Find media leads covering European climate-tech funding in the last 14 days and group them by publication."
- "Run the Google News Journalist Lead Finder for AI security, keep rows with a journalist name or public email, and prepare a review sheet."
- "Schedule a weekly media-list refresh for warehouse robotics and summarize newly found outlets."
Practical limit and data availability
- Google News RSS and publisher pages can change independently.
- Some publishers block automation, require consent, render author data only in JavaScript, or expose contact forms instead of emails.
- Search resolution is best effort and bounded by the shared deadline.
- The Actor does not guess private addresses, bypass paywalls, or claim that a public newsroom email belongs to a specific journalist.
- Review source URLs before outreach, follow applicable laws and site terms, and honor opt-outs.
- For recurring monitoring, schedule moderate runs and deduplicate downstream by
articleUrlorgoogleNewsUrl.
Support
Open an issue from the Actor page and include the run ID or run URL, full input JSON, expected output, actual output, and one reproducible public URL. Do not post tokens, private CRM data, or personal credentials.