Arizona Contractor Directory (AZ ROC) – New Licenses + Phone avatar

Arizona Contractor Directory (AZ ROC) – New Licenses + Phone

Pricing

from $2.00 / 1,000 contractor leads

Go to Apify Store
Arizona Contractor Directory (AZ ROC) – New Licenses + Phone

Arizona Contractor Directory (AZ ROC) – New Licenses + Phone

Licensed Arizona contractors from the AZ Registrar of Contractors (ROC) public registry with business phone, owner, license class, status and issue date. Dedup means scheduled runs return only new licenses. For insurance agents, lenders and B2B sellers. Free CRM sync.

Pricing

from $2.00 / 1,000 contractor leads

Rating

0.0

(0)

Developer

K O

K O

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

1

Monthly active users

2 days ago

Last modified

Share

New Arizona Contractor Leads – Licensed, with Phone & Owner

A deduplicated lead list of licensed Arizona contractors straight from the AZ Registrar of Contractors (ROC) public registry. Each record has the legal business name, business phone (~90% fill), the owner / qualifying party, license number, license class, status, and issue date — the fields a salesperson actually calls off. With dedup on, a scheduled run only returns licenses new since your last run — a fresh AZ contractor lead feed.

Pain points

  • ROC's own license lookup is a Salesforce portal built for one-off searches: no bulk export, no CSV, no way to pull "every active contractor in Mesa" in one shot.
  • Results are split across a search roster and a separate per-license detail page — the issue date, entity type and renewal date you actually need aren't on the same screen as the phone number.
  • Generic Arizona business lists mix in every business type. A licensed ROC contractor is specifically a business the state requires to carry insurance — that's the high-intent signal, and a generic list can't isolate it.
  • Re-scraping the same roster every week to find who's new means diffing license numbers yourself, or paying for the same contractor's contact info twice.

What we solve

  • Business phone published right in the roster — ROC prints it in the licensee record itself, not guessed or appended from a third-party source. ~87–100% fill across sampled searches.
  • Owner / qualifying party on every record, resolved from the license's QP field or account contact list — the name a caller actually asks for.
  • Issue date, entity type and renewal date pulled from each license's detail page and merged onto the roster record, so one dataset item has everything.
  • Dedup by license number across runs. Turn on onlyNewSinceLastRun and a scheduled run bills only for licenses it hasn't returned before — not the whole registry, every time.
  • Free discovery before you spend anything. Set listCitiesOnly: true to get the exact spelling of every valid Arizona city/town for the city filter, free — it returns the reference list and stops before the registry sweep starts, so a city typo can't silently return zero results on a billed run.

Who uses it

Insurance agents selling workers'-comp, general liability and bonds to contractors (a licensed AZ contractor is a legally-required-coverage buyer — high intent), lenders and equipment financiers, materials and SaaS vendors, and anyone doing B2B outreach to Arizona's construction trades.

Input

FieldDescription
searchTermsBusiness-name keywords to search. Empty = sweep A–Z for broad statewide coverage.
classificationOptional ROC class code filter (e.g. B general commercial, CR-11 electrical).
cityOptional city filter (e.g. Phoenix, Tucson, Mesa). Empty = statewide.
activeOnlyKeep only Active licenses (exclude Suspended / Cancelled / Non-Renewal).
enrichDetailFetch per-license detail for issue date, entity type and renewal date (on by default).
onlyNewSinceLastRunRecommended for schedules — skips licenses already returned by a previous run.
maxItemsStop after this many normalized records.
listCitiesOnlyDiscovery mode — returns the reference list of Arizona cities/towns for the city filter and stops. Free, nothing charged.

Output

FieldDescription
licenseNumberROC license number — the stable id deduped across runs.
legalName, dbaNameLegal business name. ROC's public registry does not expose a DBA/trade name, so dbaName is always null.
phoneBusiness phone, formatted, as published in the ROC roster.
emailAlways null — ROC's public registry does not publish licensee email.
ownerOwner / qualifying party name — the caller's actual target.
entityTypeLLC, Corporation, Sole Proprietor, etc.
city, state, zipSite location. ROC does not publish street address, only city/state/ZIP.
licenseClass, licenseTypeROC class code (e.g. CR-10) and its human-readable trade description.
status, accountStatusLicense status and account status as published by ROC.
issuedDate, renewalDate, statusChangedDateIssue date, renewal-due date, and last status-change date.
rocUrlLink back to the ROC contractor search portal.
sourceAlways "AZ ROC".

