Kaizen #60 - Get Records, Search Records, Query and Bulk Read APIs

Kaizen #60 - Get Records, Search Records, Query and Bulk Read APIs

Hi everyone.. Welcome back!

In this post, we will discuss when to use Get Records, Search Records, Query, and Bulk Read APIs to fetch records. Please note that the information in the article holds true for version 3 of Zoho CRM APIs.

Get Records API

The GET Records API allows you to fetch all the records from a module in your CRM account. 

When should you use GET Records API?

       Use this API to fetch a specific set of records whose IDs you already know, or to fetch all the records from a module without any filters, or using the pre-defined filters.
      For instance, when you want to render a mobile/web UI to show the list of records in a module or a specific custom view, you can make use of Get Records API.

Pagination

  • You can retrieve up to 200 records using this API in a single call.
  • To fetch more than 200 records, you must use pagination and make further API requests with the page parameter.
  • For more than 2000 and up to a maximum of 100,000 records, use the page_token parameter in the request. The value for this parameter is available from the key "next_page_token" in the response of the first Get Records call. 
  • You cannot use the page_token parameter with the page parameter.

Points to remember

  • You should specify the field API names to fetch the records.
  • You can fetch up to 50 fields using this API.
  • You can sort the records by id, Created_Time and Modified_Time fields.
  • Each Get Records API call consumes one API credit.

Examples

1. To fetch the records from 1801-2000 in the Leads module with the Last_Name and Email fields

The info JSON object in the response contains the next_page_token to retrieve the next set of records. 

2. To fetch after 2000 records
 [GET] "https://www.zohoapis.com/crm/v3/Leads&fields=Last_Name,Email&per_page=200 
&page_token="db8d4276axxxxxxx713748a4e""

Search Records API

Search Records API lets you search for records in a module based on a criteria that you define. You can search for records with a specific word in the text fields, or by email or phone fields across the specified module. You can also search for a variety of other fields like currency, Date, DateTime, picklists etc.

When should you use Search Records API?

      Use this API when you want to search for a specific text, phone or email in the records of a module, or when you want to do a module-level word search. Search API is the go-to API  when you know the details like email, phone or a specific text, but not the individual IDs of the records.
      For example, when you want to render a search box in your web/mobile UI, and do a module-level search for the word, use Search Records API. 

Pagination

  • You can search for up to 200 records in one API request.
  • To fetch more than 200 and up to 2000 records, use the page parameter.

Points to remember

  • Your search criteria can have  equalsstarts_withinequalsnot_equalgreater_equalgreater_thanless_equalless_thanstarts_with, or between conditions.
  • There will be a delay in accessing recently inserted or updated records using this API due to data indexing.
  • Due to the indexing delay, it is advised not to use Search API to check for record duplication while creating a new record. 
  • Each Search Records API call consumes one API credit

Examples

1. To search for all the Leads with the word Zoho in the record

2. To fetch records from the Leads module whose Last_Name is 'Thomas' and First_Name starts with 'M'

Query API

Query API lets you query for records based on queries using the CRM Object Query Language(COQL). COQL is based on the SQL query syntax, and supports the SELECT query to fetch records. Using this API, you can query for data across different modules that are linked using lookup fields.  This API allows you to search for a variety of fields like picklist, Date, DateTime, Lookup, Number, Currency, Boolean, or string fields, and sort the records on the basis of any field.

When should you use Query API?

      To query for a module's data and its lookup related data using various comparators, or when you want to query for records that fall into a custom view without actually creating one.
      For instance, when you want to filter all the products in a specific price range, with 4 stars and up rating, use Query API.
      You can also use Query API to query for records from cross module (linked via lookup field). Eg: Filtering deals based on the account's location and industry type. In this example, Deals is the primary module linked with Accounts module via the lookup field 'Accounts_Name'.

Pagination

  • You can retrieve 200 records in one API call using this API.
  • To fetch more than 200 records and upto 10000 records, use the OFFSET clause. 

