BYTETOOLS

COLOURlovers API

Free COLOURlovers API with no key: community-voted colour palettes, individual colours and patterns with hex values, view counts and popularity ranks. Tested example included.

No API key requiredHTTPSFree tier

Endpoint tested and returned HTTP 200 on 2026-08-21

What is the COLOURlovers API?

The COLOURlovers API is a free, key-free API exposing a large community-curated library of colour palettes, colours and patterns. Each palette returns its hex colour values along with social signals such as views, votes, hearts and an overall popularity rank.

COLOURlovers has been running since 2007 and its palette library is one of the oldest and most-referenced on the web — the "Giant Goldfish" palette that tops the API's own popularity ranking has been viewed over a million times and turns up in design tutorials to this day. The API turns that entire archive into something you can query.

What distinguishes it from a palette generator is the social data. Alongside the five hex values you get view counts, votes, comments and a rank, so "popular palette" is an actual measurable property rather than an algorithmic guess. Two practical notes: the API is old enough that `format=json` is required (XML is the default), and the `description` field contains raw user-submitted HTML — sanitise it before rendering.

Quick facts

Base URL
https://www.colourlovers.com/api
Authentication
No API key. COLOURlovers' terms require attribution and restrict commercial use of the content, so read them before shipping this into a product.
Rate limit
Documented as roughly 60 requests per minute per IP.
Pricing
Free to call. The palettes themselves are user-submitted under Creative Commons Attribution-NonCommercial-ShareAlike.
CORS
Not enabled — call it from your server
Official docs
Read the docs

How to use the COLOURlovers API

Every request below was executed against the live API on 2026-08-21, and the response shown is the real body it returned — not an illustration.

1. Fetch the single most popular colour palette

GET https://www.colourlovers.com/api/palettes/top?format=json&numResults=1

curl
curl 'https://www.colourlovers.com/api/palettes/top?format=json&numResults=1'
JavaScript (fetch)
const res = await fetch("https://www.colourlovers.com/api/palettes/top?format=json&numResults=1");
if (!res.ok) throw new Error(`Request failed: ${res.status}`);
const data = await res.json();
console.log(data);
Python (requests)
import requests

res = requests.get("https://www.colourlovers.com/api/palettes/top?format=json&numResults=1", timeout=20)
res.raise_for_status()
print(res.json())
Response — HTTP 200
[
  {
    "id": 92095,
    "title": "Giant Goldfish",
    "userName": "manekineko",
    "numViews": 1154345,
    "numVotes": 12268,
    "numComments": 778,
    "numHearts": 4.5,
    "rank": 1,
    "dateCreated": "2007-07-03 10:42:02",
    "colors": [
      "69D2E7",
      "A7DBD8",
      "E0E4CC",
      "F38630",
      "FA6900"
    ],
    "description": "I-MOO\r\n<div style=\"width: 300px; text-align: center;\"><a href=\"http://www.colourlovers.com/contests/moo/minicard/2291466\" target=\"_blank\" style=\"display: block; margin-bottom: 5px; width: 300px; height: 120px; -moz-box-shadow: 0 1px 4px #d1d1d1; -webkit-box-shadow: 0 1px 4px #d1d1d1; box-shadow: 0 1px 4px #d1d1d1; filter: progid:DXImageTransform.Microsoft.Shadow(Strength=1, Direction=180, Color=",
    "url": "http://www.colourlovers.com/palette/92095/Giant_Goldfish",
    "imageUrl": "http://www.colourlovers.com/paletteImg/69D2E7/A7DBD8/E0E4CC/F38630/FA6900/Giant_Goldfish.png",
    "badgeUrl": "http://www.colourlovers.com/images/badges/p/92/92095_Giant_Goldfish.png",
    "apiUrl": "http://www.colourlovers.com/api/palette/92095"
  }
]

Parameters

ParameterTypeRequiredDescription
formatqueryRequiredResponse format. XML is the default, so `json` must be requested explicitly. json
numResultsqueryOptionalHow many results to return, up to 100. 1
resultOffsetqueryOptionalPagination offset. 0
orderColqueryOptionalSort column: `dateCreated`, `score`, `name`, `numVotes` or `numViews`. numViews
keywordsqueryOptionalFree-text search across palette titles and tags. sunset
hueOptionqueryOptionalFilter by hue family, such as `red`, `blue` or `green`. blue

Response fields

idstring
Palette identifier, which also builds its page URL on colourlovers.com.
title / userNamestring
Palette name and the member who created it. Attribution requires both.
colorsarray
The palette's hex values as strings WITHOUT a leading `#` — prepend one before using them in CSS.
rankinteger
Position in the ranking implied by `orderCol`. Rank 1 on views is the all-time most-viewed palette.
numViews / numVotes / numComments / numHeartsnumber
Social signals. These are what make "popular" a real measurement here rather than a guess.
dateCreatedstring
When the palette was submitted. Many top palettes date from 2007-2010.
descriptionstring
User-submitted free text containing raw HTML. Sanitise it before rendering anywhere.

What you can build with the COLOURlovers API

  • Seed a design tool with proven, community-vetted colour palettes
  • Build a palette browser or colour inspiration gallery
  • Pick an accessible-adjacent starting palette for a theme generator
  • Analyse colour trends across a decade of user submissions

Common errors and how to fix them

XML instead of JSON

The `format` parameter was omitted.

Fix: COLOURlovers defaults to XML. Always pass `format=json` explicitly.

429

Rate limit of roughly 60 requests per minute exceeded.

Fix: Cache results. Palette data is effectively static, so a long cache costs nothing.

Colours missing the # prefix

Not an error — hex values are returned bare.

Fix: Prepend `#` before using them as CSS colour values.

COLOURlovers API — frequently asked questions

Is the COLOURlovers API free?

The API is free to call with no key. The content is a different matter: palettes are user-submitted under a Creative Commons Attribution-NonCommercial-ShareAlike licence, so commercial use needs care and attribution is required either way.

Why does COLOURlovers return XML?

XML is the default because the API predates JSON's dominance. Add `format=json` to the query string on every request and you get JSON instead.

Do the hex colours include a # prefix?

No. The `colors` array holds bare six-character hex strings such as `69D2E7`, so prepend a `#` before using them in CSS or anywhere else that expects a full hex colour.

How do I find the most popular palettes?

Request the `/palettes/top` resource, or sort with `orderCol=numViews`. The response includes view, vote and heart counts so you can rank by whichever signal fits your use case.

Tools that pair with this API

COLOURlovers is an independent third-party service and is not affiliated with ByteTools or ByteVancer. Details on this page were verified on 2026-08-21; always check the official documentation before relying on this API in production, as terms and limits can change.