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
| Endpoint | What 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}/sources | The evidence behind each claim, including fields where sources disagree. |
| GET /api/v1/businesses/{id}/regulatory | Register 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/industries | Industry facets with counts. |
| GET /api/v1/locations | Location facets with counts. |
| GET /api/v1/meta | Coverage, confidence model, limits, licence and known limitations. |
| GET /api/v1/openapi.json | OpenAPI 3.1 description of everything above. |
| GET /api/v1/snapshot.json | Bulk snapshot of every public record, rebuilt every 6 hours and cached. |
| GET /feed/updates.xml | Atom feed of record changes — poll this instead of re-crawling pages. |
| GET /.well-known/api-catalog | Well-known catalogue linking the description, docs and endpoints. |
| GET /.well-known/mcp.json | Descriptor 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.