API REFERENCE

BizCompliance API Documentation

Everything you need to integrate business compliance data into your application.

Base URL https://api.bizcomplianceapi.com/v1

Quick Start

Make your first API call in under 2 minutes. Pass your API key in the Authorization header and query for requirements by business type and location.

Authentication: Include your API key as a Bearer token in every request header: Authorization: Bearer YOUR_API_KEY
SHELL
# Get compliance requirements for a Restaurant in San Francisco, CA curl "https://api.bizcomplianceapi.com/v1/requirements?business_type=restaurant&city=San+Francisco&state=CA" \ -H "Authorization: Bearer YOUR_API_KEY"
JSON RESPONSE
{ "success": true, "data": { "business_type": "restaurant", "location": { "city": "San Francisco", "state": "CA", "county": "San Francisco County" }, "requirements": [ { "id": "req_biz_lic_sf_ca", "name": "SF Business Registration Certificate", "type": "business_license", "issuing_authority": { "name": "SF Office of the Treasurer", "url": "https://sftreasurer.org/business", "phone": "(415) 554-6134" }, "fee_range": { "min": 90, "max": 500, "currency": "USD" } } // ... more requirements ] } }

Authentication

All API requests require an API key. Pass it as a Bearer token in the Authorization header on every request. Generate your API key from your dashboard after signing up.

Keep your API key secret. Never expose it in client-side JavaScript or public repositories. All requests must be made server-side.
Authorization: Bearer YOUR_API_KEY
CURL
curl "https://api.bizcomplianceapi.com/v1/requirements?business_type=restaurant&city=Austin&state=TX" \ -H "Authorization: Bearer YOUR_API_KEY"

Rate Limits by Plan

Plan Requests / Day Requests / Month
Starter 100 req/day ~3,000 / month
Growth 500 req/day ~15,000 / month
Scale 3,000 req/day ~90,000 / month

Authentication Error Responses

JSON - 401 Unauthorized
{ "success": false, "error": { "code": "invalid_api_key", "message": "The API key provided is invalid or has been revoked.", "details": "Regenerate your key at https://bizcomplianceapi.com/dashboard" } }

Endpoints

GET /v1/requirements License & permit requirements by business type and location

Returns the complete list of licenses, permits, and registrations required to operate a given business type legally in a specific city and state. Each requirement includes the issuing authority, estimated fees, renewal schedule, application checklist, and penalty information for non-compliance.

Query Parameters
Parameter Type Required Description
business_type string Required Business type slug (e.g. restaurant, retail, contractor). See /v1/business-types for the full list.
city string Required City name (e.g. San Francisco, Austin, New York City)
state string Required Two-letter state code (e.g. CA, TX, NY)
county string Optional County name for county-level requirements. Improves accuracy when a city spans multiple counties.
SHELL
curl "https://api.bizcomplianceapi.com/v1/requirements?business_type=restaurant&city=San+Francisco&state=CA" \ -H "Authorization: Bearer YOUR_API_KEY"
JSON
{ "success": true, "data": { "business_type": "restaurant", "location": { "city": "San Francisco", "state": "CA", "county": "San Francisco County" }, "requirements": [ { "id": "req_biz_lic_sf_ca", "name": "SF Business Registration Certificate", "type": "business_license", "category": "municipal", "issuing_authority": { "name": "SF Office of the Treasurer & Tax Collector", "url": "https://sftreasurer.org/business", "phone": "(415) 554-6134" }, "fee_range": { "min": 90, "max": 500, "currency": "USD" }, "renewal": { "frequency": "annual", "month": 5 }, "application_checklist": [ "Completed application form", "Federal EIN", "Proof of business entity (LLC/Corp docs)", "Payment of registration fee" ], "penalty": { "min_fine": 500, "max_fine": 5000, "other_consequences": [ "Forced closure", "Lease termination clause triggered" ] } } ] } }
GET /v1/business-types List all supported business types

Returns the complete list of business type slugs accepted by the /v1/requirements endpoint. Use this to populate dropdowns or validate input before submitting requests.

SHELL
curl "https://api.bizcomplianceapi.com/v1/business-types" \ -H "Authorization: Bearer YOUR_API_KEY"
JSON
{ "success": true, "data": [ { "id": "restaurant", "name": "Restaurant / Food Service", "category": "food_beverage", "description": "Full-service dining establishments" }, { "id": "retail", "name": "Retail Store", "category": "retail", "description": "Physical retail locations selling goods" }, { "id": "contractor", "name": "General Contractor", "category": "construction", "description": "Licensed general contractors" } // ... 44 more business types ] }
GET /v1/locations List all supported locations

Returns all cities, states, and counties currently in our compliance database. Check this endpoint before making requirements lookups to verify your target location is covered.

Query Parameters
Parameter Type Required Description
state string Optional Filter by two-letter state code (e.g. CA) to return only cities in that state.
SHELL
curl "https://api.bizcomplianceapi.com/v1/locations?state=CA" \ -H "Authorization: Bearer YOUR_API_KEY"
JSON
{ "success": true, "data": [ { "city": "San Francisco", "state": "CA", "county": "San Francisco County" }, { "city": "Los Angeles", "state": "CA", "county": "Los Angeles County" }, { "city": "San Diego", "state": "CA", "county": "San Diego County" }, { "city": "Sacramento", "state": "CA", "county": "Sacramento County" } ] }
POST /v1/monitor Add a business to renewal monitoring

Creates a monitoring subscription for a business. You will receive webhook notifications at the specified lead-day intervals before each license or permit renewal deadline. Monitoring is billed at $3 per business per month.

Request Body (application/json)
Field Type Required Description
business_id string Required Your internal identifier for this business (max 128 chars)
business_type string Required Business type slug (e.g. restaurant)
city string Required City where the business operates
state string Required Two-letter state code
webhook_url string Required HTTPS URL to receive webhook POST requests. Must return 2xx to acknowledge receipt.
lead_days number[] Optional Days before renewal to trigger alerts. Defaults to [30, 60, 90].
SHELL
curl -X POST "https://api.bizcomplianceapi.com/v1/monitor" \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "business_id": "biz_8f3a9c12d4e7", "business_type": "restaurant", "city": "San Francisco", "state": "CA", "webhook_url": "https://yourapp.com/webhooks/compliance", "lead_days": [30, 60, 90] }'
JSON
{ "success": true, "monitor_id": "mon_7b2e4f91a3c6", "next_check": "2026-04-10T08:00:00Z" }
GET /v1/monitor/{monitor_id} Get monitoring status

Returns the current status of a monitoring subscription, including all active licenses being tracked and any upcoming renewal alerts scheduled.

SHELL
curl "https://api.bizcomplianceapi.com/v1/monitor/mon_7b2e4f91a3c6" \ -H "Authorization: Bearer YOUR_API_KEY"
JSON
{ "success": true, "monitor_id": "mon_7b2e4f91a3c6", "business_type": "restaurant", "location": { "city": "San Francisco", "state": "CA" }, "active_licenses": [ { "id": "req_biz_lic_sf_ca", "name": "SF Business Registration Certificate", "status": "active" } ], "upcoming_renewals": [ { "id": "req_health_permit_sf_ca", "renewal_due": "2026-06-30", "days_until": 88 } ] }
DELETE /v1/monitor/{monitor_id} Remove monitoring

Permanently removes a monitoring subscription. No further webhook alerts will be sent for this business. Billing stops at the end of the current billing period.

SHELL
curl -X DELETE "https://api.bizcomplianceapi.com/v1/monitor/mon_7b2e4f91a3c6" \ -H "Authorization: Bearer YOUR_API_KEY"
JSON
{ "success": true, "monitor_id": "mon_7b2e4f91a3c6", "status": "deleted", "deleted_at": "2026-04-03T15:44:02Z" }

Error Codes

All API errors return a consistent JSON structure with a machine-readable code and a human-readable message.

JSON - Error Response Format
{ "success": false, "error": { "code": "missing_parameter", "message": "Required parameter 'business_type' is missing.", "details": "See https://bizcomplianceapi.com/docs/#ep-requirements for required parameters." } }
Status Name Description
400 Bad Request A required parameter is missing or invalid. Check that business_type, city, and state are all present and correctly formatted.
401 Unauthorized The Authorization header is missing, the Bearer token is malformed, or the API key has been revoked. Regenerate your key from the dashboard.
403 Forbidden - Plan Limit Your API key is valid but your plan does not allow access to this endpoint or feature. Upgrade your plan to proceed.
404 Not Found The requested city/state combination is not in our coverage database, or the specified monitor ID does not exist. Use /v1/locations to check supported locations.
429 Rate Limited Your daily request limit has been exceeded. The X-RateLimit-Reset response header contains the UTC timestamp when your limit resets. Upgrade to increase limits.
500 Server Error An unexpected error occurred on our end. These are rare and automatically reported. Retry the request with exponential backoff. If it persists, contact support.

SDKs & Libraries

Official language SDKs are in development. In the meantime, the API is simple enough to use directly with any HTTP client. Below are SDK status and raw fetch/axios examples.

🔷
Node.js
Coming Soon
🐍
Python
Coming Soon
🥂
Go
Coming Soon
💎
Ruby
Coming Soon
JAVASCRIPT
const res = await fetch( 'https://api.bizcomplianceapi.com/v1/requirements?business_type=restaurant&city=Austin&state=TX', { headers: { 'Authorization': `Bearer ${YOUR_API_KEY}` } } ); if (!res.ok) { const err = await res.json().catch(() => ({})); throw new Error(err?.error?.message || `Request failed (${res.status})`); } const data = await res.json(); console.log(data.data.requirements);
JAVASCRIPT
import axios from 'axios'; const client = axios.create({ baseURL: 'https://api.bizcomplianceapi.com/v1', headers: { 'Authorization': `Bearer ${YOUR_API_KEY}` } }); const { data } = await client.get('/requirements', { params: { business_type: 'restaurant', city: 'Austin', state: 'TX' } }); console.log(data.data.requirements);
PYTHON
import requests response = requests.get( "https://api.bizcomplianceapi.com/v1/requirements", headers={"Authorization": f"Bearer {YOUR_API_KEY}"}, params={ "business_type": "restaurant", "city": "Austin", "state": "TX" } ) response.raise_for_status() data = response.json() print(data["data"]["requirements"])

Webhook Events

When a monitoring subscription is active, BizCompliance API sends HTTP POST requests to your webhook_url when key events occur. Your endpoint must return a 2xx status to acknowledge receipt - we retry up to 3 times with exponential backoff on failure.

Security: Validate webhook payloads by checking the X-BizCompliance-Signature header against a HMAC-SHA256 signature of the raw request body using your API key as the secret.
renewal_upcoming

Fired when a monitored license or permit renewal is approaching. Triggered at each interval specified in lead_days (default: 90, 60, and 30 days before the renewal deadline).

requirement_changed

Fired when a tracked requirement changes - such as a fee increase, new application form, updated issuing authority, or changed renewal schedule. Allows your platform to notify affected businesses proactively.

JSON - POST to your webhook_url
{ "event": "renewal_upcoming", "monitor_id": "mon_7b2e4f91a3c6", "business_id": "biz_8f3a9c12d4e7", "days_until_renewal": 30, "requirement": { "id": "req_health_permit_sf_ca", "name": "SF Health Department Permit", "renewal_due": "2026-05-31", "fee_estimate": 390, "authority_url": "https://www.sfdph.org/dph/EH" }, "sent_at": "2026-05-01T08:00:00Z" }
JSON - POST to your webhook_url
{ "event": "requirement_changed", "monitor_id": "mon_7b2e4f91a3c6", "requirement_id": "req_health_permit_sf_ca", "change_type": "fee_updated", "changes": { "fee_range": { "previous": { "min": 258, "max": 695 }, "current": { "min": 285, "max": 740 } } }, "sent_at": "2026-04-03T12:00:00Z" }