GovData Labs — Multi-State Contractor License Verifier avatar

GovData Labs — Multi-State Contractor License Verifier

Pricing

Pay per event

Go to Apify Store
GovData Labs — Multi-State Contractor License Verifier

GovData Labs — Multi-State Contractor License Verifier

GovData Labs verifies contractor license status, insurance, and bonds from official Washington, Oregon, New York, and Texas open data.

Pricing

Pay per event

Rating

0.0

(0)

Developer

GovData Labs

GovData Labs

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

11 hours ago

Last modified

Share

Look up contractor licenses in bulk from the official open-data APIs of Washington, Oregon, New York, and Texas. Each result is one flat record: status, dates, insurance, bond, address, and principals when the state publishes them, plus expiry flags.

Built for general contractors, suppliers, and compliance teams who need to check a bid list without opening four state portals.

What you get

For every matched license:

  • state, license_number, business_name, normalized_name
  • status and license_type / license_classification
  • issued_on and expires_on (YYYY-MM-DD)
  • insurance carrier, amount, and expiry when the state publishes them
  • bond company, amount, and expiry when the state publishes them
  • address, city, postal_code, phone, principals
  • flags: expired, expiring_within_30_days, expiring_within_60_days, expiring_within_90_days, insurance_lapsed, bond_lapsed
  • source_url and fetched_at

The 60-day and 90-day flags include shorter windows. A license due in 10 days has all three set. An already expired license has expired set and the "within N days" flags clear.

insurance_lapsed and bond_lapsed are true only when the source shows missing coverage or a past expiry. If the state does not publish that field, the flag stays false. A Washington bond that says "Until Canceled" is not treated as lapsed; the original text is kept in bond_expiration_raw.

Who it is for

  • Pre-qualifying subcontractors before a bid
  • Watching a vendor list for expirations, lapsed insurance, or lapsed bonds
  • Appending a normalized license record to a CRM

How a run works

  1. Pass license numbers, business names, or both. Prefix a value with a state (WA:ECOSTSC758NN or TX:Bee Cave Electric) to search one state. Without a prefix, every selected state is searched.
  2. License numbers are exact. Names are probed with a SoQL LIKE on the most distinctive word, then ranked with a fuzzy score that ignores punctuation and suffixes such as LLC, Inc, and Co. The default threshold is 0.84. Exact number hits have confidence 1.
  3. Washington joins the license to the insurance and bond datasets on contractorlicensenumber. Principals come from primaryprincipalname on the license file. There is no fourth principals dataset.
  4. Oregon has no status column. Status is Active or Expired from lic_exp_date. The responsible managing individual is stored as principals.
  5. New York does not publish a carrier or a bond. insurance_lapsed is true when the registry says workers' compensation is missing and the business is not exempt.
  6. Texas TDLR's file is every profession, not just contractors. Name search defaults to construction trades (electrical, air conditioning, elevator, appliance installation, water well, and related). A lookup by license number returns every profession that uses that number, because TDLR numbers are not unique across professions. Set includeAllTexasLicenseTypes to search the full file by name.
  7. Rows are deduped on state, license number, and license type. Optional change tracking stores a snapshot in a named key-value store.

Pricing

Pay per event. You pay only for what a run returns:

EventPriceWhen
actor-start$0.010Once per run, after the input validates
license-result$0.010Each output row
change-detected$0.005Each new or changed row after a baseline snapshot

One hundred licenses cost about $1.01. The first "only changes" run is the baseline and does not charge change-detected.

Platform compute is billed separately by Apify and is small: 512 MB memory is enough for typical runs (the Actor refuses more than 2048 MB).

Example input

{
"licenseNumbers": ["WA:ECOSTSC758NN", "OR:213645", "NY:26-639SQ-CR", "TX:36159"],
"businessNames": ["Reliable Construction"],
"states": ["WA", "OR", "NY", "TX"],
"maxResults": 50,
"onlyChangesSinceLastRun": false
}

Example output

Example data (fictional business and address) showing the shape of a Washington row. Real rows come from the live state datasets.

{
"state": "WA",
"license_number": "EXAMPCL000AA",
"business_name": "EXAMPLE CONSTRUCTION LLC",
"normalized_name": "EXAMPLE CONSTRUCTION",
"status": "Active",
"license_type": "CONSTRUCTION CONTRACTOR",
"issued_on": "2025-08-15",
"expires_on": "2027-08-15",
"insurance_carrier": "State National Ins Co Inc",
"insurance_amount": 1000000,
"insurance_expires_on": "2027-06-12",
"bond_company": "Merchants Bonding Co (Mutual)",
"bond_amount": 30000,
"bond_expires_on": null,
"bond_expiration_raw": "Until Canceled",
"address": "123 Main St, Anytown, WA, 98000",
"principals": "J. SMITH",
"expired": false,
"expiring_within_90_days": false,
"insurance_lapsed": false,
"bond_lapsed": false,
"match_confidence": 1,
"source_url": "https://data.wa.gov/d/m8qx-ubtq",
"fetched_at": "2026-10-31T00:00:00.000Z"
}

Limits

  • 5,000 output rows per run, 5,000 queries per run.
  • Name search ranks at most 40 candidates per state (configurable up to 100).
  • Requests to one host are spaced 200 ms apart by default, with retries and backoff on HTTP 429 and 5xx.
  • The snapshot keeps the newest 12,000 hashes so it stays under the key-value record size limit.
  • An optional Socrata app token (socrataAppToken or SOCRATA_APP_TOKEN) raises the portal rate limit. Anonymous access is enough for short runs.

Data sources

Verified against the live SODA APIs on 31 October 2026. All four requested states responded. None were dropped.

StatePortalDatasetWhat it contributes
Washingtondata.wa.govm8qx-ubtq licenses, ciwg-agsx insurance, bzff-4fmt bondsStatus, dates, address, primary principal, carrier, bond. Join key contractorlicensenumber.
Oregondata.oregon.govg77e-6bhsCCB license, bond, and insurance on one row. No status column.
New Yorkdata.ny.govi4jv-zkeyContractor registry. Workers-compensation flag, no carrier or bond.
Texasdata.texas.gov7358-krk7TDLR all-licenses file. Expiration and owner. No street address, insurance, or bond.

Washington principals are the primaryprincipalname column on the license dataset, not a separate file. The three published ids are licenses, insurance, and bonds.

Published by the Washington State Department of Labor & Industries, the Oregon Construction Contractors Board (via Oregon open data), New York State, and the Texas Department of Licensing and Regulation. These are public open-data portals. Confirm each portal's terms before you redistribute an extract.

Disclaimer

Data comes from official public sources and may lag the licensing board. It is not a legal determination of license status, insurance, or bond sufficiency. Confirm a result with the state before you rely on it for a bid, a claim, or an enforcement decision.