MENU navbar-image

Introduction

Programmatic access to thousands of professionally curated vector logos in SVG format.

What you can do

Use cases

Use case How
Brand directory or comparison site Search logos by name, display via svg_url
Developer tool / design tool Fetch svg_content to embed, resize, or recolor SVGs
AI agent or chatbot Let your agent look up company logos on the fly
Portfolio or showcase Pull random or popular logos for demo screens
Internal dashboard Show partner/vendor logos next to data

Working with logos

Every logo object includes an svg_url — a direct CDN link you can use in <img> tags or anywhere you display logos.

When you fetch a single logo (GET /logos/{slug}), the response also includes svg_content with the full SVG markup. Use this to embed inline, modify colors or dimensions, or let your users download the file.

Collection endpoints (/logos, /logos/search, /logos/random, /tags/{slug}/logos) return a lightweight object without svg_content to keep payloads fast.

Rate limits

Every response includes rate-limit headers so you can track your usage:

Header Description
X-RateLimit-Limit Your daily quota
X-RateLimit-Reset When the quota resets (ISO 8601, midnight UTC)

Tiers

Tier Daily limit How to get
Anonymous 10 No key needed
Free 500 Create a free account + API key
Pro 5,000 Contact us at info@worldvectorlogo.com

When you exceed your limit the API returns 429 Too Many Requests with a JSON body:

{
  "error": {
    "code": "rate_limit_exceeded",
    "message": "...",
    "resets_at": "2026-03-02T00:00:00+00:00"
  }
}

Authenticating requests

To authenticate requests, include an Authorization header with the value "Bearer YOUR_API_KEY".

All authenticated endpoints are marked with a requires authentication badge in the documentation below.

The API works without authentication — every endpoint is accessible anonymously with a limit of 10 requests per day (per IP).

For higher limits, create a free account at worldvectorlogo.com and generate an API key under Account → API Keys.

Bearer header (recommended):

Authorization: Bearer YOUR_API_KEY

Query parameter (useful when headers aren't convenient, e.g. <img> tags):

/api/v1/logos?api_key=YOUR_API_KEY

Logo

Browse, search, and retrieve vector logos.

List all logos.

Browse all published logos with optional sorting. Results are paginated with a default of 20 per page.

Example request:
curl --request GET \
    --get "https://worldvectorlogo.com/api/v1/logos?page=1&per_page=20&sort=downloads&order=desc" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"page\": 1,
    \"per_page\": 22,
    \"sort\": \"downloads\",
    \"order\": \"asc\"
}"
const url = new URL(
    "https://worldvectorlogo.com/api/v1/logos"
);

const params = {
    "page": "1",
    "per_page": "20",
    "sort": "downloads",
    "order": "desc",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "page": 1,
    "per_page": 22,
    "sort": "downloads",
    "order": "asc"
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
import requests
import json

url = 'https://worldvectorlogo.com/api/v1/logos'
payload = {
    "page": 1,
    "per_page": 22,
    "sort": "downloads",
    "order": "asc"
}
params = {
  'page': '1',
  'per_page': '20',
  'sort': 'downloads',
  'order': 'desc',
}
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers, json=payload, params=params)
response.json()

Example response (200, Success):


{
    "data": [
        {
            "slug": "google-2015",
            "name": "Google 2015",
            "downloads": 48230,
            "svg_url": "https://cdn.worldvectorlogo.com/logos/google-2015.svg",
            "tags": [
                "technology",
                "search-engine"
            ],
            "created_at": "2024-01-15T10:30:00+00:00",
            "updated_at": "2024-06-20T14:15:00+00:00",
            "links": {
                "self": "https://worldvectorlogo.com/api/v1/logos/google-2015",
                "web": "https://worldvectorlogo.com/logo/google-2015"
            }
        }
    ],
    "links": {
        "first": "https://worldvectorlogo.com/api/v1/logos?page=1",
        "last": "https://worldvectorlogo.com/api/v1/logos?page=100",
        "prev": null,
        "next": "https://worldvectorlogo.com/api/v1/logos?page=2"
    },
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 100,
        "per_page": 20,
        "to": 20,
        "total": 2000
    }
}
 

Request      

GET api/v1/logos

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Query Parameters

page   integer  optional    

Page number. Example: 1

per_page   integer  optional    

Results per page (1-50). Example: 20

sort   string  optional    

Sort field: downloads, created. Example: downloads

order   string  optional    

Sort direction: asc, desc. Example: desc

Body Parameters

page   integer  optional    

Must be at least 1. Must not be greater than 100. Example: 1

per_page   integer  optional    

Must be at least 1. Must not be greater than 50. Example: 22

sort   string  optional    

Example: downloads

Must be one of:
  • downloads
  • created
order   string  optional    

Example: asc

Must be one of:
  • asc
  • desc

Response

Response Fields

data   object[]     

List of logo objects.

slug   string     

Unique URL-safe identifier.

name   string     

Display name of the logo.

downloads   integer     

Total download count.

svg_url   string     

Direct CDN link to the SVG file.

tags   string[]     

