HubSpot CRM Companies
Find, read, create and update companies in HubSpot CRM: search by domain, name, industry or any property, read companies with their associated contacts and deals, and keep account records up to date. Curated from HubSpot's official OpenAPI specification.
Connect this API to an AI agent Browse all specs
What you can do with HubSpot CRM Companies via MCP
Every endpoint below becomes a governed tool your AI agent (Claude, ChatGPT, or a customer-facing VX agent) can call — with scoped permissions, sandbox testing, and audit logs.
| Method | Path | Operation | Description |
|---|---|---|---|
| POST | /crm/v3/objects/companies/search |
searchCompanies | Search companies by domain, name or any property |
| GET | /crm/v3/objects/companies |
listCompanies | List companies page by page |
| POST | /crm/v3/objects/companies |
createCompany | Create a company |
| GET | /crm/v3/objects/companies/{companyId} |
getCompany | Get one company with its properties and associated records |
| PATCH | /crm/v3/objects/companies/{companyId} |
updateCompany | Update a company's properties |
| POST | /crm/v3/objects/companies/batch/read |
batchReadCompanies | Get several companies by id at once |
Authentication
PrivateAppToken
Bearer token — sent as Authorization: Bearer <token>
HubSpot private app access token sent as Authorization: Bearer <token>.
How to get a credential
- In HubSpot, open Settings > Integrations > Private Apps (Super Admin required).
- Click Create a private app and name it (e.g. VX Agents).
- On the Scopes tab, add
crm.objects.companies.readandcrm.objects.companies.write. - Click Create app, then copy the access token (starts with
pat-).
Permissions used
| Scope | Operations |
|---|---|
| crm.objects.companies.read | searchCompanies, listCompanies, getCompany, batchReadCompanies |
| crm.objects.companies.write | createCompany, updateCompany |
Common errors
- 401 Unauthorized: the token is wrong, rotated or missing the
Bearerprefix. Copy it again from the private app. - 403 Forbidden: the private app is missing a scope above (
MISSING_SCOPES). Add it and use the updated token. - 400 Bad Request: unknown property name or invalid value (e.g. enum option such as
industry). Check internal property names in Settings > Properties. - 429 Too Many Requests: rate limit hit (per 10 seconds and daily); wait and retry.
Store the token as a VX Agents credential (Bearer token); never paste it into chat.
Usage guide
Setup
- Add a HubSpot private app token (scopes
crm.objects.companies.readandcrm.objects.companies.write) as the Bearer credential. - Optionally pin
propertiesto the fields you always want back (e.g.name,domain,industry,city,country,phone,numberofemployees,lifecyclestage,hubspot_owner_id). By default HubSpot returns only a few.
Find or update a company
- Look the company up first with
searchCompanies: by website,filterGroups[{"filters":[{"propertyName":"domain","operator":"EQ","value":"acme.com"}]}](bare domain, nohttps://orwww.); by name, a free-textqueryorCONTAINS_TOKENonname. - Read details with
getCompany(addassociations=contacts,dealsto see linked records). - If found, show the user the changes and confirm, then
updateCompanywith the companyidand only thepropertiesto change. - If not found, confirm and call
createCompanywithproperties(nameanddomainrecommended). HubSpot does not block duplicates by name, so always search by domain first.
Reading many companies
batchReadCompanies: up to 100 ids ininputs.listCompanies: pages withlimit(max 100) andafter(frompaging.next.after).searchCompanies:limitup to 200,afterfor the next page; max 10,000 results per query.
Good to know
- Creating or changing companies edits customer data: confirm
createCompanyandupdateCompanywith the user first. - Use internal property names (
numberofemployees, not "Number of employees"); see Settings > Properties. All property values are sent as strings; enum fields such asindustryneed the internal option value (e.g.COMPUTER_SOFTWARE). - Dates/datetimes are ISO 8601 or Unix milliseconds; date-only properties need midnight UTC.
- Search filter operators:
EQ,NEQ,LT,LTE,GT,GTE,CONTAINS_TOKEN,HAS_PROPERTY,NOT_HAS_PROPERTY,IN,BETWEEN. Filters in one group are AND, groups are OR. - Search results can lag a few seconds behind writes.
How to use this spec
- Create a free VX Agents account (sandbox tools included).
- Open the marketplace and connect “HubSpot CRM Companies” to an agent.
- Expose it as an MCP server for Claude/ChatGPT, or chat with it directly.