/news

GET 3 credits (1 credit for a stale cache read)

Coverage News is retrieved from a third-party search index (Exa) spanning company websites, social accounts and media outlets — not from a licensed newswire, and not from our own crawl of the register. Results are cached for up to seven days, so checked_at tells you when we last looked rather than implying a live sweep. Own-site items are matched on the company’s verified domain; social and press items are scored against the company name and context, never assumed. A live lookup that finds nothing returns status "no_data" and is charged, because the search still ran; every later "nothing found" for that company is served from cache and is free.

Returns what has recently been published about a company: posts on its own website, activity on its linked social accounts, and coverage in the trade and regional press. Every item carries the headline, the link, the date, a one-line factual summary and — the part nobody else gives you — how it was matched to the legal entity. A post on the company’s own verified domain is certain. A press mention of the same name is a scored guess, and the response says which you are looking at rather than blurring the two.

Possible values for items[].topics

A closed vocabulary. The classifier assigns the single best label per item, so topics is a one-element array — or empty where it returned nothing usable. Filter with the topic parameter.

  • funding
  • grant
  • product
  • leadership
  • hiring
  • contract
  • expansion
  • award
  • partnership
  • restructuring
  • milestone
  • other

Input

ParameterDescriptionRequired
keyYour API key. May also be sent as a bearer token or X-API-Key header.Required
company_numberCompanies House company number, with or without the UK- prefix. E.g. 00000042 or UK-00000042.Required
sinceOnly return items published on or after this point. Accepts an ISO date (2026-01-01) or a relative window (30d, 90d, 12m). Default 12m.Optional
sourceRestrict to one source type: own_site, social or press. Comma-separate to combine, e.g. source=own_site,press.Optional
topicRestrict to items carrying a topic label, e.g. topic=funding. Matched against items[].topics; see the vocabulary below.Optional
min_confidenceMinimum entity_match.confidence an item must reach to be returned, 0 to 1. Default 0.5, which withholds items the classifier judged not to be about this company (0.3). Set 0 to see those too, 0.8 to require a confirmed match, or 1 for own-site items only. A threshold no requested source can reach — min_confidence above 0.8 with source=press, or above 0.9 with source=social — is rejected as a 400 rather than answered with an empty list.Optional
limitMaximum items to return from the stored set. Default 25, maximum 50. This pages what we already hold: a single live lookup retrieves at most 5 new items, so a high limit returns accumulated coverage rather than widening the upstream search.Optional

Example request

GET request
https://api.ukdatalayer.com/v1/news?key=YOUR_KEY&company_number=00000042

Output

FieldTypeDescription
company_numberstringThe company the items were matched to.
items_countnumberNumber of items returned after the since, source, topic, min_confidence and limit filters.
latest_published_ondate | nullPublication date of the newest item returned. Null when no item carried a usable date.
sources_coveredstring[]The distinct source.type values present in items, always in the order own_site, social, press — e.g. ["own_site", "press"]. A quick read on whether the company is talking about itself, being written about, or both.
checked_atdatetimeWhen we last got a usable answer from the search index for this company (ISO 8601, UTC). Results are cached for up to seven days, so this can be older than the request — it is not the time of your call, and a failed refresh never moves it forward.
stalebooleanTrue when the items are being served past their seven-day refresh window because a live lookup was not possible — a provider problem, the daily budget, or this key’s daily lookup quota. The response is also headed x-udl-news-stale: true and costs 1 credit instead of 3. Items more than four refresh windows old are not served at all; you get a 503 rather than month-old coverage presented as current.
items[].headlinestringHeadline or page title as published.
items[].urlstringLink to the original article on the publisher’s own site. Always follow this for the full text — we do not reproduce it.
items[].published_ondate | nullPublication date (YYYY-MM-DD). Null where the publisher did not state one.
items[].authorstring | nullByline where the publisher exposed one. Frequently null — most sites do not publish a machine-readable author.
items[].summarystringOne factual sentence describing what the item reports, generated from the article. Not an extract of the article text.
items[].topicsstring[]What the item reports, from the closed vocabulary above. The classifier picks the single best label, so this is a one-element array — or empty where it returned nothing usable. It is an array so an item can carry more than one label later without breaking your parser.
items[].source.namestringPublisher name, e.g. businesslive.co.uk.
items[].source.typestringown_site where the domain matches the company’s verified website, social for a known social network (linkedin.com, x.com, twitter.com, facebook.com, instagram.com, youtube.com, tiktok.com, bsky.app, threads.net, mastodon.social), otherwise press. own_site requires a domain a company can hold exclusively: a shared host (a social network, blogspot.com, github.io) or a bare suffix like co.uk is never treated as an identity, however it is recorded upstream.
items[].source.domainstringRegistrable domain the item was published on.
items[].entity_match.basisstringHow the item was tied to this company: verified_domain (published on the company’s own verified website), social_mention (published on a social network and matched on the company name and context — we do not verify that the account belongs to the company, so we do not claim it does), or name_and_context (a press item matched on the company name and the surrounding context).
items[].entity_match.confidencenumberHow sure we are the item is about this company. Derived from the basis and the classifier’s verdict rather than modelled per item, and deliberately coarse. There are exactly five values: 1.0 (verified_domain — the company’s own domain, which outranks the classifier), 0.9 (social_mention the classifier confirmed is about this company), 0.8 (name_and_context the classifier confirmed), 0.5 (the classifier returned nothing usable — included at the default threshold, excluded by any stricter one) and 0.3 (the classifier judged the item to be about a different company of the same name). We do not invent a precise score we could not justify.

