C
ContactCloud

Australian business & contact data, verified.

Resolve any ABN, domain, phone, or LinkedIn URL to a full firmographic record. Sign in to access your workspace.

/v1/business1 credit
/v1/contact1 credit
No match0 credits
Sign in

Welcome

Use the credentials provided for your workspace.
Don't have an account? Sign up
C
ContactCloud
Workspace
⌕
Book a demo
·
UserOwner
Log out
Overview API keys Usage & billing Documentation

Overview

Workspace
Credits today
-
-
Credits, last 30 days
Live API key
-
Recent requests
TimeEndpointInputsKeyCreditsStatus

API keys

Live keys draw from your credit balance. Test keys never charge.
NameKeyTypeCreatedLast usedActions

Quick start

Resolve a business
Resolve a contact

Usage & billing

Credits, auto‑reload, and receipts
Credit balance
-
Payment method
-
No card on file
Auto‑reload
Automatically top up credits
Keeps requests from failing when you run low
Reload when balance falls below
-
Top up amount
-

Billing history

DateDescriptionCreditsAmountReceipt

Documentation

Every field ContactCloud returns, grouped the way the underlying data is structured
Get started
Quickstart Authentication
Endpoints
Business enrichment Contact enrichment

Quickstart

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.

  1. Grab a key

    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.

  2. Resolve a business

    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.

  3. Resolve a contact

    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.

Your first request

Resolving a business by domain - no registration number required.

Then, resolve a contact

Same pattern against /v1/contact - this one resolves an email address to a verified person.

Base URL: all endpoints are served from https://jgzcuecobgpsjddzjjbk.supabase.co/functions/v1/api. There is no separate sandbox host; sandbox behaviour is controlled entirely by which key you send.
Credits & billing at a glance
CallCost
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.

Authentication

ContactCloud uses standard bearer‑token authentication. Every request must include your API key in the Authorization header.

Authorization: Bearer contactcloud_live_YOUR_KEY
Live keys vs. test keys
 PrefixBehaviour
Livecontactcloud_live_…Queries real ABR/ASIC‑backed records and draws from your credit balance. Failed/no‑match lookups are free.
Testcontactcloud_test_…Returns realistic, fixed sample records for a known set of inputs. Never charges credits, safe to commit in CI.
Managing keys

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.

Error responses
StatusMeaning
401 UnauthorizedMissing, malformed, or revoked key
403 ForbiddenKey is valid but not permitted to call this endpoint (e.g. a restricted key scoped to read‑only lookups)
404 Not FoundKey is valid; the query itself had no match, not billed
429 Too Many RequestsRate limit exceeded, see below
Rate limits

Standard workspaces are limited to 10 requests/second and 600 requests/minute per key, enforced independently for live and test keys.

Keep your live key server‑side. It can spend your credit balance. Never embed contactcloud_live_… keys in client‑side code, mobile apps, or public repos. Use a test key for anything shipped to end users, and proxy live calls through your own backend.

Business enrichment

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.

POST/v1/business
ParameterTypeDescription
business_idintegerContactCloud's internal record ID - the fastest lookup when you already have it
registration_numberstringThe business's ABN or ACN
registration_typestring"ABN" or "ACN" - which kind of number registration_number is
domainstringbusiness website domain (e.g. tjm4x4equipped.com.au), matched against website_url or the business's domains array
phonestringBusiness phone number, local or E.164 format
linkedin_urlstringbusiness'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.

Response fields: business profile

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.

No null values. If ContactCloud has no data for a field on a given record, that key is left out of the response entirely rather than sent as null. Don't assume a field will always be present - check for its existence rather than checking its value.
FieldTypeDescription
business_idintegerContactCloud's internal record ID, stable across requests
business_namestringRegistered or trading name
business_descriptionstringContactCloud's plain‑English industry label
anzsic_classstringANZSIC code plus its official class name
anzsic_codestring4‑digit ANZSIC industry code
industry_codestringContactCloud's granular industry code (finer‑grained than ANZSIC)
employee_countstringBanded headcount, e.g. "101 to 200", ">5000"
revenue_m_audstringBanded annual revenue in $AUD millions, e.g. "51 to 100"
year_establishedintegerNot populated for all records; omitted rather than sent as null
record_risk_scorestringLow or Medium: ContactCloud's composite data‑quality/deliverability risk indicator for this record
Response fields: registration
FieldTypeDescription
registration_numberstringThe business's ABN or ACN number
registration_typestring"ABN" or "ACN"
registration_statusstringe.g. Active or Cancelled, sourced from the ABR/ASIC
entity_typestringPlain‑English entity type, e.g. "Australian Private business", "Partnership", "Individual/Sole Trader"
registration_status_datedateDate the registration status last changed
Response fields: locations (array)

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.

FieldTypeDescription
location_typestringOne of: Head Office, Registered Address, Branch
street_addressstringOmitted when not on record for this location
citystringSuburb or town name for this location
statestringState or territory, e.g. NSW, VIC, QLD
postcodestringFour‑digit postcode for this location, e.g. 2000
phonesarrayEvery 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
latitudefloatOmitted when this location hasn't been geocoded
longitudefloatOmitted when this location hasn't been geocoded
location_idstringStable ID for this location, unique within the business record
Response fields: business contact channels

business‑wide channels, not tied to any single location. Ordered below from the strongest enrichment signal to the weakest.

