---
title: "Freshsales API review: 1,000 requests an hour, shared"
description: "The Freshsales API allows 1,000 requests an hour for the whole account. Why bulk upsert at 100 records a call is the only way a real sync fits inside it."
url: https://frontal.so/gtm-apis/crm-apis/freshsales-api-review
updated: 2026-11-12
---

# Freshsales API review

A $9 seat with a published API ceiling

Reviewed by **Frontal** *·*Updated October 2026

## On this page

1. The hourly budget
2. Pricing and plans
3. Rate limits
4. API key and access
5. Request example
6. Docs and reference
7. Video walkthrough
8. Strengths and limits
9. Verdict
10. Before you build
11. Top alternatives
12. Head to head

[Visit Freshsales](https://www.freshworks.com/crm/sales/)

**From**

$9/user/mo annual

**Unit cost**

Not sold by the unit

**Billing**

Per seat Subscription

**Best for**

A $9 seat with a published API ceiling

get-contact.sh 1 of 1,000/hr

```
GET https://{yourdomain}.myfreshworks.com/crm/sales/api/contacts/1
Authorization: Token token=$FRESHSALES_API_KEY

# 1,000 requests an hour, per account, every key together
# bulk upsert: up to 100 records in one of them
```

200 OK Per API call Included in the seat

The Freshsales API comes with a $9 seat, billed annually, which ties for the cheapest paid CRM seat here at list price, and it states its ceiling in a number: 1,000 API requests an hour per account. That is a little over 16 a minute, and it is shared by every key and every integration on the account.

That one figure decides how a Freshsales CRM API integration has to be built. Reading records one at a time spends the hour on 1,000 rows. The bulk upsert endpoints take up to 100 records a request, so the same hour can write 100,000, which makes batching the design rather than an optimization.

Authentication is a per-user API key plus a bundle alias that names the CRM account in the URL, sent as a Token header. The reference is a single long page at developers.freshworks.com, with every endpoint and a curl example for each.

The rest of the category is in the [CRM and sync APIs](https://frontal.so/gtm-apis/crm-apis) listing.

## What an hour of requests buys

Freshsales meters requests, not records, so the work an hour can do depends entirely on how many records each request carries. These are the shapes the reference documents.

| Call | Records per request | Records an hour at 1,000 requests |
| --- | --- | --- |
| Read one contact, account or deal | 1 | 1,000 |
| List a view, default page | 25 | 25,000 |
| Bulk upsert contacts, accounts or deals | up to 100 | up to 100,000 |
| Search or lookup by email | a result set | One request per search |

Bulk upsert is the call that changes the arithmetic. It exists for contacts, accounts and deals, takes up to 100 entities a request keyed on a unique identifier such as an email, and runs as a background job you can track through the Job Status API. An account may have 10 bulk upserts in progress at once.

The search and lookup endpoints are the other place an integration spends its hour. A sync that looks each record up by email before writing it spends two requests a record and halves its throughput, where an upsert keyed on email does the match and the write in one.

Every key draws on the same hour

The limit is per account, not per key or per user, so any marketplace app, automation tool and your own sync all spend the same 1,000. One integration that loops on single-record reads can exhaust it for everyone, and the 429 lands on whichever job happens to run next.

## Freshsales API pricing, plan by plan

Freshsales API pricing is seat pricing: the API comes with every plan, and the published ceiling of 1,000 requests an hour does not change between them.

### Growth

$9

/user/mo billed annually

- 1,000 API requests an hour, account-wide
- Contact lifecycle stages and basic workflows
- Chat, email and phone

### Pro

$39

/user/mo billed annually

- Same published API ceiling
- Sales sequences and territory management
- Contact scoring and deal insights

### Enterprise

$59

/user/mo billed annually

- Same published API ceiling
- Custom modules and a sandbox
- Audit logs and field-level permissions

Freshworks advertises saving 20% on annual billing, and the monthly prices sit behind a toggle on the pricing page. Two add-ons are available on every plan: branded documents at $19 a user a month, and the Freddy AI Agent at $49 per 100 sessions, with 500 sessions included once per account.

The trial is 21 days of the full CRM, after which you pay by card to continue or the account is suspended. There is no ongoing free tier on the published plans.

More seats do not buy more requests

Unlike Zoho, Pipedrive or Salesforce, Freshsales does not scale its API allowance with seats or plans. Fifty users on Enterprise share the same 1,000 requests an hour as three users on Growth, so if throughput is the constraint, upgrading the plan does not move it; batching does.

Built in Clay

### Building this yourself? *Start in Clay.*

Clay runs a waterfall across 150+ data providers from one table, without a separate contract with each. A lookup that finds nothing costs no data credit.

**150+** data providers

**500** free actions a month

**$0** for a miss

[Try Clay](https://go.frontal.so/clay)

Frontal is a Clay Elite Studio Partner.

A Clay waterfall

**Clay**

## One number, per hour, per account

Freshsales API rate limits are a single figure, stated in the reference where it explains a 429: 1,000 API requests per hour per account. There is no per-endpoint accounting and no daily pool to plan around, only the hour.

### What the limit covers

Everything on the account.

- 1,000 requests an hour, per account.
- Shared by every user's API key and every integration.
- Exceeding it returns 429 Too many requests.
- About 16 requests a minute if spread evenly, or 24,000 a day.

### The limits around bulk

Separate from the hourly count.

- Up to 100 entities in one bulk upsert request.
- Up to 10 bulk upserts in progress at once per account.
- Exactly one unique identifier per record in the batch.
- Progress is tracked through the Job Status API.

Design for the hour, not the minute

Because the window is an hour, a burst can spend the whole allowance in a few minutes and leave nothing for the rest of it. A sync that queues work and spreads it evenly behaves far better than one that fires everything at the top of the hour, and it leaves room for the other integrations on the account.

So the Freshsales API rate limits are simple to state and strict to live with. A design built on 100-record upserts and paged reads of saved views fits comfortably, and a design built on single-record reads does not fit at all once the account has more than a few thousand contacts.

## How to create a Freshsales API key

A Freshsales API key belongs to a user and is found in the app under Profile Settings, API Settings. The same tab shows the bundle alias, which identifies the CRM account and becomes part of every URL.

### The API key

One per user.

- Shown in Profile Settings, under the API Settings tab.
- Sent as Authorization: Token token= followed by the key.
- The API sees only what that user can see.
- An admin-only operation returns a 403.

### The bundle alias

Which CRM account to talk to.

- Listed just below the API key in the same tab.
- A Freshworks org can hold several CRM accounts.
- URLs take the form https://{yourdomain}.myfreshworks.com/crm/sales/api/.
- Send HTTPS and follow redirects, or expect a 301 or 302.

Validation errors changed code in 2018

Accounts that signed up on or after 17 August 2018 get a 400 for a validation error. Older accounts may still get a 500 for the same mistake, so an integration that treats every 500 as Freshworks' fault can be retrying a malformed request forever.

Because the key carries its owner's access, the integration should run on a dedicated user with the scope it needs and no more. That also keeps a departing employee from taking a working sync with them.

## A first Freshsales API call

Both calls below are Freshsales' own examples from the reference: a single contact read, and a bulk upsert keyed on email that creates or updates in one request.

first-call.sh REST

```
# read one contact
GET https://{yourdomain}.myfreshworks.com/crm/sales/api/contacts/1
Authorization: Token token=$FRESHSALES_API_KEY

# create or update up to 100 in one request
POST /api/contacts/bulk_upsert
# returns a job_status_url to poll
```

## Where the Freshsales API documentation lives

The Freshsales API documentation is one long reference page, organized by object, with the authentication rules, error codes and pagination at the top and a curl example under every endpoint.

| Surface | Where | What it answers |
| --- | --- | --- |
| API reference | developers.freshworks.com/crm/api/ | Every endpoint, with request and response samples. |
| Authentication | developers.freshworks.com/crm/api/#authentication | The API key and the bundle alias. |
| Errors | developers.freshworks.com/crm/api/#errors | Status codes, including the 429 and its limit. |
| Bulk upsert | developers.freshworks.com/crm/api/#bulk\_upsert\_contact | The 100-record batch and its limits. |
| Finding your key | crmsupport.freshworks.com | The support article on where the API key lives. |

Lists are paginated at 25 records a page by default, with a page parameter starting at 1. The reference also covers configuration selectors for owners, territories, deal stages and currencies, which a sync reads once at startup to map IDs to names, and custom modules for accounts on Enterprise.

## Freshsales' own product walkthrough

Freshsales publishes this on its own channel, so it is Freshsales' account of Freshsales, not ours. It is here because a rate card cannot show you the thing moving, and a few minutes of the product is faster than any paragraph on this page at telling you whether the shape of it fits yours.

[YouTube · Freshworks What is Freshsales? 3:42 · Published June 2024](https://www.youtube.com/watch?v=KehhQcMhOYE)

Freshworks' own three minute overview of Freshsales: lead capture, qualification and routing with Freddy AI, and the sales workspace. It does not cover the API, and nothing in it touches the 1,000 requests an hour that decides what a Freshsales integration can do, so the limits section above is the part to read.

Published 10 June 2024 on [Freshworks](https://www.youtube.com/channel/UCYtaa2E7NSvf3uD9DbsDYZA), the channel Freshsales' own pages link to, and read on 23 October 2026. Nothing in it is a source for a price or a limit on this page: every figure in the tables above comes from a Freshsales page.

## Strengths and limits

Freshsales is one of the two cheapest seats here with a stated API ceiling, and the API is honest about how small that ceiling is.

### What it does well

- API access from $9 a user a month billed annually.
- The limit is one published number, so it can be designed against.
- Bulk upsert for contacts, accounts and deals at up to 100 records a request.
- Upserts key on a unique identifier, so matching and writing are one call.
- One reference page with a curl example for every endpoint.
- A 21-day trial of the full CRM.

### Where it falls short

- 1,000 requests an hour for the whole account, every integration together.
- The ceiling does not rise with seats or plans.
- Default pages of 25 records make listing expensive.
- Keys belong to users and see only what those users see.
- No MCP server, and no ongoing free tier.
- AI and branded documents are paid add-ons on every plan.

The two columns are the same fact seen from either side. A cheap seat with a small, fixed ceiling suits a team whose integration batches its writes, and punishes one that reads record by record.

## Who should actually buy this

Buy Freshsales when the seat price matters and the integration can batch. At $9 a user it ties for the cheapest paid CRM seat here at list price, and a sync built on 100-record upserts fits inside 1,000 requests an hour with room to spare.

Do not buy it for throughput. The ceiling is per account and does not grow with plans or seats, so a fifty-person team on Enterprise has the same hourly budget as three people on Growth. If several integrations will share the account, count their requests together before signing.

Against Zoho CRM, the other cheap seat that publishes its whole API allowance, the difference is in what grows. Zoho's daily credit pool rises with licenses and edition, and it publishes per-call costs and a free edition. Freshsales publishes one fixed hourly number and a cheaper seat. A growing team that integrates heavily is better served by Zoho; a small team with a light, batched sync can save the difference on Freshsales.

## Before you build against it

Three things to settle first, each one read off Freshsales' own pages. The ticks are remembered in this browser, so you can come back to a half-finished integration.

## If Freshsales is not the answer

Four providers in the [CRM and sync APIs](https://frontal.so/gtm-apis/crm-apis) listing that solve the same problem differently. Each one is a trade, and the trade is named.

[HubSpot Free tier Free with the API included, and 600 requests a minute where Freshsales allows 16. The obvious move when the ceiling was the reason.](https://frontal.so/gtm-apis/crm-apis/hubspot-api-review) [Pipedrive $14/seat/mo A $14 seat with an API budget that scales with seats and plan. The pick for a sales team that liked the cheap seat and hated the shared hourly cap.](https://frontal.so/gtm-apis/crm-apis/pipedrive-api-review) [Attio $44/user/mo Objects defined in code, a free plan with the full API, and 100 reads a second. For teams that left because the data model did not fit.](https://frontal.so/gtm-apis/crm-apis/attio-api-review) [Salesforce $125/seat/mo A daily org budget of 100,000 calls plus 1,000 a license, and an API for every job. The heavyweight option, at fourteen times the seat price.](https://frontal.so/gtm-apis/crm-apis/salesforce-api-review)

The full set, organized by the reason people leave, is on the [Freshsales alternatives](https://frontal.so/gtm-apis/alternatives/freshsales-alternatives) page.

## Freshsales against the obvious rival

Same rate cards, read side by side, with the arithmetic done on a worked volume rather than left to you: [HubSpot vs Freshsales](https://frontal.so/gtm-apis/compare/hubspot-vs-freshsales), [Freshsales vs Zoho CRM](https://frontal.so/gtm-apis/compare/freshsales-vs-zoho-crm), [Freshsales vs Salesforce](https://frontal.so/gtm-apis/compare/freshsales-vs-salesforce) and [Freshsales vs Pipedrive](https://frontal.so/gtm-apis/compare/freshsales-vs-pipedrive).

Every pairing in the directory is on the [compare hub](https://frontal.so/gtm-apis/compare).

[HubSpot vs Freshsales Compare A seat tied for the cheapest here, with the tightest ceiling. HubSpot gives you 36 times the throughput for nothing.](https://frontal.so/gtm-apis/compare/hubspot-vs-freshsales) [Freshsales vs Zoho CRM Compare Two of the cheapest paid CRM seats in this directory, one capped by the hour and one by concurrency.](https://frontal.so/gtm-apis/compare/freshsales-vs-zoho-crm) [Freshsales vs Salesforce Compare A CRM seat tied for the cheapest in this directory against the only one that sells its API separately. $9 against $125.](https://frontal.so/gtm-apis/compare/freshsales-vs-salesforce)

## Calling these APIs one by one? *Run them from one Clay table.*

Clay runs a waterfall across 150+ data providers from one table, without a separate contract with each. A lookup that finds nothing costs no data credit, and the free plan includes 500 actions a month.

[Try Clay](https://go.frontal.so/clay) [See the CRM APIs compared](https://frontal.so/gtm-apis/crm-apis)

Frontal is a Clay Elite Studio Partner.

What practitioners say

## Nothing worth quoting yet

We searched Reddit for threads about the Freshsales API and have found none worth quoting yet. When one turns up, it goes here, and nothing on this page leans on an unquoted paraphrase.

FAQ

## Freshsales API, answered

**Is the Freshsales API free?**

No ongoing free tier on the published plans. Free trial. Paid plans start at $9/user/mo annual.

**How much does the Freshsales API cost?**

Freshsales starts at $9/user/mo annual. It bills per seat, by subscription. Read from Freshsales' own pricing page on 24 October 2026.

**What are the Freshsales API rate limits?**

1,000 API requests an hour per account, shared across every key and integration.

**How do I get a Freshsales API key?**

A Freshsales API key belongs to a user and is found in the app under Profile Settings, API Settings. Requests authenticate with API key in the Authorization header, with the account bundle alias in the host. The current steps are in Freshsales' own documentation, which is authoritative on anything that has changed since 24 October 2026.

**Does Freshsales have an MCP server?**

Not one its own documentation describes, at the time of writing. Freshsales ships a REST API, webhooks and bulk or async jobs instead.

Published by

## [Frontal](https://frontal.so/)

Frontal is the go-to-market partner for B2B tech companies past product-market fit. It publishes this directory. Every price, tier requirement and rate limit on this page was read from the vendor's own pricing page, developer documentation or knowledge base on the date below. Nothing on it is restated from a press release or a third-party listing.

Where a vendor publishes no public figure, this page says so rather than estimating. [How we checked](https://frontal.so/gtm-apis#method).

Reviewed by

[Kenny Damian](https://www.linkedin.com/in/kenny-damian-90aba221a/)

Co-founder & Head of GTM, Frontal

**Verified**

24 Oct 2026

**Sources**

2 vendor documents

Read from

- [freshworks.com/crm](https://www.freshworks.com/crm/pricing/)
- [developers.freshworks.com/crm](https://developers.freshworks.com/crm/api/)
