← Health board

Rhode Island Contractor Registration Lookup & List Scraper

Every Rhode Island CRLB contractor registration: status, expiry, complaints and violations, with phone, email and address where the board's quarterly lists carry them.

80%golden-diff pass
Run it on Apify → verified nightly

Verification

80%golden-diff success
10canary runs
0days since last canary run

Output fields

Authoritative field set from the dataset schema.

FieldType
source_urlstring|number|array|object|null
listing_idstring|number|array|object|null
namestring|number|array|object|null
phonestring|number|array|object|null
phone_e164string|number|array|object|null
emailstring|number|array|object|null
websitestring|number|array|object|null
streetstring|number|array|object|null
citystring|number|array|object|null
regionstring|number|array|object|null
postal_codestring|number|array|object|null
countrystring|number|array|object|null
categorystring|number|array|object|null
categoriesstring|number|array|object|null
latstring|number|array|object|null
lngstring|number|array|object|null
sourcestring|number|array|object|null
extrasstring|number|array|object|null
noticestring|null

Sample row

{
  "listing_id": "GC-3036",
  "name": "GREENWICH BAY HOMES LLC",
  "phone": "(401)241-3949",
  "phone_e164": "+14012413949",
  "email": "dan@gbhomes.net",
  "street": "138 Atwells Ave",
  "city": "Providence",
  "region": "Rhode Island",
  "postal_code": "02903",
  "country": "US",
  "category": "RESIDENTIAL/COMMERCIAL",
  "categories": [
    "RESIDENTIAL/COMMERCIAL"
  ],
  "source": "snapshot",
  "source_url": "https://datadbr.ri.gov/crb-search/contractor-search.php#GC-3036",
  "extras": {
    "status": "VALID",
    "expires": "2027-08-19",
    "contractor_names": [
      "DANIEL SANTIS"
    ],
    "complaints": 1,
    "violations": 1
  }
}

Inputs

FieldTypeReqDefaultDescription
mode string no "auto" export: no names, just filters; returns the whole matching list. lookup / verify: put company names (matched if contained in the company name) or licence numbers (exact) in 'queries'. auto picks the mode for you.
query string no — A business name (or listing number) to look up in the stored copy of the directory. Kept alongside 'queries' for saved tasks.
queries array no [] A business name (or listing number) to look up in the stored copy of the directory. Several values in one run; combined with 'query'.
status string no — Only listings in this status. Kept alongside 'statuses' for saved tasks.
statuses array no [] Only listings in this status. Several values in one run; combined with 'status'.
city string no — Only listings in this city. Kept alongside 'cities' for saved tasks.
cities array no [] Only listings in this city. Several values in one run; combined with 'city'.
categories array no [] Only these categories, in the source's own names. Available: commercial, commercial-roofer, home-inspector, home-inspector-associate, pump-installer, registration-type-unlisted, residential, residential-commercial, underground-utility, water-filtration-contractor, water-filtration-installer, well-driller.
maxResults integer no 500 Per query in lookup mode; per run in export mode.
proxyConfiguration object no {"useApifyProxy":false} Used only for live lookups; exports read the stored snapshot.

Pricing

Pay per result (dataset-item) — no charge for empty runs.
Example: 1000 contractor registrations at $0.004/result ≈ $4.00.

FAQ

Where does the data come from?

Two public sources from the Rhode Island Contractors' Registration and Licensing Board: its contractor search (status, expiry, complaints, violations) and the quarterly contractor lists it posts on crb.ri.gov (phone, email, address). They are joined on the registration number.

Why do only some rows have a phone or email?

The board publishes contact details only in its quarterly lists, and each list covers the applications approved that quarter. On 2026-10-27, 2,837 of 10,482 valid registrations had a phone. Registrations run about a year, so each new list fills in more of them.

How do I get only active contractors?

Set status to VALID. A registration the board showed as VALID whose expiry date has since passed is returned as INVALID, with a status_note saying the status came from the date.

Can I verify a registration number?

Yes. Put one or more numbers (e.g. GC-3036) in queries. The actor returns each one's status, expiry, complaints and violations from the stored copy.

Which registration types are there?

residential, commercial, residential-commercial, commercial-roofer, underground-utility, well-driller, pump-installer, water-filtration-installer, water-filtration-contractor, home-inspector, home-inspector-associate, plus registration-type-unlisted for new registrations whose quarterly list does not say which of residential, commercial or both they hold.

How current is it?

The registry was read on 2026-10-27, and the stored copy is refreshed from each new quarterly list when it is older than a month and the actor is in use. The run log states the date of the copy, and a run served from a copy older than 45 days returns one free notice saying so.

How am I charged?

One event per registration returned. Notices are free.

Guides & use cases