MENU navbar-image

Introduction

Reference for the Worldvectorlogo REST API: search brand logos, fetch SVG and PNG files, browse tags and sectors. Authentication, credits and code examples.

Get an API Key

  1. Create a free account or log in if you already have one. If you sign up with email, verify your address first. Google sign-in skips this step.
  2. Open Account → API Keys and click Create Key. The page needs you to be logged in.
  3. Copy the key right away, because it is only shown once. Send it as Authorization: Bearer YOUR_API_KEY.

Every account starts on the Free plan with 1,000 credits a month. You can keep up to 5 keys, and rename or revoke them on the same page.

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.

Need a raster image instead? GET /logos/{slug}/png returns the logo as PNG bytes rather than JSON, rendered from the SVG at its intrinsic size and cached after the first request. It costs one credit, the same as any other call.

Rate limits and credits

Anonymous requests — no API key — are capped at 10 per day per IP.

Authenticated requests spend credits instead: one credit per call, with no daily cap. Checking your own balance at GET /account/usage is free.

Plans

Plan Credits per month How to get
Anonymous — (10 requests/day) No key needed
Free 1,000 Create a free account + API key
Base 100,000 $29/month, from your API keys page

Plan credits refresh once per billing cycle — on your signup anniversary on Free, and on your Stripe renewal date on Base. Not on the 1st of the month: if you signed up on the 21st, your credits come back on the 21st. Read resets_at rather than assuming a date.

Base subscribers can also buy top-up packs: credits that never expire and are spent only after your plan credits are gone, so buying a pack early never wastes it. Top-ups are not available on Free — upgrade to Base first.

Headers

Every response carries your current position:

Header Description
X-RateLimit-Limit Monthly plan allowance plus any top-up credits
X-RateLimit-Remaining Credits left (plan + top-up)
X-RateLimit-Reset ISO 8601 timestamp when plan credits next refresh

When your key is rejected

A credential that does not resolve returns 401 Unauthorized with error.code of invalid_api_key — it may have been revoked or mistyped. It is not silently downgraded to the anonymous tier, so a broken key fails visibly rather than quietly spending your anonymous allowance. Sending no credential at all is still fine, and gives you the anonymous 10/day.

When you run out

Both a rate limit and an empty credit wallet return 429 Too Many Requests, so check error.code to tell them apart — they need opposite responses.

insufficient_credits means you are out of credits. Do not retry — no amount of backoff refills the wallet before resets_at. Wait for the reset, upgrade, or buy a top-up pack:

{
  "error": {
    "code": "insufficient_credits",
    "message": "No credits left. Upgrade to Base or buy a credit pack.",
    "plan_credits": 0,
    "addon_credits": 0,
    "resets_at": "2026-10-21T00:00:00+00:00"
  }
}

rate_limit_exceeded means you sent requests too quickly — a burst ceiling of 300 requests per minute, separate from your credit balance. This one is safe to retry after a backoff, and the body carries retry_after in seconds:

{
  "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.

Every endpoint except GET /account/usage also works without a key, limited to 10 requests per day per IP.

To get a key, you need a Worldvectorlogo account:

  1. Sign up or log in. If you sign up with email, verify your address first.
  2. Go to Account → API Keys (log-in required) and create a key.
  3. Copy it immediately; it is only shown once. Lost it? Revoke it and create a new one.

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" \
    --data-urlencode "page=1" \
    --data-urlencode "per_page=20" \
    --data-urlencode "sort=downloads" \
    --data-urlencode "order=desc" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
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",
};


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

url = 'https://worldvectorlogo.com/api/v1/logos'
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, 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?per_page=20&sort=downloads&order=desc&page=1",
        "last": "https://worldvectorlogo.com/api/v1/logos?per_page=20&sort=downloads&order=desc&page=100",
        "prev": null,
        "next": "https://worldvectorlogo.com/api/v1/logos?per_page=20&sort=downloads&order=desc&page=2"
    },
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 100,
        "links": [
            {
                "url": null,
                "label": "&laquo; Previous",
                "page": null,
                "active": false
            },
            {
                "url": "https://worldvectorlogo.com/api/v1/logos?per_page=20&sort=downloads&order=desc&page=1",
                "label": "1",
                "page": 1,
                "active": true
            },
            {
                "url": "https://worldvectorlogo.com/api/v1/logos?per_page=20&sort=downloads&order=desc&page=2",
                "label": "2",
                "page": 2,
                "active": false
            },
            {
                "url": "https://worldvectorlogo.com/api/v1/logos?per_page=20&sort=downloads&order=desc&page=2",
                "label": "Next &raquo;",
                "page": 2,
                "active": false
            }
        ],
        "path": "https://worldvectorlogo.com/api/v1/logos",
        "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

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. Can be null for older logos.