Tag names associated with this logo.

created_at   string     

ISO 8601 timestamp.

updated_at   string     

ISO 8601 timestamp.

links   object     

HATEOAS links (self, web).

meta   object     

Pagination metadata.

Search across logo names and slugs using a query string. Results are ordered by download count (most popular first).

Example request:
curl --request GET \
    --get "https://worldvectorlogo.com/api/v1/logos/search?q=google&page=1&per_page=20" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"q\": \"b\",
    \"page\": 22,
    \"per_page\": 7
}"
const url = new URL(
    "https://worldvectorlogo.com/api/v1/logos/search"
);

const params = {
    "q": "google",
    "page": "1",
    "per_page": "20",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "q": "b",
    "page": 22,
    "per_page": 7
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
import requests
import json

url = 'https://worldvectorlogo.com/api/v1/logos/search'
payload = {
    "q": "b",
    "page": 22,
    "per_page": 7
}
params = {
  'q': 'google',
  'page': '1',
  'per_page': '20',
}
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers, json=payload, params=params)
response.json()

Example response (200, Success):


{
    "data": [
        {
            "slug": "google-2015",
            "name": "Google 2015",
            "downloads": 48230,
            "svg_url": "https://cdn.worldvectorlogo.com/logos/google-2015.svg",
            "tags": [
                "technology",
                "search-engine"
            ],
            "created_at": "2024-01-15T10:30:00+00:00",
            "updated_at": "2024-06-20T14:15:00+00:00",
            "links": {
                "self": "https://worldvectorlogo.com/api/v1/logos/google-2015",
                "web": "https://worldvectorlogo.com/logo/google-2015"
            }
        }
    ],
    "links": {
        "first": "https://worldvectorlogo.com/api/v1/logos/search?q=google&page=1",
        "last": "https://worldvectorlogo.com/api/v1/logos/search?q=google&page=1",
        "prev": null,
        "next": null
    },
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 1,
        "per_page": 20,
        "to": 3,
        "total": 3
    }
}
 

Example response (422, Validation error):


{
    "error": {
        "code": "validation_error",
        "message": "The given data was invalid.",
        "details": {
            "q": [
                "The q field is required."
            ]
        }
    }
}
 

Get random logos.

Returns a random selection of logos. Useful for showcases or demos.

Example request:
curl --request GET \
    --get "https://worldvectorlogo.com/api/v1/logos/random?count=5" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://worldvectorlogo.com/api/v1/logos/random"
);

const params = {
    "count": "5",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
import requests
import json

url = 'https://worldvectorlogo.com/api/v1/logos/random'
params = {
  'count': '5',
}
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers, params=params)
response.json()

Example response (200, Success):


{
    "data": [
        {
            "slug": "spotify-2015",
            "name": "Spotify 2015",
            "downloads": 12500,
            "svg_url": "https://cdn.worldvectorlogo.com/logos/spotify-2015.svg",
            "tags": [
                "music",
                "streaming"
            ],
            "created_at": "2024-02-10T08:00:00+00:00",
            "updated_at": "2024-05-15T12:00:00+00:00",
            "links": {
                "self": "https://worldvectorlogo.com/api/v1/logos/spotify-2015",
                "web": "https://worldvectorlogo.com/logo/spotify-2015"
            }
        }
    ]
}
 

Request      

GET api/v1/logos/random

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Query Parameters

count   integer  optional    

Number of logos (1-20). Example: 5

Get a single logo by slug.

Returns full details for a specific logo including tags and raw SVG content. The svg_content field contains the full SVG markup that you can embed, transform, or offer as a download in your application.

Example request:
curl --request GET \
    --get "https://worldvectorlogo.com/api/v1/logos/google-2015" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://worldvectorlogo.com/api/v1/logos/google-2015"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
import requests
import json

url = 'https://worldvectorlogo.com/api/v1/logos/google-2015'
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers)
response.json()

Example response (200, Success):


{
    "data": {
        "slug": "google-2015",
        "name": "Google 2015",
        "downloads": 48230,
        "svg_url": "https://cdn.worldvectorlogo.com/logos/google-2015.svg",
        "svg_content": "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 272 92\">...</svg>",
        "tags": [
            "technology",
            "search-engine"
        ],
        "created_at": "2024-01-15T10:30:00+00:00",
        "updated_at": "2024-06-20T14:15:00+00:00",
        "links": {
            "self": "https://worldvectorlogo.com/api/v1/logos/google-2015",
            "web": "https://worldvectorlogo.com/logo/google-2015"
        }
    }
}
 

Example response (404, Not found):


{
    "message": "Not Found."
}
 

Request      

GET api/v1/logos/{slug}

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

slug   string     

The logo slug. Example: google-2015

Response

Response Fields

data   object     
slug   string     

Unique URL-safe identifier.

name   string     

Display name of the logo.

downloads   integer     

Total download count.

svg_url   string     

Direct CDN link to the SVG file.

svg_content   string     

Full SVG markup (only on single-logo endpoint).

tags   string[]     

Tag names associated with this logo.

links   object     

HATEOAS links (self, web).

