DEV Community

Oleksyj Mokrousov
Oleksyj Mokrousov

Posted on Originally published at perigon.io

Competitor News Monitoring with the News API: Track Rival Companies and Political Rivals

Why competitor news monitoring fails on keywords alone

Competitor news monitoring is not searching a rival’s name every morning. Company launches, defense awards, and earnings hit the wire in the same week as political rivals fight for headline share. Keyword q alone cannot keep those lanes clean.

Search Lockheed, RTX, or defense and you also match namesakes, sports metaphors, and consumer brands. Search Trump or Biden and you also match family members, entertainment rows, and caption noise. The rivals you mean stay hard to compare side by side.

Try it live: Articles sandbox · Docs: Entities · Plans: API pricing

This guide answers:

What is competitor news monitoring on a news API?

How do you build a rival company watchlist with entities?

How do you compare political rivals like Trump and Biden?

How do you compare coverage volume across competitors?

How do you keep earned coverage vs press-release noise?

Which recipes fit company CI vs political CI vs Stories?

Param encyclopedias live in the Company News API guide and Entities docs. Product briefings belong on Monitor Defense Industry News or Monitor US Politics News. This page owns the API competitive-intelligence workflow - companies and people as rivals.

What competitor news monitoring means on a news API

On Perigon, competitors are whoever you need to compare in coverage - primes, brands, or political figures. The workflow is the same shape:

1) Pick a stable rival set.

2) Resolve each rival to a durable ID (companyId / companySymbol, or personWikidataId).

3) Run the same Articles (/v1/all) recipe once per rival in one date window.

4) Compare volume and themes; optionally open Stories when one move reprints everywhere.

You filter who was linked on the article. You do not scrape competitor websites. You do not call another vendor’s news API.

Rival type Resolve with Filter on Articles / Stories
Company / brand Companies API companySymbol, companyId, companyDomain
Political figure People API personWikidataId (prefer) or personName
Event language - Optional q (award, earnings, debate)
Earned-only - excludeLabel
Reprint collapse - Stories with the same entity fence

How to build a rival company watchlist with entities

Resolve each rival once on the Companies API (/v1/companies/all). Prefer the parent listed company and a primary companySymbol. Skip subsidiaries and namesakes unless that unit is the desk’s target.

Example A - Defense primes as rivals

Live Companies lookup (not a Signals tutorial):

Rival (parent) Prefer companyId Symbol
Lockheed Martin Corporation Parent - not Rémy Martin / Martin Professional 2fa32c247a6f4d83be3c163cc685691b LMT
RTX (US aerospace / defense) companySymbol RTX - name “RTX” can return Danish RTX A/S (use symbol; skip f531cda3de2c47128cee041eb5327d83) RTX
Northrop Grumman Corporation Parent - not Sperry Marine alone 7ba58a4019cf48afb56c710b0e8d0ef2 NOC
The Boeing Company Parent - not Boeing Store / BECU c825868b46614e598257013cf9f39c03 BA
General Dynamics Corporation Parent - not Mission / Land Systems / Electric Boat alone a61d0b7101cf411ebcfbacd479586be7 GD

Apply it

Store id + symbol in config.

Pass companySymbol set to LMT (or Lockheed’s companyId) on Articles.

Repeat for RTX, NOC, BA, and GD.

Add q only for move type (award, earnings, partnership).

Example recipes (defense)

CI question Recipe
All Lockheed-linked news companySymbol=LMT, sort by date
Lockheed awards only companySymbol=LMT + q=award OR contract
RTX vs LMT volume this month Two queries, same from/to, compare numResults
Boeing commercial + defense noise cut companySymbol=BA + excludeLabel Non-news
GD shipbuilding desk companyId for General Dynamics Corporation (avoid Electric Boat-only unless needed)
Five-prime morning digest Five parallel queries → Summarizer per rival

Name collisions are the failure mode. “Martin” or “RTX” without entities are research strings, not keys. Refresh IDs when tickers or structure change.

Example B - Brand and sponsor rivals (pattern)

The same pattern works outside defense. Resolve each brand on Companies, then run parallel companySymbol or companyId watches - for example Nike (NKE) vs a sportsbook or apparel rival on your book. Keep one query per brand in the same window. Domain filters (companyDomain) help when the rival is private or the ticker is ambiguous. Full ticker/domain cookbook stays in the Company News guide.

How to compare political rivals like Trump and Biden

Political competitors are people, not tickers. Resolve each on the People API (/v1/people/all), store personWikidataId, and run parallel Articles queries. Deeper person methodology lives in the political rival mentions guide - the worked pair below is the CI example for this page.

Example C - Trump vs Biden (live People lookup)

Rival Prefer this row personWikidataId
Donald Trump US politician / President row - not Donald Trump Jr. Q22686
Joe Biden 46th President row - not Hunter Biden, Ashley Biden, or singer “Joe” Q6279

People search for “Donald Trump” also returns Melania, Ivana, and Ivanka. “Joe Biden” also returns Hunter, Ashley, Valerie Biden Owens, and unrelated Joe rows. Pin Wikidata IDs or the wrong human enters the feed.

Apply the pair

Feed A: personWikidataId set to Q22686.

Feed B: personWikidataId set to Q6279.

Same from / to window for both.

Optional fence: category set to Politics and sourceCountry set to us.

Optional q: debate, executive order, campaign - event language only.

Political volume (30 days)

pubDate 2026-06-23 through 2026-07-23:

Filter About how many articles
Trump Q22686 ~980,000
Biden Q6279 ~75,000
Trump + Politics + US sources ~290,000
Biden + Politics + US sources ~38,000

Round large totals; very large person feeds can sit near caps - prefer relative wording. In this window Trump-linked volume sat roughly an order of magnitude above Biden overall, and still several times higher inside the US Politics fence. Use that as triage for coverage heat - not as an election scoreboard.

