文档

获取你的第一条结果

选择接口,查看请求和响应示例,然后用你的数据试一试。

快速开始

不想写代码?打开控制台,运行请求并下载结果。

使用 API?从控制台获取密钥,替换下方的 key_live_xxxx。每月可免费使用 $6,无需绑卡。

通过 LinkedIn 个人主页 URL 刷新当前信息。

请求
curl "https://crustapi.com/v1/linkedin?type=refresh&url=https%3A%2F%2Fwww.linkedin.com%2Fin%2Fdharmesh" \
  -H "x-api-key: key_live_xxxx"
响应示例(节选)
{
  "publicIdentifier": "dharmesh",
  "accessible": true,
  "profileState": "accessible",
  "firstName": "Dharmesh",
  "lastName": "Shah",
  "headline": "Founder and CTO at HubSpot. Helping millions grow better.",
  "currentTitle": "Founder and CTO",
  "titleSource": "headline",
  "currentCompany": {
    "name": "HubSpot",
    "slug": "hubspot",
    "linkedInUrl": "https://www.linkedin.com/company/hubspot",
    "linkedInId": "68529"
  },
  "currentSchool": {
    "name": "Massachusetts Institute of Technology",
    "slug": "mit",
    "linkedInUrl": "https://www.linkedin.com/school/mit",
    "linkedInId": "1503"
  }
}

示例来自已记录的实际响应,仅展示部分字段。长文本已缩短,电话号码已遮盖。实时结果可能不同。完整字段说明见下方。

响应字段
价格与计费

充值最低 $10。每个账户每月获得 $6 免费用量。所有价格均为美元。

每笔充值保留其对应价格,直到该笔余额用完。单笔充值越大,该笔资金适用的价格越低。多笔充值不累加为永久折扣。我们先使用免费额度,再使用适用价格最低的付费资金。价格相同时,先使用较早的充值。

Google Search 及 LinkedIn Person、Company、Posts 按成功返回结果的请求计费。Maps 按返回的企业计费。People 和 Jobs 按成功返回结果的搜索计费;People 完整资料按返回的完整资料计费。Refresh 按可访问的个人资料计费。包含工作邮箱查询。控制台会在运行前显示预估费用。

钱包响应新增 billing.chargedUsd 和 billing.remainingUsd,金额以十进制字符串返回。GET /v1/balance 返回 wallet.availableUsd。原有 credits、charged、creditsRemaining 保持数字类型。钱包中的剩余额度兼容值是可负担的计费单位数量,并非美元,且可能因端点而异。金额核算请使用明确的 USD 字段。

概算基于当前余额及对应价格。并发请求或免费额度重置可能改变实际使用的资金和价格。活动日志记录最终费用。已有购买用量按旧价格与适用新价格中更优惠的一方保留。仍显示旧额度的账户在转换前继续使用原有条款。以下独立 x402 路径使用其单独的额度套餐,不会向控制台钱包充值美元。

LinkedIn

更新人员记录、读取个人与公司档案,或查询人员、动态和职位。所有 LinkedIn 数据均来自无需登录即可访问的公开来源。

更新人员数据库

发送你已有的 LinkedIn 档案链接。Refresh 返回可获取的当前雇主、公司和学校 ID、姓名、简介标题与职位、头像及档案状态。将响应与你保存的记录比较,即可识别变更。

Refresh 字段位于响应的根层级。多个链接可使用批量请求,也可以在控制台试用 Refresh。工作经历及其他个人档案栏目请使用 type=person。

Refresh 响应字段

选择 LinkedIn 操作

字段覆盖随档案和操作而变化。null 和空栏目表示未返回该信息,不能证明该信息不存在。OpenAPI 参考提供响应结构。

个人档案响应字段

工作经历可包含职位、雇主名称/URL/ID、地点、描述、日期、标志和来源标记。教育经历可包含学校名称/URL/ID、学历、专业、日期、描述和标志。experienceAvailability 只统计返回的条目。

公司响应字段
职位、动态和人员搜索

职位可返回名称、公司名称/URL、地点、描述、资历、工作类型、职能、行业、薪资和状态。jobPoster 包含公开联系人的姓名、简介标题和 URL。可选字段包括 datePosted、validThrough、educationRequirements、experienceRequirements、jobLocation、sourceJobIdentifier 和 jobMetadataSource。没有公司 URL 时仍可返回公司名称。validThrough 为公布的有效期,不代表已确认关闭。

动态包含可获取的正文、日期、链接、作者、图片、反应和评论数量。comments=true 增加可获取的评论。人员搜索返回可获取的身份、地点、雇主、教育和关注者等数量。若有 source、returned、totalAvailable 和 totalCapped,请一并检查;总数可能设有上限,返回结果不保证涵盖所有匹配。