Tag

Explore logos organised by tags.

List all tags.

Returns all tags with their logo counts. Sorted alphabetically by name.

Example request:
curl --request GET \
    --get "https://worldvectorlogo.com/api/v1/tags" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://worldvectorlogo.com/api/v1/tags"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
import requests
import json

url = 'https://worldvectorlogo.com/api/v1/tags'
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers)
response.json()

Example response (200, Success):


{
    "data": [
        {
            "slug": "technology",
            "name": "Technology",
            "logos_count": 245,
            "links": {
                "self": "https://worldvectorlogo.com/api/v1/tags/technology",
                "logos": "https://worldvectorlogo.com/api/v1/tags/technology/logos"
            }
        },
        {
            "slug": "automotive",
            "name": "Automotive",
            "logos_count": 89,
            "links": {
                "self": "https://worldvectorlogo.com/api/v1/tags/automotive",
                "logos": "https://worldvectorlogo.com/api/v1/tags/automotive/logos"
            }
        }
    ]
}
 

Request      

GET api/v1/tags

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Response

Response Fields

data   object     
slug   string     

Unique URL-safe identifier.

name   string     

Display name of the tag.

logos_count   integer     

Number of logos with this tag.

links   object     

HATEOAS links (self, logos).

Get logos for a specific tag.

Returns all published logos that have the given tag.

Example request:
curl --request GET \
    --get "https://worldvectorlogo.com/api/v1/tags/technology/logos?page=1&per_page=20" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://worldvectorlogo.com/api/v1/tags/technology/logos"
);

const params = {
    "page": "1",
    "per_page": "20",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
import requests
import json

url = 'https://worldvectorlogo.com/api/v1/tags/technology/logos'
params = {
  'page': '1',
  'per_page': '20',
}
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers, params=params)
response.json()

Example response (200, Success):


{
    "data": [
        {
            "slug": "google-2015",
            "name": "Google 2015",
            "downloads": 48230,
            "svg_url": "https://cdn.worldvectorlogo.com/logos/google-2015.svg",
            "tags": [
                "technology",
                "search-engine"
            ],
            "created_at": "2024-01-15T10:30:00+00:00",
            "updated_at": "2024-06-20T14:15:00+00:00",
            "links": {
                "self": "https://worldvectorlogo.com/api/v1/logos/google-2015",
                "web": "https://worldvectorlogo.com/logo/google-2015"
            }
        }
    ],
    "links": {
        "first": "https://worldvectorlogo.com/api/v1/tags/technology/logos?page=1",
        "last": "https://worldvectorlogo.com/api/v1/tags/technology/logos?page=13",
        "prev": null,
        "next": "https://worldvectorlogo.com/api/v1/tags/technology/logos?page=2"
    },
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 13,
        "per_page": 20,
        "to": 20,
        "total": 245
    }
}
 

Example response (404, Tag not found):


{
    "message": "Not Found."
}
 

Request      

GET api/v1/tags/{slug}/logos

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

slug   string     

The tag slug. Example: technology

Query Parameters

page   integer  optional    

Page number. Example: 1

per_page   integer  optional    

Results per page (1-50). Example: 20

Account

Manage your API key and view usage statistics. Requires authentication.

Get API usage statistics.

requires authentication

Returns daily usage breakdown for the current billing period (last 30 days). Includes total requests, remaining quota, and per-endpoint breakdown.

Example request:
curl --request GET \
    --get "https://worldvectorlogo.com/api/v1/account/usage" \
    --header "Authorization: Bearer YOUR_API_KEY" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://worldvectorlogo.com/api/v1/account/usage"
);

const headers = {
    "Authorization": "Bearer YOUR_API_KEY",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
import requests
import json

url = 'https://worldvectorlogo.com/api/v1/account/usage'
headers = {
  'Authorization': 'Bearer YOUR_API_KEY',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers)
response.json()

Example response (200, Success):


{
    "data": {
        "plan": "free",
        "today": {
            "used": 42,
            "limit": 500,
            "remaining": 458,
            "resets_at": "2026-04-06T23:59:59+00:00"
        },
        "tokens": 1,
        "daily_breakdown": {
            "2026-04-06": {
                "requests": 42,
                "errors": 0,
                "avg_response_time_ms": 28
            },
            "2026-04-05": {
                "requests": 150,
                "errors": 2,
                "avg_response_time_ms": 35
            }
        }
    }
}
 

Example response (401, Unauthenticated):


{
    "message": "Unauthenticated."
}
 

Request      

GET api/v1/account/usage

Headers

Authorization        

Example: Bearer YOUR_API_KEY

Content-Type        

Example: application/json

Accept        

Example: application/json

Response

Response Fields

data   object     
plan   string     

Your current plan tier (free or pro).

today   object     

Today's usage summary.

used   integer     

Requests made today.

limit   integer     

Your daily request quota.

remaining   integer     

Requests remaining today.

resets_at   string     

ISO 8601 timestamp when the quota resets.

tokens   integer     

Number of active API tokens.

daily_breakdown   object     

Daily usage data keyed by date.