FieldTypeDescription
website_urlstringThe business's primary website; omitted if none is found
domainsarrayOther 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
emailsarrayGeneral 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
phonesarraybusiness‑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
Response fields: social profiles

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.

FieldTypeDescription
linkedin_urlstring 
facebook_urlstring 
instagram_urlstring 
twitter_urlstring 
youtube_urlstring 
Response fields: emails (array entries)
FieldTypeDescription
emailstringThe business inbox address
email_statusstringOne of: accepted_email, catch_all, Server-Protected, invalid_domain
Example request: by registration number

Pass registration_type alongside registration_number so ContactCloud knows whether it's an ABN or ACN.

Example request: by domain
Example request: by phone

Works with a fixed, mobile, or freecall number - this example uses a 1300 freecall number, matched against the business's business‑wide phones array.

Example request: by LinkedIn URL
Example response
business-response.json
{ "business_id": 21945017, "business_name": "TJM 4x4 Equipped", "business_description": "Four Wheel Drive Equipment", "anzsic_class": "3921 Motor Vehicle Parts Retailing", "anzsic_code": "3921", "employee_count": "51 to 100", "revenue_m_aud": "11 to 20", "year_established": 1974, "record_risk_score": "Low", "registration_type": "ABN", "registration_number": "50 619 802 729", "registration_status": "Active", "entity_type": "Australian Private business", "registration_status_date": "2015-06-11", "locations": [ { "location_type": "Head Office", "street_address": "26 Pirie St", "city": "SYMONSTON", "state": "ACT", "postcode": "2609", "phones": [ { "number": "(02) 6280 9468", "type": "fixed" } ], "latitude": -35.32566, "longitude": 149.171031, "location_id": "21945017-1" }, { "location_type": "Branch", "street_address": "4/12 Gardens Dr", "city": "WILLAWONG", "state": "QLD", "postcode": "4110", "phones": [ { "number": "(07) 3711 4020", "type": "fixed" }, { "number": "0412 556 981", "type": "mobile" }, { "number": "1300 855 002", "type": "freecall" } ], "latitude": -27.596321, "longitude": 153.014882, "location_id": "21945017-2" } ], "website_url": "www.tjm4x4equipped.com.au", "domains": ["tjm4x4equipped.com.au"], "emails": [ { "email": "sales@tjm4x4equipped.com.au", "email_status": "catch_all" } ], "phones": [ { "number": "1300 000 856", "type": "freecall" } ], "linkedin_url": "linkedin.com/business/tjm-4x4-equipped", "credits_charged": 1 }

Contact enrichment

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.

POST/v1/contact
ParameterTypeDescription
linkedin_urlstringThe person's LinkedIn profile URL. ContactCloud's strongest single match key for a person. Send this first when you have it
phonestringPhone 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
emailstringEmail 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.

Send the country code if you have it. Local format (04XX XXX XXX or 0X XXXX XXXX) works fine and is what most Australian systems store, but if your source data already includes +61 or another country code, pass it through as-is rather than stripping it. This avoids false non‑matches on numbers that were entered inconsistently upstream.
No business fields are returned here. /v1/contact only ever returns the businesses array below plus contact and email fields. For business profile, classification, size, or address data, call /v1/business with the business_id from that array.
Response fields: businesses (array)

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.

FieldTypeDescription
business_idintegerContactCloud'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_namestringThe business's registered or trading name, for display purposes only
Response fields: contact

As with /v1/business, fields ContactCloud has no data for are left out of the response rather than sent as null.

FieldTypeDescription
contact_full_namestringThe contact's full name as it appears on the source profile
contact_first_namestringGiven name
contact_last_namestringSurname
contact_linkedin_urlstringThis contact's own LinkedIn profile; omitted if not found
contact_job_titlestringAs it appears on the source profile, unnormalised
contact_principal_rolestringPopulated mainly for C‑Suite/Director records; omitted otherwise
contact_job_rolestringFunctional area, e.g. "Finance", "Sales"; omitted if unclassified
contact_phonesarrayEvery 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
Response fields: emails (array)

Every verified email on record for this person, most confident first.

FieldTypeDescription
emailstringThe verified email address
email_statusstringOne of: accepted_email, catch_all, Server-Protected, invalid_domain
email_scoreinteger0–100 deliverability confidence
email_domainstringThe domain portion of the email address
email_is_public_serverbooleantrue for gmail.com, yahoo.com.au, bigpond.com, etc.
email_is_role_basedbooleantrue for inboxes like info@, sales@, admin@
Example request: by LinkedIn URL
Example request: by phone
Example request: by email
Example response
contact-response.json
{ "businesses": [ { "business_id": 1, "business_name": "TJM 4x4 Equipped" } ], "contact_full_name": "Glenda Oliveira", "contact_first_name": "Glenda", "contact_last_name": "Oliveira", "contact_linkedin_url": "linkedin.com/in/glenda-oliveira-89532a197", "contact_job_title": "Office Co-Ordinator", "contact_job_role": "Operations", "contact_phones": [ { "number": "0412 556 981", "type": "mobile" } ], "emails": [ { "email": "glenda.oliveira@tjm4x4equipped.com.au", "email_status": "accepted_email", "email_score": 80, "email_domain": "tjm4x4equipped.com.au", "email_is_public_server": false, "email_is_role_based": false } ], "credits_charged": 1 }

Create API key

Book a demo

Tell us about your team and what you're looking for - we'll get back to you within one business day.