← Use cases

Use case

Build a Travis County HVAC Contractor List

Pull every licensed A/C contractor in Travis County from TDLR's open data - licence number, owner, subtype and expiration - and know before you start which TDLR trades carry phone numbers.

Say you are a manufacturer’s rep and you have just picked up a ductless mini-split line for Central Texas. Your job for the next quarter is to get in front of every A/C contractor in the Austin market, find the fifty who install enough retrofit work to care, and get them introduced to a distributor.

Start with the thing that will otherwise cost you a week: Texas does not publish phone numbers for A/C contractors. Not for A/C Technicians either, nor for any grade of electrician held by a person. Checked on 2026-08-21, all 20,323 A/C Contractor rows in the statewide TDLR file have a blank phone, a blank street address and a blank city/ZIP — every one, in every county. That is not a scraping problem and no tool fixes it, because the state never put the numbers in the file.

So this is not a dialling list. What it is — and it is still the fastest way to the Austin A/C market — is a complete, verified roster: every licensed A/C business in the county, the person who holds the licence, what kind of licence it is, and when it expires.

The manual way, and what it costs

The public search form on TDLR (Socrata)
TDLR (Socrata) — the official search. One record at a time.

TDLR’s licence search answers “is this company licensed” one company at a time, which is the wrong shape for prospecting. The right free tool is the open dataset behind it on data.texas.gov: it has a county column and a licence-type column, it filters, and it exports. If you want one county once, go and do that — it is free, it is the same data, and no scraper improves on it.

Where the free path gets tedious is everything around the export. The licensee file covers every trade TDLR regulates, so a plain download is mostly cosmetologists and tow operators from your point of view. The columns are named for a state database rather than a CRM. And a rep’s list is not a one-time artefact: licences expire on a rolling basis, new contractors register every week, and the list you pulled in January is quietly wrong by March. Repeating the filter-and-export dance each month is the part that stops happening around month three.

The faster way

Texas Contractor Directory & Leads Scraper (TDLR) does the same search once and hands back every row at once.

{
  "county": "TRAVIS",
  "licenseType": "A/C Contractor",
  "maxResults": 1000
}

That returns 694 licensed A/C contractors in Travis County — the whole trade, as of the state’s last publication.

Both filters are pushed down to the state’s API, so the run only ever transfers Travis County A/C contractors — it is not a statewide pull trimmed afterwards. county is case-insensitive but the dataset’s own spelling is capitals, and it matches the business address county. licenseType is a substring match on TDLR’s licence-type text, which is why "A/C Contractor" is the right string and "HVAC" is not: the state does not use the word. That is the single most common way to get an empty run here.

What comes back

{
  "state": "TX",
  "license_number": "11216",
  "business_name": "GALVAN AIR",
  "person_name": "GALVAN, ROLAND",
  "license_type": "A/C Contractor",
  "license_subtype": "BE",
  "expiration_date": "10/24/2026",
  "county": "TRAVIS",
  "address": null,
  "address_line2": null,
  "city_state_zip": null,
  "phone": null,
  "source_url": "https://data.texas.gov/dataset/Texas-Department-of-Licensing-and-Regulation/7358-krk7"
}

That is a real row, nulls included. Here is what the populated half is worth.

FieldExample valueWhy it earns its place
business_nameGALVAN AIRThe trading name, for matching against a CRM or a distributor’s account list
person_nameGALVAN, ROLANDOn a small contractor the licence holder is the person who answers the phone
license_subtypeBEYour only built-in segmentation inside the A/C category
expiration_date10/24/2026The nearest thing this file has to a liveness signal
license_number11216A stable key — it survives a rebrand, a move and a phone change

license_subtype is worth pivoting on before you do anything else: the codes separate environmental-air work from refrigeration, and a mini-split line lands very differently in each. person_name is the other one to keep — opening with a name rather than “can I speak to whoever buys equipment” changes the first ten seconds of any conversation, however you get to it.

Where the phone numbers actually are

TDLR publishes contact details for roughly 40 of its licence types, and they are all the establishment and company registrations rather than individually held trade licences. On those, coverage is effectively total. Measured on 2026-08-21:

licenseTypeRows statewideWith a phone
Full Service Establishment35,58435,566
Mini Establishment21,61621,612
Electrical Contractor13,91713,911
Water Well Driller/Pump Installer1,7401,709
Appliance Installation Contractor835835
Electrical Sign Contractor654653
Elevator Contractor365361
A/C Contractor20,3230

Across the whole file it is 99,720 rows of 983,494 — about 10%. So if your territory work is electrical rather than HVAC, swap one string and the same run becomes a genuine calling list:

{
  "county": "TRAVIS",
  "licenseType": "Electrical Contractor",
  "maxResults": 1000
}

468 rows for Travis, and all 468 carry a street address, a suite line where there is one, a city and ZIP, and a phone.

One thing the file will not give you is coordinates. It does contain a latitude/longitude column, and it is a trap: it holds a city centroid, not a street geocode. Those 468 Travis electrical contractors have 432 distinct addresses and just 17 distinct coordinate pairs, with 347 of them sitting on the same point in downtown Austin. The actor leaves it out rather than hand you something that looks mappable and would stack a whole city on one pin. If you need pins, geocode the address and city_state_zip columns yourself.

For HVAC specifically, treat the roster as the input to contact-finding rather than the output: 694 verified business names with owner names attached is a much better enrichment list than a scraped directory, because every row on it is a currently licensed business.

What you’d do with it

Export to CSV and pivot on license_subtype to decide who matters. Import keyed on license_number — a TDLR number survives a rebrand, a phone-number change and a move across town, so next quarter’s run lines up against this one instead of creating duplicates. Then work the sheet by expiration_date, oldest first: a licence that renewed recently is a business that is still trading.

Worth knowing

There is no status field. At all. TDLR’s export gives you an expiration date and nothing else to go on — no ACTIVE, no EXPIRED, no REVOKED. A row with a date in the past is your best available signal that a licence has lapsed, and it is a proxy, not a fact. If a specific licence matters (you are about to give someone credit, say), verify that one at the source rather than inferring it from this file.

TDLR does not license general contractors or plumbers. Texas has no statewide GC licence at all, and plumbers sit with a separate board on a separate dataset. This actor covers the trades TDLR regulates — A/C, electrical, and the rest of its list — and nothing outside them.

The export is not a daily snapshot, and it is not close. TDLR publishes no refresh schedule. Checked on 2026-08-21, the dataset’s last row update was 2026-07-16 — 36 days earlier, and the same date it had reported at a check three weeks before that. Plan around weeks, not days: a registration filed this month may not appear until the next republication. The source_url on every row links to the dataset page, which states the exact date.

County is the business address county. A contractor registered in Williamson County who works Austin every day is not in a Travis run. Statewide, 37,776 rows carry no county at all and cannot be reached by any county query.


Run it yourself: How to run Texas Contractor Directory & Leads Scraper (TDLR) walks the whole thing step by step.

When you have the name already: Find Texas Electricians by Company Name searches the same registry by business name instead of by territory, and Texas Contractor & Trade License Lookup (TDLR) is the actor to use when a single licence has to be checked properly rather than inferred from an expiration date.

Last updated 2026-08-21