One real record, pulled from an actual run — not a placeholder:

{
"licenseNumber": "ROC 333282",
"legalName": "Grey Wolf Drywall LLC",
"dbaName": null,
"phone": "(602) 317-1895",
"email": null,
"owner": "Alfonso Lopez",
"entityType": "LLC",
"city": "Waddell",
"state": "AZ",
"zip": "85355",
"licenseClass": "CR-10",
"licenseType": "Drywall",
"status": "Active",
"accountStatus": null,
"issuedDate": "2021-05-07",
"renewalDate": "2027-05-31",
"statusChangedDate": "2026-01-20",
"rocUrl": "https://azroc.my.site.com/AZRoc/s/contractor-search",
"source": "AZ ROC"
}

Sync to your CRM, Notion, HubSpot, Airtable or Supabase (optional)

Turn on syncEnabled to also send each new contractor lead straight to a connected app — free, with no extra charge. Connect the app under Integrations in Apify Console, pick it as syncDestination, and set syncWriteTool to the name of the tool that creates one record there (run the dataset-sync-connector Actor in list-tools mode against the same connector if you don't know the name). A sync failure is logged as a warning and never blocks the dataset — your leads always land here first regardless of what the destination does.

Pricing (Pay-Per-Event)

  • query — charged once per run for the registry sweep.
  • contractor-record — charged per normalized contractor lead pushed. This is the primary event.
  • detail-enriched — charged in addition, only for leads where the per-license detail record (issue date, entity type, renewal date) was fetched. Controlled by enrichDetail (on by default); turn it off to skip this charge and get roster-only fields.
  • apify-actor-start (Apify-managed) — covers baseline compute per run.
  • You are billed once per contractor, per run — never twice. Results are deduplicated by license number before they're pushed, so a contractor matching more than one search term still appears once and is charged once.
  • Syncing records to a connected app (below) is free and never a billable event.

A daily run filtered to a class or city returns just the new licenses for pennies; a first statewide backfill is a larger one-time run you cap with maxItems.

Source & reliability

Data comes from the public AZ Registrar of Contractors licensee registry (azroc.my.site.com). No API key, no login, no captcha, no proxy. Phone and owner are published by ROC in the licensee record; issue/renewal dates come from each license's detail record. Run npm test for the offline self-test covering address parsing, class-code splitting, phone formatting and owner resolution.

Data scope: only public ROC registry fields ship. ROC does not publish licensee email or street address (city/state/ZIP only), so those are intentionally left blank rather than guessed.

FAQ

How am I charged?

One query event per run, plus one contractor-record event per normalized license pushed to the dataset. If enrichDetail is on (the default) and the per-license detail record was fetched for that lead, a detail-enriched event is charged alongside it. Filtering by city or classification narrows what's fetched — it doesn't create extra charges, since each license appears once per run regardless of which filters matched it.

Where does the data come from?

The public AZ Registrar of Contractors licensee registry (azroc.my.site.com) — no API key, login, or captcha. See "Source & reliability" above for exactly which fields ROC publishes.

Is the phone always present?

ROC publishes the business phone directly in the licensee roster, so fill runs high (~87–100% across sampled searches). It is the licensed business's own contact number, not a proximity guess.

Do I get email?

No — the AZ ROC public registry does not publish licensee email, so the email field is always null. Everything shipped is genuine public-registry data.

How "new" are these?

Turn on onlyNewSinceLastRun and schedule the actor; each run returns only licenses not seen before, so you get newly-appearing AZ contractor licenses over time.


SEO keywords: Arizona contractor leads, AZ ROC data, licensed contractor list, contractor phone list, Arizona construction leads, contractor insurance leads, workers comp leads Arizona, ROC license lookup, contractor sales leads