Contractor Licenses. Verified Nightly. Including the ones competitors hide.
License verification, disciplinary history, and risk-tier scoring across CA CSLB, TX TDLR, FL DBPR, NY DOS, NYC DOB, and NYC DCWP. We surface denied, revoked, and surrendered licensees that standard license tools throw away — and we disambiguate license-number collisions across trades, so you see the right human. Dashboard and API.
Two product facts that change what license lookup actually means
Most license verification tools key only on license_number and return only active registrations. That throws away the highest- signal regulatory data and silently merges different humans behind the same number. We don't.
We return the regulatory record where competitors return “not found”
Most license lookup tools return “not found” when a contractor's license has been denied, revoked, or surrendered. We return the regulatory record. That's the strongest negative signal you can get on a contractor — and it's the one competitors throw away.
Live today: TX TDLR + NYC DOB
Thousands of regulatory actions across state and municipal boards that were previously discarded for “no active license on file” are now visible to subscribers. CA CSLB / FL DBPR / NY DOS / NYC DCWP follow on the roadmap.
We disambiguate license-number collisions by trade — so you see the right human
NYC DOB issues colliding license numbers across license types — the same number 1094 belongs to a Master Plumber AND a Licensed Electrician, two different people. Tools that key only on license_number merge them into one result and smear the wrong person across your workflow. We disambiguate by license_type and surface both records side-by-side.
Identity is (license_number, board_id, license_type)
Multi-row response. The discriminator field is on every plan including General Contractor — without it, a customer can't tell which row is “their” licensee.
Both facts ship today on the lookup endpoint and the dashboard. Multi-row response, typed envelope, with result_type and license_type on every result. Bulk consumers get the same shape — drop-in.
License + Discipline + Risk. One Feed.
Contractor licensing data is fragmented across 50 state boards and dozens of municipal portals. We pull it nightly and normalize the corpus so you can verify a license, surface its history, and score its risk in a single query. Including the records that don't map to an active license — denied, revoked, and surrendered — flagged with a discriminator so they never get confused for an active registration.
License Verification
All plansLook up any contractor by license number or business name across CA CSLB, TX TDLR, FL DBPR, NY DOS, NYC DOB, and NYC DCWP. Status, license type, specialty codes, issue + expiration dates. Multi-row results when a license number is held across trades — we never collapse distinct licensees into one record.
Discipline-Only Surface
All plansDenied, revoked, and surrendered licensees that don't appear in active-license tables — the strongest negative signal you can get on a contractor, and the one most lookup tools throw away. Surfaced with the same lookup endpoint, flagged result_type='discipline_only'.
Disciplinary History
Platform+Every disciplinary action filed against a contractor — citations, suspensions, revocations, with case numbers, action dates, and source documents where boards expose them.
Risk-Tier Classification
InsurerRolled-up `low / moderate / elevated / high` risk score per contractor, computed from disciplinary frequency, complaint count, license currency, and specialty volatility.
Bulk Lookup API
Platform+POST a list of license numbers or business names; get a normalized status report across all 4 states + NYC boards in a single call. Scales to vet a portfolio of subcontractors at once.
Bond Status Tracking
InsurerWhere a board exposes surety bond posting status, we surface it: bond effective date, bond carrier, bond amount, and lapsed-bond flags. Useful for surety underwriters and high-stakes GCs.
Webhook Alerts
InsurerSubscribe a contractor and get a webhook the moment status changes — license suspended, expired, new disciplinary action, or risk tier escalates. Wire it into your vendor management system.
Six Boards. Three States. NYC.
We crawl the authoritative state portals plus NYC's two municipal contractor agencies. New York's contractor licensing is largely municipal — we treat NYC DOB and NYC DCWP as separate sources rather than rolling them under NY DOS.
California CSLB
CAStatewide contractor license board
ca-cslb
Texas TDLR
TXDepartment of Licensing & Regulation
tx-tdlr
Florida DBPR
FLBusiness & Professional Regulation
fl-dbpr
NY Department of State
NYStatewide catch-all (sparse — see NYC)
ny-dos
NYC Department of Buildings
NYSpecialty trades + general construction
nyc-dob
NYC DCWP
NYHome Improvement Contractors
nyc-dcwp
One License Number, Full Picture.
Sample below uses an illustrative response while the production crawl ramps. Live data populates as soon as the nightly board passes complete.
License Number
1234567
Business Name
ACME Construction Inc.
License Type
B — General Building Contractor
Status
Active
Expiration
2027-08-15
Risk Tier
low
0 disciplinary actions on file. Last verified against the source board overnight.
Illustrative only. Live numbers populate as soon as the nightly scrapers complete a baseline pass against each board.
What Subscribers Do With the Data
Real workflows from the four personas we serve.
Vet Every Subcontractor in Your Marketplace
Home service platforms run nightly bulk lookups against the contractors they list. Surface expired licenses, recent suspensions, and risk-tier escalations before a homeowner books a job.
Underwrite Surety Bonds With Better Data
Pull a contractor's full disciplinary history, current bond status, and risk tier in a single call. Price bond premiums against actual track record, not just industry-average claim rates.
Vet Specialty Subs Before You Sign Them
GCs running multi-state jobs use the lookup to verify specialty trade licenses — electricians, master plumbers, roofers, asbestos abatement — across CA, TX, FL, NYC in seconds.
Power Background Check Reports
Background-check platforms license the bulk API and roll our license + discipline data into their consumer-facing reports. Negotiated data licensing, redistribution-ready feeds.
Always Up to Date
Nightly crawls feed normalized contractor + disciplinary tables. Risk tier recomputes on the same cycle. Insurer subscribers get webhooks the moment a status changes.
| Dataset | Update Frequency | Source |
|---|---|---|
| License Verification | Nightly | State + municipal licensing boards |
| Discipline-Only Surface | Nightly | Board enforcement portals (denied / revoked / surrendered licensees) |
| Disciplinary Actions | Nightly | Board enforcement portals |
| Risk Tier | Nightly | Computed in-platform |
| Bond Status | Nightly | Where the board exposes bond data |
| Webhook Alerts | Real time | Triggered on status diff vs. last snapshot |
Plans for Every Contractor Workflow
Start with a 7-day free trial. Annual billing saves 2 months on every plan.
Frequently Asked Questions
Which states and licensing boards do you cover?
Phase 5 ships with 6 boards across 4 states: California (CSLB), Texas (TDLR), Florida (DBPR), New York Department of State, NYC Department of Buildings (DOB), and NYC Department of Consumer and Worker Protection (DCWP). NY contractor licensing is largely municipal in NYC — we treat the NYC boards as separate sources rather than rolling them under NY DOS. Additional states are added quarterly based on subscriber demand.
How current is the data?
We crawl every board nightly and write a `last_scraped_at` timestamp against the source. Status changes — suspensions, revocations, new disciplinary filings — typically surface within 24 hours of being posted to the board. Insurer-tier subscribers receive webhook alerts the moment a status changes.
What is the discipline-only surface?
When a license has been denied, revoked, or surrendered, most lookup tools return 'not found' and discard the regulatory record. We don't. Our license lookup returns those records with a `result_type='discipline_only'` flag and the full disciplinary history. It's the strongest negative signal you can get on a contractor. Live today on TX TDLR and NYC DOB; CA CSLB / FL DBPR / NY DOS / NYC DCWP follow as roadmap. Visibility (and the discriminator field) ships on every plan including General Contractor; full reason text and history is available on Platform+.
Why do I sometimes see two results for one license number?
Some boards — most prominently NYC DOB — issue colliding license numbers across license types. The same number can belong to a Master Plumber AND a Licensed Electrician, two different humans. Standard lookup tools that key only on license_number merge them into one record and surface the wrong person. We disambiguate by license_type and return both rows side-by-side with their respective trades labeled. The discriminator is on every plan because without it a customer can't tell which row is their licensee.
What is the risk tier and how is it calculated?
Risk tier is a 4-level score (low / moderate / elevated / high) computed nightly per contractor from disciplinary action frequency, complaint count, license currency, and specialty volatility. It is exposed on the Insurer plan and meant as a screening signal, not a substitute for full underwriting review.
Can I vet a list of contractors at once?
Yes. The Platform and Insurer plans include a bulk lookup endpoint — POST a list of license numbers or business names and get a normalized status report across every covered board in a single call.
Is the API available on every plan?
API access starts on the Platform plan ($699/mo, 2,000 req/mo) and expands on the Insurer plan ($1,499/mo, 20,000 req/mo). The General Contractor plan is dashboard-only — GCs typically run ad-hoc lookups rather than programmatic queries.
Is there a free trial?
Every plan includes a 7-day free trial with full access to that tier's features. No refunds are issued after day 8 of a paid subscription — see the Terms of Service for details.