Political recipe table

CI question Recipe
Open Trump mention firehose personWikidataId=Q22686
Open Biden mention firehose personWikidataId=Q6279
Fairer US politics desk compare Each ID + category=Politics + sourceCountry=us
Debate-week slice Each ID + q=debate + same from/to
Shared narrative heat Stories + personWikidataId (one ID per poll)
Cut opinion roundups excludeLabel Opinion or Non-news on either feed

Coverage shape (historical overviews - domains only): news.yahoo.com-style politics commentary linked to Trump; nwaonline.com-style White House visit coverage linked to Biden. Treat as pattern checks. A recent Stories shape for Q22686 can look like a multi-outlet foreign-policy or defense cluster that also mentions Trump - useful when the rivalry is a shared narrative, not a single URL.

For continuous politics product briefings, use Monitor US Politics News. For who wrote the coverage, use election journalist guides.

How to compare coverage across competitors

Whether rivals are companies or people, the rule is the same: one query per rival, identical window. Do not OR five tickers or two surnames into one bag if you need share-of-voice numbers.

Company Articles volume (same 30 days)

Rival symbol About how many articles
LMT ~19,000
NOC ~9,200
RTX ~5,400

Lockheed-linked coverage outpaced Northrop and RTX - triage, not proof of wins.

competitors_volume.png

Company Stories compression (same window)

Rival Stories clusters (~)
LMT 61
NOC 26
RTX 19

Tens of thousands of articles become tens of narratives. Use Articles for volume; use Stories when an earnings print or award reprints (RTX outlook raise; Northrop Hawkeye award). Adjacent science clusters can appear on a prime symbol - tighten with q. Full move-detection sits in the competitor moves / Stories guide.

Side-by-side: company vs political competitors

Defense primes Trump vs Biden
Entity companySymbol / companyId personWikidataId
Typical 30-day scale Thousands–tens of thousands of articles Tens of thousands–hundreds of thousands
Stories role Earnings / contract moves Shared policy or campaign narratives
Common noise Namesake firms, subsidiaries Family members, entertainment Joes
Desk fence Optional sourceGroup / q Politics + US sourceCountry

What company coverage often looks like

Entity filters typically return contract and program wires. Historical pattern checks (domains only): marketwatch.com / theatlasnews.co style F-35 award framing for Lockheed; militaryleak.com style F135 engine funding for RTX.

For themes, skim titles per rival feed - or pass each set into Search Summarizer. Summarizer theory stays on that guide.

How to keep earned coverage vs press-release noise

Rival IR and campaign communications publish releases that index like news. For third-party coverage, add excludeLabel (Press Release, Paid Content, or Non-news) on the same entity query. Keep a second feed for official releases if you still need them.

Goal Mechanism
Company allowlist companySymbol or companyId
Person allowlist personWikidataId
Event language Optional q
Earned-only excludeLabel
Publisher fence Optional sourceGroup
Incremental poll from / to or addDateFrom

Mixed stack example:

companySymbol=LMT + q=contract + excludeLabel Press Release - awards discussed by third parties, not only Lockheed’s wire.

Political stack example:

personWikidataId=Q22686 + category=Politics + sourceCountry=us + excludeLabel Non-news - US politics desk, less caption junk.

End-to-end CI playbooks

Playbook 1 - Five-prime defense morning brief

Resolve LMT, RTX, NOC, BA, GD (table above).

Poll Articles per symbol for the last 24 hours (addDateFrom or from/to).

Rank rivals by numResults; open the top two feeds.

For any spike, switch to Stories with that symbol and read articleCount.

Optional: Summarizer on the spike set for a six-bullet IR note.

Playbook 2 - Trump vs Biden weekly share-of-voice

Confirm Q22686 and Q6279.

Run both person filters for the last 7 days with Politics + US sources.

Record relative volume (do not treat as polls).

Diff top topics or skim titles for theme gaps.

If one shared narrative dominates, follow it on Stories with one ID at a time.

Playbook 3 - Award week for two primes

Parallel: companySymbol=LMT and companySymbol=NOC.

Add q=award OR contract OR Navy on both.

Compare counts; open Stories on the louder symbol.

excludeLabel Press Release if you want earned desks only.

When this workflow vs other Perigon surfaces

Situation Prefer
Rival-company and rival-person API compares This page
Deep person-only methodology Political rival mentions guide
Earnings / contract as one narrative Competitor moves / Stories guide
Full company / ticker / executive params Company News guide + Entities docs
Defense or US politics product UI Monitor Defense / Monitor US Politics
Who wrote the politics coverage Election journalists guides
Editorial calendar gaps Content strategy news API guide
News API vendor prices Pricing comparison (separate SERP)

Beat scale at a glance

Company rivals and political rivals both need entity IDs - keywords fail differently (namesakes vs family).

In 2026-06-232026-07-23, LMT / NOC / RTX article volumes differed by multiples; Stories stayed in the tens of clusters.

In the same window, Trump vs Biden person volume differed by roughly an order of magnitude; Politics + US sources cut both feeds while preserving the gap.

Contract wires and candidate mention firehoses are evergreen shapes; re-run stats when you ship.

Key takeaways

Competitor news monitoring = resolve rivals + parallel Articles filters - companies or people.

Defense example: LMT, RTX, NOC, BA, GD - skip namesakes and Danish RTX A/S.

Political example: Trump Q22686 vs Biden Q6279 - skip Jr., Hunter, and other near matches.

Compare with one query per rival; use Stories when reprints are the problem.

Stack excludeLabel for earned media; use Signals Monitor pages for product briefings.

Get started: Articles sandbox · Entities · API reference · API pricing

Top comments (0)