Skip to content
NegativeNewsSearchA DemandFlow product

How it works

From "a name and a country" to a report that survives the audit.

NegativeNewsSearch is a service, not a research portal. You send a request and receive a structured result. Everything that happens in between is set out here in full.

An abstract mesh of glowing blue nodes and connecting lines.

The run

Seven steps per request.

Each step is individually traceable: the result carries which search lanes ran, which name variants were used, which RSF rank applied, and how many hits there were before and after deduplication.

  1. 01

    Step 1 · POST /tasks

    Accept the request

    The required inputs are a name and a country (ISO country code). Optionally you can pass a more precise location or a pre-resolved search region, plus a webhook address for the completion notice. The request is acknowledged immediately and processed asynchronously — a screening takes minutes, and no caller should have to hold a connection open that long.

  2. 02

    Step 2 · Aliases

    Resolve name variants deterministically

    The name is resolved against a curated alias set: trading names, common short forms, acronyms and transliterations in non-Latin scripts. The variants enter the search as an OR block — "Brega" becomes the full set of known spellings. The set is a maintained list, not model output: the same input reproducibly yields the same search.

  3. 03

    Step 3 · Lanes

    Build country-aware search lanes

    The country code determines the appropriate search domain, interface language and search region — research into a Libyan company does not run usefully against the German index. The search covers a trailing window of six months by default, across both web and news search.

  4. 04

    Step 4 · Press freedom

    Open an international lane where the press is constrained

    The country’s RSF rank decides whether local search alone is sufficient. Past a configurable threshold a second, international lane opens and puts the same question internationally and in English. The rank applied is recorded in the result — which makes the decision auditable rather than implicit.

  5. 05

    Step 5 · Sources

    Bring in the archive and the sanctions lists

    Running alongside the live search: the GDELT archive query across the lookback window, and fuzzy matching against the EU consolidated list, the OFAC SDN list and the US Consolidated Screening List. Sanctions hits are their own clearly separated result category and are never blended into press mentions.

  6. 06

    Step 6 · Analysis

    Fetch, extract and assess each article

    Hits are deduplicated and the most relevant fetched in full text; a browser fallback covers pages that do not answer a plain request. Each article is analysed on its own. The analysis may use only what the text contains — no additions, no speculation, no prior knowledge about the company. It is written in the language you requested, English or German, straight from the source article — an Arabic report becomes a German assessment in one step, not a translation of a translation.

  7. 07

    Step 7 · Report

    Produce and deliver the overall assessment

    The individual analyses are consolidated into an overall assessment which, in turn, may draw on nothing else. Collect the result by polling, follow it on an event stream carrying the states queued, processing, completed and failed, or have it delivered by signed webhook.

Anatomy of a report

Why the structure is fixed.

Free-form prose is worthless in a file, because nobody can compare it across two cases. So every article analysis carries the same three sections — and the same four risk dimensions.

A summary without judgement

A plain restatement of what the article says. No framing, no interpretation, no enrichment from known context. If the assessment is later challenged, this is where a reader checks whether the article was read correctly in the first place.

An explicit relevance finding

The analysis has to state how the article connects to the subject: as the principal actor, as a participant, as a group company, as a passing mention — or not at all. This is the section that exposes name collisions before they turn into a false alert.

Four dimensions, scored 0 to 3

Money laundering and terrorist financing; sanctions and embargoes; fraud and corruption; tax. 0 means no indication, 1 a weak or indirect one, 2 a concrete suspicion such as an open investigation, 3 a proven or officially established breach. Each score carries its rationale drawn from the text.

Disclosed incompleteness

Where an article was visibly cut off by a paywall, it is still assessed — but the report states plainly that the basis was incomplete. A silently truncated source would be the most dangerous finding of all.

A traceable search run

The result carries the search query that actually ran, the name variants used, the search domains queried, the lanes that executed, the RSF rank, and the hit counts before and after deduplication. The search itself is documented, not only its outcome.

Sanctions hits reported separately

Per hit: source list, entity ID, matched name, match type, similarity score, sanctions programme, data vintage and source reference. Kept apart from the press assessment, because it is a different kind of finding with different legal consequences.

Subject

Musterhandel International S.A.

Country

LY — Libya · international lane active

Summary

Prosecutors have been investigating two former board members of the company since February on suspicion of commercial bribery. The proceedings concern payments connected to the award of an infrastructure contract, said to have been routed through an intermediary company. The company rejects the allegations.

Connection to the searched organisation/person

The searched organisation is the direct subject of the article. The named individuals are expressly described in the text as former board members of the company.

Risk assessment

  • Money laundering / terrorist financing

    The article describes payment flows through an intermediary company but raises no money-laundering allegation.

  • Sanctions / embargoes

    No indications in the article text.

  • Fraud / corruption

    Ongoing criminal investigation on suspicion of bribery. No legally binding finding stated in the article.

  • Tax

    No indications in the article text.

Source: beispiel-zeitung.example · business desk

Published: 14 March 2026

This article may have been truncated by a paywall and could not be read in full.

Found but not assessed

14 assessed · 4 could not be read · 9 not reached

