How-to
How to run Wyoming Contractor License Lookup & Leads Scraper (DFPES)
Step-by-step: the exact input, what each field does, and the rows that come back from WY DFPES public lookup.
You want a list of Wyoming’s licensed electrical contractors with a phone number for each, or you have a few firm names or licence numbers to check before work starts. Wyoming licenses no general contractors, plumbers or HVAC firms at state level; its contractor licences are the electrical ones issued by the Department of Fire Prevention and Electrical Safety. The Department’s public lookup answers one search at a time, refuses an empty one, and has no export, so a whole-state list means paging through a typed search and copying rows off the screen.
What you’ll need
Nothing but an Apify account. The actor reads the Department’s public lookup in the run itself, so there is no API key, proxy or CAPTCHA solver to set up, and nothing extra to pay for.
Step 1 — Open the actor
Open Wyoming Contractor License Lookup & Leads Scraper (DFPES) on the Apify Store and press Try for free. The actor’s own page on this site lists its live health and pricing.
Step 2 — Fill in the input
| Field | Type | Required | What it does |
|---|---|---|---|
mode | string | no | 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… (default auto) |
query | string | no | A business name (or listing number) to look up live. Kept alongside ‘queries’ for saved tasks. |
queries | array | no | A business name (or listing number) to look up live. Several values in one run; combined with ‘query’. (default []) |
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’. (default []) |
expiry_status | string | no | Only listings in this expiry_status. Kept alongside ‘expiry_statuses’ for saved tasks. |
expiry_statuses | array | no | Only listings in this expiry_status. Several values in one run; combined with ‘expiry_status’. (default []) |
categories | array | no | Only rows from this licence type (one or more). Available: Chemical Suppression, Chemical Suppression, Extinguisher, Sprinkler, Electrical Contractor, LM-E Contractor, LM-H… (default []) |
maxResults | integer | no | Per query in lookup mode; per run in export mode. (default 500) |
Two fields decide what you get back. expiry_statuses takes Unexpired or Expired. The
Department’s lookup lists lapsed licences next to current ones and publishes no status field, only an
expiration date, so the actor compares that date with the day of the run. Leave the field empty and
close to half the rows are expired (978 of 2,136 on November 4, 2026 were expired or undated). categories takes the board’s licence types as it writes them:
Electrical Contractor, or one of the limited (LM-H Contractor, LM-W Contractor, …) and
low-voltage (LV-G Contractor, LV-A Contractor, …) classes. The board’s codes are passed through
unchanged, so check the Department’s own definitions before you sell to one class.
A working input:
{
"expiry_statuses": [
"Unexpired"
],
"maxResults": 500
}
For a lookup instead, set mode to lookup and put firm names (3 G Electric) or licence numbers
(C-47283) in queries. A name matches if it is contained in the business name; a number matches
exactly, with or without the dash.
Step 3 — Run it
Press Start. Rows are pushed to the dataset as they’re found, so the run log fills in as it works.
Every run reads the Department’s whole contractor roster first: 2,157 records in pages of 250, about
10 seconds in our tests on November 4, 2026, before any filter is applied. The unexpired
electrical contractors came to 848 rows, and the full roster with no filters to 2,136. A lookup
searches the Department live and answers in a second or two per name. An empty result usually means a
misspelled city (Cheyene for Cheyenne; case, spaces and punctuation do not matter), or a firm
the board lists under another name; each of those returns a free notice, not a charge.
Step 4 — Read the output
Each run returns a labelled table, not raw JSON:
Every row looks like this — a real row from a real run:
{
"listing_id": "C-47283",
"name": "3 G Electric LLC",
"phone": "208-313-7413",
"phone_e164": "+12083137413",
"street": "4554 Clydes Turn",
"city": "Tetonia",
"country": "US",
"category": "Electrical Contractor",
"categories": [
"Electrical Contractor"
],
"source": "live",
"source_url": "https://wyelectrician.imagetrendlicense.com/lms/public/portal#contractor-6feb3434-0f5a-e911-80d4-001dd8b723fb",
"extras": {
"licence_type": "Electrical Contractor",
"expires": "2027-07-01",
"expiry_status": "Unexpired"
}
}
| Field | Example value | Meaning |
|---|---|---|
name | 3 G Electric LLC | Business name as the Department lists it |
listing_id | C-47283 | Licence number exactly as printed (C-47283, LV-…, L-…); empty on about 10% of rows (224 of 2,136 on 2026-11-04), where the board lists none |
category | Electrical Contractor | Licence type in the board’s words: Electrical Contractor, or a limited (LM-) or low-voltage (LV-) contractor class |
phone | 208-313-7413 | Business phone as printed |
phone_e164 | +12083137413 | The same phone in +1XXXXXXXXXX form |
street | 4554 Clydes Turn | Street address (one line; the board publishes no state or ZIP) |
city | Tetonia | City; many licensed firms are out of state (Idaho Falls, Denver, Salt Lake City) |
extras.expires | — | Licence expiration date (ISO) |
The phone is what most people come for: all 848 unexpired electrical contractors carry one. The
address is one street line and a city, with no state or ZIP, and the example row shows why that
matters: Tetonia is in Idaho. Only 422 of those 848 phones have Wyoming’s 307 area code, so many
licensed firms are based out of state. Use the area code, or a cities filter, to separate local
firms from out-of-state ones before you mail anything.
Step 5 — Export it
Open the Dataset tab and export to CSV, JSON, or Excel — or pull the same rows from the API, which is what you want if this is going to run on a schedule.
What it costs
$0.004 per licence returned; notices (no match, unknown licence type) are free. The 848 unexpired electrical contractors cost $3.39, and the whole roster of 2,136 licences costs $8.54. A lookup costs $0.004 for each licence it finds.
Where the data comes from
This reads WY DFPES public lookup directly. The target is The Department of Fire Prevention and Electrical Safety’s ImageTrend public lookup: a keyless JSON search endpoint that returns the whole contractor roster when no filter is sent, paged by offset. Every run reads it; nothing is stored. Every night a canary runs this actor against that live source and diffs the result against a frozen fixture — what “verified” means.
The lookup itself is open: no login and no challenge. The friction is the form. It refuses to search
until a field holds a value, it shows results a page at a time on screen, and it has no download
button. Searching one letter of a contractor name gets close (an e matched 1,940 of the 2,157 on
November 4, 2026), but those 1,940 rows still have to be copied off the screen page by page. The
page also says the Department is migrating to a new eLicensing system, so the lookup may change.
See it used
Wyoming Electrical Contractors (DFPES) builds the list of 848 electrical contractors with an unexpired licence, with a phone for every one.
To check contractor licences in several states at once, including Wyoming, the US contractor license lookup runs this actor for you alongside the other states’ boards.
Last updated 2026-11-04