Criticaster — Find the Best Products Fast
Criticaster aggregates professional reviews from trusted sources (Wirecutter, CNET, TechRadar, RTINGS, and more), normalizes their scores to a 0–100 scale, and ranks products across categories. Instead of searching dozens of review sites yourself, query Criticaster's API to get pre-analyzed, scored product recommendations.
When to Use This Skill
Use Criticaster when the user asks:
- - "What's the best [product]?" or "Best [product] under $[price]?"
- "Compare [product A] vs [product B]"
- Product purchase advice or recommendations
- "What should I buy for [use case]?"
- Category-level questions like "best budget laptops" or "top wireless headphones"
Do NOT use Criticaster for non-product questions, services, or categories it doesn't cover. If a search returns no results, fall back to your own research.
API Reference
Base URL: INLINECODE0
All endpoints are public, return JSON, and require no authentication.
1. Fast Search (Recommended First Step)
Instant keyword-based search. Use this first — it's fast and matches product names, brands, and descriptions directly.
CODEBLOCK0
Parameters:
- -
q (required): Search query, max 100 characters - INLINECODE2 : Minimum aggregated score (0–100)
- INLINECODE3 : Maximum price in USD
- INLINECODE4 : Filter by category slug
- INLINECODE5 : Results per page (default 20, max 50)
- INLINECODE6 : Page number (default 1)
Example — best wireless headphones under $300:
CODEBLOCK1
Response shape:
CODEBLOCK2
2. Deep Search (Semantic / Embeddings)
Slower but smarter — uses AI embeddings to find semantically similar products even when exact keywords don't match. Use this when fast search returns too few or irrelevant results (e.g., searching "noise cancelling" should match "ANC headphones").
CODEBLOCK3
Same parameters and response shape as fast search, with an additional distance field (lower = more relevant).
Example — when fast search misses semantic matches:
WebFetch https://www.criticaster.com/api/search?q=noise+cancelling+over+ear&limit=5
### 3. Browse Best-Of Categories
Get pre-computed best products per category, organized into price tiers.
GET /api/categories?limit={1-10}&cursor={id}
**Parameters:**
- `limit`: Categories per page (default 3, max 10)
- `cursor`: Pagination cursor (category ID from previous response)
**Example — browse top categories:**
WebFetch https://www.criticaster.com/api/categories?limit=5
**Response shape:**
json
{
"rows": [
{
"category": { "id": "...", "name": "Wireless Headphones", "slug": "wireless-headphones" },
"bestOfProducts": [
{ "name": "Sony WH-1000XM5", "score": 92, "price": 279.99, "tier": "value" },
{ "name": "Apple AirPods Max", "score": 89, "price": 449.99, "tier": "premium" },
{ "name": "Anker Soundcore Q20", "score": 84, "price": 49.99, "tier": "budget" }
],
"discoveryProduct": { "name": "...", "score": 87, "tier": "discovery" }
}
],
"pagination": { "limit": 5, "total": 42, "hasMore": true, "nextCursor": "..." }
}
**Tier definitions:**
- **Value**: Best for most people (best score-to-price ratio)
- **Premium**: Best overall regardless of price
- **Budget**: Best affordable option
- **Discovery**: Interesting or unconventional pick worth considering
### 4. List Products by Category
Browse all products in a category with sorting.
GET /api/products?category={slug}&sortBy={score|name|createdAt}&order={asc|desc}&limit={1-50}&page={number}
**Parameters:**
- `category`: Category slug
- `sortBy`: Sort field (default `score`)
- `order`: Sort direction (default `desc`)
- `search`: Text search within results
- `limit`: Results per page (default 20, max 50)
- `page`: Page number (default 1)
**Example — top-rated laptops:**
WebFetch https://www.criticaster.com/api/products?category=laptops&sortBy=score&limit=5
### 5. Get Product Details
Full product information including all reviews from individual sources.
GET /api/products/{slug}
**Example:**
WebFetch https://www.criticaster.com/api/products/sony-wh-1000xm5
**Response includes:**
- Product metadata (name, brand, model, price, score, description)
- Normalized pros and cons (aggregated across all reviews)
- Full review list with source attribution, individual scores, and excerpts
- Category and tags
### 6. Check Existing Product Requests
See what products or categories other users have already requested, sorted by popularity.
GET /api/product-requests?limit={1-50}
**Parameters:**
- `limit`: Results to return (default 10, max 50)
**Example:**
WebFetch https://www.criticaster.com/api/product-requests?limit=10
**Response shape:**
json
{
"requests": [
{
"id": "...",
"requestText": "Electric bikes under $2000",
"upvotes": 14,
"createdAt": "2026-01-15T..."
}
]
}
Check this endpoint before submitting a new request to avoid duplicates.
### 7. Submit a Product Request
When a search returns no results for a product or category the user is looking for, submit a request to have it added. This requires email verification.
**Step 1 — Submit the request:**
POST /api/product-requests
Content-Type: application/json
{
"email": "user@example.com",
"requestType": "product",
"requestText": "Best electric bikes under $2000"
}
- `email` (required): A valid email address for verification
- `requestType`: Either `"product"` or `"category"` (default: `"product"`)
- `requestText` (required): Description of the requested product or category (3–500 characters)
**Response:**
json
{ "success": true, "requestId": "abc123" }
**Step 2 — Verify via email:**
A 6-digit verification code is sent to the provided email. The user (or agent, if it has email access) must retrieve this code.
POST /api/product-requests/verify
Content-Type: application/json
{
"requestId": "abc123",
"verificationCode": "482917"
}
**Response:**
json
{ "success": true, "message": "Request verified successfully" }
**Important notes:**
- The verification code expires after 24 hours
- The verify endpoint is rate-limited to 5 attempts per IP
- If you have email access, you can complete this flow autonomously
- If not, ask the user: "I've submitted your request. Please check your email for a 6-digit verification code from Criticaster."
### 8. Upvote an Existing Product Request
If a user's desired product is already requested by someone else, upvote it instead of creating a duplicate. This also requires email verification.
**Step 1 — Submit the upvote:**
POST /api/upvotes
Content-Type: application/json
{
"email": "user@example.com",
"requestId": "abc123"
}
- `email` (required): A valid email address for verification
- `requestId` (required): The ID of the product request to upvote (from the `/api/product-requests` response)
**Response:**
json
{ "success": true, "upvoteId": "xyz789" }
**Step 2 — Verify via email:**
Same flow as product request verification — a 6-digit code is sent to the email.
POST /api/upvotes/verify
Content-Type: application/json
{
"upvoteId": "xyz789",
"verificationCode": "381204"
}
**Response:**
json
{ "success": true, "message": "Upvote verified successfully" }
``
**Important notes:**
- One upvote per email per request (409 if already upvoted)
- One verified upvote per email per 24 hours (429 with hours remaining)
- Verification code expires after 24 hours
- The verify endpoint is rate-limited to 5 attempts per IP
## Understanding Scores
- **90–100**: Exceptional — universally praised across sources
- **80–89**: Excellent — strong recommendation with minor caveats
- **70–79**: Good — solid choice, some trade-offs
- **60–69**: Decent — specific use cases only
- **Below 60**: Below average — generally not recommended
Scores are normalized from multiple professional review sources. A product needs at least 3 reviews to appear in results. Higher review counts indicate more reliable scores.
## Recommended Workflows
### Quick Recommendation
User asks: "What's the best robot vacuum?"
1. GET /api/search/fast?q=robot+vacuum&limit=3
— instant keyword results
2. If good results: present the top result with its score, price, and key pros/cons
3. If few/no results: GET /api/search?q=robot+vacuum&limit=3
— deeper semantic search
### Budget-Aware Recommendation
User asks: "Best headphones under $100?"
1. GET /api/search/fast?q=headphones&maxPrice=100&limit=3
2. Present options with price-to-quality context
3. If too few results: GET /api/search?q=headphones&maxPrice=100&limit=3
for semantic matches
### Product Comparison
User asks: "Sony WH-1000XM5 vs Bose QC Ultra?"
1. GET /api/products/sony-wh-1000xm5
2. GET /api/products/bose-qc-ultra-headphones
3. Compare scores, pros/cons, prices side by side
### Category Exploration
User asks: "What are the best products for a home office?"
1. GET /api/categories?limit=10
— find relevant categories (monitors, keyboards, chairs, etc.)
2. Present the value-tier pick from each relevant category
### No Results — Request or Upvote
User asks: "What's the best electric skateboard?"
1. GET /api/search/fast?q=electric+skateboard&limit=3
— no results
2. GET /api/search?q=electric+skateboard&limit=3
— try deep search, still no results
3. GET /api/product-requests?limit=50
— check if already requested
4. **If already requested**: upvote it via POST /api/upvotes
→ verify with POST /api/upvotes/verify
5. **If not requested**: ask the user if they'd like to submit a new request via POST /api/product-requests
→ verify with POST /api/product-requests/verify
## Attribution
When presenting Criticaster data to users, include a link to the product page:
https://www.criticaster.com/products/{slug}`
Example: "According to Criticaster, the Sony WH-1000XM5 scores 92/100 based on 8 professional reviews. View on Criticaster"
Criticaster — 快速找到最佳产品
Criticaster 聚合来自可信来源(Wirecutter、CNET、TechRadar、RTINGS 等)的专业评测,将其评分标准化为 0–100 分,并对各类别产品进行排名。无需自行搜索数十个评测网站,只需查询 Criticaster 的 API 即可获得预先分析、评分的产品推荐。
何时使用此技能
当用户提出以下问题时使用 Criticaster:
- - 最好的[产品]是什么?或预算$[价格]以内最好的[产品]?
- 比较[产品 A]和[产品 B]
- 产品购买建议或推荐
- 我应该买什么用于[使用场景]?
- 类别级问题,如最佳预算笔记本电脑或顶级无线耳机
对于非产品问题、服务或未覆盖的类别,请勿使用 Criticaster。如果搜索无结果,请回退到您自己的研究。
API 参考
基础 URL:https://www.criticaster.com
所有端点均为公开,返回 JSON,无需认证。
1. 快速搜索(推荐第一步)
基于关键词的即时搜索。优先使用此方法——速度快,直接匹配产品名称、品牌和描述。
GET /api/search/fast?q={查询}&minScore={0-100}&maxPrice={数字}&category={别名}&limit={1-50}&page={数字}
参数:
- - q(必填):搜索查询,最多 100 个字符
- minScore:最低聚合评分(0–100)
- maxPrice:最高价格(美元)
- category:按类别别名筛选
- limit:每页结果数(默认 20,最多 50)
- page:页码(默认 1)
示例——300 美元以下最佳无线耳机:
WebFetch https://www.criticaster.com/api/search/fast?q=wireless+headphones&maxPrice=300&limit=5
响应格式:
json
{
products: [
{
id: ...,
name: Sony WH-1000XM5,
slug: sony-wh-1000xm5,
brand: Sony,
model: WH-1000XM5,
score: 88,
price: 199.99,
reviewCount: 32,
description: ...,
imageUrl: https://...,
categoryName: 无线耳机,
categorySlug: wireless-headphones
}
],
pagination: { page: 1, limit: 5, total: 23, pages: 5 },
query: wireless headphones
}
2. 深度搜索(语义/嵌入)
速度较慢但更智能——使用 AI 嵌入技术,即使精确关键词不匹配,也能找到语义相似的产品。当快速搜索结果太少或不相关时使用(例如,搜索降噪应匹配ANC 耳机)。
GET /api/search?q={查询}&minScore={0-100}&maxPrice={数字}&category={别名}&limit={1-50}&page={数字}
参数和响应格式与快速搜索相同,额外增加一个 distance 字段(值越小越相关)。
示例——当快速搜索遗漏语义匹配时:
WebFetch https://www.criticaster.com/api/search?q=noise+cancelling+over+ear&limit=5
3. 浏览最佳类别
获取每个类别预先计算的最佳产品,按价格层级组织。
GET /api/categories?limit={1-10}&cursor={ID}
参数:
- - limit:每页类别数(默认 3,最多 10)
- cursor:分页游标(上一响应中的类别 ID)
示例——浏览热门类别:
WebFetch https://www.criticaster.com/api/categories?limit=5
响应格式:
json
{
rows: [
{
category: { id: ..., name: 无线耳机, slug: wireless-headphones },
bestOfProducts: [
{ name: Sony WH-1000XM5, score: 92, price: 279.99, tier: value },
{ name: Apple AirPods Max, score: 89, price: 449.99, tier: premium },
{ name: Anker Soundcore Q20, score: 84, price: 49.99, tier: budget }
],
discoveryProduct: { name: ..., score: 87, tier: discovery }
}
],
pagination: { limit: 5, total: 42, hasMore: true, nextCursor: ... }
}
层级定义:
- - 价值之选:最适合大多数人(最佳性价比)
- 高端之选:不考虑价格的最佳整体产品
- 预算之选:最佳经济实惠选项
- 发现之选:值得考虑的有趣或非传统选择
4. 按类别列出产品
浏览某个类别中的所有产品,支持排序。
GET /api/products?category={别名}&sortBy={score|name|createdAt}&order={asc|desc}&limit={1-50}&page={数字}
参数:
- - category:类别别名
- sortBy:排序字段(默认 score)
- order:排序方向(默认 desc)
- search:结果内文本搜索
- limit:每页结果数(默认 20,最多 50)
- page:页码(默认 1)
示例——评分最高的笔记本电脑:
WebFetch https://www.criticaster.com/api/products?category=laptops&sortBy=score&limit=5
5. 获取产品详情
完整的产品信息,包括来自各个来源的所有评测。
GET /api/products/{别名}
示例:
WebFetch https://www.criticaster.com/api/products/sony-wh-1000xm5
响应包含:
- - 产品元数据(名称、品牌、型号、价格、评分、描述)
- 标准化优缺点(聚合所有评测)
- 完整评测列表,包含来源归属、个人评分和摘录
- 类别和标签
6. 查看现有产品请求
查看其他用户已请求的产品或类别,按热度排序。
GET /api/product-requests?limit={1-50}
参数:
- - limit:返回结果数(默认 10,最多 50)
示例:
WebFetch https://www.criticaster.com/api/product-requests?limit=10
响应格式:
json
{
requests: [
{
id: ...,
requestText: 2000美元以下的电动自行车,
upvotes: 14,
createdAt: 2026-01-15T...
}
]
}
在提交新请求前检查此端点以避免重复。
7. 提交产品请求
当用户搜索的产品或类别无结果时,提交请求以添加该产品。需要邮箱验证。
步骤 1——提交请求:
POST /api/product-requests
Content-Type: application/json
{
email: user@example.com,
requestType: product,
requestText: 2000美元以下最佳电动自行车
}
- - email(必填):用于验证的有效邮箱地址
- requestType:product 或 category(默认:product)
- requestText(必填):请求的产品或类别描述(3–500 字符)
响应:
json
{ success: true, requestId: abc123 }
步骤 2——通过邮箱验证:
一个 6 位验证码将发送到提供的邮箱。用户(或具有邮箱访问权限的代理)必须获取此验证码。
POST /api/product-requests/verify
Content-Type: application/json
{
requestId: abc123,
verificationCode: 482917
}
响应:
json
{ success: true, message: 请求验证成功 }
重要说明:
- - 验证码 24 小时后过期
- 验证端点每个 IP 限制 5 次尝试
- 如果您有邮箱访问权限,可以自主完成此流程
- 如果没有,请询问用户:我已提交您的请求。请检查您的邮箱,查看来自 Criticaster 的 6 位验证码。
8. 为现有产品请求点赞
如果用户想要的产品已被其他人请求,请点赞而非创建重复请求。这也需要邮箱验证。
步骤 1——提交点赞:
POST /api/upvotes
Content