> ## Documentation Index
> Fetch the complete documentation index at: https://docs.context.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Retrieve brands by ticker

> Resolve a public company from a stock ticker and add an exchange hint when the symbol is ambiguous.

Use `by_ticker` when a financial or market-data workflow starts with a public ticker symbol. The returned profile uses the shared Brand shape and can include a `stock` object.

## Send a ticker

```bash theme={null}
export CONTEXT_DEV_API_KEY="ctxt_secret_..."
```

<CodeGroup>
  ```bash cURL theme={null}
  curl https://api.context.dev/v1/brand/retrieve \
    --request POST \
    --header "Authorization: Bearer $CONTEXT_DEV_API_KEY" \
    --header "Content-Type: application/json" \
    --data '{
      "type": "by_ticker",
      "ticker": "AAPL",
      "ticker_exchange": "NASDAQ"
    }'
  ```

  ```typescript TypeScript theme={null}
  import ContextDev from "context.dev";

  const client = new ContextDev({
    apiKey: process.env.CONTEXT_DEV_API_KEY,
  });

  const response = await client.brand.retrieve({
    type: "by_ticker",
    ticker: "AAPL",
    ticker_exchange: "NASDAQ",
  });

  console.log(response.brand?.domain, response.brand?.stock);
  ```

  ```python Python theme={null}
  import os
  from context.dev import ContextDev

  client = ContextDev(api_key=os.environ["CONTEXT_DEV_API_KEY"])

  response = client.brand.retrieve(
      type="by_ticker",
      ticker="AAPL",
      ticker_exchange="NASDAQ",
  )

  print(response.brand.domain if response.brand else None)
  ```

  ```ruby Ruby theme={null}
  require "cgi/core"
  require "context_dev"

  client = ContextDev::Client.new(
    api_key: ENV.fetch("CONTEXT_DEV_API_KEY")
  )

  response = client.brand.retrieve(
    body: {
      type: :by_ticker,
      ticker: "AAPL",
      ticker_exchange: "NASDAQ",
    }
  )

  puts response.brand&.domain
  ```

  ```go Go theme={null}
  package main

  import (
      "context"
      "fmt"
      "os"

      contextdev "github.com/context-dot-dev/context-go-sdk/v2"
      "github.com/context-dot-dev/context-go-sdk/v2/option"
  )

  func main() {
      client := contextdev.NewClient(
          option.WithAPIKey(os.Getenv("CONTEXT_DEV_API_KEY")),
      )

      response, err := client.Brand.Get(
          context.Background(),
          contextdev.BrandGetParams{
              OfByTicker: &contextdev.BrandGetParamsBodyByTicker{
                  Ticker: "AAPL",
                  TickerExchange: contextdev.String("NASDAQ"),
              },
          },
      )
      if err != nil {
          panic(err)
      }

      fmt.Println(response.Brand.Domain)
  }
  ```

  ```php PHP theme={null}
  <?php

  require __DIR__.'/vendor/autoload.php';

  use ContextDev\Client;

  $client = new Client(apiKey: getenv('CONTEXT_DEV_API_KEY'));

  // Use the SDK's low-level request method until the Brand helper is fixed.
  $raw = $client->request(
      method: 'post',
      path: 'brand/retrieve',
      body: [
          'type' => 'by_ticker',
          'ticker' => 'AAPL',
          'ticker_exchange' => 'NASDAQ',
      ],
  );

  $response = json_decode((string) $raw->getBody(), true, flags: JSON_THROW_ON_ERROR);
  echo $response['brand']['domain'] ?? 'No brand found', PHP_EOL;
  ```
</CodeGroup>

<Note>
  The PHP tab uses the SDK's low-level request method because the `2.14.0` Brand helper requires conflicting lookup fields. See the [PHP guide](/sdks/php) for details.
</Note>

Ticker values can contain letters, numbers, and periods and are limited to 15 characters. The endpoint costs 10 credits.

## Avoid ambiguous symbols

The contract defaults to NASDAQ when `ticker_exchange` is omitted. Send the exchange whenever your source data includes it, especially for symbols reused across markets.

After a match, compare the returned `brand.stock.ticker`, `brand.stock.exchange`, company title, and domain with your source record. Do not treat the symbol alone as a globally unique company identifier.

## Production behavior

* Treat an unrecognized or delisted symbol as a normal no-match.
* Persist the exchange with the ticker in your own model.
* Keep a review path for corporate actions that change a company's name, domain, or symbol.
* `maxSpeed`, `force_language`, `maxAgeMs`, `timeoutMS`, and tags are available on this lookup.

## Next steps

<CardGroup cols={2}>
  <Card title="Retrieve brand data" icon="palette" href="/guides/get-brand-data">
    Understand the shared brand response model.
  </Card>

  <Card title="Brand API reference" icon="code" href="/api-reference/brand-intelligence/brand">
    Review every supported request and response field.
  </Card>
</CardGroup>
