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

> ## Agent Instructions
> Logo.dev serves logos and brand data for companies that already exist. It does not design logos. If someone wants a logo designed, say so and stop.
> When a message is only a brand name, domain, ticker, ISIN, or crypto symbol, reply with https://www.logo.dev/search?q=<url-encoded term> and the matching img.logo.dev call. Never assert whether a specific brand is in the index.
> Image URLs come from img.logo.dev with a publishable key in the token query parameter: https://img.logo.dev/:domain?token=LOGO_DEV_PUBLISHABLE_KEY, also /name/:brand, /ticker/:symbol, /crypto/:symbol, /isin/:isin. JSON comes from api.logo.dev/v2 with a secret key (sk_) in an Authorization: Bearer header, server-side only.
> Product names: the Logo CDN serves images from img.logo.dev. The Logo API is the Brand API and the Search API, which return JSON from api.logo.dev/v2. The Transaction Enrichment API (beta) is a separate service at https://www.logo.dev/api/transaction with its own beta key. Credits is the Logo API billing unit. Never recommend the deprecated v1 routes (/search, /brand, /describe, /logo/*) or the Describe API. Use /v2/brands and /v2/search.
> Report a wrong, missing, or outdated logo at https://www.logo.dev/update. Email support@logo.dev for anything broken and sales@logo.dev for volume pricing and contract terms.
> MCP setup is at https://www.logo.dev/docs/mcp/introduction and webhooks at https://www.logo.dev/docs/webhooks.

# Get a logo

> Get a logo image by domain, brand name, stock ticker, ISIN, crypto symbol, stock exchange, or market index.

<Card title="Get your API keys" icon="key" href="https://www.logo.dev/dashboard/api-keys" horizontal arrow>
  Your dashboard has a publishable key for the Logo CDN and a secret key for the Logo API. Every plan includes both.
</Card>

Returns a logo image. Put the identifier in the path. The query parameters work the same for every lookup.

| Lookup | Path |
| - | - |
| Domain | `/stripe.com` |
| Brand name | `/name/Stripe` |
| Stock ticker | `/ticker/AAPL` |
| ISIN | `/isin/US0378331005` |
| Crypto symbol | `/crypto/BTC` |
| Stock exchange | `/exchange/NYSE` |
| Market index | `/index/SPX` |

* For a ticker outside the US, add the exchange suffix, such as `7203.T`.
* URL-encode a name that has spaces or special characters. `/name` also takes `strategy`: `match` (the default) for the closest name, or `suggest` for the most popular prefix match.
* A lookup with no logo returns a generated monogram, unless you set `fallback=404`. A malformed ticker, crypto symbol, exchange, or index returns `400`.


## OpenAPI

