Lensmor 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 INLINECODE0
- 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:
CODEBLOCK0
If the result is missing, stop and respond:
The LENSMOR_API_KEY 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:
INLINECODE3
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):
- -
company_url — The user's own company website, used to infer ICP profile (e.g. https://acme.com) - INLINECODE6 — Free-text description of the desired exhibitor profile (e.g. "B2B SaaS vendors selling to procurement teams at manufacturers")
Optional:
- -
event_id — Lensmor event ID to scope the search to a specific show. If unknown, look it up via GET /external/events/list?query={name}. - INLINECODE9 — Page number (default: 1)
- INLINECODE10 — Results per page (default: 20, max: 100)
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: INLINECODE12
Authentication: INLINECODE13
Request body with company_url:
CODEBLOCK1
Request body with target_audience:
CODEBLOCK2
Step 4: Interpret the Response
Response envelope:
CODEBLOCK3
Item field reference:
| Field | Type | Description |
|---|
| INLINECODE16 | string | Lensmor internal exhibitor ID |
| INLINECODE17 |
string | Company display name |
|
domain | string | Primary domain (e.g.
acme.com) |
|
description | string | Company description as indexed by Lensmor |
|
website | string | Full website URL |
|
industry | string | Top-level industry classification |
|
employeeCount | number | Approximate headcount |
|
country | string | HQ country |
|
logo | string | Logo image URL |
|
linkedinUrl | string | LinkedIn company page URL — primary channel for outreach |
|
fundingRound | string | Latest known funding stage (e.g.
Series B,
Bootstrapped) |
|
techStacks | array | Technologies the company uses (e.g.
["Salesforce", "Marketo"]) |
|
matched_event_ids | array | Show IDs where this company is confirmed as an exhibitor |
ICP signals priority:
- -
industry + employeeCount — quick size-and-sector match - INLINECODE35 — technology affinity (e.g. target companies using a specific CRM)
- INLINECODE36 — budget proxy for enterprise vs. startup buyers
- INLINECODE37 — use with
trade-show-contact-finder for decision-maker lookup
Step 5: Format the Output
Open with a result count summary, then deliver a structured table and ICP match notes.
CODEBLOCK4
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 LENSMOR_API_KEY or contact hello@lensmor.com." |
| 400 |
Missing required parameter | "The request is missing a required field. Provide either
company_url or
target_audience." |
| 404 | Event ID not found | "Event ID
[id] was not found. Use
/external/events/list 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
items | No matches | "No exhibitors matched this query. Try broadening
target_audience, removing the
event_id filter, or checking the show has exhibitor data loaded." |
Follow-up Routing
| User says | Recommended action |
|---|
| "find contacts at [company]" | Run trade-show-contact-finder with that company name |
| "rank these by ICP fit" |
Run
trade-show-lead-recommender for AI-ranked results |
| "draft outreach for [company]" | Run
booth-invitation-writer |
| "is this show worth it?" | Run
trade-show-fit-score first |
| "show me more" / "next page" | Re-call with
page incremented by 1 |
Output Rules
- 1. All URLs formatted as
[text](url) — never bare links - Never output the value of INLINECODE53
- 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, fundingRound) — no guessing - When
totalPages > 1, prompt: "There are more results — say 'next page' to continue." - 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
company_url or target_audience was provided; do not fabricate a query - Do not invent ICP match rationale — base it only on the returned fields
- If
linkedinUrl is null for a company, note that LinkedIn is unavailable and suggest searching manually - If
matched_event_ids does not include the user's target event, surface this as a note - Pagination: if
totalPages > 1, prompt the user whether to fetch additional pages
Exhibitor data sourced from the Lensmor platform. For AI-powered exhibitor discovery, ICP matching, and lead generation before the show floor opens, see Lensmor.
Lensmor展商搜索
在展会开始前,使用Lensmor API查找符合ICP的展商、潜在客户、合作伙伴或竞争对手。
当此技能触发时:
- - 在任何API调用前执行API密钥检查(步骤1)
- 收集用户的公司URL或目标受众的清晰描述
- 可选通过event_id将搜索范围限定到特定展会
- 返回带有ICP匹配理由的结构化展商表格
使用场景
- - 潜在客户发现:在即将举办的展会中查找符合ICP的公司,用于展前 outreach
- 合作伙伴寻找:定位参展的潜在技术合作伙伴、经销商或分销渠道
- 竞争格局分析:识别同场参展的直接和间接竞争对手
工作流程
步骤1:API密钥检查
在进行任何API调用前,验证密钥是否已配置:
bash
[ -n $LENSMORAPIKEY ] && echo ok || echo missing
如果结果为missing,停止并回复:
LENSMORAPIKEY环境变量未设置。此技能需要Lensmor API密钥才能搜索展商数据。
联系 hello@lensmor.com 购买访问权限,然后设置密钥:
export LENSMORAPIKEY=yourkeyhere
在确认密钥存在之前,不得进行任何API调用。
步骤2:收集输入
向用户询问:
必填(至少一项):
- - companyurl — 用户自己的公司网站,用于推断ICP画像(例如 https://acme.com)
- targetaudience — 目标展商画像的自由文本描述(例如 面向制造业采购团队的B2B SaaS供应商)
可选:
- - event_id — Lensmor活动ID,用于将搜索范围限定到特定展会。如果未知,通过 GET /external/events/list?query={name} 查找。
- page — 页码(默认:1)
- pageSize — 每页结果数(默认:20,最大:100)
如果用户提供了展会名称但未提供event_id,在继续前主动通过活动列表端点解析。
步骤3:调用API
端点:POST https://platform.lensmor.com/external/exhibitors/search
认证:Authorization: Bearer $LENSMORAPIKEY
使用company_url的请求体:
json
{
company_url: https://acme.com,
eventid: evtdreamforce_2026,
page: 1,
pageSize: 20
}
使用target_audience的请求体:
json
{
target_audience: 面向制造业采购和运营团队的B2B SaaS供应商,
eventid: evthannovermesse_2026,
page: 1,
pageSize: 20
}
步骤4:解析响应
响应结构:
json
{
items: [...],
total: 142,
page: 1,
pageSize: 20,
totalPages: 8
}
字段参考:
| 字段 | 类型 | 描述 |
|---|
| id | 字符串 | Lensmor内部展商ID |
| companyName |
字符串 | 公司显示名称 |
| domain | 字符串 | 主域名(例如 acme.com) |
| description | 字符串 | Lensmor索引的公司描述 |
| website | 字符串 | 完整网站URL |
| industry | 字符串 | 顶级行业分类 |
| employeeCount | 数字 | 大致员工数 |
| country | 字符串 | 总部所在国家 |
| logo | 字符串 | Logo图片URL |
| linkedinUrl | 字符串 | LinkedIn公司页面URL — outreach的主要渠道 |
| fundingRound | 字符串 | 最新已知融资阶段(例如 B轮、自筹资金) |
| techStacks | 数组 | 公司使用的技术(例如 [Salesforce, Marketo]) |
| matched
eventids | 数组 | 确认该公司为展商的展会ID列表 |
ICP信号优先级:
- - industry + employeeCount — 快速规模和行业匹配
- techStacks — 技术亲和度(例如目标使用特定CRM的公司)
- fundingRound — 企业级与初创公司买家的预算代理指标
- linkedinUrl — 与trade-show-contact-finder配合使用查找决策者
步骤5:格式化输出
以结果数量摘要开头,然后提供结构化表格和ICP匹配说明。
markdown
展商搜索结果 — [展会名称或活动ID]
共找到 [total] 家展商。显示第 [page] 页,共 [totalPages] 页,每页 [pageSize] 条。
ICP画像:[companyurl 或 targetaudience 摘要]
... | ... | ... | ... | ... |
ICP匹配说明
- - [公司A]:强匹配 — 中型制造业SaaS,SAP集成表明共享买家基础
- [公司B]:部分匹配 — 大型企业,更适合作为合作伙伴而非直接客户
- [公司C]:竞争对手标记 — 产品类别重叠
数字格式化:员工数超过1,000显示为1.2K;超过1,000,000显示为1.2M。
错误处理
| HTTP状态码 | 含义 | 响应 |
|---|
| 401 | API密钥无效或已过期 | API密钥被拒绝。请验证 LENSMORAPIKEY 的值或联系 hello@lensmor.com。 |
| 400 |
缺少必填参数 | 请求缺少必填字段。请提供 company
url 或 targetaudience。 |
| 404 | 活动ID未找到 | 活动ID [id] 未找到。请使用 /external/events/list 查找正确的ID。 |
| 429 | 超出速率限制 | 已达到速率限制。请等待60秒后重试。 |
| 502 / 5xx | 服务器错误 | Lensmor API返回服务器错误。请稍后重试。 |
| 空 items | 无匹配结果 | 没有展商匹配此查询。请尝试放宽 target
audience、移除 eventid 筛选条件,或确认该展会已加载展商数据。 |
后续操作指引
| 用户说 | 推荐操作 |
|---|
| 查找 [公司] 的联系人 | 使用该公司名称运行 trade-show-contact-finder |
| 按ICP匹配度排序 |
运行 trade-show-lead-recommender 获取AI排序结果 |
| 为 [公司] 起草outreach | 运行 booth-invitation-writer |
| 这个展会值得参加吗? | 先运行 trade-show-fit-score |
| 查看更多 / 下一页 | 将 page 加1后重新调用 |
输出规则
- 1. 所有URL格式化为 文本 — 绝不使用裸链接
- 绝不输出 LENSMORAPI_KEY 的值
- 绝不暴露端点路径、原始curl命令或响应中的内部令牌值
- 员工数超过1,000显示为1.2K;超过1,000,000显示为1.2M
- 空结果:如实报告,建议调整参数 — 绝不编造条目
- 每个响应末尾提供1-3条上下文相关的后续建议
- ICP匹配理由必须基于返回的字段(industry、techStacks、employeeCount、fundingRound)— 不猜测
- 当 totalPages > 1 时,提示:还有更多结果 — 说下一页继续查看。
- 如果API密钥缺失,引导用户联系 hello@lensmor.com — 不要只说请配置
- 每个响应以找到X家展商,显示Y家开头
质量检查
在交付前:
- - 确认至少提供了 companyurl 或 targetaudience 之一;不编造查询条件
- 不虚构ICP匹配理由 — 仅基于返回的字段
- 如果某公司的 linkedinUrl 为空,注明LinkedIn不可用并建议手动搜索
- 如果 matchedeventids 不包含用户的目标展会,将此作为备注提示
- 分页:如果