Arizona Contractor Leads - ROC Licenses with Phone & Address avatar

Arizona Contractor Leads - ROC Licenses with Phone & Address

Pricing

$3.00 / 1,000 per licence returneds

Go to Apify Store
Arizona Contractor Leads - ROC Licenses with Phone & Address

Arizona Contractor Leads - ROC Licenses with Phone & Address

$3 per 1,000 licences, no start fee. Every current Arizona ROC contractor licence from the registrar's own daily list, with phone, street address, class, qualifying party, personnel, issue and expiry dates, bonds and complaints. Filter by trade, city, ZIP, new licences or expiry.

Pricing

$3.00 / 1,000 per licence returneds

Rating

0.0

(0)

Developer

Scrapers Delight

Scrapers Delight

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

Share

πŸ—οΈ Arizona Contractor Leads - ROC Licenses with Phone & Address

Every currently licensed contractor in Arizona, from the Arizona Registrar of Contractors' (ROC) own daily list of active licences (58,409 on 2026-09-29), with the business phone number ROC publishes (99.7% of rows), the street address, classification, qualifying party, owners and officers, issue and expiry dates, surety bonds and complaint record.

Filter by trade, city, ZIP, licence scope, newly issued licences or licences about to expire, or verify specific contractors by licence number or name. No login, no API key, no browser.

What does this actor do?

ROC publishes two things. Its posting list is a daily CSV of every current active contractor licence, with street address, class and dates but no phone. Its contractor search shows the phone, owners, bonds and complaints, but one search at a time. This actor filters the posting list the way you ask, then looks each licence up in ROC's contractor search and joins the phone, personnel, bond and complaint record onto the row by exact licence number.

Who uses it

  • Building-product distributors and manufacturer reps building a territory list of licensed plumbers, electricians, HVAC, roofing or pool contractors, with a phone number for each.
  • Trade insurers and surety brokers working new licences (issued in the last N days) and licences coming up for renewal, with the current surety company and bond on every row.
  • Contractor-marketing agencies prospecting Arizona contractors by city, ZIP and trade.
  • Platforms and general contractors verifying a list of subcontractors' licence numbers, status and expiry.

βœ… Why the list is complete

ROC's contractor search is not a reliable way to pull a list: it silently stops at roughly 1,000 businesses per search, and its city filter is applied after that limit. Measured on the live search on 2026-09-29:

  • A statewide search for class R-62 Minor Home Improvements returned 953 businesses. The same class split into licence-number ranges holds 2,275 businesses (2,539 licences).
  • R-62 in Phoenix: the search returned 122 licences; the complete set holds 313.
  • A city-only search returns 227-325 businesses whatever the city: Flagstaff 227, Phoenix 253. This actor returns 721 active licences in Flagstaff.

This actor filters the whole posting list, so a filter returns every matching active licence. The contractor search is only used to look up licences it already has, by exact licence number, so its limit never truncates your list. Every run records in RUN_SUMMARY how every licence was matched.

πŸ“‹ What you get per licence

One row per ROC licence (a business with three licences is three rows, each listing the other two in otherLicenses). Fill measured on a real run: every active licence in Flagstaff (721 rows).

FieldWhat it isFill (Flagstaff, 721)
licenseNumberROC licence number, e.g. ROC 366555100%
businessNameLicensed (legal) business name100%
dbaNameDoing-business-as name, when ROC lists one21.8%
phoneBusiness phone ROC publishes, formatted (928) 856-120499.7%
phoneE164The same number as +19288561204 for dialers and CRMs99.7%
phoneAsPublishedThe phone text exactly as ROC shows it99.7%
streetAddressStreet address of record, from ROC's posting list100%
city, state, zipCity, state and ZIP of the address of record100%
classificationCodeROC class code: CR-37, KB-2, B, R-62...100%
classificationClass as ROC names it: CR-34 Painting and Wall Covering100%
classTypeROC class type: General/Specialty x Commercial/Residential/Dual100%
licenseScopeCommercial, Residential or Dual100%
classificationScopesFor dual classes, the commercial and residential classes they cover (CR-37 = C-37 Plumbing + R-37R Plumbing)60.1% (dual classes)
classificationDescriptionROC's description of the work the class allows100%
statusLicence status (Active for every list row)100%
accountStatusROC account status action when set (Non-Renewal, Lack of Bond...)0.1%
restrictedScopeThe restriction on restricted classes (CR-5, KE, KO)3.5%
qualifyingPartyThe person responsible for the licence98.1%
qualifyingPartyExempttrue when ROC marks the licence QP Exempt100%
personnelEveryone on the licence account: [{name, title}] (owner, member, officer, qualifying party)100%
issuedDateDate first issued100%
expirationDateDate the licence expires (renewed through)100%
daysToExpiryDays from the run date to expirationDate100%
statusChangedDateDate of the last status change84.5%
entityTypeLLC, Corporation, Sole Proprietorship, Partnership...100%
bondCompanySurety company of the active bond99.2%
bondNumberBond number99.9%
bondAmountBond amount in USD (null when ROC records $0, see limits)69.5%
bondType, bondStatus, bondEffectiveDateBond type (Surety, Cash, CD), status, effective date97.9-99.9%
bondsEvery bond on the licence, with cancellation date and payouts99.9%
openComplaints, disciplinedComplaints, resolvedComplaints, complaintCountROC's complaint counts100%
complaintsThe complaint records ROC shows: case number, type, allegation, outcome, status, closed date, jobsite city3.5% (licences with complaints)
otherLicensesThe business's other ROC licences and their status34.1%
licenseId, accountId, profileUrlROC's record ids and the licence's page on ROC's contractor search100%
inContractorSearch, detailsFetchedWhether the search join and the licence detail succeeded for this row100%
source, searchQuery, postingListDate, scrapedAtWhere the row came from, and when100%

