GuidesGet StartedQuickstart

Quickstart

Get up and running with Orsa in under 2 minutes.

1. Get Your API Key

Sign up at orsa.dev/signup and create an API key from the dashboard.

2. Install the SDK

TypeScript / Node.js

npm install @orsa.dev/sdk
# or
bun add @orsa.dev/sdk
# or
pnpm add @orsa.dev/sdk

Requires Node ≥ 18 (native fetch). Ships ESM + CJS + TypeScript types.

Python

pip install orsa

3. Make Your First Request

Using cURL

curl -X GET "https://api.orsa.dev/v1/brand/retrieve?domain=stripe.com" \
  -H "Authorization: Bearer YOUR_API_KEY"

Using TypeScript

import Orsa from '@orsa.dev/sdk';
 
const client = new Orsa({ apiKey: process.env.ORSA_API_KEY! });
 
const brand = await client.brand.retrieve({ domain: 'stripe.com' });
 
console.log(brand.title);              // "Stripe"
console.log(brand.description);        // "Financial infrastructure for the internet..."
console.log(brand.colors[0]?.hex);     // "#635BFF"
console.log(brand.logos[0]?.url);      // logo URL
console.log(brand.socials);            // [{ type: "github", url: "https://github.com/stripe" }, ...]
console.log(brand.links.pricing);      // "https://stripe.com/pricing"

Methods return the unwrapped payload — no { data, _meta } wrapper to reach through.

Using Python

from orsa import Orsa
 
client = Orsa(api_key="YOUR_API_KEY")
 
brand = client.brand.retrieve(domain="stripe.com")
 
print(brand.title)         # "Stripe"
print(brand.description)
print(brand.colors)

4. Try More Endpoints

Scrape a page

mode defaults to markdown. Pass 'html' or 'text' for those.

const page = await client.web.scrape({
  url: 'https://stripe.com/pricing',
});
console.log(page.markdown); // Clean markdown content
 
const raw = await client.web.scrape({
  url: 'https://stripe.com/pricing',
  mode: 'html',
});
console.log(raw.html);

AI-powered data extraction

result is a string. Ask for JSON explicitly if you want structured data.

const ans = await client.ai.query({
  domain: 'stripe.com',
  dataToExtract: 'Return the pricing plans as a JSON array.',
});
console.log(ans.result);
console.log(ans.usage.input_tokens);

Screenshot

import { writeFileSync } from 'node:fs';
 
const shot = await client.brand.screenshot({ domain: 'stripe.com' });
writeFileSync('stripe.png', Buffer.from(shot.image_base64, 'base64'));

The screenshot is returned inline as base64. Custom viewports, full-page captures, and dark mode are not currently supported — the route renders the homepage at desktop resolution.

Next Steps