Retrieve Brand by Domain
Get comprehensive brand data from any domain — title, description, logos, colors, socials, industries, page links, and more.
The response uses the Context.dev-compatible shape: colors and logos are arrays of objects, socials is an array, and links is a named-slot dict. Legacy dict-shaped fields (colors_legacy, logos_legacy, socialLinks, pageLinks) are preserved alongside for SDKs that pre-date the change.
Endpoint: GET /v1/brand/retrieve
Credits: 10 per request (0 if cached)
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
domain | string | Yes | Domain to look up (e.g., stripe.com) |
refresh | boolean | No | Force fresh fetch, bypassing cache (default: false) |
Response Schema
All /v1 responses use a { data, _meta } envelope. _meta.cache reports cache state and _meta.timing reports server-side timing.
{
"data": {
"id": "...",
"domain": "stripe.com",
"title": "Stripe",
"description": "Financial infrastructure for the internet.",
"slogan": null,
"primary_language": "en",
"is_nsfw": false,
"colors": [
{ "hex": "#635BFF", "name": "Iris" }
],
"logos": [
{ "url": "https://stripe.com/img/v3/home/social.png", "type": "logo" },
{ "url": "https://stripe.com/favicon.ico", "type": "icon" }
],
"socials": [
{ "type": "twitter", "url": "https://twitter.com/stripe" },
{ "type": "linkedin", "url": "https://linkedin.com/company/stripe" }
],
"links": {
"careers": "https://stripe.com/jobs",
"terms": "https://stripe.com/legal",
"contact": "https://stripe.com/contact",
"pricing": "https://stripe.com/pricing"
},
"industries": ["Financial Technology"],
"address": null,
"phone": null,
"email": null,
"context": { "...": "LiveContact-shaped extraction payload" },
"dataSources": { "...": "per-field provenance" },
"confidenceScore": 0.92,
"colors_legacy": { "primary": "#635BFF" },
"logos_legacy": { "primary": "https://stripe.com/img/v3/home/social.png", "favicon": "https://stripe.com/favicon.ico" },
"socialLinks": { "twitter": "https://twitter.com/stripe", "linkedin": "https://linkedin.com/company/stripe" },
"pageLinks": { "pricing": "https://stripe.com/pricing", "careers": "https://stripe.com/jobs" }
},
"_meta": {
"cache": { "hit": false, "ttl_remaining_s": 86400 },
"timing": { "total_ms": 412 }
}
}Code Examples
cURL
curl -X GET "https://api.orsa.dev/v1/brand/retrieve?domain=stripe.com" \
-H "Authorization: Bearer YOUR_API_KEY"TypeScript
const { data: brand } = await client.brand.retrieve({
domain: 'stripe.com',
});
console.log(brand.title); // "Stripe"
console.log(brand.colors[0].hex); // "#635BFF"
console.log(brand.colors[0].name); // "Iris"
console.log(brand.logos[0].url); // logo URL
const twitter = brand.socials.find(s => s.type === 'twitter');Python
res = client.brand.retrieve(domain="stripe.com")
brand = res["data"]
print(brand["title"]) # "Stripe"
print(brand["colors"][0]["hex"]) # "#635BFF"
print(brand["logos"][0]["url"])
twitter = next((s for s in brand["socials"] if s["type"] == "twitter"), None)Notes
- Cached responses return instantly and cost 0 credits. Cache TTL is 24 hours.
- Use
refresh=trueto force a fresh browser fetch (useful if a company rebranded). - On a cache miss the server runs a lightweight inline extract and queues a deeper background refresh — the next call lands warm.
- The legacy dict-shaped fields (
colors_legacy,logos_legacy,socialLinks,pageLinks) are preserved so older SDK versions that readcolors.primaryorlogos.faviconkeep working. New code should usecolors[],logos[],socials[], andlinksinstead.