Skip to main content
← Back to home

Public data API

Global Connect Hub publishes its business records as plain JSON so research systems, search engines and AI agents can retrieve, verify, trace and cite them. Every value arrives with the source that supplied it, when it was fetched and when it was last re-checked.

Try it now

These are live calls against the public, read-only API. No key, no sign-in.

Full-text search across the directory. Every field carries its own source.

curl -s 'https://connecthubglobal.com/api/v1/businesses?q=bank&limit=3'

What GCH is and is not

GCH is not an official register and does not restate register findings as its own. It is a directory that keeps the provenance of each fact it holds, at the level of the individual record and the individual field.

Most records originate from public web aggregation rather than an official register, and they say so in the provenance.record_source_class field. Facts GCH worked out itself — industry classification, geocoded labels, market mapping — sit under derived and are never presented as source statements.

Live coverage numbers, the licence and current limitations are in /api/v1/meta.

Endpoints

EndpointWhat it returns
GET /api/v1/businesses
q, country, industry, has_website, has_registration, listed, updated_since, limit (max 100), offset
Search and filter business records. List responses leave out named-individual contact details.
GET /api/v1/businesses/{id}One record by UUID or slug, with every field's source, retrieval date, verification date and confidence.
GET /api/v1/businesses/{id}/sourcesThe evidence behind each claim, including fields where sources disagree.
GET /api/v1/businesses/{id}/regulatoryRegister identifiers and cached official-register lookups, each with its own timestamp.
GET /api/v1/updates
since (ISO 8601), limit (max 200), offset
Change feed, newest first, with previous and current values.
GET /api/v1/industriesIndustry facets with counts.
GET /api/v1/locationsLocation facets with counts.
GET /api/v1/metaCoverage, confidence model, limits, licence and known limitations.
GET /api/v1/openapi.jsonOpenAPI 3.1 description of everything above.
GET /api/v1/snapshot.jsonBulk snapshot of every public record, rebuilt every 6 hours and cached.
GET /feed/updates.xmlAtom feed of record changes — poll this instead of re-crawling pages.
GET /.well-known/api-catalogWell-known catalogue linking the description, docs and endpoints.
GET /.well-known/mcp.jsonDescriptor pointing agents at the unauthenticated MCP endpoint.

Worked examples

Each of these runs against live data. Paste the path into the playground above to see the current response.

Find banks anywhere in the directory

curl "https://connecthubglobal.com/api/v1/businesses?q=bank&limit=25"

Free-text match on name, short name and description. `total` tells you how many matched in all; page with `offset`.

Narrow to one country

curl "https://connecthubglobal.com/api/v1/businesses?q=bank&country=Comoros"

Country matches the record's stated location text, so both 'Comoros' and 'London, United Kingdom' work. Use /api/v1/locations to see which values actually exist before filtering.

Only records with a company registration number

curl "https://connecthubglobal.com/api/v1/businesses?has_registration=true&limit=10"

The strongest subset: these came from an official register rather than web aggregation, so their provenance class is `official_register`.

Pull one full record

curl "https://connecthubglobal.com/api/v1/businesses/revolut"

Accepts the record UUID or the slug from its canonical URL. Returns field-by-field provenance and any uncertain fields.

Check the evidence before citing a fact

curl "https://connecthubglobal.com/api/v1/businesses/revolut/sources"

Claims grouped by field, with each source, how it was obtained and when. Where sources disagree, both values are returned and the field is marked disputed.

Sync only what changed

curl "https://connecthubglobal.com/api/v1/updates?since=2026-09-01T00:00:00Z&limit=50"

Newest first, with previous and current values. Send back the ETag as If-None-Match and an unchanged feed costs you a 304.

See what the dataset covers before you build on it

curl "https://connecthubglobal.com/api/v1/meta"

Live record counts, how many came from official registers, the confidence model, the licence and the current known limitations.

Response shape

