Pennsylvania Contractor Registration Lookup & Leads Scraper
Active Pennsylvania home improvement contractor registrations from the Attorney General: phone, address, expiry and type of work, by county, city or registration number.
Verification
Output fields
Authoritative field set from the dataset schema.
| Field | Type |
|---|---|
source_url | string|number|array|object|null |
listing_id | string|number|array|object|null |
name | string|number|array|object|null |
phone | string|number|array|object|null |
phone_e164 | string|number|array|object|null |
email | string|number|array|object|null |
website | string|number|array|object|null |
street | string|number|array|object|null |
city | string|number|array|object|null |
region | string|number|array|object|null |
postal_code | string|number|array|object|null |
country | string|number|array|object|null |
category | string|number|array|object|null |
categories | string|number|array|object|null |
lat | string|number|array|object|null |
lng | string|number|array|object|null |
source | string|number|array|object|null |
extras | string|number|array|object|null |
notice | string|null |
Sample row
{
"listing_id": "PA178376",
"name": "Allens Handyman Services",
"phone": "412-447-1794",
"phone_e164": "+14124471794",
"street": "2283 Monroeville Rd",
"city": "Monroeville",
"region": "PA",
"postal_code": "15146",
"country": "US",
"category": "home improvement contractor",
"categories": [
"home improvement contractor"
],
"source": "snapshot",
"source_url": "https://hicsearch.attorneygeneral.gov/#PA178376",
"extras": {
"status": "Active",
"expires": "2027-04-16"
}
} Inputs
| Field | Type | Req | Default | Description |
|---|---|---|---|---|
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 rows from this county (one or more). Available: adams, allegheny, armstrong, beaver, bedford, berks, blair, bradford, bucks, butler, cambria, cameron, carbon, centre, chester, clarion, clearfield, clinton, columbia, crawford, cumberland, dauphin, delaware, elk, erie, … (68 in all; an unknown name returns the full list, free). |
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
Who has to register?
Under Pennsylvania's Home Improvement Consumer Protection Act, contractors who do $5,000 or more of home improvement work a year register with the Office of Attorney General. Registration is not a licence and, as the Attorney General states, not an endorsement.
Where does the data come from?
The Pennsylvania Office of Attorney General's Home Improvement Contractor search, read with the Office's permission. Only the fields the search shows a visitor are returned.
How do I get one county?
Set categories to one or more county names (allegheny, philadelphia, montgomery, ..., or out-of-state). A county is the Attorney General's own county search, which can list a contractor under more than one county; a run never returns the same registration twice.
Does it include expired registrations?
No. The registry publishes active registrations only. A registration whose expiry date has passed since the copy was read is returned as Expired, with a status_note saying the status came from the date.
Can I verify a registration number?
Yes. Put one or more registration numbers (e.g. PA178376) in queries, or company names to match by name.
How current is it?
The registry was read on 2026-10-28. The stored copy is refreshed 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