Extract Products
Discover the products or services advertised on a domain’s homepage using AI. Returns structured product data via Anthropic tool-use, so the output schema is guaranteed.
Endpoint: GET /v1/brand/ai/products
Credits: 15 per request
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
domain | string | Yes | Domain to extract products from (e.g., linear.app) |
Response Schema
{
"data": {
"domain": "linear.app",
"products": [
{
"name": "Linear",
"description": "Plan and build products with modern project management.",
"category": "Project Management",
"url": "https://linear.app",
"pricing": { "tier": "Basic", "amount": "$8/user/month" }
},
{
"name": "Linear Asks",
"description": "AI-powered initiative tracking and status updates for your team.",
"category": "AI Productivity",
"url": "https://linear.app/asks",
"pricing": null
}
],
"usage": { "input_tokens": 3120, "output_tokens": 410 }
},
"_meta": { "timing": { "llm_ms": 2980, "total_ms": 4250 } }
}Code Examples
cURL
curl -X GET "https://api.orsa.dev/v1/brand/ai/products?domain=linear.app" \
-H "Authorization: Bearer YOUR_API_KEY"TypeScript
const { data } = await client.ai.products({
domain: 'linear.app',
});
console.log(data.products[0].name); // "Linear"
console.log(data.products[0].pricing?.amount); // "$8/user/month"Python
res = client.ai.products(domain="linear.app")
products = res["data"]["products"]
print(products[0]["name"]) # "Linear"
print(products[0]["pricing"]["amount"]) # "$8/user/month"Error Codes
| Code | Status | Description |
|---|---|---|
INPUT_VALIDATION_ERROR | 400 | Invalid or missing domain |
UNAUTHORIZED | 401 | Missing or invalid API key |
SERVICE_UNAVAILABLE | 503 | Anthropic key not configured or homepage fetch failed |
RATE_LIMITED | 429 | Rate limit exceeded |
USAGE_EXCEEDED | 402 | Insufficient credits |
Notes
- The model is invoked with Anthropic tool-use against a strict schema, so each product is guaranteed to have
name,description,category(nullable),url(nullable), andpricing(nullable object withtierandamount). pricingisnullfor products without public pricing (enterprise plans, contact sales, etc.).- Up to 50 products are returned. The model analyzes the homepage markdown only — it does not crawl pricing or product subpages.