Arizona Roofing Contractor Directory & Leads (ROC) avatar

Arizona Roofing Contractor Directory & Leads (ROC)

Pricing

$0.002 / roofing contractor record

Go to Apify Store
Arizona Roofing Contractor Directory & Leads (ROC)

Arizona Roofing Contractor Directory & Leads (ROC)

Export every active Arizona ROC-licensed roofing contractor (1,484 on 2026-10-13) with phone, street address, qualifying party, principals, class and expiry date.

Pricing

$0.002 / roofing contractor record

Rating

0.0

(0)

Developer

ScrapeBench

ScrapeBench

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

1

Monthly active users

10 days ago

Last modified

Categories

Share

Pain points

  • ROC's contractor search answers one name at a time, and a search for a roofing class stops at about 1,000 contractors, so the 1,382 CR-42 dual roofers cannot all be listed from it.
  • ROC's statewide Posting List has every active licence with a street address but no phone number, and it is a 12 MB CSV of 58,345 licences you re-download and filter down to roofing yourself.
  • The phone and the people behind a licence (owners, members, qualifying party) are only on the search side, so a roofer list with both means matching two sources by licence number.

What we solve

  • Export all of Arizona's active roofing licences in one run — classes C-42 (commercial), R-42 (residential) and CR-42 (dual) — or narrow by class, city, ZIP or Arizona-only mailing addresses, each with a batch list.
  • Each licence is matched to ROC's contractor search by licence number for its business phone and principals, and every row says whether that match landed.
  • Every row carries the street address, qualifying party, issue date and expiry date from ROC's official Posting List.

Summary

Arizona roofing contractors from the Arizona Registrar of Contractors (ROC). The actor reads ROC's official Posting List — every active licence in the state — keeps the three roofing classes (C-42 commercial, R-42 residential, CR-42 dual; 1,484 licences on the 2026-10-13 list) and adds each licence's business phone and principals from ROC's own contractor search. Filter by class, city, ZIP or Arizona-only mailing addresses. Pay per roofing licence returned.

Who it's for

  • Roofing material suppliers and distributors building Arizona prospect lists
  • Sales reps selling insurance, financing, software or equipment to roofing contractors
  • General contractors and property managers sourcing licensed roofing subs near a job
  • Lead-generation agencies building city- or ZIP-level roofer lists for Phoenix, Tucson and Mesa

How to use

Set the input, run the actor, and collect results from the run's dataset (export to JSON/CSV/Excel, or pull via the Apify API). Example input:

{
"city": "Phoenix",
"maxResults": 500
}

See Inputs below for every available field.

What you get

One row per record:

FieldDescription
license_numberROC licence number, six digits
business_nameLicensed business name
dba_nameDoing-business-as name, when filed
classificationC-42, R-42 or CR-42
classification_detailClass code and name, e.g. CR-42 Roofing
license_class_typeSpecialty Commercial, Residential or Dual
statusAlways Active
person_nameQualifying party
principalsPeople on the licence with their roles
phoneBusiness phone from ROC's contractor search
addressMailing street address
cityMailing city
address_stateMailing state (out-of-state firms hold ROC licences)
zip_codeMailing ZIP
issue_dateLicence issue date
expiration_dateLicence expiry date
enrichment_statusWhether the phone/principals match landed
source_urlROC's Posting List page

Sample:

{
"license_number": "234021",
"business_name": "Arcadia Roofing, LLC",
"dba_name": null,
"classification": "CR-42",
"classification_detail": "CR-42 Roofing",
"license_class_type": "Specialty Dual",
"status": "Active",
"person_name": "Tommy Louis Leale",
"principals": [
"Tommy Louis Leale (Member;Qualifying Party)"
],
"phone": "(602) 840-7663",
"address": "3008 N. 44th Street",
"city": "Phoenix",
"address_state": "AZ",
"zip_code": "85018",
"issue_date": "2007-06-16",
"expiration_date": "2027-06-30",
"matched_by": "export",
"enrichment_status": "matched",
"license_type": "Contractor License",
"state": "AZ",
"source_url": "https://roc.az.gov/posting-list"
}

Inputs

FieldRequiredTypeDefaultDescription
classificationnostring—Narrow to one ROC roofing class: 'C-42' (commercial), 'R-42' (residential) or 'CR-42' (dual). Leave empty for all three. Any other class is dropped and logged.
classificationsnoarray[]Several roofing classes in ONE run, e.g. R-42 and CR-42.
citynostring—Mailing-address city, exact match ignoring case and punctuation, e.g. 'Phoenix'. ROC lists licences by mailing address, not by where the contractor works.
citiesnoarray[]Several cities in ONE run, e.g. Phoenix, Mesa, Scottsdale.
zipCodenostring—5-digit mailing ZIP, e.g. '85018'.
zipCodesnoarray[]Several ZIP codes in ONE run.
arizonaAddressesOnlynobooleanfalseOut-of-state firms hold ROC roofing licences too: 184 of the 1,484 active roofers (2026-10-13 list) have a mailing address outside Arizona. Tick to drop them.
includePhonenobooleantrueROC's posting list has no phone column. When ticked, each licence is matched to ROC's contractor search for its phone and the people on the licence (owners, officers, qualifying party). Adds time, not cost. Rows that could not be matched say so in enrichment_status.
maxResultsnointeger500Cap on licences for the WHOLE run — your spend control. 1,484 active roofing licences statewide on the 2026-10-13 list; set 100000 to take everything that matches.
proxyConfigurationnoobject{"useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"], "apifyProxyCountry": "US"}Used only to download ROC's statewide posting list, and only if the direct download is refused (ROC's Cloudflare blocks datacenter IPs). Residential is the setting that works.

