Resolve any ABN, domain, phone, or LinkedIn URL to a full firmographic record. Sign in to access your workspace.
Go from a fresh workspace to a verified match in about five minutes. This walks through the three endpoints in the order most integrations use them.
Every workspace ships with a live key and a test key already created. See API keys in the sidebar. Test keys return realistic sample records and never draw down your credit balance, so build against contactcloud_test_… first.
Start with POST /v1/business. Send an ABN/ACN, website domain, phone number, or LinkedIn URL and you'll get back registration, classification, size, and a locations array (every verified site with its own address and phones) for 1 credit.
If you also have a LinkedIn URL, phone number, or email address, call POST /v1/contact to get back the verified person: name, job title, every business they're linked to, and deliverability‑checked emails, for 1 credit.
Resolving a business by domain - no registration number required.
Same pattern against /v1/contact - this one resolves an email address to a verified person.
| Call | Cost |
|---|---|
| Business enrichment (matched) | 1 credit |
| Contact enrichment (matched) | 1 credit |
| Any lookup that returns no match (404) | 0 credits |
Credits are only deducted on a successful match, and every response includes a credits_charged field so you can reconcile usage without cross‑checking the ledger.
ContactCloud uses standard bearer‑token authentication. Every request must include your API key in the Authorization header.
| Prefix | Behaviour | |
|---|---|---|
| Live | contactcloud_live_… | Queries real ABR/ASIC‑backed records and draws from your credit balance. Failed/no‑match lookups are free. |
| Test | contactcloud_test_… | Returns realistic, fixed sample records for a known set of inputs. Never charges credits, safe to commit in CI. |
Create, reveal, copy, and revoke keys from the API keys tab. Revoking a key takes effect immediately: in‑flight requests signed with it will start returning 401. We recommend one key per environment (production, staging, local) rather than sharing a single live key across services, since keys are the unit of revocation.
| Status | Meaning |
|---|---|
| 401 Unauthorized | Missing, malformed, or revoked key |
| 403 Forbidden | Key is valid but not permitted to call this endpoint (e.g. a restricted key scoped to read‑only lookups) |
| 404 Not Found | Key is valid; the query itself had no match, not billed |
| 429 Too Many Requests | Rate limit exceeded, see below |
Standard workspaces are limited to 10 requests/second and 600 requests/minute per key, enforced independently for live and test keys.
Resolve an Australian business using one or more identifiers to a full firmographic record: registration, classification, size, and a locations array covering every verified site with its own address and phone numbers.
| Parameter | Type | Description |
|---|---|---|
| business_id | integer | ContactCloud's internal record ID - the fastest lookup when you already have it |
| registration_number | string | The business's ABN or ACN |
| registration_type | string | "ABN" or "ACN" - which kind of number registration_number is |
| domain | string | business website domain (e.g. tjm4x4equipped.com.au), matched against website_url or the business's domains array |
| phone | string | Business phone number, local or E.164 format |
| linkedin_url | string | business's LinkedIn page URL |
At least one identifier is required. Excluding business_id, ContactCloud resolves in priority order: registration number → domain → phone → LinkedIn URL, returning its single best match.
business_id is always the first field in the response, so you can grab it for a join before parsing the rest of the record.
| Field | Type | Description |
|---|---|---|
| business_id | integer | ContactCloud's internal record ID, stable across requests |
| business_name | string | Registered or trading name |
| business_description | string | ContactCloud's plain‑English industry label |
| anzsic_class | string | ANZSIC code plus its official class name |
| anzsic_code | string | 4‑digit ANZSIC industry code |
| industry_code | string | ContactCloud's granular industry code (finer‑grained than ANZSIC) |
| employee_count | string | Banded headcount, e.g. "101 to 200", ">5000" |
| revenue_m_aud | string | Banded annual revenue in $AUD millions, e.g. "51 to 100" |
| year_established | integer | Not populated for all records; omitted rather than sent as null |
| record_risk_score | string | Low or Medium: ContactCloud's composite data‑quality/deliverability risk indicator for this record |
| Field | Type | Description |
|---|---|---|
| registration_number | string | The business's ABN or ACN number |
| registration_type | string | "ABN" or "ACN" |
| registration_status | string | e.g. Active or Cancelled, sourced from the ABR/ASIC |
| entity_type | string | Plain‑English entity type, e.g. "Australian Private business", "Partnership", "Individual/Sole Trader" |
| registration_status_date | date | Date the registration status last changed |
A business can trade from more than one site, so ContactCloud returns every verified location as its own object, each with its own address and phone numbers. Most records resolve to a single location (typically the registered address); multi‑site records are most common among retail chains, franchises, and branch networks.
| Field | Type | Description |
|---|---|---|
| location_type | string | One of: Head Office, Registered Address, Branch |
| street_address | string | Omitted when not on record for this location |
| city | string | Suburb or town name for this location |
| state | string | State or territory, e.g. NSW, VIC, QLD |
| postcode | string | Four‑digit postcode for this location, e.g. 2000 |
| phones | array | Every phone number on record for this location. Each entry has number and type: one of fixed, mobile, or freecall. A location can carry more than one number of the same type. number is returned in local format as sourced, not E.164 |
| latitude | float | Omitted when this location hasn't been geocoded |
| longitude | float | Omitted when this location hasn't been geocoded |
| location_id | string | Stable ID for this location, unique within the business record |
business‑wide channels, not tied to any single location. Ordered below from the strongest enrichment signal to the weakest.
| Field | Type | Description |
|---|---|---|
| website_url | string | The business's primary website; omitted if none is found |
| domains | array | Other domains ContactCloud has found associated with the business (e.g. a different domain used for email, a regional or brand‑specific site). Does not include website_url itself. Empty when none are found |
| emails | array | General business inboxes (e.g. sales@, info@), each with its own deliverability status. Distinct from the verified personal email(s) returned by /v1/contact. See sub‑fields below |
| phones | array | business‑wide phone numbers that aren't tied to any specific location, e.g. a central 1300 number or a head‑office switchboard line. Each entry has number and type (fixed, mobile, or freecall), same local‑format convention as location phones above. Location‑specific numbers stay on each location's own phones array. This one is for numbers that don't fit that structure |
Grouped together and ordered by strength as an enrichment signal, then by how often ContactCloud finds a populated, matchable profile for an Australian business. Only the platforms actually found for a record are included - a business with no Twitter presence simply won't have twitter_url in the response.
| Field | Type | Description |
|---|---|---|
| linkedin_url | string | |
| facebook_url | string | |
| instagram_url | string | |
| twitter_url | string | |
| youtube_url | string |
| Field | Type | Description |
|---|---|---|
| string | The business inbox address | |
| email_status | string | One of: accepted_email, catch_all, Server-Protected, invalid_domain |
Pass registration_type alongside registration_number so ContactCloud knows whether it's an ABN or ACN.
Works with a fixed, mobile, or freecall number - this example uses a 1300 freecall number, matched against the business's business‑wide phones array.
Resolve a LinkedIn URL, phone number, or email address to a verified person: name, job title, every business they're linked to, and deliverability‑checked emails. This endpoint returns contact data only, none of the firmographic fields from /v1/business (industry, employee count, revenue, locations, etc.) are included. If you need both, call the two endpoints separately and join on business_id.
| Parameter | Type | Description |
|---|---|---|
| linkedin_url | string | The person's LinkedIn profile URL. ContactCloud's strongest single match key for a person. Send this first when you have it |
| phone | string | Phone number to resolve to a verified contact. Accepts fixed or mobile, in local Australian format (02 6201 9430, 0412 556 981) or E.164 with the country code (+61262019430, +61412556981). Spaces are ignored either way |
| string | Email address to resolve to a verified contact |
At least one of linkedin_url, phone, or email is required. ContactCloud checks them in that order and resolves on the first match.
A contact can be linked to more than one business, so ContactCloud returns every verified relationship as its own object. This array is deliberately minimal - business_name is included so you can display something readable without an extra call; for anything else, look the business up by business_id.
| Field | Type | Description |
|---|---|---|
| business_id | integer | ContactCloud's internal record ID for that business. Use this to join against a /v1/business lookup (send it as business_id). No other business fields are included here |
| business_name | string | The business's registered or trading name, for display purposes only |
As with /v1/business, fields ContactCloud has no data for are left out of the response rather than sent as null.
| Field | Type | Description |
|---|---|---|
| contact_full_name | string | The contact's full name as it appears on the source profile |
| contact_first_name | string | Given name |
| contact_last_name | string | Surname |
| contact_linkedin_url | string | This contact's own LinkedIn profile; omitted if not found |
| contact_job_title | string | As it appears on the source profile, unnormalised |
| contact_principal_role | string | Populated mainly for C‑Suite/Director records; omitted otherwise |
| contact_job_role | string | Functional area, e.g. "Finance", "Sales"; omitted if unclassified |
| contact_phones | array | Every phone number on record for this person. Each entry has number and type: fixed or mobile, returned in local Australian format as sourced (e.g. 0412 556 981), not E.164 |
Every verified email on record for this person, most confident first.
| Field | Type | Description |
|---|---|---|
| string | The verified email address | |
| email_status | string | One of: accepted_email, catch_all, Server-Protected, invalid_domain |
| email_score | integer | 0–100 deliverability confidence |
| email_domain | string | The domain portion of the email address |
| email_is_public_server | boolean | true for gmail.com, yahoo.com.au, bigpond.com, etc. |
| email_is_role_based | boolean | true for inboxes like info@, sales@, admin@ |