Search the book

How the search route works, its filters, paging and the shape of a masked result.

GuideDeveloperChecked 2026-10-10

GET /market/catalog/search returns a page of masked records matching a sector, an area and a set of filters. Search is free and does not use your export allowance.

Turn a sector into a category

Search takes a category code, not free words. GET /market/catalog/resolve-sector?q=letting agents returns the closest categories and how many records sit in each. Pass the chosen code as category.

GET /market/catalog/search?category=accountants&area=Sheffield&has_website=1&page_size=2
Authorization: Bearer <sign-in token>
{
  "total": 412,
  "page": 1,
  "page_size": 2,
  "included_sectors": [{"code": "accountants-bookkeepers", "label": "Bookkeepers"}],
  "results": [
    {
      "lead_id": "mkt_sample0001",
      "name": "Marsh and Keel Accountants",
      "director_name": "Jess Morgan",
      "website_domain": "marshandkeel.example",
      "category_label": "Accountants",
      "locality": "Sheffield",
      "postcode_out": "S1",
      "phone_type": "landline",
      "availability": {"has_phone": true, "has_email": true, "has_website": true, "has_socials": false},
      "email_type": "role",
      "evidence": {"email": {"grade": "claimed"}, "website": {"grade": "proven"}},
      "entity_type": "limited company",
      "revealed": false
    }
  ],
  "widened": null,
  "did_you_mean": []
}

A sample, trimmed. Real rows carry a few more fields such as the registered name and group details. A name is shown. An email and a phone number never are. evidence gives a grade per field, which the app draws as its labels. See Proven, Claimed, Contested, Unknown and All there is.

Filters

All are query parameters. A flag is 1 to turn it on.

Parameter Type What it does
category string, 60 A category code. Several can be comma separated
exclude_category string, 240 Category codes to drop, each with its sub-sectors
area string, 60 A town, city or postcode area such as S1 or SW
exclude_area string, 60 An area to leave out
q string, 80 Words in the name, or a website address
has_email, has_phone, has_mobile, has_website, has_socials flag Only records that hold that field
has_director, has_director_email, has_general_email, verified_email flag Narrow by who or what is held
email_status, email_kind, website_kind string Narrow by kind of email or site
entity_type string Limited company, partnership and so on
size, staff_band, employees_min, employees_max Size filters
founding_year_min, founding_year_max integer, 0 to 2100 Founding year range
recently_incorporated, new_director, leadership_change flag Recent changes
chain, registered_differs, ch_active flag Group and company status filters
strike_off include or only Include or isolate businesses flagged for closure
sort newest (default) or name. Any other value gives the default quality order Order of results
page integer, 1 or more Page number
page_size integer, 1 to 200 Rows per page. Default 20

A zero is not always a zero

If a typed q finds nothing, the server may widen it or suggest names. widened says what was searched instead and did_you_mean lists real names. If a filter that only the search index can answer cannot be answered, the route returns 503 rather than ignoring the filter.

Limits

No per-minute limit applies to this route when you call it directly. The connector's tool search_leads has its own limits and a narrower set of filters: Rate limits, credits and allowances.