API BETA - 50 STATE COVERAGE

Contractor License Verification. One API Call.

Stop scraping 50 different state board websites. One unified REST endpoint returns license status, expiration, bond info, and disciplinary actions for any contractor in any state.

PM
HS
GC
+

Trusted by property managers, home service platforms, and GCs

cURL REQUEST
GET /verify?name=John+Smith&state=CA
Authorization: Bearer cv_live_abc123
Content-Type: application/json
200 OK RESPONSE
{
  "license_number": "1045832",
  "status": "ACTIVE",
  "license_type": "General Building",
  "classification": "B - General Building",
  "expiration_date": "2027-03-31",
  "bond_amount": 25000,
  "disciplinary_actions": [],
  "business_name": "Smith Construction LLC",
  "insurance_required": true
}
50 states covered avg 1.2s response 99.9% uptime

Contractor Verification Is Broken

> Without ContractorVerify

  • x 50 different state board websites with different UIs
  • x Manual searches that take 5-10 minutes per contractor
  • x No standard data format - every state returns different fields
  • x CAPTCHAs, rate limits, and broken search forms
  • x No way to batch-verify 100+ contractors at once

> With ContractorVerify API

  • > One unified API endpoint for all 50 states
  • > Sub-2-second responses, fully automated
  • > Standardized JSON response - same schema, every state
  • > We handle CAPTCHAs, retries, and board changes
  • > Batch endpoint - verify 100 contractors in one call

Everything You Need to Verify Contractors

Built for developers who need reliable, real-time contractor license data at scale.

50

All 50 States

Unified coverage across every state licensing board. One endpoint, one schema, every state.

{}

Standardized JSON

License number, status, type, classification, expiration, bond amount, disciplinary actions - all normalized.

[]

Batch Verification

POST up to 100 contractor/state pairs in a single request. Get results in parallel. Webhook support for async.

ms

Real-Time Scraping

Live data from state boards - not stale databases. 24-hour cache layer prevents redundant lookups.

@

Webhooks + Async

For batch jobs, get results pushed to your endpoint when ready. No polling required.

$

Stripe Metered Billing

Pay for what you use. Automatic usage tracking, invoicing, and overage billing built in.

Three Lines of Code

Integrate in minutes. No scraping infrastructure to build or maintain.

1

Get Your API Key

Sign up, grab your key from the dashboard. Free tier includes 50 lookups per month.

Authorization: Bearer cv_live_abc123
2

Make a Request

Send contractor name and state. Or license number if you have it. Single or batch.

GET /verify?name=John+Smith&state=CA
3

Get Verified Data

Receive standardized JSON with license status, expiration, bond info, and more.

{ "status": "ACTIVE", "bond": 25000 }

Simple, Usage-Based Pricing

Start free, scale as you grow. Early bird discount locked for life.

Free
$0 /mo
50 lookups/month
5 requests/min
  • All 50 states
  • Standardized JSON
  • Single lookups only
  • Community support
Get Started Free
Starter
$49 $10 /mo forever
500 lookups/month
20 requests/min
  • Everything in Free
  • Batch verification (100/req)
  • 24-hour cache
  • Email support
Lock In 80% Off
Business
$499 $100 /mo forever
25,000 lookups/month
120 requests/min
  • Everything in Pro
  • SLA 99.9% uptime
  • Custom fields (coming)
  • Dedicated support
Lock In 80% Off

Early bird pricing locked for life. No credit card needed to reserve your spot. Regular pricing returns after 200 signups. Overage: $0.08/lookup.

Frequently Asked Questions

We use Playwright-based scrapers that query each state licensing board in real-time. When you make an API call, we fetch live data from the relevant state board, parse and normalize it into a standard JSON schema, and return it to you. Results are cached for 24 hours to avoid redundant lookups.
At launch, we support the top 10 states by contractor volume: California (CSLB), Texas (TDLR), Florida (DBPR), New York (DOS), Illinois (IDFPR), Pennsylvania (BPOA), Ohio, Georgia, North Carolina, and Arizona. These cover roughly 60% of US contractors. We are adding more states every week, with full 50-state coverage targeted within 90 days.
Every response includes: license_number, license_type, classification, status (ACTIVE/EXPIRED/SUSPENDED/REVOKED), issue_date, expiration_date, bond_amount, disciplinary_actions (array), business_name, address, and insurance_required. Field availability varies by state - use the GET /states endpoint to see which fields each state supports.
Cached results return in under 200ms. Fresh lookups (cache miss) average 1.2 seconds, depending on the state board's response time. Batch requests process in parallel, so 100 lookups typically complete within 5-10 seconds.
Yes. Pass license_number as a query parameter instead of name: GET /verify?license_number=1045832&state=CA. License number lookups are faster and more precise since they avoid name-matching ambiguity.
POST an array of up to 100 {name, state} pairs to /verify/batch. You can optionally provide a webhook_url to receive results asynchronously. Without a webhook, the response returns when all lookups complete. Each lookup in the batch counts as one against your monthly quota.
If a state board is temporarily unavailable, we return the last cached result (if available) with a stale: true flag, or a 503 status with a retry_after header. We monitor all state boards continuously and have fallback scraping strategies for common downtime patterns.
We scrape directly from official state licensing board websites - the same source you would check manually. Data accuracy matches the state board itself. Our 24-hour cache TTL means results are at most one day old. For time-sensitive verifications, you can pass cache=false to force a fresh lookup.
Yes. Several state boards use CAPTCHAs. We handle these automatically using a combination of browser automation and 2Captcha as a fallback. You never need to worry about CAPTCHAs - it is fully abstracted away behind our API.
Bearer token authentication. Include your API key in the Authorization header: Authorization: Bearer cv_live_yourkey. Keys are managed in your dashboard. You can create multiple keys with different rate limits and permissions for different environments (dev, staging, prod).
Limited - First 200 Spots Only

Lock In 80% Off For Life

We're opening early access to the first 200 users. Sign up now and your founding member discount is locked in permanently - even after we raise prices.

80% off forever - pay just $10/mo instead of $49 (Starter)
Free upgrade to Pro for the first 3 months ($149/mo value)
Priority access - your requests skip the queue
Direct Slack channel with the founding team
Shape the roadmap - vote on features before anyone else
No credit card needed - just your email to reserve your spot

No spam. Unsubscribe anytime. You'll get one email when we launch.

127 of 200 spots remaining