Advanced Search

The advanced search API queries your third parties, dossiers and documents using a criteria builder: a tree of conditions you compose freely, over any field available for your account.

The criteria builder

Instead of fixed filters, you compose a tree of boolean conditions (AND / OR) over the fields of your choice: standard fields, custom attributes, scores, indicators or form answers. Each resource exposes a search endpoint (paginated results) and an export endpoint (CSV / XLS / XLSX).

For the technical details — endpoints, parameters, request bodies and response examples — see the Advanced Search V2 section of the API documentation.

One sentence, one query

Let’s take a business need expressed in plain language, and see how it translates into a query.

Your need

I want all my third parties at risk that haven’t submitted their ISO 27001 certification.

The query (criteria tree)
I’m looking for third parties
ANDall these conditions
IndicatorFinancial Risk=High Risk
DocumentDocument type=Certification ISO 27001
DocumentDocument status=MISSING
The request body sent
{
  "filters": {
    "connectiveOperator": "AND",
    "conditions": [
      {
        "field": {
          "field": "<indicatorId>",
          "fieldType": "TEXT",
          "nature": "INDICATOR",
          "resourceType": "THIRD_PARTY",
          "id": <indicatorId>
        },
        "operator": "EQUAL",
        "values": ["High Risk"]
      },
      {
        "field": {
          "field": "documentTypeId",
          "fieldType": "TEXT",
          "nature": "MAIN_FIELD",
          "resourceType": "DOCUMENT"
        },
        "operator": "EQUAL",
        "values": [4311]
      },
      {
        "field": {
          "field": "documentStatus",
          "fieldType": "TEXT",
          "nature": "MAIN_FIELD",
          "resourceType": "DOCUMENT"
        },
        "operator": "EQUAL",
        "values": ["MISSING"]
      }
    ],
    "childGroups": []
  },
  "sort": { "name": "ASC" }
}

The three conditions are joined by AND: only third parties matching all three are returned.

Three queryable resources

The same mechanism applies to three resources. A condition can even target a resource other than the one queried (cross-resource filtering) — for example finding third parties that have a dossier of a given type.

Third parties

Legal name, country, headcount, turnover, scores, indicators…

Dossiers

Type, status, start and expiration dates…

Documents

Type, status, deposit and expiration dates, form fields…

The principle: a tree of conditions

A group has a single operator (AND or OR) that joins all its conditions and sub-groups. To mix AND and OR, you nest sub-groups — depth is unlimited.

Example: A AND (B OR C) is modeled as an AND group containing condition A and an OR sub-group containing B and C.

The 3-step flow

1
Discover the fields

Query the reference-data catalog to get the fields allowed for your account: technical name, type, permitted operators and possible values. It is the source of truth — you never invent names or values.

2
Build the query

Copy the field descriptors into a tree of conditions joined by AND / OR.

3
Search or export

Send the query to the endpoint of the target resource, or export the result as CSV / XLS / XLSX.

From catalog to query

In practice: you fetch a field from the reference-data catalog, then copy its descriptor into a search condition.

1
GET/reference-data/advanced-search-fields?accountId=…&language=fr&feature=ADVANCED_SEARCH

I fetch the « country » field from the catalog

{
  "field": "addressCountryCode",
  "label": "Pays",
  "fieldType": "TEXT",
  "nature": "MAIN_FIELD",
  "resourceType": "THIRD_PARTY",
  "options": [ { "value": "FR", "label": "France" }, … ],
  "availableOperators": ["EQUAL", "IN_SET", …]
}
2

I paste it into a condition (+ operator and value)

{
  "field": {
    "field": "addressCountryCode",
    "fieldType": "TEXT",
    "nature": "MAIN_FIELD",
    "resourceType": "THIRD_PARTY"
  },
  "operator": "EQUAL",
  "values": ["FR"]
}
3
POST/account/:accountId/documents/advanced-search-v2

I search documents of French third parties

The highlighted fields come from the catalog; the operator and values are up to you.

Anatomy of a condition

A condition combines a field, an operator and values.

{
  "field": {
    "field": "addressCountryCode",
    "fieldType": "TEXT",
    "nature": "MAIN_FIELD",
    "resourceType": "THIRD_PARTY"
  },
  "operator": "EQUAL",
  "values": ["FR"]
}

Values are always strings: write ["50"] not [50], ["true"] for a boolean, ["2026-01-01"] for a date.

Field natures

Each field carries a nature indicating where the data comes from. For attributes, calculated attributes, indicators and form fields, an identifier (id) is required.

NatureMeaning
MAIN_FIELDStandard field of the resource
ATTRIBUTEAccount custom attribute (referenced by its ID)
SCOREScore from a data provider (Ecovadis, CreditSafe…)
CALCULATED_ATTRIBUTECalculated attribute (referenced by the calculation ID)
INDICATORCalculated indicator (SmartPilot)
FORM_FIELDDocument form field (referenced by UUID)

The endpoints

Each resource exposes a search endpoint (and its export twin).

POST/api/v1/account/:accountId/third-parties/advanced-search-v2
POST/api/v1/account/:accountId/dossiers/advanced-search-v2
POST/api/v1/account/:accountId/documents/advanced-search-v2
GET/api/v1/reference-data/advanced-search-fields?accountId=:accountId
Mind the accountId position

For search and export, the accountId is in the URL path. For reference-data, it is a query parameter. Mixing them up returns a 404 error.

Export

Each resource has an export endpoint, the twin of the search: same request body (filters, sort, outputs), but it returns a file (CSV, XLS or XLSX) instead of paginated JSON. The endpoint is the search URL suffixed with /export, and the format is chosen via the required exportType parameter.

Choosing columns

The body additionally accepts columnsVisibility, which maps each column code to true or false and works as an opt-out: by default all columns are exported, you only list those to hide (false). A column set to true or absent stays visible — so omitting columnsVisibility exports everything.

Example — export third parties without the DUNS and VAT columns:

{ "columnsVisibility": { "duns": false, "vat": false } }

This page covers the concepts. The full list of fields, operators and possible values is provided dynamically by the reference-data catalog, specific to your account.