Query surface

Filters

Twenty-plus exact filters, numeric signal ranges, facet aggregation and pagination — combinable in one request, on every plan.

Publication

ParameterMatchesExample
sourcePublisher domainbbc.co.uk
source_typeKind of publicationweb
publisher_countryWhere the publisher is basedUS
languageSource language, ISO-639-3hin
authorBylinejane doe

Place

ParameterMatchesExample
countryCountry the article is about (FIPS 10-4)GM
cityCity mentionedBerlin
regionAdministrative region mentionedBavaria
locationAny place name mentionedRhine
location_idExact gazetteer identifier-1746443

Subject and entities

ParameterMatchesExample
topicCanonical topic identifierEPU_POLICY
organizationOrganisation mentionedeuropean union
personPerson mentionedbenjamin netanyahu
nameAny proper name mentionedMinistry of Finance

Statements and figures

ParameterMatchesExample
quote_verbVerb introducing a quotationwarned
amount_objectWhat a quantity refers tobarrels
mentioned_dateA date the article refers to20260801

Time and grouping

ParameterMatchesExample
from / toPublication window, to the second20260729T140000
story_idOne clustered storyst_9f2…

Signal ranges

Every article carries scored language signals across industry, business and risk groups. Filter on a range rather than an exact value, and stack constraints — all of them must match.

# energy coverage carrying financial-stress language
GET /search?signal=signal_energy&signal_min=0.3

# stack several: supply disruption AND financial negativity
GET /search?signals=signal_supply_disruption:0.2,signal_financial_negative:0.15

What the signals are and how to use them →

Facets: ask what values exist

Rather than guessing which countries, topics or outlets are worth filtering on, ask. Any filterable field can be requested as a facet, returning values with counts across the whole result set.

GET /search?q=semiconductors&facets=country,organization,language&facet_limit=25

Responses include how much sits outside the returned buckets, so a truncated facet is visible rather than mistaken for the complete distribution. This is what the coverage figures on this site are generated from.

Pagination

Results carry offset, limit, has_more and a total. The total is marked exact for keyword and metadata queries and approximate for ranked semantic modes, so you know whether a count can be relied on or only compared.

Combining them

Filters are conjunctive: every constraint must match. That makes narrow queries cheap to express and makes it easy to over-constrain into an empty result set, so build up rather than starting from everything at once.

# German-language coverage about France, energy sector,
# from publishers based in Germany, last 48 hours
GET /stories
  ?language=deu
  &country=FR
  &publisher_country=DE
  &signal=signal_energy&signal_min=0.25
  &from=20260729T000000