Brokers
Analyze broker relationships, commission data, and carrier networks across 200,000+ benefits brokers.
List Brokers
/v1/brokers1.00 / 2.00 per rowReturns a paginated list of brokers (parent firms). To query the local office locations underneath a broker, use the Broker Offices endpoint with broker_ids.
total_clients, total_premiums, and total_commissions. Composition filters such as top_industries, top_carriers, and employee_coverage belong to broker offices; query /v1/broker-offices for those dimensions.Pagination & format
Common to all endpoints — see Pagination and Response Modes.
| Parameter | Type | Description |
|---|---|---|
page | integer | Page number (0-indexed) |
page_size | integer | Results per page (max 500). Over-max → 400. |
sort_by | string | Column to sort by — allowlist: broker_name (default), total_clients, total_offices, total_commissions |
sort_dir | asc | desc | Sort direction |
mode | basic | full | Response verbosity. Advanced-only fields require advanced access. |
fields | string | Comma-separated field list (id always included) |
format | json | flat | Response format (flat for Clay/spreadsheets) |
count_only | boolean | Return only total count, no data rows (0 credits) |
include_count | boolean | Include total_count in meta (default true; false skips per-page COUNT) |
dry_run | boolean | Validate query and return estimated rows + credits (0 credits) |
Basic response fields
| Field | Type | Description |
|---|---|---|
lead_source | object | Attribution stamp: { source: "hillwinds", retrieved_at: ISO-8601 UTC }. retrieved_at is when this row was assembled for the response, not the same as last_updated_at, which is when the row was last refreshed upstream. |
Filters
| Parameter | Type | Description |
|---|---|---|
search | string | Fuzzy name search on broker_name |
states | string | Headquarters state codes (comma-separated) |
dmas | string | Headquarters DMA names (comma-separated) |
geo_mode | state | dma | Geographic filter mode (default state) |
brokerage_class | string | national player, regional player, local broker |
client_count_bands | string | One Client, Two to Five Clients, … Fifty Plus Clients |
filing_year | string | Filing year or 'latest' (default 'latest') |
long_tail | boolean | Include long-tail brokers |
signals | string | Active signals (advanced tier only) |
signal_match | any | all | Match semantics when multiple signals= are passed (default any) |
tags | string | Tag names (AND logic) |
crm_status | string | in_hubspot | in_salesforce | in_both | not_in_crm |
cf[column] | string | Column filter — supports gte:/lte: for numeric columns |
eb[column] | boolean | Exclude blanks for column; only true is supported (false returns 400) |
curl -H "Authorization: Bearer ss_live_..." \
"https://api.hillwinds.ai/v1/brokers?brokerage_class=regional+player&states=CA,NY&page_size=10"Example response
{
"ok": true,
"data": [
{
"id": "brk_a1b2c3d4e5f6",
"broker_name": "MARSH & MCLENNAN COMPANIES",
"brokerage_class": "national player",
"headquarters_city": "New York",
"headquarters_state": "NY",
"broker_dma": "NEW YORK",
"total_clients": 8420,
"total_offices": 87,
"website": "marshmclennan.com",
"crm_status": ["hubspot", "salesforce"],
"lead_source": {
"source": "hillwinds",
"retrieved_at": "2026-06-24T14:16:00Z"
}
}
],
"meta": {
"total_count": 89,
"page": 0,
"page_size": 1,
"returned": 1,
"has_more": true,
"response_tier": "basic",
"key_tier": "advanced",
"credits_charged": 1.00
}
}Get Broker
/v1/brokers/:id1.00 / 2.00 per rowReturns a single broker by ID. The OpenAPI spec lists only id as a parameter — mode / fields / format don't apply here. For tier control, use GET /v1/brokers/lookup?name=… instead.
curl -H "Authorization: Bearer ss_live_..." \
"https://api.hillwinds.ai/v1/brokers/brk_a1b2c3"Lookup Broker
/v1/brokers/lookup1.00 / 2.00 per matchExact-match lookup by broker name. Returns a single broker, 404 if no match, or 400 with suggestions if multiple match.
| Parameter | Description |
|---|---|
name | Match by exact broker name (required) |
mode | basic | full — field verbosity, same semantics as the list endpoint |
fields | Comma-separated field allowlist |
format | json | flat |
mode, fields, and format are optional and behave the same as on the list endpoint.
curl -H "Authorization: Bearer ss_live_..." \
"https://api.hillwinds.ai/v1/brokers/lookup?name=Marsh+%26+McLennan"Export Brokers
/v1/brokers/export.csvPer-rowcurl -H "Authorization: Bearer ss_live_..." \
-o brokers.csv \
"https://api.hillwinds.ai/v1/brokers/export.csv?states=CA"Autocomplete
/v1/brokers/autocomplete0 creditsTypeahead suggestions. Full cross-resource reference + per-resource matrix on the Autocomplete reference. Brokers-specific notes:
column=allowlist:broker_name(default) only. Other values return400.queryrequires ≥ 2 characters; missing or 1-char →400. Alias:search.idis returned as""today. For broker name → ID, preferGET /v1/brokers/lookup?name=...— exact-match, returns 404 on miss or 400 with suggestions on ambiguous.
curl -H "Authorization: Bearer ss_live_..." \
"https://api.hillwinds.ai/v1/brokers/autocomplete?search=marsh&limit=5"{
"ok": true,
"data": [
{
"id": "",
"label": "MARSH & MCLENNAN COMPANIES",
"resource": "brokers",
"value": "MARSH & MCLENNAN COMPANIES"
}
],
"meta": { "credits_charged": 0, "returned": 1 }
}Keys are issued by our team, not a signup form. Book a 25-minute walkthrough and you'll leave with sandbox and live credentials.