---
title: "Columns the screener can show, filter or sort"
method: GET
path: "/accounts/search/fields"
tags: ["Intelligence"]
---

# Columns the screener can show, filter or sort

`GET /accounts/search/fields`

## Request

- Base URL: `https://api.companystack.co.uk`
- URL: `https://api.companystack.co.uk/accounts/search/fields`
- Auth: one of:
  - HTTP bearer
  - API key in header `X-Api-Key`

Every column the screener knows: its `key` (use it in `fields`), label, group, kind, and whether it is `fixed` (already in every result). A field the screener can order by carries `sort`, the value to pass as the `sort` parameter (the sort keys predate the catalogue, so `total_assets` sorts with `sort=assets`). A field with a range filter carries `min_param` and `max_param`, the query parameters that bound it (`total_assets` is filtered with `min_assets` / `max_assets`). Both are absent where they do not apply. `max_fields` is the most keys `fields` accepts.

## Response `200`

The field catalogue

- object
  - `fields` object[], required
    - `key` string, required
    - `label` string, required
    - `group` string, required
    - `kind` 'money' | 'int' | 'number' | 'pct' | 'date' | 'text' | 'bool', required
    - `filter` 'range' | 'enum' | 'flag' | 'null', nullable, required
    - `sortable` boolean, required
    - `sort` string: The sort parameter value that orders by this field (only where sortable is true)
    - `min_param` string: The query parameter for the lower bound (only where filter is range)
    - `max_param` string: The query parameter for the upper bound (only where filter is range)
    - `fixed` boolean, required: Already in every screener result, so fields= does not need it
    - `description` string
  - `max_fields` integer, required: The most keys the fields parameter accepts

## Other responses

- `401`: API key missing, malformed or revoked
- `403`: The key's plan does not include this endpoint (`code: plan_upgrade_required`, with `upgrade_url`), the key may not call it, or the key is beyond the plan's key limit after a downgrade (`code: key_limit_exceeded`: the newest keys are paused until keys are deleted or the plan upgraded)
- `429`: Per-minute or per-day limit reached (`code: rate_limited`, `window: minute|day`). Wait `Retry-After` seconds; when both windows are full the day is reported. A refused request does not count against either limit. A bulk lookup (`POST /company/bulk`) counts each company number in it as one request, so one that is more than you have left is refused whole, and the body adds `requested` and `fits`.

---

[API](https://skmtc.dev/companystack/apis/companystack-api.md) · [All operations](https://skmtc.dev/companystack/apis/companystack-api/llms.txt) · [OpenAPI document](https://skmtc.dev/companystack/apis/companystack-api/revisions/8f3234237d2d?raw)
