Nationwide US coverage. One API, built for embedded compliance workflows.
{
"valid": true,
"name": "SAMPLE HVAC SERVICES LLC",
"license_number": "TACLA00000103C",
"trade": "hvac",
"expiration": "05/12/2027",
"status": "Active",
"state": "TX",
"disciplinary_actions": [],
"source_url": "https://www.tdlr.texas.gov/LicenseSearch/",
"cached": false,
"checked_at": "2026-08-09T04:00:00Z"
}Example responses showing the exact normalized schema /verify returns — the same shape across all 50 states, DC, and our municipal boards. Wire up the real thing against deterministic fixtures in the sandbox.
For business verification only. TradesAPI is not a consumer reporting agency. May not be used for employment, credit, insurance, tenant screening, or any other purpose governed by the Fair Credit Reporting Act.
We handle the state portals, the rate limits, the schema drift. You get one clean endpoint and a response that looks the same in Texas as it does in Oregon.
{valid, name, status, expiration, disciplinary_actions, source_url, ...} — same shape whether you're hitting Texas TDLR, California CSLB, or New York DOS. Your integration code doesn't change per state.
Parallelized against live state portals, single response. Credit deduction is atomic and positional — no partial charges if a single lookup fails.
Fuzzy match when your customer only has a contractor name. Results include all matches with full license metadata.
Hosted endpoint at /mcp plus an npm client for Claude, Cursor, OpenAI, and any MCP-speaking agent. OAuth 2.1 with browser flow — no API keys in config files.
When a state board publishes enforcement actions, suspensions, or revocations, they come back in the disciplinary_actions array on the verify result — no second lookup, no separate data vendor.
Some trades are licensed by the city, not the state. We cover municipal licensing boards in 15 major metros under the same normalized schema and the same /verify call.
Fetch a single license by state + license number. Returns validity, holder, status, expiration, and disciplinary history.
Up to 200 licenses in one round-trip. Positional results with per-row errors and atomic billing.
Search by contractor or business name where the state portal supports it. Returns all matches with full license metadata.
Add a license to a watch list. Receive a signed webhook or email the moment its status, expiration, or disciplinary record changes.
Every state-level licensing board, plus the major municipalities that license separately — Atlanta, Chicago, Columbus, Dallas, Denver, Detroit, El Paso, Indianapolis, Jacksonville, Las Vegas, Los Angeles, Nashville, New York City, Philadelphia, and Seattle.
A single /verify call is a snapshot — true the moment you asked. Monitoring keeps watching: add a license to a watch list and we re-check it against source-of-truth data on an ongoing basis, then push you a webhook or email the instant its status changes.
Every monitored license is re-checked daily against the state's live data. Expirations, suspensions, and revocations surface on their own — you don't schedule a single re-verify call.
Signed webhooks with automatic retry, or a plain email alert — delivered only when a license actually changes state. No noise, no nightly diffing to build on your side.
Upload up to 5,000 licenses at once. Manage the whole roster from the dashboard or the /monitor API — the same normalized schema you already integrated for verify.
License verification only. We'll never do insurance, COI, or KYC. That means we'll never compete with the product you're building on top of us.
Live portal checks where states allow them, official state data feeds everywhere else. Every response carries checked_at and cached, so you always know exactly how fresh your answer is — no guessing, no silent staleness.
Automated health probes every 15 minutes. When a portal changes, a repair pipeline diagnoses the break and ships a fix — with no human in the loop. Maintenance cost you don't pay.
Instead, here's what we expose publicly so you can check for yourself:
All plans include the same API, nationwide coverage, and MCP access. Credits never expire. Verifications are billed only when they succeed; a forced live re-check (?fresh=true) costs 2 credits, name search costs 2.
Send a GET request to /verify with the two-letter state code and the license number, and pass your key in the X-API-Key header. TradesAPI checks the state licensing board and returns a normalized result with the license status, licensee name, expiration date, and any disciplinary actions. Add a trade parameter to disambiguate, or a city parameter for licenses issued by a municipal board.
All 50 US states and the District of Columbia, plus 15 municipal licensing boards: Atlanta, Chicago, Columbus, Dallas, Denver, Detroit, El Paso, Indianapolis, Jacksonville, Las Vegas, Los Angeles, Nashville, New York City, Philadelphia, and Seattle. Live per-jurisdiction status is published at /status.
Every new API key includes 50 free verifications. Paid plans start at $99 for 400 verifications and scale to $999 for 5,000. You are billed only when a verification succeeds. Continuous license monitoring starts at $99 per month, which covers up to 50 monitored contractors. Volume rates apply as you grow.
Yes. TradesAPI has a hosted Model Context Protocol endpoint at /mcp that connects with just a URL and an OAuth sign-in, so there is no API key to store in the client. There is also an npm client, contractor-license-mcp-server, that works with Claude, Cursor, and any MCP-speaking agent.
Active licenses are cached for 24 hours. Expired, not-found, and error results are always re-verified live. Every response carries a checked_at timestamp and a cached flag so you can see how fresh the answer is, and you can force a live re-check with ?fresh=true.
A single normalized object with fields for valid, the licensee name, license number, state, trade, status, expiration, a disciplinary_actions list, the source_url, and a correlation id. The shape is the same across every state, so your integration code does not change per state.
No. TradesAPI is for business verification only. It is not a consumer reporting agency and may not be used for employment, credit, insurance, tenant screening, or any other purpose governed by the Fair Credit Reporting Act.
Full reference at /docs, install the MCP client with npx contractor-license-mcp-server, or browse the source on GitHub.
# Verify any contractor license with one API call
curl -H "X-API-Key: YOUR_KEY" \
"https://www.tradesapi.com/verify?state=TX&license=TACLA00000103C&trade=hvac"
How to verify a contractor license — by hand on the state board or through one normalized API. Pick a state or trade, or browse all guides.
50 free verifications with every new API key. No card required.