Texas TDLR License & Contractor Records Scraper avatar

Texas TDLR License & Contractor Records Scraper

Pricing

from $9.23 / 1,000 results

Go to Apify Store
Texas TDLR License & Contractor Records Scraper

Texas TDLR License & Contractor Records Scraper

Extract public Texas TDLR license records across 149 trades including electricians, HVAC, cosmetology and tow companies. Get licensee name, business, license number, status, address, city, county, ZIP, phone and dates. Export to JSON, CSV or Excel.

Pricing

from $9.23 / 1,000 results

Rating

5.0

(1)

Developer

Scrapers Lat

Scrapers Lat

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

a day ago

Last modified

Share

Texas TDLR License Scraper

Texas TDLR License Scraper

Here is one real result, with every field the actor returns:

{
"name": "APEX TOWING LLC",
"businessName": null,
"licenseType": "Tow Company",
"licenseNumber": "006632622C",
"status": null,
"address": "3802 CULEBRA RD",
"city": "SAN ANTONIO",
"state": "TX",
"zip": "78228-5820",
"county": "BEXAR",
"phone": "210-758-0310",
"licenseSubtype": null,
"continuingEducationFlag": null,
"mailingAddress": "3802 CULEBRA RD",
"mailingCity": "SAN ANTONIO",
"mailingState": "TX",
"mailingZip": "78228-5820",
"mailingPhone": "210-758-0310",
"insuranceCompany": "NATIONAL LIABILITY & FIRE INSURANCE COMPANY",
"policyType": "10",
"coverageAmount": null,
"vehicleCount": "1",
"tdiNumber": "93805",
"insuranceEffectiveDate": "6/4/2026 12:00:00 AM",
"insuranceCancelDate": "8/2/2026 12:00:00 AM",
"issueDate": null,
"expirationDate": null,
"observedAt": "2026-07-25T07:47:45.603Z",
"error": null
}

Every value above is the exact record from a live run. Fields are null when the selected TDLR file does not carry that column for the licensee (for example, insurance fields are populated for tow companies but not for individual electricians).

The most complete Texas TDLR license scraper available. It downloads the official bulk license file for any of 150+ TDLR programs, returns every column each file exposes (physical and mailing address, phone, county, license dates, and for regulated fleets the insurer, policy, vehicle count and coverage), and gives you six client-side filters (program, name, city, county, ZIP, license number) to target exactly the licensees you need.

📥 Input · 📤 Output · 💰 Pricing · ▶️ Examples

Apify Coverage Output Billing

Table of contents

What it does

The actor downloads the official public bulk license CSV published by the Texas Department of Licensing and Regulation (TDLR) for each program you select, parses it into normalized records, applies your filters client-side, and writes one record per licensee to the run's dataset. Programs range from electricians, cosmetologists and barbers to tow companies, vehicle storage facilities, massage therapists, midwives and podiatrists, over 150 in total. Column availability depends on the file: regulated-fleet programs (tow companies, vehicle storage) carry insurer, policy and vehicle data, while individual-trade files carry license dates and continuing-education flags. Missing values are returned as null rather than invented.

Quickstart

Open the actor, paste this into the input, and press Run. It returns 10 Master Electrician records.

{
"program": ["Ltmstele.csv"],
"maxLicenses": 10
}

program defaults to Master Electricians. Every filter is optional and applied after the CSV is downloaded; leave them blank to keep everything.

Input reference

FieldTypeRequiredDefaultDescription
programstring[]no["Ltmstele.csv"]One or more TDLR license programs, each mapping to an official bulk CSV. Choose from 150+ programs (electricians, cosmetology, tow companies, massage, podiatry, and more). All Licenses (ltlicfile.csv) is the full statewide file and is large.
maxLicensesintegerno10Maximum licensee records to collect. Range 1 to 5000000.
namestringno(empty)Keep only licensees whose name or business name contains this text (case-insensitive).
citystringno(empty)Keep only records in this city (case-insensitive, partial match).
countystringno(empty)Keep only records in this Texas county (case-insensitive, partial match).
zipstringno(empty)Keep only records whose ZIP starts with this value.
licenseNumberstringno(empty)Keep only the record(s) with this exact license or certificate number.

All filters are applied client-side after the CSV is downloaded and combine with logical AND.

Output reference

One dataset item per licensee. Types: string, or null when the source file does not carry that column for the record.

