API ReferenceAIExtract Products

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

ParameterTypeRequiredDescription
domainstringYesDomain 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

CodeStatusDescription
INPUT_VALIDATION_ERROR400Invalid or missing domain
UNAUTHORIZED401Missing or invalid API key
SERVICE_UNAVAILABLE503Anthropic key not configured or homepage fetch failed
RATE_LIMITED429Rate limit exceeded
USAGE_EXCEEDED402Insufficient 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), and pricing (nullable object with tier and amount).
  • pricing is null for 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.