Filter Catalog

Complete catalog of available filters and endpoints for browsing filter options.

Geographic

SlugTypeDescription
multi_select--countrymulti_selectCountry of residence
multi_select--country_of_ipmulti_selectCountry from IP geolocation
multi_select--statemulti_selectState or province
multi_select--citymulti_selectCity

Demographic

SlugTypeDescription
integer--ageintegerAge range ($gte / $lte, 18-99)
single_select--sexsingle_selectSex
multi_select--gendermulti_selectGender identity
multi_select--languagemulti_selectPrimary language
multi_select--household_incomemulti_selectHousehold income bracket
multi_select--level_of_educationmulti_selectHighest education level
multi_select--marital_statusmulti_selectMarital status
multi_select--childrenmulti_selectChildren by age group
single_select--home_ownersingle_selectHomeownership status

Professional

SlugTypeDescription
multi_select--job_functionmulti_selectJob function / role
multi_select--industrymulti_selectIndustry
multi_select--senioritymulti_selectSeniority level
multi_select--company_sizemulti_selectCompany size by headcount
multi_select--work_settingmulti_selectRemote, hybrid, or in-office
multi_select--employment_statusmulti_selectEmployment status

Participation History

SlugTypeDescription
reference--has_taken_studyreferenceHas completed specific study(s)
reference--has_not_taken_studyreferenceHas NOT completed specific study(s)

Endpoints

Get Filter Catalog

Returns all available filters with their types, operators, and option metadata.

GET /v2/filters

Response

{
  "data": [
    {
      "slug": "integer--age",
      "name": "Age",
      "type": "integer",
      "category": "demographic",
      "operators": ["$gte", "$lte"],
      "min": 18,
      "max": 99
    },
    {
      "slug": "multi_select--country",
      "name": "Country of Residence",
      "type": "multi_select",
      "category": "geographic",
      "operators": ["$eq", "$in", "$nin"],
      "options_url": "/api/external/v2/filters/multi_select--country/options"
    }
  ]
}

The full catalog is returned. The example above is truncated for brevity.

  • min / max -- only present on integer type filters. Defines the valid range for $gte and $lte operators.
  • options_url -- only present on single_select and multi_select filters. Fetch to get enumerable values.

Get Filter Options

Returns available values for a specific filter.

GET /v2/filters/{filter_slug}/options

Query Parameters

ParamTypeDefaultDescription
searchstring--Search options by name
pageinteger1Page number
per_pageinteger50Items per page (max 100)
country_idstring--ISO 3166-1 alpha-2 country code. Required for state and city filters.
state_idstring--State ISO code (e.g. CA). Narrows city results to a single state.

Cascading Geographic Filters

State and city filters require parent context via query parameters:

  • State options (multi_select--state): pass country_id to get states for that country. Returns empty without it.
  • City options (multi_select--city): pass country_id (required) and optionally state_id to narrow results. Returns empty without country_id.

Geographic IDs encode their parent hierarchy so each value is unambiguous:

  • State IDs: {country}-{state} (e.g. US-CA for California)
  • City IDs: {country}-{state}-{city} (e.g. US-CA-Los Angeles)

The state_id parameter accepts both bare ISO codes (CA) and composite state IDs (US-CA), so you can feed a state option ID directly into the city endpoint.

GET /v2/filters/multi_select--state/options?country_id=US
GET /v2/filters/multi_select--city/options?country_id=US&state_id=US-CA

Example: State Options Response

{
  "data": [
    { "id": "US-CA", "name": "California" },
    { "id": "US-TX", "name": "Texas" }
  ],
  "meta": { "total": 51, "page": 1, "per_page": 50 }
}

Example: City Options Response

{
  "data": [
    { "id": "US-CA-Los Angeles", "name": "Los Angeles" },
    { "id": "US-CA-San Francisco", "name": "San Francisco" }
  ],
  "meta": { "total": 1200, "page": 1, "per_page": 50 }
}

Applying Hierarchical Filters

Use composite IDs when setting filters on an opportunity:

{
  "filters": [
    { "multi_select--country": { "$in": ["US", "BR"] } },
    { "multi_select--state": { "$in": ["US-CA", "BR-SP"] } },
    {
      "multi_select--city": { "$in": ["US-CA-Los Angeles", "BR-SP-São Paulo"] }
    }
  ]
}