Menu
Bulk Search Records by Criteria, Word, Email, or Phone
Bulk Search Records by Criteria, Word, Email, or Phone
/{module}/bulk/searchUse it in a workflow
- Add a step and choose the Zoho CRM connector.
- Pick the Bulk Search Records by Criteria, Word, Email, or Phone action (under Search).
- Fill in the fields below, then reference the result from later steps as
{{bulkSearchRecordsByCriteriaWordEmailOrPhone.response.data}}.
Request
Path parameters
modulestringrequiredSpecify the API name of the module to search within. Refer to [Get Modules](https://www.zoho.com/crm/developer/docs/api/v8/modules-api.html) to retrieve a list of available modules.
Query parameters
approval_statestringSpecify the approval state to filter records by. The search returns only records in the specified approval state. Possible values: **approval_process_pending**, **webform_invalid**, **review_process_pending**, **webform_invalid_approval**, **zia_vision_validation**, **review_process_rejected**, **webform_unapproved**, **email_parser_waiting**, **approved**, **merge_pending**, **email_parser_rejected**, **zia_vision_rejected**, **zia_vision_pending**, **approval_process_rejected**, **webform_double_optin**.
One ofapproval_process_pendingwebform_invalidreview_process_pendingwebform_invalid_approvalzia_vision_validationreview_process_rejectedwebform_unapprovedemail_parser_waitingapprovedmerge_pendingemail_parser_rejectedzia_vision_rejectedzia_vision_pendingapproval_process_rejectedwebform_double_optin
criteriastringSpecify a criteria string to filter records using field-specific conditions and operators. Performs a search using the following format: `(({field_API_name}:{operator}:{value}) and/or ({field_API_name}:{operator}:{value}))` Replace `{field_API_name}`, `{operator}`, and `{value}` with the appropriate field API name, condition, and value. - You can search using a maximum of 10 criteria, with the same or different fields. - The only operator supported for encrypted fields is `equals`. When using the `equals` operator in the Search API, it behaves like `contains`, retrieving records that include the specified value. For a single condition, if the condition is: `(Company:equals:ABC)` the response includes records with `ABC` as well as `ABC Inc.` in the `Company` field. For multiple conditions, `equals` continues to behave like `contains`. **For example:** `((Company:equals:ABC) and (First_Name:starts_with:M))` This retrieves records where: - `First_Name` starts with `M` - `Company` contains `ABC` (for example, `ABC` or `ABC Inc.`) ** Note**: This behavior does not apply to picklist fields. The `in` operator checks whether a field value matches any value in a given list. **For example:** `(Full_Name:in:Patricia,Boyle,Kate)` This retrieves records where the `Full_Name` is `Patricia`, `Boyle`, or `Kate`. When a single-line field value contains characters such as: `{ } [ ] ^ : - / ! ? * _ @` or spaces, the Search API may return records with similar-looking values, even when the characters are not an exact match. For example: - Record A: `sales-team@zoho.com` - Record B: `sales_team@zoho.com` A search using: `equals:sales-team@zoho.com` may return both records. **Escaping Special Characters** When using parentheses `(` `)`, commas `,`, or a backslash `\` as the last character in a search value: 1. Escape special characters using a backslash (`\`). 2. Encode the value before making the API request. 3. Select the value of the criteria, right-click the value, and choose the `EncodeURIComponent` option. **Example 1: Escaping Parentheses and Commas** Search term: `((Last_Name:equals:Burns,B) and (First_Name:starts_with:M))` Escape the comma: `((Last_Name:equals:Burns\,B) and (First_Name:starts_with:M))` Encode the value: `((Last_Name:equals:Burns%5C%2CB) and (First_Name:starts_with:M))` **Example 2: Escaping a Backslash at the End** Search term: `(Last_Name:equals:K\)` Escape the backslash: `(Last_Name:equals:K\\)` Encode the value: `(Last_Name:equals:K%5C%5C)` **Supported Data Types** - `picklist` - `owner_lookup` - `user_lookup` - `lookup` - `phone` - `email` - `date` - `datetime` - `text` - `textarea` - `integer` - `currency` - `decimal` - `multiselectpicklist` - `bigint` - `percent` - `formula` - `website` - `boolean` - `double` **Supported Operators** - `equals` - `starts_with` - `in` - `not_equal` - `greater_equal` - `greater_than` - `less_equal` - `less_than` - `between` Refer to the following note for operator support by field type. * **Date, DateTime:** `equals`, `not_equal`, `greater_equal`, `greater_than`, `less_equal`, `less_than`, `between`, `in` * **Integer, Currency, Decimal:** `equals`, `not_equal`, `greater_equal`, `greater_than`, `less_equal`, `less_than`, `between`, `in` * **Boolean:** `equals`, `not_equal` * **textarea:** `equals`, `not_equal`, `starts_with` * **Lookup (user/owner):** `equals`, `not_equal`, `in` * **Picklist, Autonumber:** `equals`, `not_equal`, `in` * **Text, Email, Phone, Website:** `equals`, `not_equal`, `starts_with`, `in` * **multiselectpicklist:** `equals`, `not_equal`, `in`, `starts_with` * **bigint:** `equals`, `not_equal`, `greater_than`, `greater_equal`, `less_than`, `less_equal`, `between`, `in` * **percent:** `equals`, `not_equal`, `greater_than`, `greater_equal`, `less_than`, `less_equal`, `between`, `in` * **formula:** Operators depend on the formula return type. Check the corresponding data type's supported operators.
convertedstringSpecify whether to filter records by their conversion status. Applicable only for the Leads module. Possible values: **true** - Returns only converted leads. **false** - Returns only unconverted leads. **both** - Returns all leads regardless of conversion status. Defaults to **false**.
One oftruefalsebothDefault "false"
wordstringSpecify the word or phrase to search for across all searchable text fields in the module. The value must be at least two characters long. Performs a global search with minimum 2 characters required. This is the broadest search method but may be slower than specific field searches. *Mandatory if criteria, email, and phone are not present.*
emailstring (string)Specify the email address to search for across all email-type fields in the module. Partial matches are supported and searches multiple email fields simultaneously. *Mandatory if criteria, phone, and word are not present.*
phonestringSpecify the phone number to search for across all phone-type fields in the module. The value must be at least three characters long and may include digits, spaces, hyphens, parentheses, and the plus sign. Supports various phone number formats including international, national, and partial numbers. *Mandatory if criteria, email, and word are not present.*
fieldsstringSpecify a comma-separated list of field API names to include in the response. If omitted, the response includes all fields accessible to the current user.
pageinteger (int32)Specify the page number to retrieve for paginated results. The minimum value is 1. Defaults to 1.
Default 1
per_pageinteger (int32)Specify the number of records to return per page. The minimum value is 1, the maximum is 200, and the default is 200.
Default 200
sort_bystringSpecify the API name of the field to sort the search results by.
Default "id"
sort_orderstringSpecify the direction in which to sort the results. Defaults to **desc**. Possible values: **asc** - Ascending order (A-Z, 1-9). **desc** - Descending order (Z-A, 9-1).
One ofascdescDefault "desc"
typestringSpecify the user type to filter the search results by. Possible values: **ActiveAndDeactive**, **CurrentUser**, **DeletedUsers**, **ParentRoleUsers**, **ChildRoleUsers**, **DeactiveUsers**, **NotConfirmedUsers**, **ConfirmedUsers**, **ActiveUsers**, **AdminUsers**, **ActiveConfirmedAdmins**, **ActiveConfirmedUsers**, **DeveloperUsers**, **SubordinateRoleUsers**, **AllUsers**, **AllActiveUsers**. **Note** - Only one of the mandatory parameters (`criteria`, `email`, `phone`, or `word`) can be used in a single request. - If multiple parameters are provided, the API processes them in the following priority order: 1. `criteria` 2. `email` 3. `phone` 4. `word` - Only the highest-priority parameter in the request is processed. - The `page` and `per_page` parameters help retrieve records based on their position in Zoho CRM. - A single API call can fetch a maximum of 200 records. - To retrieve more records, adjust the `page` and `per_page` values. Example: To fetch 400 records: - First API call: `page=1&per_page=200` -> Fetches records 1-200 - Second API call: `page=2&per_page=200` -> Fetches records 201-400 By making two API calls, all 400 records can be retrieved. - The Search API allows you to search for and retrieve a maximum of 2,000 records. If the search exceeds 2,000 records, the API returns a `LIMIT_REACHED` error. - Values of fields containing sensitive health data are retrieved only when the **Restrict Data Access through API** option in the compliance settings is disabled. If the option is enabled, the field value is returned as `null`. Refer to [HIPAA compliance documentation](https://www.zoho.com/crm/developer/docs/api/v8/hipaa-compliance.html) for more details. - When you create or edit a record and search for it immediately, you may receive a `204 NO CONTENT` response due to indexing delays. To fetch records without delay, use the [Query API](https://www.zoho.com/crm/developer/docs/api/v8/Get-Records-through-COQL-Query.html). - The `in` operator supports up to 100 values. - The `full_name` field contains the concatenated values of the `First Name` and `Last Name` fields. - `full_name` is a read-only field available only in the `Leads`, `Contacts`, and `Users` modules. To retrieve subform records that match your search criteria, use the API name of the corresponding subform module. To retrieve multi-select lookup (MxN) records that match your search criteria, use the API name of the corresponding linking module.
One ofActiveAndDeactiveCurrentUserDeletedUsersParentRoleUsersChildRoleUsersDeactiveUsersNotConfirmedUsersConfirmedUsersActiveUsersAdminUsersActiveConfirmedAdminsActiveConfirmedUsersDeveloperUsersSubordinateRoleUsersAllUsersAllActiveUsers
Response
Returns 200 with an object. Read it in later steps with {{bulkSearchRecordsByCriteriaWordEmailOrPhone.response.data.<field>}}.
dataarray<object>Array of records matching the search criteria
idstringrequiredUnique identifier of the record
Ownerobject3 fieldsOwner information of the record
Created_Timestring (date-time)Timestamp when the record was created
Modified_Timestring (date-time)Timestamp when the record was last modified
Created_Byobject3 fieldsUser who created the record
Modified_Byobject3 fieldsUser who last modified the record
infoobjectPagination and response metadata
per_pageinteger (int32)Number of records per page
countinteger (int32)Number of records in current response
pageinteger (int32)Current page number
more_recordsbooleanIndicates if more records are available
sort_bystringField used for sorting the records
sort_orderstringOrder of sorting the records
One ofascdesc
{
"data": [
{
"id": "string",
"Owner": {
"name": "string",
"id": "string",
"email": "name@example.com"
},
"Created_Time": "2025-01-01T00:00:00Z",
"Modified_Time": "2025-01-01T00:00:00Z",
"Created_By": {
"id": "string",
"name": "string",
"email": "name@example.com"
},
"Modified_By": {
"name": "string",
"id": "string",
"email": "name@example.com"
}
}
],
"info": {
"per_page": 0,
"count": 0,
"page": 0,
"more_records": false,
"sort_by": "string",
"sort_order": "asc"
}
}
Need more? See the Zoho CRM guide for connection setup and behaviour shared by every action.