档案状态与缺失值

新信息缺失或不确定时,请保留已有值。缺少雇主信息不能证明当事人已离职。无法获取数据的 Profile 和 Refresh 结果不计费。

LinkedIn 请求参数

计费

Person、Company、Posts、People 和 Jobs 按各自端点价格对成功请求计费。People 的 enrich=true 按返回的完整档案数量计费。Refresh 按可访问档案计费。工作邮箱查询已包含;即使没有找到邮箱,成功返回的档案仍计费。详见当前价格。

Google

一个接口,一个参数即可选择 Google 数据面。改变 type,其余保持不变。

GET https://crustapi.com/v1/search?type=<surface>&q=<query>

你可以请求的数据面:

Google Maps 响应字段

type=maps 的商家记录位于 places 数组中。字段覆盖随商家、类别和国家而变化。缺失的电话或网站会留空。

Maps 字段参考

常用参数

完整的机器可读规范在 /v1/openapi.json。把你的工具或智能体指向它即可。

数据新鲜度

每次搜索都在你发起请求时实时获取。我们绝不会用旧结果代替一次失败的获取:如果无法完成你的搜索,你会收到一个错误,该次调用免费,你可以重试。唯一的例外很小并且始终会明确告知:如果你在 60 秒内重复发送同一个搜索,可能会收到第一次的结果,此时响应中会带有 "cached": true 和 "cacheAgeSeconds"。加上 &fresh=1 可强制每次都重新获取。

速率限制

有些搜索类型的获取耗时更长,因此每个密钥对这些类型同时进行中的请求数量有上限。发送到上限后,等待结果返回再继续发送。超出上限的请求会收到 429 和 Retry-After 头。如果我们短暂达到容量上限,你的请求可能会先等待几秒,然后要么被处理,要么返回 429。被限速的调用永远不计费。

maps、places、reviews、autocomplete、patents、webpage 以及 LinkedIn 接口没有并发上限。如果你的项目需要超过付费上限的吞吐量,联系我们,我们会为你配置。

批量请求与 webhook

向 POST /v1/linkedin/batch 发送最多 100 个 URL。支持 refresh、person(别名 profile)、company 和 posts。结果保持输入顺序,每行分别返回成功或错误。

curl "https://crustapi.com/v1/linkedin/batch" \ -H "x-api-key: key_live_xxxx" \ -H "content-type: application/json" \ -d '{"type": "refresh", "urls": ["https://www.linkedin.com/in/dharmesh", "https://www.linkedin.com/in/williamhgates"]}'

响应包含 results 数组。每行有 url、ok,以及 data 或 error。data 是该操作的数据,不包含单次请求的计费/耗时外层。不可访问的行不计费;请检查返回的 data.accessible 或 notAccessible。

异步投递,最多 10,000 个 URL

添加公开的 HTTPS webhook URL。API 返回 HTTP 202 和 jobId,完成后将批量结果 POST 到 webhook。请求头 X-Crustapi-Job 用于识别投递。

curl "https://crustapi.com/v1/linkedin/batch" \ -H "x-api-key: key_live_xxxx" \ -H "content-type: application/json" \ -d '{"type": "refresh", "urls": ["https://www.linkedin.com/in/dharmesh", "https://www.linkedin.com/in/williamhgates"], "webhook": "https://your-app.com/hooks/crustapi"}'

大型结果可能通过 resultsUrl 投递,并附带 resultsBytes 和 resultsExpireAt。请在到期前下载 JSON;临时文件随后会被删除。直接投递到 webhook 的结果请自行保存。

curl "https://crustapi.com/v1/linkedin/batch?id=jb_YOUR_JOB_ID" \ -H "x-api-key: key_live_xxxx"

状态端点返回任务状态、数量和投递信息,不返回结果行。请使用同一账号的 API 密钥。Webhook URL 不可内嵌凭据;不跟随重定向,投递失败会重试一次。

可选项:Refresh 的 member: true,以及 posts 的 comments: true。批量请求不支持 employees=true。成功返回数据的行按所选端点价格计费;不可用结果和格式错误的 URL 不计费。

CLI

更喜欢用终端?安装 CLI,就能在你的 shell 里拿到同样的数据,可选 JSON 或 CSV。

npm install -g crustapi-cli export CRUSTAPI_API_KEY=key_live_xxxx
crust linkedin https://www.linkedin.com/in/dharmesh crust "dentists in miami" crust search coffee --type maps --location "Austin, TX" --limit 20 crust search openai --type news | jq '.news[0]' crust search plumbers --type maps --csv > leads.csv crust scrape https://example.com/pricing --markdown