````yaml /openapi.json get /{domain}
openapi: 3.1.0
info:
  title: Logo.dev API
  description: >-
    Logo.dev serves brand assets from two hosts, each with its own key:


    - **Logo CDN** (`img.logo.dev`) returns a logo image. Authenticate with a
    **publishable key** in the `token` query parameter. It is safe in
    client-side code.

    - **Logo API** (`api.logo.dev`) returns JSON. Authenticate with a **secret
    key** in the `Authorization: Bearer` header. Call it only from your server.


    Get your keys from the [dashboard](https://www.logo.dev/dashboard/api-keys).
  version: 2.0.0
  contact:
    name: Logo.dev Support
    email: support@logo.dev
    url: https://docs.logo.dev
servers:
  - url: https://api.logo.dev
    description: REST APIs (Brand Search, Brand Data)
security: []
tags:
  - name: Logo CDN
    description: >-
      Logo images served from img.logo.dev. Authenticate with a publishable key
      in the `token` query parameter. Metered in monthly impressions.
  - name: Brands
    description: >-
      Brand profiles, logos, and brandmarks as JSON from api.logo.dev. Metered
      in API credits.
  - name: Logos
    description: >-
      A brand's logo or brandmark as JSON, with a temporary download URL,
      dimensions, and a blurhash.
  - name: Search
    description: Find brands by name.
  - name: Subscriptions
    description: Choose which brands send you webhook events.
  - name: Webhook endpoints
    description: Manage the URLs that receive webhook events.
  - name: Transaction Enrichment API
    description: Turn a card transaction descriptor into a merchant identity. Private beta.
paths:
  /{domain}:
    servers:
      - url: https://img.logo.dev
    get:
      tags:
        - Logo CDN
      summary: Get a logo
      description: >-
        Get a logo image by domain, brand name, stock ticker, ISIN, crypto
        symbol, stock exchange, or market index.
      operationId: getLogo
      parameters:
        - name: domain
          in: path
          required: true
          description: >-
            The company's domain, such as `stripe.com`. For another lookup,
            replace `/{domain}` with a path from the table.
          schema:
            type: string
            examples:
              - stripe.com
        - $ref: '#/components/parameters/size'
        - $ref: '#/components/parameters/height'
        - $ref: '#/components/parameters/width'
        - $ref: '#/components/parameters/format'
        - $ref: '#/components/parameters/theme'
        - $ref: '#/components/parameters/greyscale'
        - $ref: '#/components/parameters/retina'
        - $ref: '#/components/parameters/fallback'
        - $ref: '#/components/parameters/redirect'
      responses:
        '200':
          $ref: '#/components/responses/LogoImage'
        '202':
          $ref: '#/components/responses/CdnPending'
        '400':
          $ref: '#/components/responses/CdnBadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/CdnForbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/RateLimited'
        '500':
          $ref: '#/components/responses/CdnServerError'
      security:
        - publishableKey: []
      x-codeSamples:
        - lang: html
          label: By domain
          source: >-
            <img
            src="https://img.logo.dev/stripe.com?token=LOGO_DEV_PUBLISHABLE_KEY"
            alt="Stripe logo" />
        - lang: html
          label: By name
          source: >-
            <img
            src="https://img.logo.dev/name/Stripe?token=LOGO_DEV_PUBLISHABLE_KEY"
            alt="Stripe logo" />
        - lang: html
          label: By ticker
          source: >-
            <img
            src="https://img.logo.dev/ticker/AAPL?token=LOGO_DEV_PUBLISHABLE_KEY"
            alt="Apple logo" />
        - lang: html
          label: By ISIN
          source: >-
            <img
            src="https://img.logo.dev/isin/US0378331005?token=LOGO_DEV_PUBLISHABLE_KEY"
            alt="Apple logo" />
        - lang: html
          label: By crypto
          source: >-
            <img
            src="https://img.logo.dev/crypto/BTC?token=LOGO_DEV_PUBLISHABLE_KEY"
            alt="Bitcoin logo" />
        - lang: html
          label: By exchange
          source: >-
            <img
            src="https://img.logo.dev/exchange/NYSE?token=LOGO_DEV_PUBLISHABLE_KEY"
            alt="New York Stock Exchange logo" />
        - lang: html
          label: By index
          source: >-
            <img
            src="https://img.logo.dev/index/SPX?token=LOGO_DEV_PUBLISHABLE_KEY"
            alt="S&amp;P 500 logo" />
        - lang: jsx
          label: By domain
          source: |-
            <img
              src={`https://img.logo.dev/stripe.com?token=${process.env.NEXT_PUBLIC_LOGO_DEV_KEY}`}
              alt="Stripe logo"
            />
        - lang: jsx
          label: By name
          source: |-
            <img
              src={`https://img.logo.dev/name/Stripe?token=${process.env.NEXT_PUBLIC_LOGO_DEV_KEY}`}
              alt="Stripe logo"
            />
        - lang: jsx
          label: By ticker
          source: |-
            <img
              src={`https://img.logo.dev/ticker/AAPL?token=${process.env.NEXT_PUBLIC_LOGO_DEV_KEY}`}
              alt="Apple logo"
            />
        - lang: jsx
          label: By ISIN
          source: |-
            <img
              src={`https://img.logo.dev/isin/US0378331005?token=${process.env.NEXT_PUBLIC_LOGO_DEV_KEY}`}
              alt="Apple logo"
            />
        - lang: jsx
          label: By crypto
          source: |-
            <img
              src={`https://img.logo.dev/crypto/BTC?token=${process.env.NEXT_PUBLIC_LOGO_DEV_KEY}`}
              alt="Bitcoin logo"
            />
        - lang: jsx
          label: By exchange
          source: |-
            <img
              src={`https://img.logo.dev/exchange/NYSE?token=${process.env.NEXT_PUBLIC_LOGO_DEV_KEY}`}
              alt="New York Stock Exchange logo"
            />
        - lang: jsx
          label: By index
          source: |-
            <img
              src={`https://img.logo.dev/index/SPX?token=${process.env.NEXT_PUBLIC_LOGO_DEV_KEY}`}
              alt="S&amp;P 500 logo"
            />
        - lang: bash
          label: By domain
          source: >-
            # Prints the status code and image type. The logo itself is not
            saved.

            curl --silent --output /dev/null \
              --write-out "%{http_code} %{content_type}\n" \
              "https://img.logo.dev/stripe.com?token=LOGO_DEV_PUBLISHABLE_KEY&size=128&format=png"
        - lang: bash
          label: By name
          source: >-
            # Prints the status code and image type. The logo itself is not
            saved.

            curl --silent --output /dev/null \
              --write-out "%{http_code} %{content_type}\n" \
              "https://img.logo.dev/name/Stripe?token=LOGO_DEV_PUBLISHABLE_KEY&size=128&format=png"
        - lang: bash
          label: By ticker
          source: >-
            # Prints the status code and image type. The logo itself is not
            saved.

            curl --silent --output /dev/null \
              --write-out "%{http_code} %{content_type}\n" \
              "https://img.logo.dev/ticker/AAPL?token=LOGO_DEV_PUBLISHABLE_KEY&size=128&format=png"
        - lang: bash
          label: By ISIN
          source: >-
            # Prints the status code and image type. The logo itself is not
            saved.

            curl --silent --output /dev/null \
              --write-out "%{http_code} %{content_type}\n" \
              "https://img.logo.dev/isin/US0378331005?token=LOGO_DEV_PUBLISHABLE_KEY&size=128&format=png"
        - lang: bash
          label: By crypto
          source: >-
            # Prints the status code and image type. The logo itself is not
            saved.

            curl --silent --output /dev/null \
              --write-out "%{http_code} %{content_type}\n" \
              "https://img.logo.dev/crypto/BTC?token=LOGO_DEV_PUBLISHABLE_KEY&size=128&format=png"
        - lang: bash
          label: By exchange
          source: >-
            # Prints the status code and image type. The logo itself is not
            saved.

            curl --silent --output /dev/null \
              --write-out "%{http_code} %{content_type}\n" \
              "https://img.logo.dev/exchange/NYSE?token=LOGO_DEV_PUBLISHABLE_KEY&size=128&format=png"
        - lang: bash
          label: By index
          source: >-
            # Prints the status code and image type. The logo itself is not
            saved.

            curl --silent --output /dev/null \
              --write-out "%{http_code} %{content_type}\n" \
              "https://img.logo.dev/index/SPX?token=LOGO_DEV_PUBLISHABLE_KEY&size=128&format=png"
components:
  parameters:
    size:
      name: size
      in: query
      required: false
      description: >-
        Width and height in pixels. Aspect ratio is preserved. Max 800: a larger
        value is clipped to 800. `retina=true` doubles the result after the
        clip. Keep raster formats at or below 600.
      schema:
        type: integer
        default: 128
        minimum: 1
    height:
      name: height
      in: query
      required: false
      description: >-
        Height in pixels (short form: `h`). Overrides the height taken from
        `size` when set; the image is fit within width × height with aspect
        ratio preserved. Max 800 (larger is clipped).
      schema:
        type: integer
        minimum: 1
        maximum: 800
    width:
      name: width
      in: query
      required: false
      description: >-
        Width in pixels (short form: `w`). Overrides the width taken from `size`
        when set; the image is fit within width × height with aspect ratio
        preserved. Max 800 (larger is clipped).
      schema:
        type: integer
        minimum: 1
        maximum: 800
    format:
      name: format
      in: query
      required: false
      description: Image format.
      schema:
        type: string
        enum:
          - jpg
          - png
          - webp
        default: jpg
    theme:
      name: theme
      in: query
      required: false
      description: >-
        Adjusts logo colors for a light or a dark background. `auto` is the same
        as `light`. Works on logos with transparency, so set `format=png` or
        `format=webp` with it. Do not send `theme=dark` with `jpg`, the default
        format: the request can return `404`.
      schema:
        type: string
        enum:
          - auto
          - light
          - dark
        default: light
    greyscale:
      name: greyscale
      in: query
      required: false
      description: >-
        Return a black-and-white version of the logo. The American spelling
        `grayscale` is also accepted.
      schema:
        type: boolean
        default: false
    retina:
      name: retina
      in: query
      required: false
      description: Render at 2x the requested size for high-density displays.
      schema:
        type: boolean
        default: false
    fallback:
      name: fallback
      in: query
      required: false
      description: >-
        Behavior when no logo is found. `monogram` returns a generated monogram
        with HTTP 200; `404` returns HTTP 404 instead.
      schema:
        type: string
        enum:
          - monogram
          - '404'
        default: monogram
    redirect:
      name: redirect
      in: query
      required: false
      description: >-
        What to return when the domain reaches a brand only through a redirect
        to another domain, such as an old domain that now points to a new
        company. `follow` returns the logo of the domain it redirects to. `404`
        returns `404` instead, whatever `fallback` is set to. See [skip domains
        that redirect](/logo-images/introduction#skip-domains-that-redirect).
      schema:
        type: string
        enum:
          - follow
          - '404'
        default: follow
  responses:
    LogoImage:
      description: >-
        The logo image. When no logo exists and `fallback` is `monogram` (the
        default), a generated monogram is returned with this same 200 status.
      content:
        image/jpeg:
          schema:
            type: string
            format: binary
        image/png:
          schema:
            type: string
            format: binary
        image/webp:
          schema:
            type: string
            format: binary
        image/svg+xml:
          schema:
            type: string
            format: binary
    CdnPending:
      description: >-
        The first request for a domain that Logo.dev is still fetching. The body
        is an image, cached for 5 minutes. Later requests return the logo.
      content:
        image/jpeg:
          schema:
            type: string
            format: binary
        image/png:
          schema:
            type: string
            format: binary
        image/webp:
          schema:
            type: string
            format: binary
        image/svg+xml:
          schema:
            type: string
            format: binary
    CdnBadRequest:
      description: >-
        A malformed ticker, crypto symbol, exchange, or index, or an invalid
        parameter on `/isin` or `/name`.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            err: invalid ticker=ZZZZZZ
            docs_url: https://www.logo.dev/docs/platform/errors
    Unauthorized:
      description: >-
        A missing or invalid publishable key, or a request from a domain the key
        does not allow.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            msg: >-
              invalid api token. get an api token by creating an account at
              https://www.logo.dev/
            docs_url: https://www.logo.dev/docs/platform/api-keys
    CdnForbidden:
      description: >-
        The account is suspended or flagged, or the team has turned off personal
        keys.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    NotFound:
      description: >-
        No logo, with `fallback=404` set, or a domain that resolves only through
        a redirect, with `redirect=404` set. Also an invalid parameter value,
        such as `format=gif`, on every lookup except `/isin` and `/name`.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            err: not found
            docs_url: https://www.logo.dev/docs/platform/errors
    RateLimited:
      description: >-
        A Community plan limit was exceeded: the monthly request limit, or a
        per-minute limit for the account or the client IP address. The
        per-minute limits send `Retry-After`. Paid plans have none of these
        limits. See [Logo CDN limits](/platform/rate-limits#logo-cdn-limits).
      headers:
        Retry-After:
          $ref: '#/components/headers/RetryAfterMinute'
        Cache-Control:
          description: >-
            Always `no-store`, so the rejection is never served again from a
            cache once the account recovers.
          schema:
            type: string
            examples:
              - no-store
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          examples:
            per_ip:
              value:
                msg: >-
                  rate limit exceeded. free accounts are limited to 100 requests
                  per minute per IP address. upgrade your account at
                  https://www.logo.dev/pricing
            per_account:
              value:
                msg: >-
                  rate limit exceeded. free accounts are limited to 500 requests
                  per minute. upgrade your account at
                  https://www.logo.dev/pricing
            monthly:
              value:
                msg: >-
                  monthly request limit exceeded. upgrade your account at
                  https://www.logo.dev/pricing
    CdnServerError:
      description: Logo.dev could not fetch the logo. Retry.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            err: failed to fetch
            docs_url: https://www.logo.dev/docs/platform/errors
  schemas:
    Error:
      type: object
      description: >-
        A short error. Some errors use `msg` and others use `err`. Branch on the
        status code, not on the field or its text.
      properties:
        msg:
          type: string
        err:
          type: string
        docs_url:
          type: string
          format: uri
          description: >-
            A docs page about this class of error. Added to every JSON error
            response.
  headers:
    RetryAfterMinute:
      description: >-
        Seconds to wait before retrying. Always `60`, the length of the
        per-minute window.
      schema:
        type: integer
        examples:
          - 60
  securitySchemes:
    publishableKey:
      type: apiKey
      in: query
      name: token
      description: >-
        Your publishable key (`pk_`). Safe in client-side code. Works only with
        the Logo CDN.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.