Real-time status, bond, and disciplinary data from the CSLB — built for marketplaces, insurers, and property managers.
Choose a plan below, complete checkout, and your API key appears instantly on screen. Copy it — you'll need it for every request.
Send a POST /v1/verify with the license number, state, and profession in the body. Include your API key in the header.
Receive a normalized JSON object: license status, business name, bond status, workers' comp, classifications, disciplinary flags, and dates.
# Verify a California contractor license curl -X POST https://goodstanding.dev/v1/verify \ -H "x-api-key: lv_your_key_here" \ -H "Content-Type: application/json" \ -d '{ "license_number": "1083364", "state": "CA", "profession": "general_contractor" }'
Via CSLB (Contractors State License Board) public lookup. All license classes.
More states and professions are added based on demand.
Email us if you need a specific state or profession prioritized.
For teams getting started with license verification.
For production apps and high-volume workflows.
Custom volume, SLAs, additional states, and dedicated support.
10-credit pack for $15. No subscription. Perfect for occasional use.
We pull directly from CSLB's public license lookup and normalize it into clean JSON. We are not affiliated with CSLB; always treat CSLB's own site as the final authority for high-stakes decisions.
Results are cached for 24 hours per license number to keep lookups fast and avoid unnecessary load on CSLB's servers. Monitoring subscribers (Growth plan) get flagged on status changes when the scheduled re-check detects a difference.
Our API returns a clear 503 error rather than stale or fabricated data.
You'll see an error field
explaining the upstream issue. Cached results from within the last 24 hours are
still served normally.
You'll receive a 429 response
with a clear message and your current usage. Quotas reset on the first of each month.
You can upgrade your plan at any time — just grab a new key for the higher tier.
Available on the Growth plan. Call POST /v1/monitor
with a license number and your webhook URL. When we detect a status change on our
next scheduled check, we'll POST the updated license data to your URL.