Skip to main content
The HubSpot replica implements the CRM v3 REST API for companies, contacts and deals, including search with delayed indexing, batch operations, associations and read-only pipelines and properties. Its key is hubspot.

Connect

Node
This is what ancha connect hubspot --lang ts prints. Existing v3 clients work when you set their base URL to HUBSPOT_API_URL.

Endpoints

:type is companies, contacts or deals, or the type IDs 0-2, 0-1 and 0-3. All endpoints are partial. Unsupported routes, fields, operators and options return HubSpot’s error shape with an ancha: not implemented: message and x-ancha-gap: 1. HubSpot’s newer date-based routes, such as /crm/objects/2026-09/..., are not implemented.

Behavior

  • Search is delayed. Direct reads and lists see writes at once. Search sees a new or changed record only after 2 simulated seconds, as HubSpot’s search index lags. Archived records leave search at once.
  • Search syntax. filterGroups (up to 5 groups, 6 filters each, 18 in total; filters in a group are ANDed, groups are ORed), query, one sorts entry, properties, limit (default 10, at most 200) and after. Operators: EQ, NEQ, LT, LTE, GT, GTE, BETWEEN, IN, NOT_IN, HAS_PROPERTY, NOT_HAS_PROPERTY.
  • Lists return 10 records by default and at most 100, with an after cursor.
  • Batches take 1 to 100 inputs for read, create, update and archive.
  • Properties are a fixed catalog. Companies: name, domain, website, description, industry, city, state, country, phone, numberofemployees, annualrevenue, lifecyclestage. Contacts: firstname, lastname, email, phone, mobilephone, company, jobtitle, lifecyclestage, hs_lead_status. Deals: dealname, amount, closedate, pipeline, dealstage, description, dealtype. All three also have external_id and hubspot_owner_id. Unknown properties are rejected.
  • Associations use HubSpot’s default type IDs: contact to company 1 (primary) and 279, deal to company 5 (primary) and 341, deal to contact 3, and their reverse IDs.
  • Permissions. The token has read and write scopes for all three objects. Company 102 is outside the app’s access: reading it fails and lists and searches leave it out.

Starter data

The hubspot-starter dataset is the portal Acme (510001): nine companies, thirteen contacts and eight deals. Each contact is associated with its company, and each deal with its company and its primary contact.

Checks

HubSpot has no state checks. Use trace checks:

Limits

  • Companies, contacts and deals only: no tickets, custom objects, engagements or owners.
  • No workflows, webhooks, OAuth, merges, upserts or restores.
  • No rate limits.