---
title: "HubSpot API: pricing, rate limits & MCP | ONEGTMLAB"
description: "HubSpot API: The SMB/mid-market CRM platform: contacts, companies, deals, tickets and custom objects behind a date-versioned REST API (2026-09), batch…"
canonical: https://www.onegtmlab.dev/tool-directory/crm/hubspot
---

# HubSpot API: pricing, rate limits & MCP | ONEGTMLAB

[](/)

[

Book a call

](/book)

![](/_astro/hubspot.ClO2484y_Z1DGNmI.webp)

API review

# HubSpot API review

The SMB/mid-market CRM platform: contacts, companies, deals, tickets and custom objects behind a date-versioned REST API (2026-09), batch upsert, associations, lists, imports/exports, webhooks and an official remote MCP server. Best for system of record for contacts/companies/deals when the client already runs HubSpot.

Verified 25 Oct 2026 · 11 endpoints listed · Official MCP server

[

See pricing

](#pricing)[

HubSpot API docs

](https://developers.hubspot.com/docs/api-reference/latest/overview.md)

At a glance

Category

CRM

Pricing model

Per seat

Free tier

Free tools: US$0, up to 2 users, no credit card

Entry price

$20/mo, billed monthly Sales Hub Starter

Auth

OAuth

Official MCP

Yes

Best for

System of record for contacts/companies/deals when the client already runs HubSpot

[hubspot.com ↗](https://www.hubspot.com)[Pricing page ↗](https://www.hubspot.com/pricing/sales?currencyCode=USD&overrideLocale=en-us)

## What a call costs

The actions you pay for, as HubSpot prices them.

Action

Cost

Per

API Limit Increase capacity pack

US$500/month per pack (US$1,000/month for two)

+1,000,000 calls/day each, max 2 packs; burst figure disputed (see rate\_limits)

HubSpot Credits beyond plan allowance (Pay-as-You-Go)

US$0.010

per credit

HubSpot Credits capacity pack

US$10

per 1,000 credits/month for the rest of the term

Required onboarding (one-time)

US$1,500 (Professional) / US$3,500 (Enterprise)

per portal

## Pricing, plan by plan

US dollars, as HubSpot's pricing page shows them on 25 Oct 2026. Monthly and annual billing are shown apart.

Free tier Free tools: US$0, up to 2 users, no credit card; contact limit 1,000 on free accounts (15 million on paid). Signup: email code, then password of 12+ characters with mixed case; signups are throttled per network/email after about 5 codes in an hour (our trial, 2026-10-25).

### Sales Hub Starter

$20/mo

billed monthly

$20/mo

billed annually

Per seat; 500 HubSpot Credits; list price US$20/seat/mo on both terms.

API includedPlan details

New-customer promotion live on 2026-10-25 ('Save up to 65% on Starter', 'Select offers available for a limited time'): US$10/seat/mo on monthly billing (monthly commitment) or US$7/seat/mo billed annually (US$84/yr). Sold as the Starter bundle (crm-suite-starter-bundle, includes 1,000 marketing contacts). India-served page: ₹585 annual / ₹835 monthly, list ₹1,670.

HubSpot Credits beyond the monthly limit: US$0.010 per credit (Pay-as-You-Go) or US$10 per 1,000-credit capacity pack

### Sales Hub Professional

$100/mo

billed monthly

$90/mo

billed annually

Per seat; 3,000 HubSpot Credits.

API includedPlan details

US$100/seat/mo paid monthly (still an annual commitment: commitmentTerm ANNUAL, US$1,200/yr) or US$90/seat/mo paid annually (US$1,080/yr). Required one-time Professional Onboarding US$1,500. India-served page: ₹8,330 monthly / ₹7,497 annual.

HubSpot Credits: US$0.010 per credit or US$10 per 1,000-credit pack

### Sales Hub Enterprise

$150/mo

annual billing only

$150/mo

billed annually

Per seat; 5,000 HubSpot Credits.

API includedPlan details

Annual term only, US$150/seat/mo (US$1,800/yr); Talk to Sales, no self-serve checkout. Required one-time Enterprise Onboarding US$3,500. India-served page: from ₹12,500/seat/mo.

HubSpot Credits: US$0.010 per credit or US$10 per 1,000-credit pack

## Rate limits

Privately distributed apps: burst limit per app per 10 seconds, daily limit shared per account; resets at midnight in the account time zone.

Limit

Free / Starter (any Hub)

Professional (any Hub)

Enterprise (any Hub)

With API Limit Increase add-on (max 2 packs, US$500/month each)

Per 10s

100 per app

190 per app

190 per app

250 per app (developer docs and catalog intro text); catalog table: 350 / 600 (Free, Starter) or 440 / 690 (Pro, Ent) for 1 / 2 packs

Per Day

250,000 per account

625,000 per account (developer docs); 650,000 in the legal catalog

1,000,000 per account

+1,000,000 per pack, max two packs (does not apply to OAuth marketplace apps)

More on limitsLess

Marketplace-distributed OAuth apps: 110 requests per 10 seconds per installing account (excludes Search). CRM Search: 5 req/s per account. 429 errors should stay under 5% of daily requests. CONFLICT (recorded 2026-10-25): HubSpot's legal catalog (technical limits) lists Professional at 650,000/day (developer docs: 625,000) and says one API Limit Increase pack raises burst to 350 (Free/Starter) or 440 (Pro/Ent) per 10s and two packs to 600 / 690, while the same page's intro text and the developer docs say 250 per 10s. The developer docs are used for API behaviour; the catalog is the contract, so confirm with HubSpot before relying on either figure.

## How to get an API key

HubSpot uses OAuth. The steps below follow HubSpot's own docs.

1.  Create a HubSpot account. API access starts on the Sales Hub Starter plan.
2.  OAuth for distributed apps; for single-account integrations a static auth token from an app on the developer platform, or a Service Key (Settings > Integrations > Service Keys). Legacy private-app creation is disabled for new accounts from 2026-09-28 and for existing accounts from 2026-10-26; existing private-app tokens keep working. Legacy private apps built before the Projects model must migrate by September 2027.
3.  Send it with every request: header: Authorization: Bearer <token>.
4.  Make a first call: Create-or-update up to 100 contacts by a unique property (idProperty, e.g. email). Keep the key in an environment variable, never in the command.
    
    ```
    curl -X POST "https://api.hubapi.com/crm/objects/2026-09/contacts/batch/upsert" \
      -H "Authorization: Bearer $HUBSPOT_ACCESS_TOKEN" \
      -H "Content-Type: application/json" \
      -d '{}'
    ```
    

## Where the docs live

What

Where

Documentation

[developers.hubspot.com/docs/index.md](https://developers.hubspot.com/docs/index.md)

API reference

[developers.hubspot.com/docs/api-reference/latest/overview.md](https://developers.hubspot.com/docs/api-reference/latest/overview.md)

OpenAPI spec

[developers.hubspot.com/docs/\_llms/apis.txt](https://developers.hubspot.com/docs/_llms/apis.txt)

llms.txt

[developers.hubspot.com/docs/llms.txt](https://developers.hubspot.com/docs/llms.txt)

Changelog

[developers.hubspot.com/changelog](https://developers.hubspot.com/changelog)

Base URL

`https://api.hubapi.com`

MCP server

`https://mcp.hubspot.com`

SDKs

Node.js: @hubspot/api-client (npm), PHP: hubspot/api-client (composer), Python: hubspot-api-client (pip), Ruby: hubspot-api-client (gem)

## Strengths and limits

### Where it fits

-   System of record for contacts/companies/deals when the client already runs HubSpot
-   Batch create/update/upsert of up to 100 records per call, with associations up to 2,000 per call
-   Bulk loads via the Imports API (up to 80,000,000 rows/day)
-   Agent read/write access through the official remote MCP server

### Where it falls short

-   Deduping companies by domain on API writes: HubSpot does NOT dedupe API-created companies by domain
-   Deep paging through search results: search stops at 10,000 results per query
-   Rich workflow automation on Free/Starter: Free has no workflows, Starter gets up to 50 workflows with restricted triggers and actions; fully customizable workflows start at Professional (300) and Enterprise (1,000). Source: [hubspot.com/pricing/sales](https://www.hubspot.com/pricing/sales) (feature table, 2026-10-25)
-   Data enrichment or sourcing (it is a CRM, not a data provider)

### Worth knowing

-   Companies created through the API are NOT deduplicated by domain (includes third-party sync apps). Source: [knowledge.hubspot.com/records/deduplication-of-records](https://knowledge.hubspot.com/records/deduplication-of-records)
-   API paths moved to date-based versions (/2026-03/, /2026-09/) from 2026-03-30. v1-v3 go unsupported September 2027, v4 on 2027-03-30; migrate straight to date-based paths. Source: [developers.hubspot.com/changelog/legacy-apis-and-legacy-apps-whats-going-unsupported-and-when](https://developers.hubspot.com/changelog/legacy-apis-and-legacy-apps-whats-going-unsupported-and-when)
-   Legacy private app creation ends 2026-10-26 for existing accounts (2026-09-28 for new ones); new integrations should use Service Keys. Source: [developers.hubspot.com/changelog/legacy-private-app-creation-sunset](https://developers.hubspot.com/changelog/legacy-private-app-creation-sunset)
-   From the 2026-09 API version, admin-configured validation rules are enforced on all CRM API writes (breaking). Source: [developers.hubspot.com/changelog/crm-api-write-validation-enforcement](https://developers.hubspot.com/changelog/crm-api-write-validation-enforcement)
-   Search API: 5 req/s per account, 200 per page, 10,000 results max, and no X-HubSpot-RateLimit headers in responses. Source: [developers.hubspot.com/docs/api-reference/latest/crm/search-the-crm.md](https://developers.hubspot.com/docs/api-reference/latest/crm/search-the-crm.md)

9 moreShow fewer

-   The API Limit Increase add-on does not raise limits for OAuth marketplace apps, and does not raise association API limits beyond 1,000,000/day. Source: [developers.hubspot.com/docs/developer-tooling/platform/usage-guidelines.md](https://developers.hubspot.com/docs/developer-tooling/platform/usage-guidelines.md)
-   OAuth-authorised responses do not include the X-HubSpot-RateLimit-Daily headers. Source: [developers.hubspot.com/docs/developer-tooling/platform/usage-guidelines.md](https://developers.hubspot.com/docs/developer-tooling/platform/usage-guidelines.md)
-   Our own: HubSpot auto-creates a company from a contact's email domain; search index is eventually consistent (~2-5s); merged survivor gets a new id; v3 single association PUT can silently no-op, use v4 default association. Source: §3b and §6
-   Prices are geo-localised: an Indian IP sees INR only and ?currency=USD does nothing; use ?currencyCode=USD&overrideLocale=en-us to see the US price. Sources: [hubspot.com/pricing/sales](https://www.hubspot.com/pricing/sales?currencyCode=USD&overrideLocale=en-us)
-   Professional 'monthly' billing is still a 12-month commitment (commitmentTerm ANNUAL), and Professional/Enterprise add a required one-time onboarding fee (US$1,500 / US$3,500). Source: [hubspot.com/pricing/sales](https://www.hubspot.com/pricing/sales?currencyCode=USD&overrideLocale=en-us)
-   The Starter price shown today (US$7 annual / US$10 monthly) is a limited-time new-customer promotion on a US$20 list price. Source: [hubspot.com/pricing/sales](https://www.hubspot.com/pricing/sales?currencyCode=USD&overrideLocale=en-us)
-   Signup is throttled: about 5 email codes in 6 minutes locked new signups from our network/email for over an hour ('too many requests to create an account'). Use one browser session.
-   Docs disagree on burst and daily limits for the API Limit Increase and for Professional (see rate\_limits). Sources: [developers.hubspot.com/docs/developer-tooling/platform/usage-guidelines.md](https://developers.hubspot.com/docs/developer-tooling/platform/usage-guidelines.md); [legal.hubspot.com/hubspot-product-and-services-catalog/technical-limits](https://legal.hubspot.com/hubspot-product-and-services-catalog/technical-limits)
-   The upsert reference prose says idProperty is a query parameter, but the embedded OpenAPI puts idProperty inside each inputs\[\] item. Source: [developers.hubspot.com/docs/api-reference/latest/crm/objects/companies/batch/upsert-companies.md](https://developers.hubspot.com/docs/api-reference/latest/crm/objects/companies/batch/upsert-companies.md)

### Our take

We upload companies and contacts into client HubSpot portals through the API. After one run created duplicate companies, our method is companies first, then contacts, with a domain-keyed index kept during the run because HubSpot's search lags behind newly created records, and a duplicate audit after every upload. HubSpot also creates a company on its own from a new contact's email domain, which is the most common source of duplicates we find.

## Who should use it

Use HubSpot for

System of record for contacts/companies/deals when the client already runs HubSpot

Look elsewhere for

Deduping companies by domain on API writes: HubSpot does NOT dedupe API-created companies by domain

## If HubSpot is not the answer

Other CRM tools in this directory, each with its own review.

[

![](/_astro/attio.CoO4UDxn_Zx1tGp.webp)

Attio

CRM

Free planOfficial MCP

Best for start-ups and agencies wanting a free/cheap CRM with API, webhooks and MCP on every plan.

Attio API review →](/tool-directory/crm/attio)[

![](/_astro/close.BGAid65p.svg)

Close

CRM

From $9/moOfficial MCP

Best for inside-sales teams that call and email from the CRM.

Close API review →](/tool-directory/crm/close)[

![](/_astro/copper.CFmJ3qY-.svg)

Copper

CRM

From $23/mo

Best for google Workspace teams that want a simple CRM inside Gmail.

Copper API review →](/tool-directory/crm/copper)

### Compare HubSpot with

-   [![](/_astro/pipedrive.DtFSS7Dm_Z1P97Xy.webp)Pipedrive side by side](/tool-directory/compare/hubspot-vs-pipedrive)

## Before you build

Four things to settle first, each read off HubSpot's own pages.

-   **Confirm the API is on your plan**API access starts on the Sales Hub Starter plan. Free tier: Free tools: US$0, up to 2 users, no credit card.
    
-   **Keep the key out of your code**OAuth. It is sent as: header: Authorization: Bearer <token>.
    
-   **Design around the rate limit**Privately distributed apps: burst limit per app per 10 seconds, daily limit shared per account; resets at midnight in the account time zone.
    
-   **Know the catch before you scale**Companies created through the API are NOT deduplicated by domain (includes third-party sync apps). Source: [knowledge.hubspot.com/records/deduplication-of-records](https://knowledge.hubspot.com/records/deduplication-of-records)
    

## Want us to build it for you?

Tell us what you want HubSpot to do in your stack. We will show you how we would wire it into your data, outbound or CRM, and what we would check first.

[

Book a call

](/book)[

See case studies

](/case-studies)

Read from [hubspot.com/pricing/sales](https://www.hubspot.com/pricing/sales?currencyCode=USD&overrideLocale=en-us), [developers.hubspot.com/docs/api-reference/latest/overview.md](https://developers.hubspot.com/docs/api-reference/latest/overview.md) and [developers.hubspot.com/docs/developer-tooling/platform/usa](https://developers.hubspot.com/docs/developer-tooling/platform/usage-guidelines.md). Verified 25 Oct 2026.

All 11 endpointsFor developers: method, path, what it does and what it costs.

**Base URL:** `https://api.hubapi.com`

**Bulk and async:** Batch endpoints 100 inputs/call; associations batch 2,000 create / 1,000 read; Imports API up to 80M rows/day; async Exports (30/day). Source: [developers.hubspot.com/docs/api-reference/latest/crm/using-object-apis.md](https://developers.hubspot.com/docs/api-reference/latest/crm/using-object-apis.md)

**Webhooks:** Yes. App webhook subscriptions via /app-webhooks/2026-09/{appId}/subscriptions (max 1,000 per app; 400 beyond), each POST carries up to 100 events, X-HubSpot-Signature SHA-256, default concurrency 10 (maxConcurrentRequests must be > 5), retries up to 10 times spread over 24h, 5-second response timeout, settings cached up to 5 minutes. Workflow webhook actions: the usage guidelines name Marketing Hub Enterprise (other hubs not stated there); workflow webhook calls do not count against the API rate limit. Sources: [developers.hubspot.com/docs/api-reference/latest/webhooks/guide.md](https://developers.hubspot.com/docs/api-reference/latest/webhooks/guide.md); [developers.hubspot.com/docs/developer-tooling/platform/usage-guidelines.md](https://developers.hubspot.com/docs/developer-tooling/platform/usage-guidelines.md) (verified 2026-10-25)

Filter endpoints

11 endpoints

Method

Path

What it does

Cost

POST

`/crm/objects/2026-09/contacts/batch/upsert`

Create-or-update up to 100 contacts by a unique property (idProperty, e.g. email)

none (counts against API rate limit)

POST

`/crm/objects/2026-09/companies/batch/upsert`

Create-or-update up to 100 companies by a unique property

none

POST

`/crm/objects/2026-09/{objectType}/batch/{create|read|update|archive}`

Batch CRUD for contacts, companies, deals, tickets, custom objects

none

POST

`/crm/objects/2026-09/{objectType}/search`

Filter/sort/search CRM records (dedupe lookups)

none

POST

`/crm/objects/2026-09/contacts/merge`

Merge two contacts (irreversible; survivor may get a new id)

none

POST

`/crm/associations/2026-09/{fromObjectType}/{toObjectType}/batch/associate/default`

Bulk-associate records with the default (unlabeled) association

none

POST

`/crm/associations/2026-09/{fromObjectType}/{toObjectType}/batch/read`

Read associations for up to 1,000 records

none

POSTasync

`/crm/imports/2026-09`

Bulk CSV/XLSX import of records with associations

none

POSTasync

`/crm/exports/2026-09/export/async`

Async export of records or views

none

POST

`/crm/lists/2026-09/`

Create static (MANUAL) or dynamic lists; manage memberships

none

GET

`/app-webhooks/2026-09/{appId}/subscriptions`

Manage webhook event subscriptions for an app

none

[](/)

© 2026 ONEGTMLAB Private Limited. All rights reserved.

COMPANY

[

Why Us

](/#why-us)[

Process

](/#timeline)[

Blogs

](/blogs)[

About

](/about)[

Clients

](/clients)[

Free resources

](/free-resources)[

Newsletter

](/newsletter)

Services

[

GTM Engineering

](/ai-gtm-engineering)[

Account-Based Marketing

](/services/account-based-marketing)[

Paid Media

](/services/paid-media)[

Content Engineering

](/linkedin-personal-branding)[

RevOps

](/services/revops)[

SEO, AEO & GEO

](/services/seo-aeo-geo)[

All services

](/services)

![](/_astro/wordmark-3d.CMEfGdYr.svg)