Points to remember

  • You can use DB comparators such as =, >, <, >=, <=, is null, is not null, between, in, not in, like, and not like in your search query.
  • You can fetch a maximum of 10000 records using this API.
  • You can use Query API to check for record duplication while creating a new record in your web/mobile UI apps.
  • Each Query API call consumes one API credit.

Examples

1. Cross Module Filtering : To filter deals based on its corresponding account's location and industry type.

"select_query": "select Deal_Name, Stage, Probability, Type, Account_Name from Deals where ((Account_Name.Location = 'Texas') AND (Account_Name.Industry = 'Military'))"

2. Consider the following custom view.

You can fetch the records in the custom view using the following SELECT query, without actually creating the custom view.
 { "select_query": "select Last_Name, Owner.last_name from Leads where ((Industry  = 'ERP') and (Owner = '4876876000000327001')) OR (Rating =    'Acquired')" }

For more examples, refer to our Get Records through COQL page
TIP : If you want to fetch all the records in a module using COQL Query API, you can still use the COQL query to do it. For example, the below example will fetch all the records in the Leads module.
   {  "select_query": "select Last_Name, Owner.last_name from Leads where ((Industry  = 'ERP') OR (Industry  != 'ERP'))"}

Bulk Read API

Bulk Read API lets you export data in bulk from a module. Using this API, you can export records based on a query, or export all the records in a module with or without filters. The main advantage of Bulk read API is in the huge number of records it can retrieve in one API call. While you can fetch 200 records per API call for GET Records API, Search Records API and Query API, you can export 200,000 records per API call using the Bulk read API. 

When should you use Bulk read API?

When you want to schedule a job to export huge volume of CRM data.
For instance, when you want to export the list of all the records from a  Zoho CRM  module to sync with your local ERP system's data store, use Bulk read API. 

Points to remember

  • Bulk read is an asynchronous API.
  • The result of the bulk read job will be available as a downloadable CSV/ICS file.
  • Each Bulk read API call consumes 50 API credits.
  • To export more than 200,000 records, use the page key in the request body. Setting page to '2' exports data starting from 200,001.

Sample Scenario

Let us now consider the case where you want to fetch (a)2000, (b)5000, (c)10000 and (d)15000 records from a module, and see which API is best-suited for each case.

 Number of records
 Get Records API
Search Records API
Query API
Bulk read API
2000
  • 10 API calls
  • 10 API credits
  • Use pagination
  • 10 API calls
  • 10 API credits
  • Use pagination
  • 10 API calls
  • 10 API credits
  • Use OFFSET
  • 1 API call
  • 50 API credits
5000
  • 25 API calls
  • 25 API credits
  • use pagination (up to 2000 records) & page_token (after 2000 records)

Not possible to fetch more than 2000 records
  • 25 API calls
  • 25 API credits
  • Use OFFSET 
  • 1 API call
  • 50 API credits
10000
  • 50 API calls
  • 50 API credits
  • use pagination (up to 2000 records) & page_token (after 2000 records)

Not possible to fetch more than 2000 records
  • 50 API calls
  • 50 API credits
  • Use OFFSET
  • 1 API call
  • 50 API credits

15000
  • 75 API calls
  • 75 API credits
  • use pagination (up to 2000 records) & page_token (after 2000 records)

Not possible to fetch more than 2000 records

Not possible to fetch more than 10000 records
  • 1 API call
  • 50 API credits

To sum up, for up to 2000 records, the Get Records API, Search Records API, and Query API all use the same API credits. However, Query API has the edge over the other two because it provides you with greater flexibility to tweak your criteria, thanks to all the comparators and logical operations it supports.  If you intend to fetch 10,000 or more records asynchronously, the Bulk Read API is preferable in terms of API credits consumed. For synchronously fetching more than 10,000 records, use the Get Records API.


Feature
Get Records API
Search Records API
Query API
Bulk Read API
Maximum number of records per API call
 200
 200
 200
 200,000
 For Events - 20,000
Maximum number of records that can be fetched
 100,000
 2000
 10,000
 100,000,000
Indexing Delay
 No 
 Yes
 No 
 NA