updated_at   string     

ISO 8601 timestamp. Null when the logo was never edited.

links   object     

Links to this logo: self (API) and web (website page).

links   object     

Page URLs: first, last, prev and next. They keep your query parameters, so you can follow next as is; prev/next are null at the ends.

meta   object     

Pagination details.

current_page   integer     

The page returned.

last_page   integer     

Number of the last page.

per_page   integer     

Results per page.

from   integer     

Position of the first result on this page. Null when there are no results.

to   integer     

Position of the last result on this page. Null when there are no results.

total   integer     

Total number of results.

path   string     

The endpoint URL without query parameters.

links   object[]     

A link per page, for building page buttons: url, label, page and active.

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" \
    --data-urlencode "q=google" \
    --data-urlencode "page=1" \
    --data-urlencode "per_page=20" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
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",
};


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

url = 'https://worldvectorlogo.com/api/v1/logos/search'
params = {
  'q': 'google',
  '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/logos/search?q=google&per_page=20&page=1",
        "last": "https://worldvectorlogo.com/api/v1/logos/search?q=google&per_page=20&page=1",
        "prev": null,
        "next": null
    },
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 1,
        "links": [
            {
                "url": null,
                "label": "&laquo; Previous",
                "page": null,
                "active": false
            },
            {
                "url": "https://worldvectorlogo.com/api/v1/logos/search?q=google&per_page=20&page=1",
                "label": "1",
                "page": 1,
                "active": true
            },
            {
                "url": null,
                "label": "Next &raquo;",
                "page": null,
                "active": false
            }
        ],
        "path": "https://worldvectorlogo.com/api/v1/logos/search",
        "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."
            ]
        }
    }
}
 

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. Can be null for older logos.

updated_at   string     

ISO 8601 timestamp. Null when the logo was never edited.

links   object     

Links to this logo: self (API) and web (website page).

links   object     

Page URLs: first, last, prev and next. They keep your query parameters, so you can follow next as is; prev/next are null at the ends.

meta   object     

Pagination details.

current_page   integer     

The page returned.

last_page   integer     

Number of the last page.

per_page   integer     

Results per page.

from   integer     

Position of the first result on this page. Null when there are no results.

to   integer     

Position of the last result on this page. Null when there are no results.

total   integer     

Total number of results.

path   string     

The endpoint URL without query parameters.

links   object[]     

A link per page, for building page buttons: url, label, page and active.

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" \
    --data-urlencode "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

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. Can be null for older logos.

updated_at   string     

ISO 8601 timestamp. Null when the logo was never edited.

links   object     

Links to this logo: self (API) and web (website page).

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):


