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" }
每次运行都返回干净、带类型的记录,可直接用于你的 CRM、表格或数据库。
- 每个结果对应一条干净记录,已去重并规范化
- JSON、CSV 或 Excel 的稳定结构,也可通过 Apify API 读取
- 在云端按用量付费,无需安装或维护
一条真实的示例记录,正是你收到的结构。
| 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" }
常见问题
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).