Pagination
Use page parameter to retrieve more than 200 records and page_token parameter for more than 200 recordsUse page parameter to retrieve up to 2000 recordsUse LIMIT and OFFSET to navigate and retrieve a maximum of up to 10,000 recordsUse page key in the request body to fetch more than 200,000 records. Maximum possible value for page is 500
Sorting supportLimited (id, Created_Time and Modified_Time fields )
 No
 Yes
 No
Credits per API call
 1
 3 - with CVID parameter
 1
 1
 50

We hope you found this post useful. Let us know your thoughts in the comment section or reach out to us at support@zohocrm.com

Thank You!




    • Sticky Posts

    • Kaizen #197: Frequently Asked Questions on GraphQL APIs

      🎊 Nearing 200th Kaizen Post – We want to hear from you! Do you have any questions, suggestions, or topics you would like us to cover in future posts? Your insights and suggestions help us shape future content and make this series better for everyone.
    • Kaizen #198: Using Client Script for Custom Validation in Blueprint

      Nearing 200th Kaizen Post – 1 More to the Big Two-Oh-Oh! Do you have any questions, suggestions, or topics you would like us to cover in future posts? Your insights and suggestions help us shape future content and make this series better for everyone.
    • Celebrating 200 posts of Kaizen! Share your ideas for the milestone post

      Hello Developers, We launched the Kaizen series in 2019 to share helpful content to support your Zoho CRM development journey. Staying true to its spirit—Kaizen Series: Continuous Improvement for Developer Experience—we've shared everything from FAQs
    • Kaizen #193: Creating different fields in Zoho CRM through API

      🎊 Nearing 200th Kaizen Post – We want to hear from you! Do you have any questions, suggestions, or topics you would like us to cover in future posts? Your insights and suggestions help us shape future content and make this series better for everyone.
    • Client Script | Update - Introducing Commands in Client Script!

      Have you ever wished you could trigger Client Script from contexts other than just the supported pages and events? Have you ever wanted to leverage the advantage of Client Script at your finger tip? Discover the power of Client Script - Commands! Commands
    • Recent Topics

    • Estimates with options and sub-totals

      Hi It seems it would be great to be able to show multiple options in an estimate. For instance I have a core product to which I can add options, and maybe sub-options... It would be great to have subtotals and isolate the core from the not compulsory items. Thanks
    • Optional Items Estimate

      How do you handle optional items within an estimate? In our case we have only options to choose with. (Like your software pricing, ...standard, professional, enterprise) How can we disable the total price? Working with Qty = 0 is unprofessional....
    • Important Update : Zendesk Sell announced End of Life

      Hello Zendesk users, Zendesk has officially announced that Zendesk Sell will reach its End of Life (EOL) on August 31, 2027 (Learn more). In line with this deprecation, Zoho Analytics will retire its native Zendesk Sell connector effective October 1,
    • Zoho Sheets

      Hi, I am trying to transition into Zoho sheets, I have attached the issues encountered. Server issues, file trying to upload for more than 30 mins, even once uploaded my data aren't loaded. Simple calculations are not working I have attached the sample.
    • Zoho CRM + Zoho FSM : alignez vos équipes commerciales et techniques

      La vente est finalisée, mais le parcours client ne fait que commencer ! Dans les entreprises orientées service, conclure une vente représente seulement la première étape. Ce qui suit — installation, réparation ou maintenance régulière — influence grandement
    • Top Bar Shifting issue still not fixed yet

      I mentioned in a previous ticket that on Android, the top bar shifts up when you view collections or when you're in the settings. That issue still hasn't been fixed yet. I don't wanna have to reinstall the app as I've noticed for some reason, reinstalling
    • Power of Automation:: Automate the process of updating project status based on a specific task status.

      Hello Everyone, Today, I am pleased to showcase the capabilities of a custom function that is available in our Gallery. To explore the custom functions within the Gallery, please follow the steps below. Click Setup in the top right corner > Developer
    • ZOHO SHEETS

      Where can I access desktop version of zoho sheets? It is important to do basic work If it is available, please guide me to the same
    • Attention API Users: Upcoming Support for Renaming System Fields

      Hello all! We are excited to announce an upcoming enhancement in Zoho CRM: support for renaming system-defined fields! Current Behavior Currently, system-defined fields returned by the GET - Fields Metadata API have display_label and field_label properties
    • Billing Management: #3 Billing Unbilled Charges Periodically

      We had a smooth sail into Prorated Billing, a practice that ensures fairness when customers join, upgrade, or downgrade a service at any point during the billing cycle. But what happens when a customer requests additional limits or features during the
    • No bank feeds from First National Bank South Africa since 12 September

      I do not know how Zoho Books expects its customers to run a business like this. I have contacted Zoho books numerous times about this and the say it is solved - on email NO ONE ANSWERS THE SOUTH AFRICAN HELP LINE Come on Zoho Books, you cannot expect
    • Citation Problem

      I had an previous ticket (#116148702) on this subject. The basic problem is this; the "Fetch Details" feature works fine on the first attempt but fails on every subsequent attempt, Back in July after having submitted information electronically and was
    • Open Sans Font in Zoho Books is not Open Sans.

      Font choice in customising PDF Templates is very limited, we cannot upload custom fonts, and to make things worse, the font names are not accurate. I selected Open Sans, and thought the system was bugging, but no, Open Sans is not Open Sans. The real
    • Failing to generate Access and Refresh Token

      Hello.  I have two problems: First one when generating Access and Refresh Token I get this response:  As per the guide here : https://www.zoho.com/books/api/v3/#oauth (using server based application) I'm following all the steps. I have managed to get
    • Zeptomail 136.143.188.150 blocked by SpamCop

      Hi - it looks like this IP is being blocked, resulting in hard bounces unfortunately :( "Reason: uncategorized-bounceMessage: 5.7.1 Service unavailable; Client host [136.143.188.150] blocked using bl.spamcop.net; Blocked - see https://www.spamcop.net/bl.shtml?136.143.188.150
    • Apply transaction rules to multiple banks

      Is there any way to make transaction rules for one bank apply to other banks? It seems cumbersome to have to re-enter the same date for every account.
    • How to bulk update records with Data Enrichment by Zia

      Hi, I want to bulk update my records with Data Enrichment by Zia. How can I do this?
    • Need Guidance on SPF Flattening for Zoho Mail Configuration

      Hi everyone, I'm hoping to get some advice on optimizing my SPF record for a Zoho Mail setup. I use Zoho Mail along with several other Zoho services, and as a result, my current SPF record has grown to include multiple include mechanisms. My Cloudflare
    • How do I split a large CSV file into smaller parts for import into Zoho?

      Hi everyone, I’m trying to upload a CSV file into Zoho, but the file is very large (millions of rows), and Zoho keeps giving me errors or takes forever to process. I think the file size is too big for a single import. Manually breaking the CSV into smaller
    • Client Script Payload Size Bug

      var createParams = { "data": [{ "Name": "PS for PR 4050082000024714556", "Price_Request": { "id": "4050082000024714556" }, "Account": { "id": "4050082000021345001" }, "Deal": { "id": "4050082000023972001" }, "Owner": { "id": "4050082000007223004" }, "Approval_Status":
    • Sync Issue Between Zoho Notebook Web App on Firefox (PC) and Android App

      Hi Zoho Notebook Community, I'm facing a sync problem with Zoho Notebook. When I use the web version on Mozilla Firefox browser on my PC, I create and save new notes, and I've synced them successfully. However, these new notes aren't showing up in my
    • Messages not displayed from personal LinkedIn profile

      Hello. I connected both our company profile and my personal profile to Zoho social. I do see all messages from our company page but none from my private page. not even the profile is being added on top to to switch between company or private profile,
    • lead convert between modules

      Hello, The workflow we set up to automatically transfer leads registered via Zapier into the Patients module to the Leads module started to malfunction unexpectedly on September 25, 2025, at 11:00 AM. Under normal circumstances, all fields filled in the
    • Flow Task Limits - How to Monitor, Understand Consumption?

      So, I got an email last night saying that I've exhausted 70% of my tasks for this month, and encouraging me to buy more tasks. I started to dig into this, and I cannot for the life of me figure out where to find any useful information for understanding,
    • Cross References Do Not Update Correctly

      I am using cross references to reference Figures and current am just using the label and number, i.e. Figure #. As seen here: When I need to update the field, I use the update field button. But it will change the cross reference to no longer only including
    • Manage control over Microsoft Office 365 integrations with profile-based sync permissions

      Greetings all, Previously, all users in Zoho CRM had access to enable Microsoft integrations (Calendar, Contacts, and Tasks) in their accounts, regardless of their profile type. Users with administrator profiles can now manage profile-based permissions
    • How to Track and Manage Schedule Changes in Zoho Projects

      Keeping projects on track requires meticulous planning. However, unforeseen circumstances can cause changes to schedules, leading to delays. It becomes important to capture the reason for such changes to avoid them in the future. Zoho Projects acknowledges
    • Is there a notification API when a new note is addeding

      Trying to push to Cliq, or email notification when there's a new note added in module. How to implement this?
    • Zoho Sheet - Desktop App or Offline

      Since Zoho Docs is now available as a desktop app and offline, when is a realistic ETA for Sheet to have the same functionality?I am surprised this was not laucned at the same time as Docs.
    • Collaborate Feature doesn't work

      Hello Team. It seems that the collaborate section is broken? I can post something but it all appears in "Discussions". In there is no way how I would mark something as Draft, Approval, post or any of the other filter categories? Also if I draft a post
    • Edit Permission during and after approval?

      When a record is sent for approval Can a user request for edit permission from the approver? We don't want to give edit permissions for all the records under approval Only on a case-by-case basis How can we achieve this?
    • Zoho web and mobile application not workingn

      Both zoho forms web and mobile application aren't working. I have checked my network connections and they are fine.
    • Introducing the revamped What's New page

      Hello everyone! We're happy to announce that Zoho Campaigns' What's New page has undergone a complete revamp. We've bid the old page adieu after a long time and have introduced a new, sleeker-looking page. Without further ado, let's dive into the main
    • Prevent stripping of custom CSS when creating an email template?

      Anyone have a workaround for this? Zoho really needs to hire new designers - templates are terrible. A custom template has been created, but every time we try to use it, it strips out all the CSS from the head.  IE, we'll define the styles right in the <head> (simple example below) and everything gets stripped (initially, it saves fine, but when you browse away and come back to the template, all the custom css is removed). <style type="text/css"> .footerContent a{display:block !important;} </style>
    • Bulk Moving Images into Folders in the Library

      I can't seem to select multiple images to move into a folder in order to clean up my image library and organize it. Instead, I have to move each individual image into the folder and sometimes it takes MULTIPLE tries to get it to go in there. Am I missing
    • Latest updates in Zoho Meeting | Breakout rooms and End to end encryption

      Hello everyone, We’re excited to share a few updates for Zoho Meeting. Here's what we've been working on lately: Introducing Breakout Rooms for enhanced collaboration in your online meetings and End-to-end encryption to ensure that the data is encrypted
    • Systematic SPF alignment issues with Zoho subdomains

      Analysis Period: August 19 - September 1, 2025 PROBLEM SUMMARY Multiple Zoho services are causing systematic SPF authentication failures in DMARC reports from major email providers (Google, Microsoft, Zoho). While emails are successfully delivered due
    • Accidentally deleted a meeting recording -- can it be recovered?

      Hi, I accidentally deleted the recording for a meeting I had today. Is there a way I can recover it?
    • To Zoho customers and partners: how do you use Linked Workspaces?

      Hello, I'm exploring how we can set up and use Linked Workspaces and would like to hear from customers and partners about your use cases and experience with them. I have a Zoho ticket open, because my workspace creation fails. In the meantime, how is
    • How to access email templates using Desk API?

      Trying to send an email to the customer associated to the ticket for an after hours notification and can't find the API endpoint to grab the email template. Found an example stating it should be: "https://desk.zoho.com/api/v1/emailtemplates/" + templateID;
    • Next Page