{
    "error": {
        "code": "not_found",
        "message": "Logo 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 this endpoint, not on lists.

tags   string[]     

Tag names associated with this logo.

created_at   string     

ISO 8601 timestamp. Can be null for older logos.

updated_at   string     

ISO 8601 timestamp. Null when the logo was never edited.

links   object     

Links to this logo: self (API) and web (website page).

Get a logo as PNG.

Returns the raw PNG bytes, not JSON — drop the URL straight into an <img> tag or save it to a file. The image is rendered from the SVG at its intrinsic size and cached, so the first request for a given logo is slower than the rest.

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

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/png'
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

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

Example response (200, Success):


"<binary PNG data>"
 

Example response (404, No such logo):


{
    "error": {
        "code": "not_found",
        "message": "Logo not found."
    }
}
 

Example response (422, Logo has no SVG to render):


{
    "error": {
        "code": "png_unavailable",
        "message": "This logo has no SVG to render."
    }
}
 

Request      

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

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

slug   string     

The logo slug. Example: google

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,
            "sector": null,
            "links": {
                "self": "https://worldvectorlogo.com/api/v1/tags/technology",
                "logos": "https://worldvectorlogo.com/api/v1/tags/technology/logos"
            }
        },
        {
            "slug": "cars",
            "name": "Cars",
            "logos_count": 89,
            "sector": {
                "slug": "automotive",
                "name": "Automotive"
            },
            "links": {
                "self": "https://worldvectorlogo.com/api/v1/tags/cars",
                "logos": "https://worldvectorlogo.com/api/v1/tags/cars/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.

sector   object     

The sector this tag belongs to (slug, name), or null. See GET /sectors.

links   object     

Links to this tag: self and logos.

Get a single tag.

One tag with its logo count and the sector it belongs to.

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

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/cars'
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

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

Example response (200, Success):


{
    "data": {
        "slug": "cars",
        "name": "Cars",
        "logos_count": 98,
        "sector": {
            "slug": "automotive",
            "name": "Automotive"
        },
        "links": {
            "self": "https://worldvectorlogo.com/api/v1/tags/cars",
            "logos": "https://worldvectorlogo.com/api/v1/tags/cars/logos"
        }
    }
}
 

Example response (404, Tag not found):


{
    "error": {
        "code": "not_found",
        "message": "Tag not found."
    }
}
 

Request      

GET api/v1/tags/{slug}

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

slug   string     

The tag slug. Example: cars

Response

Response Fields

data   object     
slug   string     

Unique URL-safe identifier.

name   string     

Display name of the tag.

logos_count   integer     

Number of published logos with this tag.

sector   object     

The sector this tag belongs to (slug, name), or null.

links   object     

Links to this tag: self and 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" \
    --data-urlencode "page=1" \
    --data-urlencode "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?per_page=20&page=1",
        "last": "https://worldvectorlogo.com/api/v1/tags/technology/logos?per_page=20&page=13",
        "prev": null,
        "next": "https://worldvectorlogo.com/api/v1/tags/technology/logos?per_page=20&page=2"
    },
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 13,
        "links": [
            {
                "url": null,
                "label": "&laquo; Previous",
                "page": null,
                "active": false
            },
            {
                "url": "https://worldvectorlogo.com/api/v1/tags/technology/logos?per_page=20&page=1",
                "label": "1",
                "page": 1,
                "active": true
            },
            {
                "url": "https://worldvectorlogo.com/api/v1/tags/technology/logos?per_page=20&page=2",
                "label": "2",
                "page": 2,
                "active": false
            },
            {
                "url": "https://worldvectorlogo.com/api/v1/tags/technology/logos?per_page=20&page=2",
                "label": "Next &raquo;",
                "page": 2,
                "active": false
            }
        ],
        "path": "https://worldvectorlogo.com/api/v1/tags/technology/logos",
        "per_page": 20,
        "to": 20,
        "total": 245
    }
}
 

Example response (404, Tag not found):


{
    "error": {
        "code": "not_found",
        "message": "Tag 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

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. Can be null for older logos.

updated_at   string     

ISO 8601 timestamp. Null when the logo was never edited.

links   object     

Links to this logo: self (API) and web (website page).

links   object     

Page URLs: first, last, prev and next. They keep your query parameters, so you can follow next as is; prev/next are null at the ends.

meta   object     

Pagination details.

current_page   integer     

The page returned.

last_page   integer     

Number of the last page.

per_page   integer     

Results per page.

from   integer     

Position of the first result on this page. Null when there are no results.

to   integer     

Position of the last result on this page. Null when there are no results.

total   integer     

Total number of results.

path   string     

The endpoint URL without query parameters.

links   object[]     

A link per page, for building page buttons: url, label, page and active.

Account

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

Get API usage statistics.

requires authentication

Returns credit balances for the current billing cycle plus daily usage breakdown for the last 30 days.

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",
        "credits": {
            "plan_remaining": 980,
            "addon_remaining": 0,
            "monthly_allowance": 1000,
            "resets_at": "2026-10-21T00:00:00+00:00"
        },
        "tokens": 1,
        "daily_breakdown": {
            "2026-09-15": {
                "requests": 20,
                "errors": 0,
                "avg_response_time_ms": 28
            }
        }
    }
}
 

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 base).

credits   object     

Credit wallet summary.

plan_remaining   integer     

Plan credits left this billing cycle.

addon_remaining   integer     

Permanent top-up credits left.

monthly_allowance   integer     

Plan credits granted each billing cycle.

resets_at   string     

ISO 8601 timestamp when plan credits reset — your signup anniversary on Free, your Stripe renewal on Base.

tokens   integer     

Number of active API tokens.

daily_breakdown   object     

Daily usage data keyed by date.

Sector

Browse logos by industry. A sector groups related tags: the Automotive sector holds tags like Cars and Motorcycles.

List all sectors.

Every sector that has logos, with its logo count and the tags grouped under it. Ordered by logo count, largest first. Not paginated: there are only a few dozen sectors.

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

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/sectors'
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

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

Example response (200, Success):


{
    "data": [
        {
            "slug": "automotive",
            "name": "Automotive",
            "logos_count": 132,
            "tags": [
                {
                    "slug": "cars",
                    "name": "Cars"
                },
                {
                    "slug": "motorcycles",
                    "name": "Motorcycles"
                }
            ],
            "links": {
                "self": "https://worldvectorlogo.com/api/v1/sectors/automotive",
                "logos": "https://worldvectorlogo.com/api/v1/sectors/automotive/logos"
            }
        }
    ]
}
 

