Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we
store it to create your key and to recognise you if you sign in with another
provider. See our Privacy Policy and
Terms.
openapi: 3.2.0
info:
title: Bezal Public Health API
description: 'Search Bezal''s local business directory, view public business profiles, and send
service requests to businesses.
## Authentication
Pass your API key in the Authorization header (or in X-API-Key):
```
Authorization: Bearer bzl_your_key_here
```
Read endpoints (search, business details, categories, health, this spec) work without a key
and are limited per IP. Write endpoints (requests) require a valid API key.
Get a key at https://bezal.ai/developers/keys.
## What a business record contains
Every business record has the same public shape. Contact details depend on the provider''s
Bezal plan:
- Always: id, name, category, city, state, avg_rating, review_count, tier, quote_request_url
- Pro, Business and Premium plans: phone, website, address, zip, hours, photos, lat, lng
- Business and Premium plans: description
- Free and unclaimed listings: upgrade_note
quote_request_url is the business''s public Bezal profile, where a person can send a request.
## Rate limiting
Each key has a daily request limit, and anonymous callers have a daily limit per IP.
When a limit is exceeded, the API returns 429.'
version: 1.1.0
contact:
name: Bezal API Support
url: https://bezal.ai/developers
servers:
- url: https://bezal.ai/api/v1
description: Production
tags:
- name: Health
paths:
/health:
get:
operationId: healthCheck
summary: API health check
description: Returns API status, version, and the current number of businesses in the directory.
responses:
'200':
description: API is healthy
content:
application/json:
schema:
$ref: '#/components/schemas/Health'
'429':
$ref: '#/components/responses/RateLimited'
'500':
description: API is degraded
content:
application/json:
schema:
$ref: '#/components/schemas/Health'
tags:
- Health
components:
schemas:
RateLimitError:
type: object
required:
- error
properties:
error:
type: string
tier:
type: string
requests_today:
type: integer
limit:
type: integer
Health:
type: object
required:
- status
- version
- timestamp
- businesses_count
properties:
status:
type: string
enum:
- ok
- degraded
version:
type: string
timestamp:
type: string
format: date-time
businesses_count:
type: integer
responses:
RateLimited:
description: Rate limit exceeded
content:
application/json:
schema:
$ref: '#/components/schemas/RateLimitError'
example:
error: Rate limit exceeded
securitySchemes:
bearerAuth:
type: http
scheme: bearer
bearerFormat: bzl_...
apiKeyHeader:
type: apiKey
in: header
name: X-API-Key