Public API
Free, open access to Yolist's UK business directory. No API key required.
No auth required60 requests / minuteCORS enabled
Base URL & Rate Limits
All endpoints are relative to:
https://yolist.ukThe public API is rate limited to 60 requests per minute per IP address. Rate limit headers are included in every response:
x-ratelimit-limit: 60
// No x-ratelimit-remaining header on public endpoints — check 429 statusFor higher rate limits and additional fields, apply for a free API key at /developers.
GET /api/v1/businesses
Returns a paginated list of businesses. All parameters are optional.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| city | string | City slug, e.g. london, manchester, birmingham |
| category | string | Category slug, e.g. plumbers, electricians, solicitors |
| page | integer | Page number (default: 1) |
| limit | integer | Results per page, max 20 (default: 20) |
Example request
curl "https://yolist.uk/api/v1/businesses?city=london&category=plumbers&page=1&limit=20"Example response
{
"businesses": [
{
"id": "clx1abc...",
"name": "Acme Plumbing Ltd",
"slug": "acme-plumbing-london",
"category": "plumbers",
"city": "London",
"rating": 4.7,
"reviewCount": 38,
"phone": "020 ****",
"website": "https://acmeplumbing.co.uk",
"isVerified": true
}
],
"total": 142,
"page": 1,
"pages": 8
}Response fields
| Field | Type | Notes |
|---|---|---|
| businesses | array | Array of business objects |
| total | integer | Total matching businesses |
| page | integer | Current page |
| pages | integer | Total number of pages |
| phone | string | null | Partially masked for unclaimed listings (e.g. 020 ****) |
GET /api/v1/businesses/:slug
Returns full details for a single business by its slug. Phone and email are only returned for claimed businesses. Returns 404 if the business is not found or not approved.
URL parameters
| Parameter | Type | Description |
|---|---|---|
| slug* | string | The unique business slug, e.g. acme-plumbing-london |
Example request
curl "https://yolist.uk/api/v1/businesses/acme-plumbing-london"Example response
{
"id": "clx1abc...",
"name": "Acme Plumbing Ltd",
"slug": "acme-plumbing-london",
"shortDescription": "Emergency plumbing in London",
"description": "Full service plumbing company ...",
"category": "Plumbers",
"categorySlug": "plumbers",
"city": "London",
"citySlug": "london",
"address": {
"line1": "12 High Street",
"line2": null,
"postcode": "EC1A 1BB"
},
"coordinates": { "lat": 51.5074, "lng": -0.1278 },
"phone": "020 7946 0958",
"email": "hello@acmeplumbing.co.uk",
"website": "https://acmeplumbing.co.uk",
"rating": 4.7,
"reviewCount": 38,
"isVerified": true,
"isPremium": false,
"photos": [
{ "url": "https://...", "caption": "Our van", "isCover": true }
],
"openingHours": [
{ "day": "MONDAY", "openTime": "08:00", "closeTime": "18:00", "isClosed": false, "is24Hours": false }
]
}Code Examples
JavaScript (fetch)
// JavaScript / fetch
const res = await fetch('https://yolist.uk/api/v1/businesses?city=manchester&limit=10')
const { businesses, total, pages } = await res.json()
console.log(`Found ${total} businesses across ${pages} pages`)
businesses.forEach(b => console.log(b.name, b.rating))Python (requests)
# Python / requests
import requests
r = requests.get('https://yolist.uk/api/v1/businesses', params={
'city': 'birmingham',
'category': 'electricians',
'page': 1,
'limit': 20,
})
data = r.json()
for biz in data['businesses']:
print(biz['name'], biz['rating'])Error Responses
| Status | Meaning | Body |
|---|---|---|
| 200 | Success | See examples above |
| 404 | Not found | {"error":"not_found"} |
| 429 | Rate limit exceeded | {"error":"Too many requests..."} |
Need higher rate limits?
Register for a free API key to get 1,000 requests per minute and access to additional fields.
Get an API key →