← Use cases

Use case

List Class A Contractors in a Virginia City

Filter DPOR's published regulant list down to Class A contractors in one Virginia city - licence number, name, address and expiration, without a search form.

Say you handle marketing for a building-envelope manufacturer and you are putting on a lunch-and-learn CPD session in Richmond next month. Twenty seats, one room, and the people you want in it are the Class A contractors — the top of Virginia’s three contractor classes, the firms running the commercial work your product ends up on. You have a venue, a deck and a date. What you do not have is a hundred and fifty email addresses to invite.

Virginia is the state where that last part is unusually simple, because DPOR publishes the email address as part of the licence record.

The manual way, and what it costs

The public search form on VA DPOR
VA DPOR — the official search. One record at a time.

There is a search portal, and it is the right tool when you already have a firm’s name and want to check it. For building a list it is the wrong shape entirely — it answers one question at a time.

The better free route is the one most people never find: DPOR publishes Regulant Lists, free downloadable files of the full roster, one per licence category, no account and no search form involved. Everything this actor returns comes out of those files. If you want the Class A roster once, download it — nothing here is data you cannot get yourself.

What you get is a tab-delimited file built for a records office rather than a spreadsheet: no friendly headers, positional columns, specialty codes as three-letter abbreviations, and one file per licence category, so covering Class A, B and C means three downloads and three parses. Then you filter it to Richmond by hand. Then, a fortnight later when you want the list for the Norfolk session, you do all of it again — because the useful part was never the download, it was the parse and the filter.

The faster way

Virginia Contractor License Lookup (DPOR Bulk) does the same search once and hands back every row at once.

{
  "licenseTypes": [
    "class_a"
  ],
  "cityFilter": "Richmond",
  "maxResults": 500
}

licenseTypes picks which of DPOR’s published files get downloaded and parsed — class_a on its own keeps the invite list to the firms with the top contractor rank, and adding class_b widens it to mid-sized outfits if twenty seats turn out to be easy to fill. The full list of categories runs well past contractors, into residential tradespeople, elevator mechanics and sprinkler inspectors, so it is worth reading before you assume a category is missing. cityFilter is a case-insensitive substring match on the city field, which is a convenience and a trap in equal measure: it will happily catch any city name containing the text you typed. maxResults caps unique records after de-duplication, so a run that returns 500 rows is 500 distinct licences, not 500 lines of file.

What comes back

{
  "license_number": "082040",
  "license_type": "Class A Contractor",
  "license_rank": "A",
  "business_name": "CORNERSTONE ENGINEERING AND CONSULTING SERVICES PLLC",
  "individual_name": null,
  "address": "1272 NELLIE JONES RD",
  "city": "LA CROSSE",
  "state": "VA",
  "zip_code": "23950",
  "country": null,
  "expiration_date": "02/29/2028",
  "certification_date": "02/03/2004",
  "specialties": [
    "EMW",
    "ENV"
  ],
  "email": "bdougherty@cornerstoneusa.net",
  "source_url": "https://www.dpor.virginia.gov/RegulantLists"
}
FieldExample valueMeaning
license_number082040DPOR certificate number (e.g. 082040)
license_typeClass A ContractorLicense category (Class A Contractor, Class B Contractor, etc.)
license_rankADPOR rank code (A, B, C, RETR, BPDW, CEM, etc.)
business_nameCORNERSTONE ENGINEERING AND CONSULTING SERVICES PLLCLicensed business name (for firm licenses)
individual_nameLicensee personal name (for individual licenses)
address1272 NELLIE JONES RDStreet address

email is the field that makes this a campaign rather than a research project, and it is the one almost no other state registry hands over — these are the business contact addresses DPOR publishes with the licence, so treat them as you would any published business contact and give people a way out of the list. specialties is what turns a flat roster into a targeted invite: the codes are DPOR’s own abbreviations, so EMW and ENV mean something specific and the legend lives on the DPOR site, but once you have decoded the three or four codes relevant to your product you can cut the list to the firms who actually do that work. business_name versus individual_name tells you whether a row is a firm or a person, which matters when you are writing the salutation. expiration_date is the closest thing here to a liveness check — read on.

What you’d do with it

Export to CSV, drop any row whose expiration_date is already in the past, de-duplicate on email (one firm can hold more than one certificate), and load the rest into your mail tool with business_name as the merge field. Filter by the specialties codes that match your product for a first, tightly targeted send, and keep the wider Class A list as the follow-up wave if the room is not full. Because license_number is stable, the same run before the next city’s session tells you which firms are new since Richmond.

Worth knowing

This is not live data, and that is the real caveat here. DPOR refreshes the regulant-list files roughly every five business days. A run today returns whatever was in the file when the state last published it — up to a week old. For an invite list that is irrelevant; for anything where currency matters, it is the whole story.

There is no status field in the source at all. DPOR’s files simply do not carry one. The expiration date is the only proxy you have for active versus lapsed, and it is a proxy: a licence can be revoked or suspended long before its printed expiry. Do not use this export to decide whether someone may legally do work.

No phone numbers. DPOR excludes them from the published files deliberately. You get an address and an email, and that is the extent of the contact data.

DPOR-licensed categories only. Some Virginia trades are licensed locally rather than by DPOR and are not in these files at all, so a city roster is complete for the categories DPOR publishes and silent about everything else.


Run it yourself: How to run Virginia Contractor License Lookup (DPOR Bulk) walks the whole thing step by step.

Same idea, different state: List Louisiana Commercial Contractors by Parish is the other bulk-file roster in the suite, sliced by parish instead of city. Working the wider Mid-Atlantic, North Carolina Contractor License Lookup & Verify (NCLBGC) covers the state next door — and unlike DPOR’s files, it has a real status field.

Last updated 2026-07-22