输出默认是 JSON,可以干净地管道传递,状态行输出到 stderr,因此你的管道不会被污染。加上 --csv 即可输出 CSV。它已发布在 npm 上,名为 crustapi-cli。

面向 AI 助手的 MCP

为 Claude Desktop、Cursor、Cline 或任意 MCP 客户端提供Google 和公开 LinkedIn 数据。无需安装,npx 会直接运行。把下面这段加入你的客户端配置并重启即可。

{ "mcpServers": { "crustapi": { "command": "npx", "args": ["-y", "crustapi-mcp"], "env": { "CRUSTAPI_API_KEY": "key_live_xxxx" } } } }

会出现三个工具。search 用一次调用覆盖整个菜单,scrape_webpage 把任意网址转成可直接喂给 AI 的干净文本(RAG),get_reviews 拉取某商家的 Google 评论。该包已发布在 npm 上,名为 crustapi-mcp。

People Refresh 可通过智能体的 HTTP 工具调用 /v1/linkedin?type=refresh。当前已发布的 MCP 包提供个人档案、公司、动态、职位和人员搜索。

集成

支持 HTTP 请求和自定义请求头的工具都可以调用 CrustAPI。

通过 HTTP 请求连接

在工具中添加 HTTP 请求步骤,选择 GET,填写下面的端点和查询参数,并在 x-api-key 请求头中填入 API 密钥。将 {{双花括号}} 中的值替换为工作流中的字段。

更新人员信息

GET https://crustapi.com/v1/linkedin Query: type=refresh, url={{LinkedIn URL}} Header: x-api-key: key_live_xxxx

将 LinkedIn 档案链接作为 url 传入。把 currentCompany.name、currentCompany.linkedInId、currentTitle、titleSource 和 profileState 映射到工作流或电子表格。与已保存的雇主/职位比较,结果不可用时保留原值。

查找本地商家

GET https://crustapi.com/v1/search Query: type=maps, q={{Business name}} {{Location}}, limit=1 Header: x-api-key: key_live_xxxx

映射 places[0].website、places[0].phone、places[0].address、places[0].totalScore 和 places[0].reviewsCount。接受匹配前请核对返回的名称、地址和网站。这是商家搜索,第一条结果不保证与输入域名对应的公司一致。

请将 API 密钥保存在工具的凭据设置中,并在工作流的下一步使用返回的 JSON 字段。

AI 智能体

受支持的工具可使用 MCP 服务;Refresh 及其他端点选项可通过 HTTP API 调用。向智能体提供 llms.txt 使用说明和 OpenAPI 规范中的请求与响应结构。

智能体支付(x402)

你的智能体无需注册、无需绑卡、无需密钥就能开始。它可以用 x402(开放的 HTTP 支付标准)自行购买额度。如果你的智能体框架已经支持 x402,那么你无需写任何额外代码就能用上。

下面是完整的握手流程。

  1. 你的智能体在不带密钥的情况下调用 POST /v1/x402/topup?pack=agent。
  2. 我们返回 402 Payment Required,附上金额、付款地址,以及 Base 上的 USDC 合约。
  3. 智能体的钱包签署一份免 gas 的 USDC 授权(EIP-3009),并带着签名再次发送请求。
  4. 我们在链上验证并结算,然后返回一个已经充好额度的真实 API 密钥。

从这里开始,这个密钥就和其他密钥一样。智能体调用 /v1/search,花掉它刚买的额度。

402 质询

不带密钥调用充值接口,你就会拿回付款条款。

# ask to top up, no key curl -X POST "https://crustapi.com/v1/x402/topup?pack=agent"
402 Payment Required { "error": "Payment Required", "x402Version": 2, "accepts": [ { "scheme": "exact", "network": "eip155:8453", "asset": "0x8335…2913" } ], "pack": "agent", "priceUsd": 5, "credits": 2500 }

付款之后

你的 x402 客户端签署授权并重试。我们完成结算,返回一个可立即使用的密钥。

200 OK { "apiKey": "key_live_…", "credits": 2500, "packId": "agent", "txHash": "0x…" }

有几点值得了解:

  • 付款使用 Base 上的 USDC,且免 gas。你的智能体签署一份授权,因此无需持有 ETH 来支付 gas。
  • agent 套餐是首充 $5 换 2,500 点额度。更大的套餐运作方式相同,随着用量增长,只需传入不同的 pack。
  • 通过 x402 付款获得的额度与用银行卡购买的额度完全相同。每次成功搜索扣 1 点额度,空结果免费。

询问你的 AI

还有疑问?复制这份包含详细产品说明的 md 文件,拿去问你的智能体。

智能体可以直接在 crustapi.com/llms.txt 获取它。

遇到这里没写到的问题?发邮件到 support@crustapi.com,会有真人回复。