USA Contractor License Scraper: Names, Phones & Addresses
Scrape US state contractor licenses: business name, principal contact, license number and type, status, address, phone, dates and liability insurance. Filter by keyword, city, type or status. Export to JSON, CSV or Excel.
{ "businessName": "04 CONSTRUCTION LLC", "primaryPrincipalName": "Ochoa, Eric James", "contractorLicenseNumber": "04CONCL862CR", "contractorLicenseTypeCode": "CC", "contractorLicenseType": "CONSTRUCTION CONTRACTOR", "specialtyCode1": "01", "specialty1": "GENERAL", "statusCode": "A", "status": "ACTIVE" }
Every run returns clean, typed records, ready for your CRM, spreadsheet or database.
- One clean record per result, deduped and normalized
- Stable schema in JSON, CSV or Excel, or read it via the Apify API
- Pay per use in the cloud, nothing to install or maintain
A real example record, exactly the shape you receive.
| Business Name | Primary Principal Name | Contractor License Number | Contractor License Type Code |
|---|---|---|---|
| 04 CONSTRUCTION LLC | Ochoa, Eric James | 04CONCL862CR | CC |
| 1002 COATINGS & CONST LLC | BYRAN, JUSTIN DAVID | 1002CCC811LR | CC |
| 100PLUS REMODELING LLC | HUI, WESLEY JM | 100PLRL754Q5 | CC |
| 100 PROOF DRYWALL LLC | LINDAL, JAMES WALLACE | 100PRPD823OR | CC |
| 101 GENERAL CONTRACTING LLC | BARNETT, KIMBERLY MARIE | 101GEGC810PH | CC |
{ "businessName": "04 CONSTRUCTION LLC", "primaryPrincipalName": "Ochoa, Eric James", "contractorLicenseNumber": "04CONCL862CR", "contractorLicenseTypeCode": "CC", "contractorLicenseType": "CONSTRUCTION CONTRACTOR", "specialtyCode1": "01", "specialty1": "GENERAL", "statusCode": "A", "status": "ACTIVE" }
Frequently asked questions
What counts as a lead?
Every record has a business name plus a street address, and most carry a phone number and a named principal, so each row is a usable sales lead.
Can I search several businesses at once?
Yes. Add multiple keywords and one run searches them all, tagging each record with the keyword that matched.
Can I get only active licenses?
Yes. Set status to Active (or Expired, Suspended and so on) to keep only matching licenses.
Is insurance information included?
Where a liability insurance or bond policy is on file, the record includes the insurer, policy number, coverage amount and dates.
How fresh is the data?
Records are read live at run time, so each row reflects the register at the moment of the run (see observedAt).
Ready when you are.
Run the scraper live on Apify right now, or have us build one tailored to exactly what you need.