FieldTypeDescription
namestringLicensee name.
businessNamestringBusiness or DBA name, or null.
licenseTypestringLicense type derived from the selected program, for example Master Electrician, Tow Company.
licenseNumberstringLicense or certificate number.
statusstringLicense status when the file carries it, otherwise null.
addressstringPhysical address.
citystringPhysical address city.
statestringPhysical address state.
zipstringPhysical address ZIP.
countystringTexas county.
phonestringPhone number, or null.
licenseSubtypestringLicense subtype code when present, for example ME.
continuingEducationFlagstringContinuing-education flag (Y/N) when present.
mailingAddressstringMailing address.
mailingCitystringMailing address city.
mailingStatestringMailing address state.
mailingZipstringMailing address ZIP.
mailingPhonestringMailing phone.
insuranceCompanystringInsurer name (regulated-fleet programs), or null.
policyTypestringInsurance policy type code, or null.
coverageAmountstringCoverage amount when published, or null.
vehicleCountstringNumber of insured vehicles, or null.
tdiNumberstringTexas Department of Insurance company number, or null.
insuranceEffectiveDatestringInsurance effective date, or null.
insuranceCancelDatestringInsurance cancellation date, or null.
issueDatestringLicense issue date when present, or null.
expirationDatestringLicense expiration date (MM/DD/YYYY) when present, or null.
observedAtstringISO 8601 timestamp of when the record was collected.
errorstringnull on success. On a failed run, a single item with a populated error field is written instead.

Example output record

Real record from a live run (input {"program": ["TowCompanies.csv"], "maxLicenses": 3}):

{
"name": "BLAGRONE PROPERTIES LLC",
"businessName": "BL TOWING",
"licenseType": "Tow Company",
"licenseNumber": "006602290C",
"status": null,
"address": "511 1/2 EAST SABINE ST",
"city": "CARTHAGE",
"state": "TX",
"zip": "75633-2721",
"county": "PANOLA",
"phone": "903-693-5782",
"mailingAddress": "511 E SABINE ST",
"mailingCity": "CARTHAGE",
"mailingState": "TX",
"mailingZip": "75633-2721",
"mailingPhone": "903-693-5782",
"insuranceCompany": "PROGRESSIVE COUNTY MUTUAL INSURANCE COMPANY",
"policyType": "23",
"vehicleCount": "2",
"tdiNumber": "67940",
"insuranceEffectiveDate": "12/30/2025 12:00:00 AM",
"insuranceCancelDate": null,
"observedAt": "2026-07-25T07:47:45.603Z",
"error": null
}

Null-only fields are omitted here for readability but are present in the full dataset item.

Run via API and CLI

Start a run and wait for it to finish, then read the dataset. Replace <TOKEN> with your Apify API token.

Run synchronously and get dataset items in one call:

curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~texas-tdlr-scraper/run-sync-get-dataset-items?token=<TOKEN>" \
-H "Content-Type: application/json" \
-d '{"program":["Ltmstele.csv"],"county":"HARRIS","maxLicenses":50}'

Start a run asynchronously:

curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~texas-tdlr-scraper/runs?token=<TOKEN>" \
-H "Content-Type: application/json" \
-d '{"program":["TowCompanies.csv"],"city":"San Antonio","maxLicenses":200}'

Apify CLI:

apify call scrapers_lat/texas-tdlr-scraper \
--input '{"program":["vsMassageTherapist.csv"],"name":"Nguyen"}'

Fetch results

Every run writes to a dataset. Fetch items as JSON, CSV, or Excel by changing format:

# JSON
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=json"
# CSV
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=csv"
# Paginate large datasets
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&offset=1000&limit=1000"

<DATASET_ID> is returned as defaultDatasetId in the run object. Use offset and limit to page through large result sets. clean=true drops empty and internal fields.

Billing and limits

  • Pay per result. You are charged per licensee record returned (result event). See the pricing tab for the current per-result price.
  • No charge on failure. If a run errors, the actor writes a single item with a populated error field and does not charge for it. Empty runs cost nothing.
  • Spend cap respected. Set maxTotalChargeUsd on the run; once reached, the actor stops emitting and charging further billable results.
  • Free Apify plans are capped at 10 records per run. Upgrade for higher maxLicenses.

FAQ and troubleshooting

A run returned 0 records. Why? Your filters (name, city, county, ZIP, license number) matched nothing in the selected file. Loosen the filters or confirm the value. Zero-result runs are not charged.

Which programs can I download? Over 150 TDLR programs, from electricians and cosmetologists to tow companies, vehicle storage facilities, massage therapists and podiatrists. Pick one or more in the program field. All Licenses is the full statewide file and is large.

Why are the insurance fields null? Those columns only exist in regulated-fleet files such as tow companies and vehicle storage facilities. Individual-trade files carry license dates and continuing-education flags instead.

Can I scrape several programs at once? Yes. Add each CSV to program. maxLicenses applies across the whole run.

Is this an official Texas government tool? No. This actor is independent and has no affiliation with TDLR. It downloads only the bulk license files TDLR publishes for public use.

More scrapers at scrapers.lat

Built and maintained by scrapers.lat, where we publish scrapers for US and Latin American public platforms: company registries, government data, finance, e-commerce and more. Browse the catalog or request a custom scraper at scrapers.lat.


Independent tool, not affiliated with the Texas Department of Licensing and Regulation. Accesses only publicly available bulk license data.