APITube Help Center

How to Find Journalists for PR Outreach

Discover reporters who cover your beat from the articles they write, qualify them by coverage, activity and tone, then research their back-catalogue before you pitch

Beatrice Riddick

Written by Beatrice Riddick

July 3, 2026

Updated July 6, 2026

Open this example in the API Playground ↗

How to find journalists for PR outreach

To build a PR list, search recent articles about your beat with GET /v1/news/everything and read the author field on each result to see who actually covers the topic, then qualify each reporter with GET /v1/journalists/:id for their beat, activity and tone, and pull their full back-catalogue with the author.id filter before you pitch. There is no “search journalists by topic” call — the directory searches by name only, so the reporters you want are discovered from the coverage they produce.

curl "https://api.apitube.io/v1/news/everything?title=fintech&published_at.start=NOW-30DAY&per_page=100" \
  -H "X-API-Key: YOUR_API_KEY"

You can send the key as the X-API-Key header or the api_key query parameter. Every article APITube returns includes an author object with an id and name, so one search over your beat hands you a raw list of the journalists writing about it right now.

Who covers your beat? Start from the articles, not the directory

The /v1/journalists directory only accepts a name filter, so you cannot ask it “which reporters cover fintech?” directly. The reliable way to find journalists on a beat is to search the beat and collect the bylines. Scope a search to your topic and a recent window, then read author.id and author.name off each article:

# Reporters writing about your beat in the last 30 days
curl "https://api.apitube.io/v1/news/everything?title=cybersecurity&published_at.start=NOW-30DAY&per_page=100" \
  -H "X-API-Key: YOUR_API_KEY"

title does a keyword match on the headline (2–100 characters). published_at.start accepts relative values such as NOW-30DAY, NOW-1WEEK or NOW-1MONTH, so you keep the list to reporters who are active on the topic, not people who wrote about it two years ago. Tally the author.id values that show up most often — those are your first-tier targets. You can narrow the beat further with the topic, industry and entity filters instead of a headline keyword; how to find news mentioning a person or company covers pinning a search to a company or person you want covered.

How to qualify a reporter before you pitch

Once you have a reporter’s ID, call GET /v1/journalists/:id to decide whether they are worth an email. The profile returns their outlets (which publications they write for), a coverage block that summarizes everything they have written, and recent_articles — up to five of their latest stories.

curl "https://api.apitube.io/v1/journalists/84213?api_key=YOUR_API_KEY"

The coverage block is the qualification data:

{
    "coverage": {
        "article_count": 1284,
        "first_seen": "2023-02-11",
        "last_seen": "2026-06-25",
        "sentiment": { "positive": 540, "neutral": 612, "negative": 132 },
        "momentum": { "last_30_days": 41, "previous_30_days": 37, "change_pct": 11 },
        "top_topics": [ { "id": 123, "name": "Artificial Intelligence", "count": 88 } ],
        "top_entities": [ { "id": 314, "name": "OpenAI", "count": 57 } ],
        "top_countries": [ { "id": 840, "name": "United States", "code": "us", "count": 700 } ],
        "top_languages": [ { "id": 1, "name": "English", "code": "en", "count": 1200 } ]
    }
}

Read it like a media-kit fit check. top_topics and top_entities are the reporter’s real beat — pitch them only when your story lands inside it. momentum compares the last 30 days against the previous 30, and last_seen tells you when they last published, so you skip bylines that have gone quiet. sentiment counts how positively, neutrally or negatively they tend to frame coverage. If you only need the outlets and the fit signal fast, add coverage=false to skip the aggregate queries and get a lighter response.

How to look up a reporter you already know by name

When a name is already on your list, search the directory directly with GET /v1/journalists. The name filter is a substring match, so name=Jane returns every byline containing “Jane”, and one reporter publishing across several outlets is merged into a single record with an outlets array:

curl "https://api.apitube.io/v1/journalists?name=Jane%20Doe&per_page=50&api_key=YOUR_API_KEY"

Paginate with page (default 1) and per_page (default 100, maximum 250); has_next_pages is true while a page comes back full. Each result already carries a links.articles URL pointing at /v1/news/everything?author.id=<id>, so the next step is one click away. The journalists directory guide walks through the list and profile endpoints in full.

How to research everything a reporter has written

Before you pitch, read what a reporter has actually published so your email references their real work. Take the id and pass it to the search endpoint as author.id:

curl "https://api.apitube.io/v1/news/everything?author.id=84213&published_at.start=NOW-3MONTH" \
  -H "X-API-Key: YOUR_API_KEY"

author.id accepts up to three IDs separated by commas with OR logic, so you can pull two or three related bylines in one call and combine them with any other filter — a date window, a language, a topic. You can also filter by author.name if you have not resolved the ID yet, though a name that is not found returns an HTTP 400 error, so IDs are the safer choice. See how to filter news by author for the full author.id and author.name behavior. For every accepted parameter, the News API parameters reference is the canonical list.

Common Questions

Can I search journalists directly by topic or beat?

Not directly. The /v1/journalists directory filters by name only, so there is no “give me every fintech reporter” call. You find beat reporters the other way around: search articles on the beat with /v1/news/everything, read the author object on each result, then look those IDs up in the directory. The top_topics and top_entities in a journalist’s coverage block then confirm the beat is really theirs and not a one-off story.

Does looking up a journalist cost a request?

A successful GET /v1/journalists/:id profile call charges one request against your plan. The GET /v1/journalists list is more forgiving: it charges one request only when it returns at least one match, so a search that finds nobody costs nothing. The article searches you run to discover bylines each count as a normal /v1/news/everything request.

How do I know if a journalist is still active?

Read three fields in the coverage block: last_seen is the date of their most recent article, momentum.last_30_days is how many they published in the last month, and momentum.change_pct compares that against the previous 30 days. A rising change_pct means they are ramping up on a topic; it is null when there was no prior-period activity to compare against, which usually flags a new or newly-tracked byline.

Why are the recent_articles bodies cut off?

On a Free plan or a test key, the article bodies inside recent_articles are truncated to a preview — the same content masking applied everywhere in the News API. The author, headline, outlets and coverage stats are always returned in full; only the article text is shortened. Use a live key on a paid plan to read the complete bodies.


Related Articles