/api/v1/tickers/logos/domainsBatch lookup of website domains and logo URLs for multiple tickers.
Batch lookup of website domains and logo URLs for multiple tickers. Returns a map of symbol → {domain, logo} for all found tickers.
Why use this
Common use case
Batch logo/domain lookup — accepts up to 200 comma-separated tickers and returns a map of symbol → { symbol, domain, logo }. The right entry point for: portfolio-table logo loading, watchlist row icons, search-result thumbnails on autocomplete dropdowns. One batch call replaces up to 200 individual /tickers/logos/domain/{symbol} calls (5-token vs 200-token cost). Unknown tickers are silently dropped from the domains map and surfaced in meta.missing[] so a single bad ticker doesn't fail the batch. For real-time post-autocomplete icon-loading on <50-ticker result sets, the per-call endpoint can be slightly cheaper if you only need one or two icons. Pair with GET /api/v1/tickers/autocomplete for the autocomplete-then-batch-load logos pattern.
Parameters
| Name | In | Required | Default | Allowed | Description | Example |
|---|---|---|---|---|---|---|
| symbols | query | required | — | — | Comma-separated ticker symbols (canonical hyphen form). Server normalizes each. Max 200 per call. For larger universes (full-watchlist >200) chunk client-side. Unknown tickers are silently dropped from the response (NOT 404'd) so a single bad ticker doesn't fail the batch. | AAPL,MSFT,NVDA,GOOGL |
Response schema
| Field | Type | Nullable | Description |
|---|---|---|---|
| domains | object | no | Map of `symbol` → `{ symbol, domain, logo }`. Empty object when no requested tickers are found. Order of keys matches the input `symbols` parameter (preserved server-side via ordered iteration). Missing tickers are NOT included in this map — see `meta.missing` for the explicit unfound list. |
| domains.{symbol} | object | no | Per-ticker logo entry. Always 3 sub-fields: `symbol` (canonical hyphen form), `domain` (company website e.g. `apple.com`), `logo` (Google S2 favicon URL at 128×128). For multi-class issuers, both BRK-A and BRK-B map to the same `berkshirehathaway.com` domain. |
| domains.{symbol}.symbol | string | no | Ticker in canonical hyphen form (echoed back per-row). |
| domains.{symbol}.domain | string | yes | Company website domain. May be a sibling domain (`abc.xyz` for GOOGL/Alphabet) when the parent corporate site differs from the consumer-facing brand. Null only for issuers in the curated map without a discoverable domain (rare). |
| domains.{symbol}.logo | string | yes | Google S2 favicon URL at 128×128 resolution. Null when `domain` is null. |
| meta | object | no | Response metadata: `{ requested: integer, found: integer, missing: array<string> }`. Useful for batch-completeness gauges and client-side fallback rendering for unmapped tickers. |
| meta.requested | integer | no | Count of tickers in the input `symbols` parameter (after server-side normalization + dedup). |
| meta.found | integer | no | Count of tickers that returned a domain. `found ≤ requested`; the difference is in `missing[]`. |
| meta.missing | array | no | Array of canonical-form tickers that had no domain mapping (unknown tickers OR known tickers without curated domain). Use for client-side fallback rendering (e.g. show generic placeholder icon). |
Sample response
- "domains":
- "AAPL":
- "MSFT":
- "NVDA":
- "GOOGL":
- "meta":
- "requested": 4
- "found": 4
- "missing": []
Errors
| Status | Label | Description |
|---|---|---|
| 200 | OK | Request succeeded. |
| 400 | Bad Request | Invalid query, body, or path parameter. |
| 401 | Unauthorized | Missing or invalid Authorization header / api_Token. |
| 402 | Payment Required | Insufficient token balance for this call. Top up |
| 429 | Too Many Requests | Rate limit exceeded for your tier (see /pricing for tier limits). Tier limits |
| 500 | Server Error | Unexpected server-side failure. Retry with backoff; report if persistent. |
Code samples
curl "https://api.finradar.ai/api/v1/tickers/logos/domains?api_Token=YOUR_API_KEY" \
-H "Authorization: Bearer YOUR_JWT_TOKEN"Generate an API key in /account/credentials to run live queries (literal YOUR_API_KEY placeholder shown until then).