On the 1,000 newest plumbing licences (a second sample): phone 99.9%, street address 100%, bond company 99.4%, DBA 19.1%.

ROC does not publish an e-mail address or a website for contractors, so this actor has no e-mail or website field.

Example row (real, from a live run on 2026-09-30)

{
"licenseNumber": "ROC 366555",
"businessName": "HIGH COUNTRY SPECIALTY CONSTRUCTION, LLC",
"dbaName": "High Country Construction",
"phone": "(928) 856-1204",
"phoneE164": "+19288561204",
"phoneAsPublished": "(928) 856-1204",
"streetAddress": "2220 S. FLAGSTAFF RANCH RD.",
"city": "Flagstaff",
"state": "AZ",
"zip": "86001",
"classificationCode": "CR-34",
"classification": "CR-34 Painting and Wall Covering",
"classType": "Specialty Dual",
"licenseScope": "Dual",
"classificationScopes": ["C-34 Painting and Wall Covering", "R-34 Painting and Wall Covering"],
"classificationDescription": "CR34 PAINTING AND WALL COVERING This classification allows the scopes of work permitted by the commercial C-34 Painting and Wall Covering and the residential R-34 Painting and Wall Covering licenses.",
"status": "Active",
"accountStatus": null,
"restrictedScope": null,
"qualifyingParty": "JUSTIN HANSON",
"qualifyingPartyExempt": false,
"personnel": [
{ "name": "JUSTIN HANSON", "title": "Qualifying Party" },
{ "name": "JUSTIN HANSON", "title": "Owner" }
],
"issuedDate": "2026-06-29",
"expirationDate": "2028-06-30",
"daysToExpiry": 639,
"statusChangedDate": "2026-06-29",
"entityType": "LLC",
"bondCompany": "Platte River Insurance Company",
"bondNumber": "SB276754",
"bondAmount": 6750,
"bondType": "Surety",
"bondStatus": "Active",
"bondEffectiveDate": "2026-06-19",
"bonds": [
{ "bondNumber": "SB276754", "type": "Surety", "status": "Active", "amount": 6750, "company": "Platte River Insurance Company", "effectiveDate": "2026-06-19", "cancellationDate": null, "totalPayout": 0 }
],
"openComplaints": 0,
"disciplinedComplaints": 0,
"resolvedComplaints": 0,
"complaintCount": 0,
"complaints": [],
"otherLicenses": [],
"licenseId": "a0ocs00000ObImXAAV",
"accountId": "001cs00001tz9flAAA",
"profileUrl": "https://azroc.my.site.com/AZRoc/s/contractor-search?licenseId=a0ocs00000ObImXAAV",
"inContractorSearch": true,
"detailsFetched": true,
"source": "posting-list",
"searchQuery": null,
"postingListDate": "2026-09-29",
"scrapedAt": "2026-09-30T00:40:25.798Z"
}

πŸ” Input

Every filter is optional. With none, you get the newest active licences statewide. Rows always come newest licence first (ROC issues licence numbers in sequence), so a small maxResults gives you the most recently licensed contractors.

InputWhat it doesExample
classificationsROC class codes, full class names, or trade words matched inside ROC's class names. "plumbing" catches C-37, CR-37, R-37 and the solar plumbing classes; "roofing" catches C-42, CR-42, R-42. Dual classes have their own codes (CR-37 is dual plumbing), so list both if you want both.["CR-37", "C-37"], ["roofing"]
citiesCity of the address of record, as ROC writes it (case does not matter).["Phoenix", "Mesa"]
zipCodesFive-digit ZIPs or prefixes. "852" is every ZIP starting 852.["85255", "857"]
licenseScopesKeep only Commercial, Residential or Dual licences.["Residential"]
issuedWithinDaysOnly licences first issued in the last N days: newly licensed contractors.30
expiringWithinDaysOnly licences that expire in the next N days: the renewal list.60
licenseNumbersLook up specific licences, any status (active, expired, suspended, revoked, cancelled). ROC 349004, 349004 and 49004 all work.["ROC 349004"]
searchNamesSearch ROC's contractor search by business, DBA or person name (first name then last name). Every licence of every matching business is returned.["Alpha Plumbing"]
includeInactiveLicensesName searches return only active licences unless this is on.false
onlyWithPhoneSkip licences without a valid phone number (not delivered, not charged).false
includeDetailsEntity type, status-change date, account status, bonds, complaints and ROC's class description. No extra charge.true
maxResultsStop after this many licences. 0 = every match. Default 100.500
proxyConfigurationNot needed: the actor manages its own connections. A proxy set here is tried first.

