Every API here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for apis
7 MCP tools reach this
find_apisBrowse and filter every API in the catalog.
get_api_artifactsOne API's artifacts, grouped by type.
get_openapiThe primary OpenAPI for this API.
find_similar_apisAPIs that look like this one.
apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
resolveTurn a domain, URL or GitHub org into the provider it belongs to.
find_cohortsEvery scored population of providers in the catalog.
All 92 tools →
Call it yourself
curl for this page
This API
curl "https://apis.io/api/v1/apis/logo-dev:logo-dev-logo-cdn-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"
Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we
store it to create your key and to recognise you if you sign in with another
provider. See our Privacy Policy and
Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: Logo.dev Logo CDN API
description: 'Logo.dev serves brand assets from two hosts, each with its own key:
- **Logo.dev 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.dev 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.'
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)
tags:
- name: Logo CDN
description: Logo images served from img.logo.dev. Authenticate with a publishable key in the `token` query parameter. Metered in CDN requests.
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
security:
- publishableKey: []
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'
x-mint:
metadata:
description: Get a logo image by domain, brand name, stock ticker, ISIN, crypto symbol, stock exchange, or market index.
content: "<Card title=\"Get your API keys\" icon=\"key\" href=\"https://www.logo.dev/dashboard/api-keys\" horizontal arrow>\n Your dashboard has a publishable key for the Logo.dev CDN and a secret key for the Logo.dev API. Every plan includes both.\n</Card>\n\nReturns a logo image. Put the identifier in the path. The query parameters work the same for every lookup.\n\n| Lookup | Path |\n| --- | --- |\n| Domain | `/stripe.com` |\n| Brand name | `/name/Stripe` |\n| Stock ticker | `/ticker/AAPL` |\n| ISIN | `/isin/US0378331005` |\n| Crypto symbol | `/crypto/BTC` |\n| Stock exchange | `/exchange/NYSE` |\n| Market index | `/index/SPX` |\n\n- For a ticker outside the US, add the exchange suffix, such as `7203.T`.\n- 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.\n- A lookup with no logo returns a generated monogram, unless you set `fallback=404`. A malformed ticker, crypto symbol, exchange, or index returns `400`."
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&P 500 logo" />
- lang: jsx
label: By domain
source: "<img\n src={`https://img.logo.dev/stripe.com?token=${process.env.NEXT_PUBLIC_LOGO_DEV_KEY}`}\n alt=\"Stripe logo\"\n/>"
- lang: jsx
label: By name
source: "<img\n src={`https://img.logo.dev/name/Stripe?token=${process.env.NEXT_PUBLIC_LOGO_DEV_KEY}`}\n alt=\"Stripe logo\"\n/>"
- lang: jsx
label: By ticker
source: "<img\n src={`https://img.logo.dev/ticker/AAPL?token=${process.env.NEXT_PUBLIC_LOGO_DEV_KEY}`}\n alt=\"Apple logo\"\n/>"
- lang: jsx
label: By ISIN
source: "<img\n src={`https://img.logo.dev/isin/US0378331005?token=${process.env.NEXT_PUBLIC_LOGO_DEV_KEY}`}\n alt=\"Apple logo\"\n/>"
- lang: jsx
label: By crypto
source: "<img\n src={`https://img.logo.dev/crypto/BTC?token=${process.env.NEXT_PUBLIC_LOGO_DEV_KEY}`}\n alt=\"Bitcoin logo\"\n/>"
- lang: jsx
label: By exchange
source: "<img\n src={`https://img.logo.dev/exchange/NYSE?token=${process.env.NEXT_PUBLIC_LOGO_DEV_KEY}`}\n alt=\"New York Stock Exchange logo\"\n/>"
- lang: jsx
label: By index
source: "<img\n src={`https://img.logo.dev/index/SPX?token=${process.env.NEXT_PUBLIC_LOGO_DEV_KEY}`}\n alt=\"S&P 500 logo\"\n/>"
- lang: bash
label: By domain
source: "# Prints the status code and image type. The logo itself is not saved.\ncurl --silent --output /dev/null \\\n --write-out \"%{http_code} %{content_type}\\n\" \\\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.\ncurl --silent --output /dev/null \\\n --write-out \"%{http_code} %{content_type}\\n\" \\\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.\ncurl --silent --output /dev/null \\\n --write-out \"%{http_code} %{content_type}\\n\" \\\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.\ncurl --silent --output /dev/null \\\n --write-out \"%{http_code} %{content_type}\\n\" \\\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.\ncurl --silent --output /dev/null \\\n --write-out \"%{http_code} %{content_type}\\n\" \\\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.\ncurl --silent --output /dev/null \\\n --write-out \"%{http_code} %{content_type}\\n\" \\\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.\ncurl --silent --output /dev/null \\\n --write-out \"%{http_code} %{content_type}\\n\" \\\n \"https://img.logo.dev/index/SPX?token=LOGO_DEV_PUBLISHABLE_KEY&size=128&format=png\""
/name/{brand}:
servers:
- url: https://img.logo.dev
get:
tags:
- Logo CDN
summary: Get a logo by brand name
description: Returns the best-match logo for a brand name. URL-encode names with spaces or special characters. This is a convenience wrapper over Search that returns the top result's logo. See Get a logo for every lookup.
operationId: getLogoByName
security:
- publishableKey: []
parameters:
- name: brand
in: path
required: true
description: URL-encoded brand name.
schema:
type: string
examples:
- shopify
- name: strategy
in: query
required: false
description: '`match` returns the closest name. `suggest` returns the most popular prefix match.'
schema:
type: string
enum:
- match
- suggest
default: match
- $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'
/ticker/{ticker}:
servers:
- url: https://img.logo.dev
get:
tags:
- Logo CDN
summary: Get a logo by stock ticker
description: Returns a company's logo for a stock ticker symbol. Defaults to US exchanges; append an exchange suffix for others (e.g. `AAPL.L`, `7203.T`). See Get a logo for every lookup.
operationId: getLogoByTicker
security:
- publishableKey: []
parameters:
- name: ticker
in: path
required: true
description: Stock ticker symbol, optionally with an exchange suffix.
schema:
type: string
examples:
- AAPL
- $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'
/isin/{isin}:
servers:
- url: https://img.logo.dev
get:
tags:
- Logo CDN
summary: Get a logo by ISIN
description: Returns a company's logo for an ISIN (International Securities Identification Number). See Get a logo for every lookup.
operationId: getLogoByIsin
security:
- publishableKey: []
parameters:
- name: isin
in: path
required: true
description: ISIN code.
schema:
type: string
examples:
- US0378331005
- $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'
/crypto/{symbol}:
servers:
- url: https://img.logo.dev
get:
tags:
- Logo CDN
summary: Get a cryptocurrency logo by symbol
description: Returns a cryptocurrency logo for a coin symbol such as `btc` or `eth`. See Get a logo for every lookup.
operationId: getLogoByCrypto
security:
- publishableKey: []
parameters:
- name: symbol
in: path
required: true
description: Cryptocurrency symbol.
schema:
type: string
examples:
- btc
- $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'
/exchange/{exchange}:
servers:
- url: https://img.logo.dev
get:
tags:
- Logo CDN
summary: Get a logo by stock exchange
description: Returns the logo for a stock exchange by its code, e.g. `NYSE`, `NASDAQ`, or `LSE`. See Get a logo for every lookup.
operationId: getLogoByExchange
security:
- publishableKey: []
parameters:
- name: exchange
in: path
required: true
description: Stock exchange code.
schema:
type: string
examples:
- NYSE
- $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'
/index/{symbol}:
servers:
- url: https://img.logo.dev
get:
tags:
- Logo CDN
summary: Get a logo by market index
description: Returns the logo for a market index by its symbol, e.g. `SPX`, `DJI`, or `IXIC`. See Get a logo for every lookup.
operationId: getLogoByIndex
security:
- publishableKey: []
parameters:
- name: symbol
in: path
required: true
description: Market index symbol.
schema:
type: string
examples:
- SPX
- $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'
components:
responses:
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
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
RateLimited:
description: 'A Community plan limit was exceeded: the monthly CDN 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.dev 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
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
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
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
CdnForbidden:
description: The account is suspended or flagged, or the team has turned off personal keys.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
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
parameters:
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
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
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
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
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
retina:
name: retina
in: query
required: false
description: Render at 2x the requested size for high-density displays.
schema:
type: boolean
default: false
headers:
RetryAfterMinute:
description: Seconds to wait before retrying. Always `60`, the length of the per-minute window.
schema:
type: integer
examples:
- 60
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.
securitySchemes:
publishableKey:
type: apiKey
in: query
name: token
description: Your publishable key (`pk_`). Safe in client-side code. Works only with the Logo.dev CDN.
secretKey:
type: http
scheme: bearer
description: Your secret key (`sk_`), as `Bearer sk_...`. Call the Logo.dev API only from your server.
transactionBetaKey:
type: http
scheme: bearer
bearerFormat: tx_beta_…
description: Transaction-only beta key, issued with your beta access and always visible in the Transaction Playground. Existing Logo.dev secret keys do not authenticate this beta.