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.
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 'https://www.colourlovers.com/api/palettes/top?format=json&numResults=1'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);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())[
{
"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
| Parameter | Type | Required | Description |
|---|---|---|---|
format | query | Required | Response format. XML is the default, so `json` must be requested explicitly. json |
numResults | query | Optional | How many results to return, up to 100. 1 |
resultOffset | query | Optional | Pagination offset. 0 |
orderCol | query | Optional | Sort column: `dateCreated`, `score`, `name`, `numVotes` or `numViews`. numViews |
keywords | query | Optional | Free-text search across palette titles and tags. sunset |
hueOption | query | Optional | Filter 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
Random Color Generator
Generate a random color palette in one click. Lock the swatches you like, re-roll the rest, and copy the result as a HEX list or ready CSS variables.
Color Picker from Image
Pick colors from any image online. Click a photo to get exact HEX, RGB and HSL values with copy buttons and a history of recent picks — free and private.
Duotone Image
Create a duotone image by mapping shadows and highlights to two chosen colors. Free, private, browser-based duotone effect with live preview.
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.