tradesapi
Book a demo
MCP Hosted MCP server for AI agents

License verification infrastructure for B2B SaaS platforms.

Nationwide US coverage. One API, built for embedded compliance workflows.

# One call, the whole picture GET /verify?state=TX&license=TACLA00000103C&trade=hvac X-API-Key: YOUR_KEY
{
  "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.

What we do

Built the way you'd build it.

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.

One normalized schema.

{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.

Batch up to 200 licenses per call.

Parallelized against live state portals, single response. Credit deduction is atomic and positional — no partial charges if a single lookup fails.

Name search where the portal supports it.

Fuzzy match when your customer only has a contractor name. Results include all matches with full license metadata.

MCP-ready out of the box.

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.

Disciplinary history, in the same response.

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.

City-level coverage, not just state boards.

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.

API

Four primitives.

GET/verify

Verify

Fetch a single license by state + license number. Returns validity, holder, status, expiration, and disciplinary history.

POST/batch

Batch

Up to 200 licenses in one round-trip. Positional results with per-row errors and atomic billing.

GET/search

Search

Search by contractor or business name where the state portal supports it. Returns all matches with full license metadata.

POST/monitor

Monitor

Add a license to a watch list. Receive a signed webhook or email the moment its status, expiration, or disciplinary record changes.

Coverage

All 50 states, DC, and the metros.

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.

51
State-level jurisdictions (50 states + DC)
15
Municipal licensing boards
200
Licenses per batch call
15 min
Automated health-probe cadence
State coverage 50 + DC
ALAKAZARCACOCT DEDCFLGAHIIDIL INIAKSKYLAMEMD MAMIMNMSMOMTNE NVNHNJNMNYNCND OHOKORPARISCSD TNTXUTVTVAWAWV WIWY
Municipal coverage Live
Atlanta Chicago Columbus Dallas Denver Detroit El Paso Indianapolis Jacksonville Las Vegas Los Angeles Nashville New York City Philadelphia Seattle
Continuous monitoring

Stop re-polling. Let the changes come to you.

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.

Daily source-of-truth polling.

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.

Webhook or email on change.

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.

Bulk watch lists.

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.

Start monitoring → Monitoring API reference →
Why partners choose us

Clean scope. Auditable freshness. Nothing to maintain.

Built for embedding, not reselling.

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.

Freshness you can audit.

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.

Self-healing infrastructure.

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.

Operational transparency

We don't publish uptime claims we haven't measured.

Instead, here's what we expose publicly so you can check for yourself:

Pricing

Simple, per-verification pricing.

Free tier

$0
50 verifications included with every new API key

Starter

$99
400 verifications · $0.25 each

Growth

$349
1,500 verifications · $0.23 each

Business

$999
5,000 verifications · $0.20 each

License Monitoring

$99/mo
Up to 50 monitored contractors · continuous watch with webhook alerts on status changes · volume rates as you grow

Enterprise

Custom
  • Volume pricing
  • Contractual SLA
  • Dedicated support
  • Priority state coverage requests
  • Embedded / private-label integrations
Talk to sales →

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.

FAQ

Contractor license verification, answered.

How do I verify a contractor license through an API?

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.

Which states does TradesAPI cover?

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.

How much does contractor license verification cost?

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.

Can AI agents use TradesAPI?

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.

Is the verification data live or cached?

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.

What does a verification result include?

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.

Can I use TradesAPI for hiring or tenant screening?

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.

For developers

Building an integration?

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"
Guides

License lookup guides for every state.

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.

Stop building license lookups.

50 free verifications with every new API key. No card required.

Start free → Book a demo