Request      

GET api/v1/sectors

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Response

Response Fields

data   object[]     

List of sectors.

slug   string     

Unique URL-safe identifier.

name   string     

Display name of the sector.

logos_count   integer     

Published logos in this sector: tagged with the sector itself or any of its tags, each logo counted once.

tags   object[]     

The tags grouped under this sector, each with slug and name. Use them with GET /tags/{slug}/logos.

links   object     

Links to this sector: self and logos.

Get a single sector.

One sector with its logo count and tags.

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

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/sectors/automotive'
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

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

Example response (200, Success):


{
    "data": {
        "slug": "automotive",
        "name": "Automotive",
        "logos_count": 132,
        "tags": [
            {
                "slug": "cars",
                "name": "Cars"
            },
            {
                "slug": "motorcycles",
                "name": "Motorcycles"
            }
        ],
        "links": {
            "self": "https://worldvectorlogo.com/api/v1/sectors/automotive",
            "logos": "https://worldvectorlogo.com/api/v1/sectors/automotive/logos"
        }
    }
}
 

Example response (404, Sector not found):


{
    "error": {
        "code": "not_found",
        "message": "Sector not found."
    }
}
 

Request      

GET api/v1/sectors/{slug}

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

slug   string     

The sector slug. Example: automotive

Response

Response Fields

data   object     
slug   string     

Unique URL-safe identifier.

name   string     

Display name of the sector.

logos_count   integer     

Published logos in this sector, each counted once.

tags   object[]     

The tags grouped under this sector, each with slug and name.

links   object     

Links to this sector: self and logos.

Get logos in a sector.

Published logos tagged with the sector or any of its tags, most downloaded first.

Example request:
curl --request GET \
    --get "https://worldvectorlogo.com/api/v1/sectors/automotive/logos" \
    --data-urlencode "page=1" \
    --data-urlencode "per_page=20" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://worldvectorlogo.com/api/v1/sectors/automotive/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/sectors/automotive/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": "tesla-motors",
            "name": "Tesla Motors",
            "downloads": 31200,
            "svg_url": "https://cdn.worldvectorlogo.com/logos/tesla-motors.svg",
            "tags": [
                "cars",
                "electric-vehicles"
            ],
            "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/tesla-motors",
                "web": "https://worldvectorlogo.com/logo/tesla-motors"
            }
        }
    ],
    "links": {
        "first": "https://worldvectorlogo.com/api/v1/sectors/automotive/logos?per_page=20&page=1",
        "last": "https://worldvectorlogo.com/api/v1/sectors/automotive/logos?per_page=20&page=7",
        "prev": null,
        "next": "https://worldvectorlogo.com/api/v1/sectors/automotive/logos?per_page=20&page=2"
    },
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 7,
        "links": [
            {
                "url": null,
                "label": "&laquo; Previous",
                "page": null,
                "active": false
            },
            {
                "url": "https://worldvectorlogo.com/api/v1/sectors/automotive/logos?per_page=20&page=1",
                "label": "1",
                "page": 1,
                "active": true
            },
            {
                "url": "https://worldvectorlogo.com/api/v1/sectors/automotive/logos?per_page=20&page=2",
                "label": "2",
                "page": 2,
                "active": false
            },
            {
                "url": "https://worldvectorlogo.com/api/v1/sectors/automotive/logos?per_page=20&page=2",
                "label": "Next &raquo;",
                "page": 2,
                "active": false
            }
        ],
        "path": "https://worldvectorlogo.com/api/v1/sectors/automotive/logos",
        "per_page": 20,
        "to": 20,
        "total": 132
    }
}
 

Example response (404, Sector not found):


{
    "error": {
        "code": "not_found",
        "message": "Sector not found."
    }
}
 

Request      

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

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

slug   string     

The sector slug. Example: automotive

Query Parameters

page   integer  optional    

Page number. Example: 1

per_page   integer  optional    

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

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. Can be null for older logos.

updated_at   string     

ISO 8601 timestamp. Null when the logo was never edited.

links   object     

Links to this logo: self (API) and web (website page).

links   object     

Page URLs: first, last, prev and next. They keep your query parameters, so you can follow next as is; prev/next are null at the ends.

meta   object     

Pagination details.

current_page   integer     

The page returned.

last_page   integer     

Number of the last page.

per_page   integer     

Results per page.

from   integer     

Position of the first result on this page. Null when there are no results.

to   integer     

Position of the last result on this page. Null when there are no results.

total   integer     

Total number of results.

path   string     

The endpoint URL without query parameters.

links   object[]     

A link per page, for building page buttons: url, label, page and active.