Trade-show-skills trade-show-exhibitor-search
Find ICP-matching exhibitors, prospects, and partners at any trade show using the Lensmor API. \"Who is exhibiting at this show?\" / \"参展商搜索\" / \"Aussteller finden\" / \"出展社を探す\" / \"buscar expositores\". find exhibitors, exhibitor list, who is exhibiting, show prospects, 找参展商/展会潜客/谁在参展 Ausstellersuche Ausstellerliste 出展社検索 búsqueda de expositores
git clone https://github.com/LensmorOfficial/trade-show-skills
T=$(mktemp -d) && git clone --depth=1 https://github.com/LensmorOfficial/trade-show-skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/trade-show-exhibitor-search" ~/.claude/skills/lensmorofficial-trade-show-skills-trade-show-exhibitor-search && rm -rf "$T"
trade-show-exhibitor-search/SKILL.mdLensmor Exhibitor Search
Find ICP-matching exhibitors, potential prospects, partners, or competitors at a specific trade show using the Lensmor API — before the event starts.
When this skill triggers:
- Run the API key check (Step 1) before any API call
- Collect the user's company URL or a clear description of the target audience
- Optionally narrow the search to a specific event via
event_id - Return a structured exhibitor table with ICP match reasoning
Use Cases
- Prospect discovery: Find companies at an upcoming show that match your ICP for pre-show outreach
- Partner sourcing: Locate potential technology partners, resellers, or distribution channels exhibiting
- Competitive mapping: Identify direct and adjacent competitors sharing the floor
Workflow
Step 1: API Key Check
Before making any API call, verify the key is configured:
[ -n "$LENSMOR_API_KEY" ] && echo "ok" || echo "missing"
If the result is
missing, stop and respond:
The
environment variable is not set. This skill requires a Lensmor API key to search exhibitor data. Contact hello@lensmor.com to purchase access, then set the key:LENSMOR_API_KEYexport LENSMOR_API_KEY=your_key_here
Do not proceed to any API call until the key is confirmed present.
Step 2: Collect Inputs
Ask the user for:
Required (at least one):
— The user's own company website, used to infer ICP profile (e.g.company_url
)https://acme.com
— Free-text description of the desired exhibitor profile (e.g. "B2B SaaS vendors selling to procurement teams at manufacturers")target_audience
Optional:
— Lensmor event ID to scope the search to a specific show. If unknown, look it up viaevent_id
.GET /external/events/list?query={name}
— Page number (default: 1)page
— Results per page (default: 20, max: 100)pageSize
If the user provides a show name but not an
event_id, offer to resolve it via the events list endpoint before proceeding.
Step 3: Call the API
Endpoint:
POST https://platform.lensmor.com/external/exhibitors/search
Authentication:
Authorization: Bearer $LENSMOR_API_KEY
Request body with
company_url:
{ "company_url": "https://acme.com", "event_id": "evt_dreamforce_2026", "page": 1, "pageSize": 20 }
Request body with
target_audience:
{ "target_audience": "B2B SaaS vendors targeting procurement and operations teams in manufacturing", "event_id": "evt_hannovermesse_2026", "page": 1, "pageSize": 20 }
Step 4: Interpret the Response
Response envelope:
{ "items": [...], "total": 142, "page": 1, "pageSize": 20, "totalPages": 8 }
Item field reference:
| Field | Type | Description |
|---|---|---|
| string | Lensmor internal exhibitor ID |
| string | Company display name |
| string | Primary domain (e.g. ) |
| string | Company description as indexed by Lensmor |
| string | Full website URL |
| string | Top-level industry classification |
| number | Approximate headcount |
| string | HQ country |
| string | Logo image URL |
| string | LinkedIn company page URL — primary channel for outreach |
| string | Latest known funding stage (e.g. , ) |
| array | Technologies the company uses (e.g. ) |
| array | Show IDs where this company is confirmed as an exhibitor |
ICP signals priority:
+industry
— quick size-and-sector matchemployeeCount
— technology affinity (e.g. target companies using a specific CRM)techStacks
— budget proxy for enterprise vs. startup buyersfundingRound
— use withlinkedinUrl
for decision-maker lookuptrade-show-contact-finder
Step 5: Format the Output
Open with a result count summary, then deliver a structured table and ICP match notes.
## Exhibitor Search Results — [Show Name or Event ID] Found [total] exhibitors. Showing [pageSize] on page [page] of [totalPages]. ICP Profile: [company_url or target_audience summary] | # | Company | Industry | Employees | Country | LinkedIn | |---|---------|----------|-----------|---------|----------| | 1 | [Acme Corp](https://acme.com) | Manufacturing SaaS | 450 | DE | [LinkedIn](https://linkedin.com/company/acme) | | 2 | ... | ... | ... | ... | ... | ### ICP Match Notes - **[Company A]**: Strong match — mid-market manufacturing SaaS, SAP integration signals shared buyer base - **[Company B]**: Partial match — large enterprise, potential partner rather than direct prospect - **[Company C]**: Competitor flag — overlapping product category
Number formatting: employee counts above 1,000 display as "1.2K"; above 1,000,000 as "1.2M".
Error Handling
| HTTP Status | Meaning | Response |
|---|---|---|
| 401 | API key invalid or expired | "The API key was rejected. Verify the value of or contact hello@lensmor.com." |
| 400 | Missing required parameter | "The request is missing a required field. Provide either or ." |
| 404 | Event ID not found | "Event ID was not found. Use to look up the correct ID." |
| 429 | Rate limit exceeded | "Rate limit reached. Wait 60 seconds and retry." |
| 502 / 5xx | Server error | "The Lensmor API returned a server error. Try again in a moment." |
Empty | No matches | "No exhibitors matched this query. Try broadening , removing the filter, or checking the show has exhibitor data loaded." |
Follow-up Routing
| User says | Recommended action |
|---|---|
| "find contacts at [company]" | Run with that company name |
| "rank these by ICP fit" | Run for AI-ranked results |
| "draft outreach for [company]" | Run |
| "is this show worth it?" | Run first |
| "show me more" / "next page" | Re-call with incremented by 1 |
Output Rules
- All URLs formatted as
— never bare links[text](url) - Never output the value of
LENSMOR_API_KEY - Never expose endpoint paths, raw curl commands, or internal token values in the response
- Employee counts above 1,000 shown as "1.2K"; above 1,000,000 as "1.2M"
- Empty results: report honestly, suggest parameter adjustments — never fabricate entries
- End every response with 1–3 contextual follow-up suggestions
- ICP match rationale must be grounded in returned fields (
,industry
,techStacks
,employeeCount
) — no guessingfundingRound - When
, prompt: "There are more results — say 'next page' to continue."totalPages > 1 - If API key is missing, direct user to hello@lensmor.com — do not just say "please configure"
- Open every response with "Found X exhibitors, showing Y."
Quality Checks
Before delivering:
- Confirm at least one of
orcompany_url
was provided; do not fabricate a querytarget_audience - Do not invent ICP match rationale — base it only on the returned fields
- If
is null for a company, note that LinkedIn is unavailable and suggest searching manuallylinkedinUrl - If
does not include the user's target event, surface this as a notematched_event_ids - Pagination: if
, prompt the user whether to fetch additional pagestotalPages > 1
Exhibitor data sourced from the Lensmor platform. For AI-powered exhibitor discovery, ICP matching, and lead generation before the show floor opens, see Lensmor.