TDLR
Texas Contractor & Trade License Lookup & Export (TDLR)
Verify a Texas electrician, HVAC or trade license by number or name — or export every Electrical or A/C Contractor statewide, filtered by county, city, ZIP or expiry, from TDLR.
Verification
Output fields
Authoritative field set from the dataset schema.
| Field | Type |
|---|---|
state | string|null |
license_number | string|null |
business_name | string|null |
person_name | string|null |
license_type | string|null |
status | string|null |
issue_date | string|null |
expiration_date | string|null |
city | string|null |
county | string|null |
address | string|null |
zip_code | string|null |
phone | string|null |
bond_amount | string|null |
bond_company | string|null |
insurance_company | string|null |
matched_by | string|null |
source_url | string|null |
Sample row
{
"state": "TX",
"license_number": "592",
"business_name": "ROUNTREE APPLIANCE INC",
"person_name": "ROUNTREE APPLIANCE INC",
"license_type": "Appliance Installation Contractor",
"expiration_date": "05/25/2027",
"county": "BOSQUE",
"address": "815 N AVENUE G",
"city": "CLIFTON",
"zip_code": "76634-1011",
"phone": "2546753515",
"matched_by": "business_name",
"source_url": "https://www.tdlr.texas.gov/LicenseSearch/"
} Inputs
| Field | Type | Req | Default | Description |
|---|---|---|---|---|
query | string | no | "ELECTRIC" | A Texas TDLR license number, business name, or owner name. Searches all three: exact license number, business-name substring, and owner-name substring — results are unioned and deduped by license #. TDLR keeps owner and business as separate columns and they disagree on 19,774 of its 983,494 records, so an owner search finds people a business-name search cannot. Leave this and the batch list empty to run a statewide export by licence type instead (see the statewide fields below). |
queries | array | no | ["ELECTRIC"] | Look up many in ONE run instead of starting a run per lookup. Takes the same values as 'Search query'. Combined with 'Search query' if you fill both, and duplicates are removed. Billing is unchanged: you are charged per record returned, not per entry submitted. |
licenseType | string | no | — | Used only when no search query is given: export every TDLR licence of this type statewide. TDLR's own type name, case-insensitive, e.g. 'Electrical Contractor' (14,019 records, 2026-10-07) or 'A/C Contractor' (20,436). Leave empty for the default contractor set: Electrical Contractor, A/C Contractor, Appliance Installation Contractor, Electrical Sign Contractor and Elevator Contractor (36,312 records). An unknown type is dropped with a log line, never widened to the whole 1M-row register. |
licenseTypes | array | no | [] | Several TDLR licence types in one export. Combined with 'Licence type'. Note: TDLR publishes address, city, ZIP and phone only for company/establishment types — Electrical Contractor, Appliance Installation Contractor, Electrical Sign Contractor and Elevator Contractor have them on ~99.8% of rows; A/C Contractor and every individually held licence (A/C Technician, Master Electrician, ...) have none. |
county | string | no | — | Statewide mode only: keep licences whose business county is this Texas county, e.g. 'Travis' or 'Harris County'. |
counties | array | no | [] | Statewide mode only: several counties (OR). Combined with 'County'. Unknown names are dropped with a log line. |
city | string | no | — | Statewide mode only: keep licences whose business city is this, e.g. 'Austin'. Only company/establishment types carry a city, so A/C Contractor rows never match. |
cities | array | no | [] | Statewide mode only: several cities (OR). Combined with 'City'. |
zip | string | no | — | Statewide mode only: 5-digit business ZIP, e.g. '78701'. Same coverage caveat as City. |
zips | array | no | [] | Statewide mode only: several ZIPs (OR). Combined with 'ZIP'. Values that are not 5 digits are dropped with a log line. |
excludeExpired | boolean | no | false | Statewide mode only: keep only licences whose expiration date is today or later. TDLR publishes no status column, so expiry is the only currency signal. |
expiresAfter | string | no | — | Statewide mode only: keep licences expiring on or after this date. |
expiresBefore | string | no | — | Statewide mode only: keep licences expiring on or before this date — with 'Expires on or after' this gives a renewal-window list. |
maxResults | integer | no | — | Search mode: cap PER ENTRY (default 50), so a batch cannot silently return only the first 50 rows overall. Statewide mode: cap on the whole export (default 500; up to 100,000). The log states how many records matched in total, so a capped export never reads as complete. |
proxyConfiguration | object | no | {"useApifyProxy":false} | Optional. The Texas TDLR open-data API is reachable directly; a proxy is not needed. |
Pricing
Pay per result (dataset-item) — no charge for empty runs.
Example: 100 verified license records at $0.004/result ≈ $0.40.
FAQ
Where does the data come from?
The official Texas Department of Licensing & Regulation (TDLR) open-data registry — public, authoritative license data.
Does Texas license general contractors?
No — Texas does not license general contractors statewide. TDLR licenses specific trades such as electricians and HVAC/AC contractors, which is what this actor verifies. (Plumbers are licensed by the separate TSBPE board and are not included here.)
What can I search by?
A TDLR license number (exact), a business name (substring), or an owner name (substring). All three indexes are searched and the results unioned and deduped by license number — which matters because TDLR's owner and business columns disagree on 19,774 of its 983,494 records (checked 2026-09-06): an owner such as 'PETERSON, LESLIE LYNN' trades as 'AIR TEMP HEATING & AIR CONDITIONING', and a business-name-only search would never find them.
Can I export every contractor of a type, statewide?
Yes — leave the search empty and set 'Licence type' (TDLR's own name, e.g. 'Electrical Contractor'), optionally with county, city, ZIP and expiration filters. With no type it exports the five TDLR contractor types: A/C Contractor 20,436, Electrical Contractor 14,019, Appliance Installation Contractor 830, Electrical Sign Contractor 655 and Elevator Contractor 372 (36,312 in all, counted 2026-10-07). It never returns the whole ~1.0M-row register, most of which is not contractors. Default cap 500 rows, up to 100,000 per run; an unrecognised type or county is dropped with a log line rather than widened to the whole state.
Do I get an address and phone number?
On company-held licences, yes — street address, city, ZIP and phone. TDLR publishes contact details only for its establishment/company licence types, which is 11.0% of records for address and 10.1% for phone (counted against the live dataset 2026-09-06). Among contractors (counted 2026-10-07): Electrical Contractor has a phone on 14,014 of 14,019 rows, Appliance Installation, Electrical Sign and Elevator Contractors on ~99%, and A/C Contractor on 0 of 20,436 — TDLR publishes no address or phone for A/C Contractors, so an A/C export is names, licence numbers, counties and expiry dates only, and a city or ZIP filter can never match one. Individually held trade licences carry no address or phone at the source either, and those columns come back null rather than guessed.
How am I charged?
Pay-per-result — per license record returned, in search and export mode alike. No charge for searches with no results, input errors or outage notices.
Is this personal data?
It's public professional-license data (business and license records as TDLR publishes them); we add no personal/PII enrichment.
How current is it?
It reflects the TDLR open-data registry. The state publishes no refresh schedule and the export is not daily — when checked on 2026-07-28 its last row update was 2026-07-16, and on 2026-10-07 it was 2026-09-19, so expect the snapshot to lag the board's live record by weeks.
Guides & use cases
Related actors