UK company data and live business signals, by API

    The Companies API finds and looks up any UK company. The Signals API tells you when one changes: new lending, new directors, new owners, an office move, or the first sign of trouble. Start free with 100 records, no card needed.

    Two APIs, one key

    Companies API

    Search and look up any UK company by sector, postcode, age, type or name, and pull the new companies that match your saved searches.

    About the Companies API

    Signals API

    A dated feed of changes at UK companies: new lending, directors, owners, office moves and insolvency, plus company timelines and likely buyers.

    About the Signals API

    Plans

    Free demo

    Try every endpoint with 100 records.

    Free

    100 records, one-off

    • Company records and a sample of signals
    • One key
    • No card needed
    Get a free key

    Companies API

    UK company records, cleaned and ready to use.

    £49/month + VAT

    2,500 records a month

    • Search and look up any UK company
    • New incorporations daily
    • Shell-company flag on every record
    Choose Companies API

    Signals API

    Know when a UK business changes, the day it happens.

    £149/month + VAT

    10,000 records a month

    • Everything in Companies API
    • Events feed: new loans, directors, owners, office moves, insolvency and more
    • Per-company timelines and likely buyers
    Choose Signals API

    National and bulk

    Higher volumes and bulk delivery.

    From £399/month + VAT

    Custom allowance

    • Custom allowance
    • Bulk delivery
    • Contact us
    Contact us

    Prices exclude VAT, which is added at checkout. The Business website plan includes 2,000 API records a month.

    Quickstart

    Create a key on your account API page, then send it in the Authorization header.

    curl -H "Authorization: Bearer nh_your_key_here" \
      "https://www.newcohunter.co.uk/api/v1/signals/events?families=scaling&location=M,LS&limit=20"

    Each event looks like this:

    {
      "id": 48213377,
      "type": "charge_registered",
      "label": "New secured lending",
      "families": ["scaling"],
      "date": "2026-09-29",
      "detected_at": "2026-09-30T08:14:02.000Z",
      "summary": "New charge registered",
      "company": {
        "number": "12345678",
        "name": "EXAMPLE TRADING LTD",
        "status": "active",
        "locality": "Manchester",
        "postcode": "M1 1AA",
        "sic_codes": ["47110"]
      }
    }

    Endpoints

    EndpointPlanWhat it returns
    GET /api/v1/companiesCompaniesSearch UK companies by sector, postcode, age, type, status or name. Up to 100 a page. Age defaults to new (incorporated in the last 30 days); use age=0-3m, 3-12m, 1-2y, 2-5y or 5y+ for older companies.
    GET /api/v1/companies/:numberCompaniesOne company by its registration number.
    GET /api/v1/matchesCompaniesNew companies matching your saved searches (days 1 to 90).
    GET /api/v1/signals/eventsSignalsThe events feed, newest first. Filter by families, types, since (up to 90 days back) and location (postcode areas or districts). Cursor paging.
    GET /api/v1/signals/companies/:number/timelineSignalsEvery signal for one company, newest first.
    GET /api/v1/signals/likely-buyers/:offeringSignalsCompanies likely to need what you sell right now. Optional location.
    GET /api/v1/signals/offeringsFreeThe offerings likely-buyers accepts.
    GET /api/v1/signals/typesFreeEvery signal type with its label and families.
    GET /api/v1/usageFreeYour plan, records used, remaining and reset date.
    GET/POST /api/v1/signals/webhooksSignalsList or add signal webhooks (DELETE /:id to remove, POST /:id/test to send a test). See below.
    POST /mcpAnyThe same endpoints as MCP tools for AI assistants. See below.

    Signal webhooks

    On the Signals API, add up to 5 webhooks from your account page or with POST /api/v1/signals/webhooks(body: url, optional families, types and location). Every few minutes we POST new signals matching the filter to your HTTPS endpoint as { type: "signals", events: [...] }, in the same shape as the events feed. Each signal delivered uses one record. Answer with any 2xx; failed deliveries are retried with backoff and the webhook is switched off after 20 failures in a row.

    Verify each delivery with your webhook secret:

    // Node.js
    import { createHmac, timingSafeEqual } from "node:crypto";
    
    function verify(req, rawBody, secret) {
      const ts = req.headers["x-newcohunter-timestamp"];
      const sig = req.headers["x-newcohunter-signature"];
      const expected = "sha256=" + createHmac("sha256", secret).update(ts + "." + rawBody).digest("hex");
      const fresh = Math.abs(Date.now() / 1000 - Number(ts)) < 300;
      return fresh && sig.length === expected.length && timingSafeEqual(Buffer.from(sig), Buffer.from(expected));
    }

    Use it from AI assistants (MCP)

    Both APIs are also available as an MCP server, so AI assistants such as Claude can search companies, read signal feeds and find likely buyers for you. It uses the same key, the same plan and the same record allowance as the REST API.

    Claude Code:

    claude mcp add --transport http newcohunter https://www.newcohunter.co.uk/mcp \
      --header "Authorization: Bearer nh_your_key_here"

    Other MCP clients (Streamable HTTP):

    {
      "mcpServers": {
        "newcohunter": {
          "type": "http",
          "url": "https://www.newcohunter.co.uk/mcp",
          "headers": { "Authorization": "Bearer nh_your_key_here" }
        }
      }
    }

    Tools: search_companies, get_company, get_saved_search_matches, get_signal_events, get_company_timeline, find_likely_buyers, list_signal_types, list_offerings and get_usage. Up to 50 records per tool call.

    Signal families and types

    New families=new

    Companies that have just been formed.

    • incorporated Just incorporated
    • first_accounts_filed First accounts filed

    Scaling families=scaling

    Signs a business is investing or growing: new lending, new shares, new directors, rising net assets.

    • net_assets_up Net assets up
    • charge_registered New secured lending
    • shares_allotted Issued new shares
    • director_appointed New director

    Shrinking families=shrinking

    Signs a business is pulling back: falling net assets, directors leaving, going dormant.

    • net_assets_down Net assets down
    • director_resigned Director left
    • dormancy_started Went dormant

    Failing families=failing

    Insolvency and closure: administration, liquidation, strike-off.

    • entered_administration In administration
    • entered_liquidation In liquidation
    • entered_arrangement Voluntary arrangement
    • entered_receivership In receivership
    • accounts_overdue Accounts overdue
    • strike_off_proposed Proposal to strike off
    • dissolved Dissolved

    Changing families=changing

    A new owner, name, office, activity, or a solvent wind-down.

    • solvent_wind_down Solvent wind-down
    • owner_added New owner
    • owner_ceased Owner left
    • office_moved Moved registered office
    • name_changed Changed name
    • sic_changed Changed what it does
    • charge_satisfied Loan paid off
    • strike_off_applied Applied to close (voluntary strike-off)
    • dormancy_ended Reactivated

    Combine families and types freely, for example families=failing&types=director_resigned.

    Records, limits and headers

    • Plans are measured in records: each company or event returned. The same record again in the same month is free.
    • Every response carries X-Records-Limit, X-Records-Used, X-Records-Remaining, X-Records-Charged and X-Records-Reset.
    • Rate limits: 60 requests a minute and 1,000 a day per key, reported in the standard RateLimit-* headers.
    • Up to 100 records per call. The events feed reaches back 90 days; page through it with next_cursor.
    • Errors are JSON with an error code: unauthorized (401), plan_required (403), records_exhausted or rate_limited (429).

    Frequently asked questions

    What counts as a record?

    One company or one signal event returned in a response. Asking for the same record again in the same month is free, so paging back and forth or re-checking a company costs nothing extra. Calls that return nothing cost nothing.

    What happens when I run out?

    A page is cut short at your remaining allowance and marked truncated. When nothing is left the API answers 429 with a link to upgrade. Monthly allowances reset on the 1st.

    Where does the data come from?

    Companies House and other official public records. Signals are dated by when they happened and when they appeared on the register.

    Can I resell the data or build my own database with it?

    No. API output is licensed for use inside your organisation. See the API terms for the full licence.

    Is there a Business plan option?

    Yes. The Business website plan includes 2,000 API records a month across both APIs, on top of everything else in that plan.

    Use of the API is covered by the API terms. Looking for alerts instead of code? See email alerts.