Contact Search

Search for contacts

Recent Requests
Log in to see full request history
TimeStatusUser Agent
Retrieving recent requests…
LoadingLoading…

See the search filtering documentation for details about the query syntax. The searchable attributes and the operators each one accepts are listed in the request body below.

Contact-specific notes

  • Email addresses are searched with the key email_addresses, not emails:
    { "email_addresses": { "any": { "address": { "ends_with": "@example.com" } } } }
  • Phone numbers compare digits only, so "416-555-0123" and "4165550123" match the same number:
    { "phone_numbers": { "any": { "number": { "ends_with": "5550123" } } } }
  • Companies, opportunities and projects take a search filter for that record type, so you can match by reference or by any of its attributes:
    { "companies": { "any": { "company": { "equal": "/v1/companies/1000" } } } }
    { "companies": { "any": { "name": { "contains": "Acme" } } } }
  • Linked records (appointments, notes, tasks, groups, forms, email_messages) work the same way, using the linked record's reference:
    { "tasks": { "any": { "task": { "equal": "/v1/tasks/1000" } } } }
  • role matches the name of a role the contact has on a company, opportunity or project, e.g. { "role": { "equal": "Employee" } }.
  • birthday and anniversary take dates as YYYY-MM-DD.
  • image can only be searched with blank and not_blank. As with all attributes, the value given to blank and not_blank is ignored.
  • contact and contact_id match the contact itself, by reference or by numeric ID.
  • Numbers must be sent as JSON numbers, e.g. { "contact_id": { "greater_than": 1000 } }, not "1000".

Paging

Results are sorted by ID, lowest first, and come back 50 at a time (10 with full-records=true). Use the limit parameter for up to 250; larger values are capped at 250, and 0 or less returns 400 with {"error":"invalid_limit"}.

When there are more results, the response includes a next URL. Send the same request body to that URL to get the next page. The next URL only carries start, so add your limit and full-records parameters again.

The last page has no next. When nothing matches, the response is an empty object: {}.

Query Params
int32
≤ 250
Defaults to 50

Maximum number of results per page (max 250). Defaults to 50, or 10 when full-records is true.

boolean

Return every attribute of each result instead of the short list form.

int32

Return results whose ID is greater than or equal to this value. Use the next URL from the previous page rather than building this yourself.

Body Params
prefix
object

Example: Mr.

first_name
object

Example: John

middle_name
object

Example: Lee

last_name
object

Example: Smith

full_name
object

Example: John Lee Smith

suffix
object

Example: Jr.

alias
object

Example: Bond

nickname
object

Example: 007

tagline
object

Example: shaken not stirred

flagged
object

Example: true

birthday
object

Date as YYYY-MM-DD, e.g. 1966-03-16

anniversary
object

Date as YYYY-MM-DD

image
object

Whether the contact has an image

category
object

Category name, e.g. Client

keywords
object

Keyword names, e.g. {"any": ["Spy", "Agent"]}

extra_fields
object

Filter on extra (custom) fields. Each operator takes an object keyed by the field's default identifier (even if it has been renamed), e.g. {"equal": {"com.marketcircle.daylite/extra1": {"value": "Gold"}}}. Several operators can be combined. Text operators (starts_with, contains, …) only work on text fields and range operators (less_than, greater_than, …) only on date fields.

email_addresses
object

Email addresses. Note the key is email_addresses, not emails. Example: {"any": {"address": {"ends_with": "@example.com"}}}

urls
object

Websites. Example: {"any": {"url": {"contains": "example.com"}}}

social_profiles
object

Social profiles. Example: {"any": {"service": {"equal": "Twitter"}, "username": {"equal": "marketcircle"}}}

phone_numbers
object

Phone numbers. Example: {"any": {"number": {"ends_with": "0123"}}}

addresses
object

Postal addresses. Example: {"any": {"city": {"equal": "Toronto"}}}

companies
object

Companies the contact has a role at. The operand is a company search filter, e.g. {"any": {"company": {"equal": "/v1/companies/1000"}}} or {"any": {"name": {"contains": "Acme"}}}.

opportunities
object

Opportunities the contact has a role on. The operand is an opportunity search filter.

projects
object

Projects the contact has a role on. The operand is a project search filter.

role
object

Name of a role the contact has on a company, opportunity or project, e.g. Employee

appointments
object

Records linked to appointments. The operand is a search filter on appointments, for example {"any": {"appointment": {"equal": "/v1/appointments/1000"}}}.

notes
object

Records linked to notes. The operand is a search filter on notes, for example {"any": {"note": {"equal": "/v1/notes/1000"}}}.

tasks
object

Records linked to tasks. The operand is a search filter on tasks, for example {"any": {"task": {"equal": "/v1/tasks/1000"}}}.

groups
object

Records linked to groups. The operand is a search filter on groups, for example {"any": {"group": {"equal": "/v1/groups/1000"}}}.

forms
object

Records linked to forms. The operand is a search filter on forms, for example {"any": {"form": {"equal": "/v1/forms/1000"}}}.

email_messages
object

Records linked to emails. The operand is a search filter on emails, for example {"any": {"email_message": {"equal": "/v1/emails/1000"}}}.

contact
object

The contact itself, by reference, e.g. /v1/contacts/1000

contact_id
object

The contact's numeric ID

user
object

The user whose own contact record this is, e.g. /v1/users/1000

owner
object

Owner reference, e.g. /v1/users/1000

creator
object

Creator reference, e.g. /v1/users/1000

create_date
object

Example: {"greater_than": "2025-03-04T17:45:57Z"}

modify_date
object

Example: {"greater_than": "2025-03-04T17:45:57Z"}

Responses

Language
Credentials
Header
LoadingLoading…
Response
Click Try It! to start a request and see the response here! Or choose an example:
application/json