Examples

Every licensed plumbing contractor (commercial, residential and dual) in Phoenix:

{ "classifications": ["plumbing"], "cities": ["Phoenix"], "maxResults": 0 }

Contractors licensed in the last 7 days, statewide, with a phone number:

{ "issuedWithinDays": 7, "onlyWithPhone": true, "maxResults": 0 }

Residential roofing licences in the Tucson ZIPs that expire in the next 60 days:

{ "classifications": ["roofing"], "zipCodes": ["857"], "licenseScopes": ["Residential"], "expiringWithinDays": 60, "maxResults": 0 }

Verify a list of subcontractors:

{ "licenseNumbers": ["ROC 349004", "211279", "ROC 002386"] }

πŸ’΅ Pricing

$3 per 1,000 licences ($0.003 per licence delivered), pay per result. No start fee, and nothing else is charged:

  • Licences your filters exclude are never delivered and never charged.
  • A licence number ROC does not know, or a licence the search could not be reached for, is listed in RUN_SUMMARY and not charged.
  • includeDetails (bonds, complaints, entity type) costs nothing extra.

A run with no input delivers the 100 newest licences for $0.09. All 3,448 active plumbing licences in Arizona (every class with "plumbing" in its name, 2026-09-29) cost $3.10; the 443 in Phoenix cost $0.40.

⏱️ Speed

Measured on the platform: the 20 newest CR-37 plumbing contractors in Mesa in about 30 seconds; the 1,000 newest plumbing licences statewide in 79 seconds; every active licence in Flagstaff (721, which means reading the whole 12 MB list) in about 6 minutes. City-only runs over a large city take longest, because every licence is looked up in ROC's search, and ROC answers each look-up in 2-3 seconds. A run over every active licence in the state is long: raise the run timeout for it. A run always stops cleanly before its timeout and keeps (and charges) only what it delivered, and a run the platform restarts resumes without delivering anything twice.

🧾 Run summary

Every run writes a RUN_SUMMARY record to its key-value store:

  • the posting-list file used, its date, the record count ROC declares in it, and how much of it was read (the file is read newest-first and the run stops as soon as it has your rows)
  • how many licences each filter excluded
  • how every licence was matched in ROC's search: found, not shown by the search, or unreachable (never charged)
  • licence numbers not found, and name searches that hit ROC's ~1,000-business search limit
  • delivered and charged counts, and the field fill of the rows you received

⚠️ Data limits

  • Active licences only, in list mode. ROC's posting list holds current active licences. Expired, suspended, revoked and cancelled licences come back from licenseNumbers and searchNames lookups, without a street address (ROC publishes it only on the posting list).
  • No e-mail and no website: ROC does not publish them.
  • Bond amounts: ROC records many older bonds with a $0 amount (30% of the active licences in Flagstaff, mostly issued 2001-2017). Those ship as null, never as 0. The surety company, bond number and status are still there.
  • Complaints are what ROC's contractor search displays for the licence.
  • City is the city of the address of record, not where the contractor works. 16.1% of active licences (9,375 of 58,409 on 2026-09-29) have an address outside Arizona: California 2,677, Texas 937, Utah 665, Nevada 565.
  • Name searches go through ROC's own search and stop at about 1,000 businesses per name. The run summary says when a name hit that limit. Use classifications and cities for lists.
  • Freshness: ROC regenerates the posting list during the day. Each row carries postingListDate.

❓ FAQ

Is this every licensed contractor in Arizona? Every contractor licence ROC lists as currently active on the day of the run: 58,409 on 2026-09-29.

How is the phone number matched to the licence? By exact licence number. The actor looks the licence up in ROC's contractor search and takes the phone from the business that holds that licence number. It never guesses a phone from a name.

Why are there two rows for one business? Each row is a licence. A business with a dual plumbing licence and a general contractor licence has two rows, each listing the other in otherLicenses.

What does inContractorSearch: false mean? The licence is on ROC's posting list but ROC's contractor search does not show it, so it has no phone or personnel. It happened on 0 of the 721 Flagstaff licences.

Can I get only newly licensed contractors every week? Yes: schedule a run with issuedWithinDays: 7. It reads only the newest part of the list, so it is fast and cheap.

Source

Arizona Registrar of Contractors: the posting list at roc.az.gov/posting-list and the contractor search at azroc.my.site.com/AZRoc/s/contractor-search.