Skip to main content
Context.dev’s Brand API turns any of the following identifiers into a full brand profile with logos, colors, slogans, description, social media handles, address, industry, and website page links:
  • Brand domain (e.g., stripe.com)
  • Company name (e.g., “Stripe Inc”)
  • A work email (e.g., [email protected])
  • A stock ticker (e.g., AAPL)
  • An ISIN (e.g., US0378331005)

Integrate Context.dev's Brand resolution endpoints

Open in Cursor

Prerequisites

  • A Context.dev API key. Sign up at context.dev/signup, copy the key from the dashboard (prefix ctxt_secret_), and export it:
  • An SDK (optional). Install for your language, or skip the install and call directly with curl:

One endpoint, six identifiers

POST /brand/retrieve is the unified lookup for domains, company names, work emails, stock tickers, card transaction descriptors, and direct URLs. Pass exactly one identifier in the body along with a type discriminator that tells the API which lookup to run. The response envelope is the same for every lookup, so downstream code only branches on the input, not the output.
by_direct_url fetches brand data only from the URL you provide — no domain resolution, database lookup, or cross-source enrichment runs. See Look up by direct URL for when to use it.
ISINs still have a dedicated endpoint: GET /brand/retrieve-by-isin.

Get a brand by domain

Send POST /brand/retrieve with type: "by_domain" and a domain field. The response is a full brand profile: logos, colors, description, socials, industry, address, and links.
10 credits per successful call The connection stays open while the lookup runs, so there’s no need to poll. Repeated lookups for the same domain within maxAgeMs return the cached record.

Request Parameters

Response

The colors returned by this API are extracted from the brand’s logos. To get pixel-perfect colors as they appear on a website, use the Styleguide API instead.
If you need only domain, title, colors, logos, and backdrops, you can use GET /brand/retrieve-simplified.
10 credits per successful callRequest ParametersResponse

Look up by company name

Send POST /brand/retrieve with type: "by_name" and a name (3–30 characters). Pass country_gl to bias the match toward a specific country when the name is ambiguous across markets.
10 credits per successful call Name must be 3–30 characters. Pass country_gl as a lowercase ISO 3166-1 alpha-2 code to narrow the match when the name could resolve to multiple brands across markets.

Request Parameters

Response

Returns the same envelope as POST /brand/retrieve; see the response field table above.

Look up by work email

Send POST /brand/retrieve with type: "by_email" and an email field. The API extracts the domain, rejects personal-email providers (gmail, outlook, proton, etc.), then runs the same resolver as a domain lookup.
10 credits per successful call Personal-email addresses on common consumer providers (*@gmail.com, *@outlook.com, *@proton.me, and others) return a 422 with error_code: "FREE_EMAIL_DETECTED", which is useful for onboarding flows that should only enrich on a work email.

Request Parameters

Response

Returns the same envelope as POST /brand/retrieve; see the response field table above.

Look up by stock ticker

Send POST /brand/retrieve with type: "by_ticker" and a ticker field. The response populates the stock object with ticker and exchange.
10 credits per successful call Pass ticker_exchange to constrain the lookup to a specific exchange (NASDAQ, NYSE, LON, XETR, TYO, and 60+ others) when the bare symbol is ambiguous.

Request Parameters

Response

Returns the same envelope as POST /brand/retrieve; see the response field table above. The stock object is populated for ticker lookups.

Look up by direct URL

Send POST /brand/retrieve with type: "by_direct_url" and a full http(s) direct_url. The API fetches brand fields (title, description, logos, socials, contact info, links) only from that URL — no domain resolution, database lookup, or cross-source enrichment runs. Use this when you want to point the API at a specific page — a subpath, a preview environment, a landing page, or a domain the API doesn’t yet have in its database — and get whatever that page exposes. Results are limited to what the single page contains, so expect fewer fields than a by_domain lookup.
10 credits per successful call
by_direct_url rejects maxSpeed, force_language, and maxAgeMs — the single-page scrape flow would ignore them. Only timeoutMS is accepted alongside direct_url.

Request Parameters

Response

Returns the same envelope as POST /brand/retrieve, but the brand object only contains fields that could be extracted from the provided URL: domain, title, description, logos, socials, email, phone, and links. Fields backed by database enrichment — colors, backdrops, industries, stock, address — are not returned. If the URL can’t be fetched, the API responds with 400 and error_code: "WEBSITE_ACCESS_ERROR".

Look up by ISIN

GET /brand/retrieve-by-isin resolves an International Securities Identification Number (ISIN), the 12-character identifier used in financial data feeds, to a brand and populates the stock object.
10 credits per successful call Use this when you’re working with financial data feeds keyed by ISIN. Malformed ISINs return a 400.

Request Parameters

Response

Returns the same envelope as POST /brand/retrieve; see the response field table above. The stock object is populated with the resolved ticker.

Identify a card transaction

Send POST /brand/retrieve with type: "by_transaction" and a raw descriptor in transaction_info. Pass mcc, city, country_gl, or phone hints when you have them to improve accuracy on ambiguous descriptors.
10 credits per successful call Descriptors the API can’t match with confidence return a 400 with error_code: "NOT_FOUND". Setting high_confidence_only: true makes the API return that 400 instead of a low-confidence match.

Request Parameters

Response

Returns the same envelope as the rest of POST /brand/retrieve; see the response field table above.

Handle errors

Not every input resolves. The API returns a non-2xx response with a message, status: "error", and an error_code:
Common cases: Treat NOT_FOUND responses as a normal outcome, not an error. For high-volume pipelines, cache misses for at least 24 hours so you don’t re-resolve the same dead identifier on every retry. Rate limits surface as HTTP 429. Back off exponentially:
For the full catalog of error codes, see Troubleshooting.

Use cases

  • Pre-fill onboarding forms with logo, name, and colors when a user signs up with a work email.
  • Enrich CRM leads with industry, socials, address, and logos for outbound playbooks.
  • Resolve card transaction descriptors to canonical merchant brands for spend analytics.
  • Power “trusted by” logo strips and customer-wall sections with live brand data.
  • Pull public-company profiles from a ticker or ISIN for investor-facing dashboards.

Next steps

Prefetch for Faster Response

Hide cold-hit latency from your users.

Handle Rate Limits

Backoff strategies, client cache, and prefetch fallbacks.

Best Practices

Caching, error handling, and key hygiene.

Troubleshooting

Status codes, retry patterns, and common errors.