Pricing (Pay Per Event)

You pay per result (dataset-item) — no charge for empty runs. Example: 246 Phoenix roofing contractors at $0.002/result ≈ $0.49.

The default run (500 licences) costs $1.00; every active roofer in the state (1,484 on 2026-10-13) costs $2.97 at maxResults 100000. Apify platform usage, including residential proxy traffic for the posting-list download, is billed separately.

Use cases

  • Supplier prospecting: a shingle or underlayment distributor exports every roofer with a Phoenix, Mesa or Gilbert mailing address, with phone, for a territory push.
  • Statewide list build: a marketing agency takes all 1,484 active roofers once, then re-runs monthly and compares licence numbers and issue dates to catch new licensees.
  • Residential vs commercial targeting: a sales team pulls only R-42 residential or C-42 commercial roofers for a campaign that fits one market.
  • Sub sourcing: a general contractor lists the roofers in a job's ZIP codes, with qualifying party and expiry date, before sending bid invitations.

Why this actor

  • Phone on 1,478 of the 1,484 active roofing licences, street address on 1,483 and principals on all 1,484, in one statewide run of 244 s (measured 2026-10-14).
  • Straight from ROC's two official public sources, read fresh on every run: the Posting List for the active roster and the contractor search for phone and principals.
  • A class, city or ZIP it does not recognise is dropped and logged, never silently widened to the whole state; outage and bad-input notices are free.

Limitations & updates

Active licences only, because ROC's Posting List holds only those; no suspended, expired or revoked roofers. ROC refreshes the list every few days (the 2026-10-14 run read the file dated 2026-10-13), so a brand-new licence can be missing for a few days. ROC files licences by mailing address and the list has no county column, so filter by city or ZIP; those find where the contractor's mail goes, not where they work. No email: ROC publishes none. ROC's Cloudflare refuses Apify's datacenter IPs, so the posting-list download goes through a residential proxy, billed by Apify as platform usage.

FAQ

Where does the data come from?

From the Arizona Registrar of Contractors (ROC). The actor downloads ROC's Posting List (roc.az.gov/posting-list), the official CSV of every active licence, and keeps the roofing classes; phone and principals come from ROC's public contractor search (azroc.my.site.com), matched by licence number. Both are read on every run.

How many roofing contractors are there?

1,484 active roofing licences on the 2026-10-13 Posting List: CR-42 Roofing (dual) 1,382, C-42 (commercial) 54, R-42 (residential) 48. Largest mailing cities: Phoenix 246, Tucson 199, Mesa 132, Gilbert 68.

Which classes count as roofing?

ROC's three roofing classes: C-42 (commercial), R-42 (residential) and CR-42 (dual — both). Leave the class filter empty for all three, or name one or more to narrow. Any other class is dropped and logged.

Does it include out-of-state contractors?

Yes: 184 of the 1,484 active roofing licences have a mailing address outside Arizona, most often California (46), Texas (28) and Utah (19). Tick 'Arizona mailing addresses only' to drop them.

Why is phone missing on a few rows?

The Posting List has no phone column, so each licence is matched to ROC's contractor search. All 1,484 matched on 2026-10-14; 6 of those accounts carry no phone. enrichment_status says what happened on each row.

How am I charged?

$0.002 per roofing licence returned. The default run returns 500 ($1.00); Phoenix roofers were 246 ($0.49) and the whole state 1,484 ($2.97) on 2026-10-14. Rows explaining an outage, an unrecognised filter or a reached spending cap are free.

Which actor to choose

Part of the roofing contractor suite — pick the state you need:

  • Illinois Roofing Contractor Directory & Leads Scraper (IDFPR) — You want Illinois roofing contractors — every IDFPR roofing licence by county.
  • West Virginia Roofing Contractor Directory & Leads (WVCLB) — You want West Virginia roofing contractors — every current WVCLB roofing licence with phone and mailing address, by county.

Guides & use cases

Written up on scrapebench.dev — the bench that runs and verifies this actor against the live source every night:

More actors, coverage and nightly verification results: scrapebench.dev

Works with AI assistants (MCP)

Callable as an MCP tool, so Claude, Cursor, VS Code Copilot and other MCP clients can run it directly. Grab the config from the MCP tab on this page — Apify hosts the server and keeps that snippet current, and OAuth signs you in on first connect, so no API token goes in your config file.

Then just ask:

"List the active Arizona roofing contractors with a Phoenix mailing address, with phone and qualifying party."

That input returned 246 licences on 2026-10-14. With no filters it exports the whole state (1,484 roofers), so set a city or ZIP before running it from an agent if you want fewer. Runs started this way bill exactly like any other run.