Read and Search CRM Records
Pull contact, company, lead, and deal data from HubSpot, Pipedrive, Zoho CRM, LeadConnector, Instantly, and Reply.io without writing back to any system.
Before you begin
Connect each integration before running these actions:
- HubSpot: Go to Settings > Integrations > HubSpot and paste your Private App access token. The token needs CRM scopes for contacts, companies, deals, and associations.
- Pipedrive: Go to Settings > Integrations > Pipedrive and paste your API key. Find it in Pipedrive under Personal preferences > API.
- Zoho CRM: Go to Settings > Integrations > Zoho CRM and complete the OAuth connection. Zoho uses OAuth, not a static API key.
- LeadConnector: Go to Settings > Integrations > LeadConnector and paste your API key.
- Instantly: Go to Settings > Integrations > Instantly and paste your Instantly API key from your Instantly account settings.
- Reply.io: Go to Settings > Integrations > Reply.io and paste your API key from your Reply.io account settings.
All actions in this article cost 0 credits per row.
Search Contacts (HubSpot)
Filter your HubSpot contacts by any contact property using a comparison operator.
| Integration | HubSpot |
| Credits | 0 per row |
| Returns | Multiple results |
| Inputs: |
- Filter Property Name (Required): Internal HubSpot property name, e.g.,
email,jobtitle,lifecyclestage - Filter Operator (Required): EQ, NEQ, LT, LTE, GT, GTE, BETWEEN, IN, NOT_IN, HAS_PROPERTY, NOT_HAS_PROPERTY, CONTAINS_TOKEN, NOT_CONTAINS_TOKEN. Default: EQ
- Filter Value (Required): Value to compare against
- Filter High Value (Required): Upper bound when operator is BETWEEN
- Query String (Required): Free-text search across properties
- Sort Property Name (Required): Property name to sort results by
- Sort Direction (Required): ASCENDING or DESCENDING
- Limit (Required): Records per page. Default: 10
- After Cursor (Required): Pagination token from previous run
Outputs: id, email, firstname, lastname, phone, jobtitle, company, lifecyclestage, hubspot_owner_id, createdAt, updatedAt
Use case:
- Agency: Pull all contacts with
lifecyclestageequal tocustomerfrom a client's HubSpot to build a reference list before a cross-sell campaign.
Inputs:
- Contact ID (Required): HubSpot internal contact ID
Outputs: id, firstname / lastname, email, phone / mobilephone, jobtitle, company, lifecyclestage, city / state / zip / country, website, annualrevenue, numberofemployees, archived, created_at / updated_at
Use case:
- Agency: Fetch a contact record after a form fill to verify all fields are populated before syncing to an outreach tool.
Inputs:
- Company ID (Required): Unique HubSpot company ID
Outputs: company_id, name, domain, hs_object_id, createdate, hs_lastmodifieddate, url, archived, created_at / updated_at
Use case:
- Agency: Pull company domain and name to cross-reference against a prospect list before uploading contacts to a sequence.
Inputs:
- Limit (Required): Records per page. Default: 10
- After (Required): Cursor for next page
- Name (Required): Filter by company name
- Domain (Required): Filter by company domain
- Website (Required): Filter by company website
- Phone (Required): Filter by phone number
- Industry (Required): Filter by industry
- City (Required): Filter by city
- State (Required): Filter by state
- Country (Required): Filter by country
- Description (Required): Filter by company description
Outputs: company_id, company_name, company_domain, industry, created_date / created_at, next_page_cursor
Use case:
- Agency: Audit all companies in a client's HubSpot within a specific industry to find accounts with no recent activity.
Inputs:
- Limit (Required): Records per page. Default: 10
- After Cursor (Required): Pagination token from previous run
- Include Archived (Required): Set to true to include archived leads. Default: false
- Properties (Required): Comma-separated list of HubSpot properties to return
- Associations (Required): Comma-separated list of object types to return associated IDs for
- Properties with History (Required): Properties to return along with their full value history
Outputs: lead_ids, lead_created_at, lead_updated_at, lead_archived, lead_archived_at, lead_properties, lead_associations, lead_properties_with_history, paging_next_after, paging_next_link
Use case:
- Agency: Pull all active leads for a client and compare against the leads created this week to calculate net-new lead volume.
Inputs:
- Search Query (Required): Free-text string. Up to 3000 characters
- Limit (Required): Records per page. Default: 100, max: 200
Outputs: deal_id, dealname, amount, dealstage, pipeline, closedate, dealtype, description, hubspot_owner_id, total, created_at / updated_at, next_after
Use case:
- Agency: Search for deals tied to a specific company name to build a quick pipeline overview for a client review.
Inputs:
- Object ID (Required): The ID of the record whose associations to look up
- Association Type (Required): The relationship to traverse. Common types: Contact to Company (1), Company to Contact (2), Deal to Contact (3), Contact to Deal (4), Deal to Company (5), Company to Deal (6), Contact to Engagement (9), Contact to Ticket (15), Ticket to Contact (16), Deal to Line Item (19). Full list includes 24 types.
- Limit (Required): Default: 100
- Offset (Required): Pagination offset
Outputs: associated_id, has_more, next_offset
Use case:
- Agency: For each contact in a client's CRM, retrieve their associated company IDs to verify that company relationships are properly linked rather than just filled in as text.
Inputs:
- Person ID (Required): Numeric Pipedrive person ID
Outputs: id, name / first_name / last_name, primary_email, organization_name, org_id / company_id, owner_name, last_activity_date, image_url, created_at / updated_at
Use case:
- Agency: Look up a person record before updating it to confirm you have the right record and its current owner.
Inputs:
- Limit (Required): Max: 500. Default: 100
- Cursor (Required): Pagination token for next page
Outputs: field_name, field_code, field_type, is_custom_field, show_in_add_deal_dialog
Use case:
- Agency: Audit a client's Pipedrive setup to retrieve all field codes before building a data migration or import template.
Inputs:
- Person ID (Required): Numeric Pipedrive person ID
- Limit (Required): Max: 500. Default: 100
- Cursor (Required): Pagination token for next page
Outputs: id, title, value / currency, status, stage_id / pipeline_id, owner_id, add_time / update_time, probability, won_time / lost_time, lost_reason, acv / arr / mrr, is_archived, next_cursor
Use case:
- Agency: For each contact on a client's outreach list, check existing deal history before pitching to avoid interrupting an active negotiation.
Inputs:
- Search Term (Required): Min 2 characters
- Fields to Search (Required): Comma-separated:
custom_fields,notes,title. Searches all by default - Exact Match (Required): true or false
- Person ID (Required): Filter by associated person
- Organization ID (Required): Filter by associated organization
- Status (Required): open, won, or lost
- Include Fields (Required): Additional fields to include, e.g.,
deal.cc_email - Limit (Required): Max: 500. Default: 100
- Cursor (Required): Pagination token
Outputs: id, title, value / currency, status, result_score, stage_id / stage_name, pipeline_id, person_id / person_name, organization_id / organization_name / organization_address, owner_id, is_archived
Use case:
- Agency: Search all won deals for a client vertical by keyword to assemble a case study reference list.
Inputs:
- Organization ID (Required): Numeric Pipedrive organization ID
- Include Fields (Required): Additional fields to return. Default:
open_deals_count
Outputs: id / name, address, annual_revenue, employee_count, industry, linkedin, website, open_deals_count, owner_id, visible_to, add_time / update_time, is_deleted, custom_fields
Use case:
- Agency: Pull
open_deals_countfor all accounts on a client's target list to prioritize accounts already in pipeline.
Inputs:
- Lead ID (Required): Unique 19-digit Zoho Record ID
Outputs: lead_id, full_name / first_name / last_name, email / secondary_email, phone / mobile, company / designation, website, lead_source, lead_status, industry, no_of_employees / annual_revenue, city / state / zip_code / country, email_opt_out, is_converted, converted_account / converted_contact / converted_deal, converted_date_time, owner_name, created_time / modified_time / last_activity_time, record_status / is_locked
Use case:
- Agency: Fetch a lead record immediately after a form submission to verify source and status before adding to a campaign.
Inputs:
- Limit / Per Page (Required): Must be a multiple of 25 (e.g., 25, 50, 75). Default: 25
- Sort By Field (Required): id, Created_Time, or Modified_Time
- Sort Order (Required): asc or desc
Outputs: lead_id, first_name / last_name, company / title, email / secondary_email, phone / mobile, website, lead_source / lead_status, industry, no_of_employees / annual_revenue, city / state / zip / country, email_opt_out / is_converted_flag, owner_id / owner_name, created_time / modified_time, total_count
Use case:
- Agency: Pull all leads sorted by creation date to reconcile incoming form leads against a client's paid ad campaign attribution.
Inputs:
- Deal ID (Required): Unique 19-digit Zoho Record ID
Outputs: deal_id, deal_name, account_id / account_name, contact_id / contact_name, stage, amount / expected_revenue, probability, closing_date, type / lead_source / campaign_source, next_step, owner_name / owner_email, created_time / modified_time, stage_modified_time, last_activity_time, overall_sales_duration / sales_cycle_duration, reason_for_loss, record_status / is_locked
Use case:
- Agency: Look up deal stage and closing date for each account in a review list to build a pipeline report for a client.
Inputs:
- Contact ID (Required): LeadConnector contact ID
Outputs: contact_id / location_id, first_name / last_name / full_name_lower_case, email / email_lower_case / additional_email, phone / additional_phone, city / state / country / postal_code, website, source / company_name, timezone, gender / date_of_birth, tag, custom_field_id / custom_field_value, dnd / dnd_call_status, created_by_source / created_by_channel, date_added / date_updated
Use case:
- Agency: Pull a contact's DND status and tags before triggering a call or message sequence to avoid contacting opted-out leads.
Inputs:
- Limit (Required): 1 to 100 per page
- Starting After (Required): Cursor for next page
- Search (Required): Filter by first name, last name, or email
- Filter (Required): Status-based filter, e.g.,
FILTER_VAL_CONTACTED,FILTER_LEAD_INTERESTED - Campaign (Required): Filter by campaign ID
- List ID (Required): Filter by list
- In Campaign (Required): Only leads enrolled in a campaign
- In List (Required): Only leads in a list
- Is Website Visitor (Required): Only website visitors
- Distinct Contacts (Required): Deduplicate by contact
- Enrichment Status (Required): 1 = Enrichment success, 11 = Pending, -1 = N/A
- Smart View ID (Required): Filter by saved smart view
- IDs (Required): Filter by specific lead IDs
- Excluded IDs (Required): Exclude specific lead IDs
- Organization User IDs (Required): Filter by user within the organization
Outputs: lead_id, lead_email, lead_first_name / lead_last_name, company_name / company_domain, phone / website, email_click_count / email_open_count / email_reply_count, esp_code, lt_interest_status, status, organization_id, timestamp_created / timestamp_updated, timestamp_last_interest_change, next_starting_after
Use case:
- Agency: Pull all leads with
FILTER_LEAD_INTERESTEDfrom a client campaign to send their names and emails to the sales team for manual follow-up.
Inputs:
- Contact ID (Required): Numeric Reply.io contact ID
Outputs: id, email, firstName / lastName, company, title, phone / phoneStatus, city / state / country, timeZoneId, linkedInProfile, salesNavigatorUrl / linkedInRecruiterUrl, addingDate, companySize, industry, accountId
Use case:
- Agency: Retrieve a contact's timezone before scheduling follow-up calls to ensure outreach happens at the right local time.
Inputs:
- Email Address (Required): The contact's email address
Outputs: id, email, firstName / lastName, company, title, phone / phoneStatus, city / state / country, timeZoneId, linkedInProfile, salesNavigatorUrl / linkedInRecruiterUrl, addingDate, companySize, industry, accountId
Use case:
- Agency: Check whether an email address already exists in Reply.io before adding it to avoid duplicate contact records across campaigns.
Troubleshooting
HubSpot Search Contacts returns no results.
The Filter Property Name field is case-sensitive and must match the internal HubSpot property key exactly. Use email, not Email. Find the correct internal name in HubSpot under Settings > Properties.
Zoho CRM returns a 401 Unauthorized error. Zoho OAuth tokens expire. Reconnect the Zoho CRM integration under Settings > Integrations > Zoho CRM to generate a fresh access token.
Get CRM Associations returns an empty list. The object has no associations of the selected type. Confirm the relationship exists in HubSpot before running. Also check that you selected the correct Association Type. Contact to Company (1) and Company to Contact (2) are separate types.
List Leads (Zoho CRM) returns a validation error. The Limit field must be a multiple of 25. Values like 30 or 100 are not valid. Use 25, 50, or 75.
Pipedrive Search Deals returns zero results. Search Term requires at least 2 characters. Single-character terms are not supported. Use at least 2 characters, or enable Exact Match for a precise single-term lookup.
Reply.io Get Contact by Email returns empty. The contact does not exist in Reply.io under that email address. Confirm the email is in your Reply.io contacts list. The action returns no result rather than an error when there is no match.
List Leads (Instantly) returns fewer records than expected.
The distinct_contacts flag deduplicates by email when set to true. If a contact appears in multiple campaigns, it returns only once. Set it to false to see all instances.