When to use this endpoint
UseGET /external/exhibitors/list after an event has been selected. This is the primary endpoint for browsing companies inside one event.
Common use cases:
- build an event exhibitor directory
- filter exhibitors by industry, category, geography, or company keyword
- request a best-effort nested personnel sample with
personnelLimit - decide whether an event is worth unlocking for full coverage
Endpoint
GET /external/exhibitors/list
Authentication
See AuthenticationSuccess status code
200 OK
Query parameters
| Name | Required | Type | Notes |
|---|---|---|---|
event_id | Yes | string | Event identifier used to scope the exhibitor list. |
page | No | integer | Defaults to 1. |
pageSize | No | integer | Defaults to 20; maximum 100. |
keyword | No | string | Exhibitor keyword search. |
country | No | string | Country filter. |
category | No | string[] | Exhibitor category filter. Repeated query parameters are supported. |
industry | No | string[] | Exhibitor industry filter. Repeated query parameters are supported. |
jobTitle | No | string[] | Personnel job-title filter. Repeated query parameters are supported. |
managementLevel | No | string[] | Personnel management-level filter, such as vp or c_suite. |
department | No | string[] | Personnel department filter, such as marketing or sales. |
personnelLimit | No | integer | Maximum nested personnel rows per exhibitor when available. Use 0 or omit for none. Treat nested personnel as best-effort; use GET /external/personnel/list with event_id and exhibitor_id when contacts are required. |
Request example
Filter by company and personnel attributes
Response example
Response fields
| Field | Description |
|---|---|
items | Exhibitor records for the selected event and filters. |
id | Exhibitor identifier. Use it for exhibitor profile and related-event lookups. |
companyName, domain, website | Company identity and web presence fields. |
description, industry, employeeCount, country | Company enrichment metadata. |
categories | Exhibitor category labels as a string array (e.g. ["Artificial Intelligence", "Digital Health"]). [] when none. |
linkedinUrl, fundingRound, techStacks | Additional enrichment signals when available. |
buyingSignalTags | Deduped buying-signal labels from the latest analysis batch. [] when none. |
buyingSignalStatus | Latest buying-signal batch state: ready, processing, pending, or null. |
buyingSignals | Full latest-batch buying-signal objects, each with signalTag, signalDate, sourceType, sourceTitle, sourceUrl, evidenceSummary, relevanceToIcp, recommendedPlay, signalScore (0–100), confidence (high/medium/low), directOrInferred (direct/inferred), analyzedAt (unix ms). [] when none. |
matched_event_ids | Event identifiers connected to the result. For event-scoped list calls, this reflects the requested event scope. |
isRecommended, recommendationRank, matchStatus, matchScore, matchTier, matchReason | Recommendation metadata when available. |
recommendationProcessing | Whether recommendation metadata is still being prepared. |
recommendationProcessingFeature | Which recommendation feature is processing. "none" when idle. |
semantics | Preview/full access metadata for the selected event. |
Personnel samples
personnelLimit asks the API to include a small personnel sample for each exhibitor when the service has a suitable sample for the current event, filters, and access state. It is not a guarantee that every exhibitor item will contain nested personnel rows.
When your workflow needs buyer contacts for a specific company, call Personnel list with both event_id and exhibitor_id. Treat that event-scoped personnel response as the source of truth for people coverage and contact unlock state.
Access semantics
When an event is locked, this endpoint can return a preview slice instead of full results. Usesemantics to explain the state to users:
accessModeindicates preview or full access.counts.visibleTotalis the number of records currently visible.counts.remainingLockedCountis the number of matching records hidden behind event unlock.pageState.accessibleindicates whether the requested page is visible under the current access state.unlock.requiredForMoreResultstells you whether Unlock event is the next action.
Error responses
400 Bad Request401 Unauthorized404 Not Found429 Too Many Requests
Notes
- This endpoint is event-scoped and requires
event_idon every request. matched_event_idsreflects the requested event scope.techStacksis always returned as an array; when no data is available, the API returnstechStacks: [].- Locked events can return preview results. Use
semantics.unlockto decide whether to call Unlock event. - After event unlock, request the target page again and confirm
semantics.accessModemoved tofullbefore assuming all matching exhibitors are available.