A list response is { total, limit, offset, next_offset, results[] }. Every record carries the same five blocks: identity, profile, location, derived (GCH classifications, never presented as source statements) and provenance.

{
  "record_id": "feeaa6d7-512c-4717-b42b-bdeea9fbdc09",
  "canonical_url": "https://connecthubglobal.com/v/access-bank-angola-s-a",
  "identity": { "name": "Access Bank Angola S.A.", "lei": "…", "registration_number": "…" },
  "derived": { "industry_category": "Finance", "note": "GCH classification, not an official statement." },
  "provenance": {
    "record_source": "registry:gleif",
    "record_source_class": "official_register",
    "retrieved_at": "2026-05-02T09:14:00Z",
    "last_updated": "2026-08-30T11:02:00Z"
  },
  "field_provenance": [
    {
      "field": "lei",
      "value": "…",
      "confidence": "high",
      "disputed": false,
      "sources": [
        { "source": "gleif", "method": "official_register", "source_url": "https://search.gleif.org/…",
          "retrieved_at": "2026-05-02T09:14:00Z", "last_verified": "2026-05-02T09:14:00Z" }
      ]
    }
  ],
  "uncertain_fields": ["contact_phone"]
}

Same data over MCP

Agents can call the directory as tools at https://connecthubglobal.com/mcp/public — no key, no sign-in. Tools: search_businesses, get_business, get_business_sources, get_regulatory_data. Each returns the same JSON as the REST endpoints above, provenance included.

curl -sX POST https://connecthubglobal.com/mcp/public \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json, text/event-stream' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{
        "name":"search_businesses",
        "arguments":{"query":"bank","country":"United Kingdom","limit":2}}}'

→ {"total":1,"limit":2,"offset":0,"next_offset":null,"results":[{
     "record_id":"ba854a0a-d34e-4dfe-b0d8-78c1bdca5bac",
     "canonical_url":"https://connecthubglobal.com/v/revolut",
     "identity":{"name":"Revolut","listing_status":"private"},
     "location":{"region":"London, United Kingdom","latitude":51.5072,"longitude":-0.1276},
     "derived":{"industry_category":"Finance",
                "note":"Fields under `derived` are GCH classifications, not official source statements."},
     "provenance":{"record_source_class":"aggregated",
                   "retrieved_at":"2026-08-01T14:41:11Z",
                   "sources_url":"https://connecthubglobal.com/api/v1/businesses/ba85…/sources"}}]}

Confidence

Confidence is computed from real signals only — the class of source, whether sources agree and how recently the fact was verified. It is never assigned by guesswork.

high
Official register, verified within the last 12 months.
medium
Older official-register data, recent first-party data, or two agreeing aggregated sources.
low
A single aggregated source, ageing first-party data, or a GCH-derived classification.
disputed
Sources disagree. Both values are returned with their own timestamps; GCH does not pick a winner.
unverified
No source claim is recorded for this field yet.

Staying current

Poll /api/v1/updates?since=<your last sync> to find out what changed. Each entry names the record, the fields that moved, their previous and current values, when the change happened and the canonical URL to cite. Responses carry ETag headers, so conditional requests cost nothing when nothing has changed.

Rate limits and access

  • 120 requests per minute per IP, best-effort, with the count returned in X-RateLimit-* headers.
  • No key is needed for public records. Legitimate crawlers are welcome and are not blocked.
  • Cross-origin requests are allowed; every endpoint answers OPTIONS.
  • Version 1 stays as documented. Breaking changes will appear under /api/v2/.
  • Need sustained higher volume? Get in touch and we'll arrange an authenticated allowance.

Personal data

Business contact details for named individuals are omitted from list responses and returned only on a single-record request, matching how they appear on the public pages. See the privacy policy for removal requests.

Citing a record

Every record has a stable record_id and a permanent canonical_url. Cite that URL, and follow source_url through to the originating source when the fact matters. Agents can also connect over MCP at https://connecthubglobal.com/mcp/public — see the AI & agents guide.