Finding Journalist and Media Contacts for PR Outreach
By Email ExtractorPublished 6 min read
On this page
Media Contact Data Sources
Finding the right journalist for your story is the foundation of effective PR. Sending a pitch to the wrong journalist wastes time and damages relationships. Here are the primary sources for finding media contacts:
Source
What you find
Access
Best for
Cision
Journalist database, media lists, distribution
Subscription ($5K-$25K+/year)
Enterprise PR teams
Muck Rack
Journalist profiles, articles, social media, contact info
Subscription ($5K-$15K+/year)
PR teams; journalist discovery
Prowly
Media database, press releases, newsrooms
Subscription ($300-$600/month)
Mid-market PR
Roxhill
UK and international media database
Subscription (custom pricing)
UK-focused PR
Anewstip
Journalist search by topic and recent coverage
Subscription ($150-$500/month)
Budget-conscious PR
HARO (Help a Reporter Out) / Connectively
Journalist queries seeking sources
Free / paid tiers
Reactive PR (responding to queries)
Qwoted
Journalist-source matching
Free / paid
Reactive PR
Publication websites
Staff pages, mastheads, contributor lists
Free (public)
Direct research
LinkedIn
Professional profiles; journalist search
Free / Premium
Individual journalist research
Twitter / X
Journalist profiles, beat interests
Free
Real-time journalist monitoring
Substack / newsletter platforms
Independent journalist contact
Free (public subscriber option)
Independent media
Manual Research Methods
Publication staff pages
Most publications list their editorial staff. These are the most direct sources of journalist contact information:
Publication type
Where to find staff info
What you find
Major newspapers
"About", "Contact", "Staff", or "Masthead" pages
Names, beats, email addresses
Trade publications
"Editorial Staff", "About Us", "Contact" pages
Names, titles, sometimes email
Online-only publications
"Team", "About", "Writers" pages
Names, bios, social links
TV / broadcast
"Our Team", "Newsroom" pages
On-air talent, producers
Podcasts
"About", episode descriptions
Host info, booking contacts
Newsletters
"About the author", newsletter footer
Author name, reply-to address
Byline research
Method
How to do it
What you learn
Search publication archives
Search the publication's website for articles on your topic
Which journalists cover your beat
Google News search
Search Google News for your topic + keywords
Who has written about this recently
Publication search operators
site:publication.com "your topic"
Find specific coverage on a publication
Author page links
Click the author name in a byline
Author bio, other articles, contact info
Social media research
Platform
How to find journalists
What to look for
Twitter / X
Search bios for publication names + "reporter", "journalist", "editor"
Beat, email in bio, DMs open
LinkedIn
Search by current company (publication) + job title
Irrelevant pitches damage relationships and your reputation
Respect stated preferences
If a journalist says "do not email me pitches", respect that
Do not add journalists to marketing lists
Press outreach is not email marketing; do not send newsletters
Do not share media lists externally
Media lists are proprietary; sharing them is unprofessional
Keep lists current
Journalists change publications frequently; verify before pitching
Do not scrape restricted areas
Publication intranets, paid subscriber areas and authenticated sections are off-limits
Follow up once, not five times
One follow-up is acceptable; repeated follow-ups are counterproductive
Remove immediately on request
If a journalist asks to be removed, remove them permanently
Monitoring and Maintaining Media Lists
Keeping lists current
Method
Frequency
What to check
Check journalist bylines
Monthly
Are they still writing for the same publication?
Monitor LinkedIn
Monthly
Job changes, new roles
Monitor Twitter / X
Weekly
Bio changes, publication changes
Verify email addresses
Before each campaign
Addresses may be invalid after job changes
Track editorial masthead changes
Quarterly
Staff changes, new beats
Set Google Alerts
Ongoing
Alerts for journalist names to track coverage
Monitoring journalist coverage
import requests
from datetime import datetime, timedelta
def search_journalist_coverage(journalist_name,
days_back=30):
"""Search Google News API for recent coverage
by a specific journalist."""
# Note: Google News does not have a free API.
# Use NewsAPI.org, GNews API, or similar.
api_key = 'YOUR_NEWS_API_KEY'
from_date = (
datetime.now() - timedelta(days=days_back)
).strftime('%Y-%m-%d')
url = 'https://newsapi.org/v2/everything'
params = {
'q': f'"{journalist_name}"',
'from': from_date,
'sortBy': 'publishedAt',
'apiKey': api_key,
'language': 'en'
}
response = requests.get(url, params=params, timeout=30)
if response.status_code == 200:
return response.json().get('articles', [])
return []
Preparing Media Contact Lists
When building media lists from multiple sources (publication staff pages saved as HTML, conference speaker lists as PDF, industry directory exports as CSV, newsletter author pages), upload the files to Email Extractor to extract and deduplicate email addresses across all sources. This is useful for consolidating journalist contacts from different publications and directories into a single clean list before pitching.