The card above is one of the fourteen assessed articles. These four were found by the same screening and judged relevant, but could not be read automatically — so they are handed over as links rather than dropped. Their absence from the scores is not a finding of "no risk": nothing is known about their content, and the overall score does not account for them.

  • Access blocked — paywall or access restriction

    Investigative feature on the intermediary company

    https://recherche-zeitung.example/dossier/zwischengesellschaft

  • Access blocked — paywall or access restriction

    Interview with the former compliance officer

    https://wirtschaftswoche.example/interview/compliance

  • No readable article text

    Prosecutors’ press release (PDF)

    https://staatsanwaltschaft.example/presse/2026-03-14.pdf

  • Not reachable

    https://regionalblatt.example/2026/03/vergabe-infrastruktur

Sample output using an invented company, an invented set of facts and invented counts — the unreadable sources listed above are invented too. It shows the format, not a real finding about a real business. The proportions are realistic: on live queries a meaningful share of relevant hits cannot be read automatically, and paywalls fall hardest on investigative reporting.

Country logic

Where you search determines what you find.

Most screening tools put every request to the same index. That is convenient and worthless for international cases: researching a Central Asian company against the German-language index is not research, it is a formality.

Country domain, language, region

The submitted country code is resolved against a bundled country catalogue — no external service that can fail. From it follow the correct search domain and the language and region parameters. An unknown or loosely spelled country is matched by similarity rather than causing the request to be rejected.

The RSF threshold

The Reporters Without Borders press freedom index is the basis. Where a country sits at or past the configured rank, the local press situation is treated as insufficiently reliable and an international lane starts alongside. The underlying data is refreshed periodically and also held locally, so a failure at the source never stops the service.

Two lanes, one deduplicated hit space

The lanes run independently and are merged afterwards. Anything appearing in both is analysed once. Which lanes ran is recorded in the result.

Earth at night from orbit, cities forming chains of light across several countries.
SituationLocal laneInternational lane
Country with a largely free presscountry domain, local languagenot required
Country at or past the RSF thresholdcountry domain, local languageinternational, English-language
Country not resolvableinternational domain as fallbacknot applicable
Simplified view of lane selection.

Data sources

Four sources, one job.

Live web and news search

Current reporting across a trailing window of six months by default, on the appropriate country domain. The search query itself is generated for the case and carried in the result.

GDELT Global Knowledge Graph

Our own continuously maintained mirror of the GDELT v2 feed across 36 months, filtered to 13 relevant themes: corruption, money laundering, bribery and collusion, scandal, sanctions, terror, terrorist financing, organised crime, proceeds of crime, tax crime, tax evasion and fraud. That extends the view well beyond what a current search still surfaces.

EU, OFAC and CSL sanctions lists

The EU consolidated list, the OFAC SDN list and the US Consolidated Screening List — which adds the BIS Entity and Denied Persons lists, ITAR debarment and the non-SDN Treasury lists — fuzzy-matched so that spellings and transliterations do not slip through. The SDN rows the CSL duplicates are dropped on import, so one designation never reaches you as two findings. The data is refreshed by a dedicated job rather than at service start — a screening never waits for a list import.

A curated alias set

Name variants come from a maintained set of adverse-media entities. They are applied before the search, not afterwards for ranking — the decisive difference, because a hit that was never searched for cannot be weighted after the fact.

Integration

One call, one header.

All of the cryptography sits in a monthly, offline step. None of it appears in your production path — there, a string is written into a header.

A complete request

curl -X POST https://api.negative-news-search.com/tasks \
  -H 'Content-Type: application/json' \
  -H "X-NNS-Token: $(grep -v '^#' tokens.txt | head -1)" \
  -d '{"reference_name":"Musterhandel International","reference_country":"LY"}'

The responses your integration has to handle.

StatusMeaningToken
202 AcceptedRequest accepted, screening runningspent
200 OKAnswered from cachespent
403 ForbiddenToken was already redeemedspent — discard it
401 UnauthorizedToken missing, malformed or expirednot usable

Collecting the result

Either you poll the job, or you attach to the event stream that reports the transitions queued, processing, completed and failed. For an overnight batch, polling is entirely sufficient.

Webhooks instead of waiting

Optionally the service reports completion to an address of your choosing — signed, with retries and backoff. HTTPS is mandatory, internal network ranges are refused, and you can restrict the permitted target addresses outright.

Same request, one job

If the same research is already running, the second request attaches to the job in flight instead of doing the work twice. Completed results stay in cache for a configurable period.

Sanctions checks on their own

If all you need is the list match, there is a dedicated synchronous call without the queue — suitable, for instance, as a pre-check inside a data entry screen.

Operations

What happens when something breaks.

A screening service that quietly reports "nothing found" during an outage is more dangerous than no service at all. So failure behaviour is part of the product.

Retries with backoff

Technical failures — an unresponsive source, a timeout on a fetch — are retried several times with growing intervals before the job is considered failed.

Failed jobs are called failed jobs

Anything still unanswerable after the retries lands in a traceable failure store and is reported back as failed. It is never reinterpreted as an empty, unremarkable result.

Only answers cost anything

This is exactly where the token is released: a job we could not answer costs you nothing from your allowance. A clean negative — "nothing found, and here is the documented search that establishes it" — is an answer, and is charged.

A secondary source failing stops nothing

The country catalogue and press freedom data are held locally and refreshed in the background. If a source is temporarily unreachable, the service continues on the last known state instead of blocking startup.

Look at a real report.

The most informative case is one whose answer you already know. Give us a few names from your own history.