Skip to content

Freshsales API review

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 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.

CallRecords per requestRecords an hour at 1,000 requests
Read one contact, account or deal11,000
List a view, default page2525,000
Bulk upsert contacts, accounts or dealsup to 100up to 100,000
Search or lookup by emaila result setOne 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.

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.

SurfaceWhereWhat it answers
API referencedevelopers.freshworks.com/crm/api/Every endpoint, with request and response samples.
Authenticationdevelopers.freshworks.com/crm/api/#authenticationThe API key and the bundle alias.
Errorsdevelopers.freshworks.com/crm/api/#errorsStatus codes, including the 429 and its limit.
Bulk upsertdevelopers.freshworks.com/crm/api/#bulk_upsert_contactThe 100-record batch and its limits.
Finding your keycrmsupport.freshworks.comThe 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

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, 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 listing that solve the same problem differently. Each one is a trade, and the trade is named.

The full set, organized by the reason people leave, is on the 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, Freshsales vs Zoho CRM, Freshsales vs Salesforce and Freshsales vs Pipedrive.

Every pairing in the directory is on the compare hub.

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.

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

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.

Reviewed by

Kenny Damian

Co-founder & Head of GTM, Frontal

Verified
24 Oct 2026
Sources
2 vendor documents