To evaluate a company news API, score it against what the companies themselves published. This post sets out a test to run on a sample before you sign: choose companies and a closed period, collect every item each company put out in its own newsroom and filings, then measure the API's coverage of those items, the duplicates it returns and how it tells the company's own text from a copy.
How to evaluate a news API for coverage and duplicates
Build a reference set from what a sample of companies published themselves over a closed period, in their newsrooms and their filings. Query the API for the same companies and dates. Then compute four measures: the share of reference items returned, copies per item, the share whose original is marked, and the share of records about the company.
The reference set gives the result its meaning: an API's own totals say what it holds, and only items collected from the company's side say what it missed. Build the set once and run every API against it. The glossary entry on data coverage defines the measure.
- Choose the companies. Take 20 to 50 of the companies you track: listed companies that file current reports, private companies that publish only in a newsroom, across sizes and countries.
- Choose a closed period. A quarter that ended some weeks before the test gives every source time to carry its items.
- Collect the newsroom. Record every item in the period from each company's newsroom or press page and from any RSS or Atom feed it publishes, with title, date and address.
- Collect the filings. Record every current report each listed company filed in the period, with its accession number and its items.
- Query the API. Ask for the same companies and period, and keep everything it returns, including records it marks as related or duplicate.
- Match. Pair each returned record with a reference item, or with none, under one written rule, and keep the pairs for a second reviewer.
Two choices keep the score fair. Count a current report as its own reference item even when its exhibit repeats a newsroom release, because a buyer usually wants both the legal record and the company's words. And report coverage for newsroom items and filings apart, since one figure can hide a gap in either.
News API deduplication: an evaluation methodology
Judge deduplication on the reference items the API returned. For each item, gather every record that carries it, from the company's site, a filing, a wire or an aggregator. Count the copies, check whether the API grouped them under one key, and look for the opposite error: two distinct announcements merged into one record or group.
Deduplication fails in two directions. Copies left as separate records inflate counts: one launch fires three trigger events, or counts three times in an event study. Distinct items merged into one hide an event, such as two partnership announcements a week apart with near-identical titles. Score both errors.
Write the matching rule down and apply it to every API alike.
- Shared identifier. The same feed entry identifier or the same accession number means the same item.
- Same text. Otherwise, the same company, titles that match once case, punctuation and the company name are removed, and opening paragraphs that say the same thing.
- Uncertain. Pairs that pass only part of the text test go to a reviewer.
Two official definitions make the first tier dependable. The Atom format, RFC 4287, defines an entry's identifier as permanent and universally unique, and requires that it stay unchanged when the entry is syndicated or republished. EDGAR assigns every accepted submission an accession number automatically, as its unique identifier. The first block of that number is the CIK of whoever submitted the filing, which can be a filing agent, so match the company on its own Central Index Key and the filing on the full number.
A company news API benchmark for coverage and duplicate detection
A benchmark is the same reference set, the same matching rule and the same measures applied to every API you assess. Seven measures cover it: coverage, coverage by source kind, copies per item, duplicates detected and grouped, over-merges, the share with the original marked, and the share of records about the company.
| Measure | How to compute it | What it tells you |
|---|---|---|
| Coverage | Reference items returned at least once, divided by all reference items | How much of what the companies said reaches you |
| Coverage by source kind | The same, for newsroom items and for filings apart | Whether the API reads the company's pages and its filings alike |
| Copies per item | Records matched to a reference item, divided by the items returned | How many records you collapse before you count events |
| Duplicates grouped | Items whose copies share one record or one group key, divided by the items returned | Whether duplicate detection is done before the data reaches you |
| Over-merges | Groups that hold two or more distinct reference items | Whether grouping hides separate events |
| Original marked | Items with a record at the company's own address or in the filing, divided by the items returned | Whether you can open the company's own text from the record |
| On-company share | Records matched to a reference item, divided by all records returned for the companies | How much of the feed is about the companies at all |
Report each share with an interval, because a share over a few dozen items is unsteady. Section 7.2.4.1 of the NIST/SEMATECH e-Handbook of Statistical Methods gives the Wilson interval for a proportion, whose lower limit cannot fall below zero, unlike the interval most often used, and whose performance depends little on the sample size or the share. With p the observed share, n the number of reference items and z = 1.96 for a 95% interval:
divisor = 1 + z^2 / n
centre = (p + z^2 / (2n)) / divisor
half-width = z times sqrt( p(1-p)/n + z^2 / (4n^2) ) / divisor
interval = centre plus or minus half-widthHow to tell an original press release from syndicated and duplicated news
Check where each copy lives and what it declares. The original sits on the company's own domain, in its newsroom or a feed its homepage declares, or in its filing. A copy sits on another host, and may point to the original through a canonical link or a shared feed entry identifier. Text overlap settles the rest.
In this test the original is the company's own publication of the text. Read the evidence from the strongest.
- A shared identifier. Records with the same Atom entry identifier or accession number are one item, on any host. RFC 4287 also lets an entry copied into another feed keep its source feed's metadata in a source element.
- A declared canonical address. RFC 6596 defines the canonical link relation to name one address as preferred over resources with duplicative content, and allows that address on a different hostname or domain. A copy that names the company's page as canonical points to the original.
- The host. An address on the company's own domain, or on the regulator's, is the company's own channel.
- The text. Compare the opening paragraphs. A copy can add lines around the company's text, or cut it.
The earliest timestamp is weak evidence on its own, because copies can appear at the same moment as the original. The address that leads back to the company's own text is the record's provenance.
Press release, SEC filing and newswire: where the accuracy difference lies
The difference lies in who speaks and which rules apply, and the three can carry the same words. A current report is the company's own filing with the SEC, made under numbered items. A press release is the company's own text in its newsroom. A wire distributes that same text widely, and an aggregator republishes what others wrote.
A filing is a legal record with fixed items. The SEC's 2004 release on Form 8-K calls it the Exchange Act form for current reports, and set four business days after a triggering event as the deadline for required reports (SEC Release 33-8400). It arranged the form in numbered items by section, from Item 1.01, Entry into a Material Definitive Agreement, to Item 9.01, Financial Statements and Exhibits, and left unchanged the deadline for Regulation FD disclosures under Item 7.01 and voluntary disclosures under Item 8.01.
Items differ in standing. Under that release, exhibits relating to Item 2.02, Results of Operations and Financial Condition, or to Item 7.01 are deemed furnished and not filed, unless the registrant specifies otherwise. Item 2.02 took over all the substantive requirements of the former Item 12, which had the company identify a results announcement or release and include its text as an exhibit (SEC Release 33-8176). One results release can therefore reach a news API three times: from the newsroom, a wire and a current report.
A wire carries the company's release. Where Regulation FD requires public disclosure, 17 CFR 243.101(e) has the issuer furnish or file a Form 8-K, or instead disseminate the information by a method, or mix of methods, reasonably designed to reach the public broadly and without exclusion. Adopting the rule, the SEC counted press releases sent out through a widely circulated news or wire service among the acceptable methods (SEC Release 33-7881). A release on a wire is the company speaking through a distributor.
A newsroom is the company's own channel. In the EU, Article 17(1) of the Market Abuse Regulation has an issuer inform the public as soon as possible of inside information that directly concerns it, other than information on intermediate steps in a protracted process, in a way that allows fast access and a complete, correct and timely assessment. The same paragraph has the issuer post and keep on its website, for at least five years, all the inside information it must disclose publicly (EUR-Lex, consolidated text of 5 June 2026).
| Source | Who speaks | What shapes it | Its place in the test |
|---|---|---|---|
| Current report | The company, as the registrant | Numbered items; four business days for required reports | Reference item, keyed on its accession number |
| Newsroom item or company feed | The company | The company's own release; in the EU, inside information is also kept on its website | Reference item; its address on the company's domain marks the original |
| Wire item | The company, through a distributor | An acceptable method of public disclosure named when Regulation FD was adopted | Copy, grouped with the newsroom item |
| Aggregator item | Another publisher, republishing | The aggregator's own practice | Copy, sometimes partial |
Reliability of company newsrooms, press wires and regulatory filings as sources
Each is reliable for a different question. A regulatory filing records what the company reported under a numbered item. The newsroom carries the company's own words, including announcements made without a filing. A press wire carries the same release to a wide audience. A feed should keep the kind of source on every record.
So the company's own channels are the reference, and a wire or aggregator record is a copy of an item in it. The source kind on each record lets a research desk keep to filings while a revenue team reads every newsroom launch. The guide to event-driven research with Form 8-K filings and newsrooms puts both kinds of source to work.
An illustrative example: testing an API on Acme Robotics
The figures are invented to show the arithmetic. Acme Robotics is an illustrative listed company, tested alone so that every step can be redone by hand.
Assumptions:
- The period is one closed quarter.
- The reference set holds 40 items: 34 from its newsroom and feed, and 6 current reports.
- The API returned 136 records for Acme Robotics.
- Matching found 112 records that carry a reference item and 24 that carry none.
- The 112 records cover 34 distinct reference items: 30 newsroom items and 4 current reports.
- For 22 of the 34 items the API grouped the copies under one key; for the other 12 it returned them as unlinked records.
- For 26 of the 34 items at least one record points to the company's own address or to the filing.
- Two of the API's groups each hold two distinct reference items.
- The interval is the Wilson interval at 95%, with z = 1.96.
| Measure | Working | Result |
|---|---|---|
| Coverage | 34 / 40 | 85.0% |
| Coverage, newsroom items | 30 / 34 | 88.2% |
| Coverage, current reports | 4 / 6 | 66.7% |
| Copies per item | 112 / 34 | 3.3 records |
| Extra copies | 112 minus 34 | 78 records |
| Duplicates grouped | 22 / 34 | 64.7% |
| Over-merges | Counted directly | 2 groups |
| Original marked | 26 / 34 | 76.5% |
| On-company share | 112 / 136 | 82.4% |
The interval for coverage, with p = 0.85 and n = 40:
- z^2 / n = 3.8416 / 40 = 0.0960, so the divisor is 1.0960.
- The centre is (0.85 + 0.0480) / 1.0960 = 0.8193.
- The half-width is 1.96 times the square root of (0.0031875 + 0.00060025), divided by 1.0960: 1.96 × 0.06154 / 1.0960 = 0.1101.
- The interval runs from 0.8193 minus 0.1101 to 0.8193 plus 0.1101: 0.709 to 0.929, or about 71% to 93%.
Three readings follow. The interval is wide: a second API scoring 80% on the same items falls inside it, so widen the sample before you read a gap of a few points as a difference; at 85% over 400 items the interval narrows to about 81% to 88%. The wider gap is in the filings, with 2 of 6 current reports missing, which weighs most for research use. And 78 of the 136 records are extra copies, 12 items arrive unlinked and 2 groups merge separate events, so counting events starts with your own deduplication.
Company announcements read at the source
Company News, in our Announcements and scale product, delivers company announcements and regulatory disclosures from the two kinds of source this test uses as its reference: each company's own newsroom and, for a listed company, its regulatory filings. Each announcement is stored once, with its evidence on the record.
- The title as published, and the date the company published it or, where the source gives none, the date first seen.
- An excerpt of the company's own text; for a regulatory disclosure, the text under the items filed.
- The address of the original announcement or filing.
- The kind of source, and for a filing its reference and the items it was filed under.
- An event type, one of 13 kinds, with a named version on the record.
With the original address and the company's own text on each record, the test above runs on it as written. Sample data for the companies you name is sent on request with the data dictionary and the methodology, and the sourcing statement sets out what is read. The ten questions for a company data vendor cover the rest of a review.
Frequently asked questions
What coverage should a company news API reach?
We found no official standard for the coverage of a news API, including among the news media standards the IPTC publishes, so set the bar from your own use. Measure coverage on a reference set of what the companies you track published themselves, report it with an interval, and split it between newsroom items and filings. A feed strong on newsroom items and lighter on filings can suit a revenue team and leave a research desk short.
How many companies does a news API test need?
Enough that the interval around coverage is narrower than the gaps you want to detect. In the illustrative example, 40 reference items at 85% give an interval of about 71% to 93%, while 400 items at the same rate give about 81% to 88%. Mix listed companies that file current reports with private companies that publish only in a newsroom.
Is an SEC filing more accurate than a press release?
The two answer to different rules. A current report on Form 8-K is the company's filing with the SEC, made under numbered items, with four business days for required reports. A press release is the company's own text, published in its newsroom. Under Item 2.02 a results release is included as an exhibit to the current report, so the two can carry the same words.
Should a company news API include newswire copies?
It can, provided each copy is tied to the company's original. A wire copy is the company's release distributed to a wide audience, so it carries the same announcement as the newsroom. Ask the API to group copies under one key and to mark the original, then score both on a sample of the companies you track.
How do I remove duplicate news items from several feeds?
Match on identifiers first, then on text. Records that share an Atom entry identifier or an SEC accession number are the same item. Then group records for the same company whose normalised titles match and whose opening paragraphs say the same thing, and keep the record at the company's own address as the original. Read the uncertain pairs by hand.
Where do Fokals company announcements come from?
From the company's own channels: its newsroom and the feeds it publishes and, for a listed company, its regulatory filings. Each announcement is stored once with its title, its date as published, an excerpt of the company's own text, the address of the original and its event type.
The queries and code on this page are examples to adapt. Test them in your own environment before you rely on them.
What this page says about the products it names was checked against their public documentation on 7 October 2026. Product and company names are trademarks of their owners. Fokals is not affiliated with them or endorsed by them.