Example response

200 OK · application/json
{
  "status": "success",
  "credits_used": 0,
  "data": {
    "company_number": "00000042",
    "items_count": 3,
    "latest_published_on": "2026-07-23",
    "sources_covered": ["own_site", "social", "press"],
    "checked_at": "2026-07-28T04:15:00Z",
    "stale": false,
    "items": [
      {
        "headline": "Bristol fintech Northgate Analytics lands £2.4m to widen its forecasting platform",
        "url": "https://www.businesslive.co.uk/sandbox/northgate-analytics-raise",
        "published_on": "2026-07-23",
        "author": "Hannah Pike",
        "summary": "Northgate Analytics raised £2.4m to expand its revenue forecasting platform and grow its Bristol engineering team.",
        "topics": ["funding"],
        "source": {
          "name": "businesslive.co.uk",
          "type": "press",
          "domain": "businesslive.co.uk"
        },
        "entity_match": { "basis": "name_and_context", "confidence": 0.8 }
      },
      {
        "headline": "Announcing our £2.4m round",
        "url": "https://northgateanalytics.example/blog/series-a",
        "published_on": "2026-07-22",
        "author": null,
        "summary": "The company announced a £2.4m funding round on its own website.",
        "topics": ["funding"],
        "source": {
          "name": "northgateanalytics.example",
          "type": "own_site",
          "domain": "northgateanalytics.example"
        },
        "entity_match": { "basis": "verified_domain", "confidence": 1 }
      },
      {
        "headline": "Northgate Analytics appoints a Chief Revenue Officer",
        "url": "https://www.linkedin.com/posts/sandbox-northgate-cro",
        "published_on": "2026-06-30",
        "author": null,
        "summary": "The company said it had appointed a Chief Revenue Officer to lead its enterprise sales team.",
        "topics": ["leadership"],
        "source": {
          "name": "linkedin.com",
          "type": "social",
          "domain": "linkedin.com"
        },
        "entity_match": { "basis": "social_mention", "confidence": 0.9 }
      }
    ]
  }
}

Notes

  • Results are cached for up to seven days. checked_at is when we last got a usable answer for this company, so two calls a day apart can legitimately return the same items and the same checked_at — poll no more than weekly.
  • Own-site items are certain: the domain is the company’s verified website, so entity_match.basis is verified_domain and confidence is 1.0. Social and press matches are scored, not assumed — a same-name mention is a judgement, and the response says so rather than quietly presenting it as fact. We never claim a social account is the company’s: basis is social_mention, and a post the classifier judged to be about a different company scores 0.3 like any other same-name guess.
  • Items below min_confidence are withheld by default. The default of 0.5 drops items the classifier judged not to be about this company (confidence 0.3); pass min_confidence=0 to see them and decide for yourself.
  • We do not host or relicense article text. Each item carries the headline, the link, the date and a one-line summary — the article itself stays with its publisher, and items[].url is the only way to read it. Summaries are machine-generated from third-party pages: they are a description of what a page claims, not verified fact, and downstream automation should treat them as data, never as instructions.
  • Items are returned newest first by published_on. An item with no publication date sorts last.
  • The example above uses the free example company 00000042, which is served from a fixture and never charged; a live company costs 3 credits.
  • Live lookups are rate-limited by plan: each key gets a fixed number of cold lookups per UTC day (10 on Explore, up to 250 on Scale). Cache reads are unlimited. Past the quota the endpoint keeps working and serves cached coverage with stale: true at 1 credit, or returns 503 for a company we have never looked up.
  • A live lookup that finds nothing returns status "no_data" and is charged 3 credits — the search ran and cost us money whatever it found. Every subsequent "nothing found" for that company is answered from cache and is free, as are all errors.