# Texas Workers' Comp Leads - Renewals & Uninsured Employers (`wicker_triathlon/texas-workers-comp-leads`) Actor

Find Texas businesses whose workers' compensation policy renews soon, with their current carrier, premium and exact expiration date, plus businesses that have no workers' comp at all, from official Texas Department of Insurance data.

- **URL**: https://apify.com/wicker\_triathlon/texas-workers-comp-leads.md
- **Developed by:** [Peter Shenouda](https://apify.com/wicker_triathlon) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $6.00 / 1,000 leads

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Texas Workers' Comp Leads - Renewals & Uninsured Employers

**Find Texas businesses whose workers' compensation policy renews soon, with their current carrier, premium and exact expiration date, plus businesses that have no workers' comp at all, straight from official Texas Department of Insurance data.**

### Who is this for?

- **Commercial insurance agents and brokers** who want to quote a business 60-90 days before its policy renews
- **Agencies and carriers** looking for a competitor's book of business up for renewal (filter by current carrier)
- **PEOs, payroll and HR companies** that bundle workers' comp, or that pitch businesses with no coverage
- **Insurance marketing teams** building targeted prospect lists by city, ZIP, premium size or industry class code

### What can I use it for?

1. **Fill your renewal pipeline.** Pull every Houston business whose policy expires in the next 90 days with a premium over $25,000, sorted by soonest expiration. Call them before their current agent does.
2. **Win business from a specific carrier.** Set "Current insurance carrier contains" to a competitor's name to see which accounts they need to renew this quarter.
3. **Reach uninsured employers.** Switch to "Employers with no coverage" to get businesses that filed to opt out of workers' comp, which are natural prospects for coverage or occupational-accident policies.

Turn on **Only new since my last run** and schedule it monthly. Each run then only returns (and only charges for) leads you haven't received yet.

### Inputs (all optional)

| Input | What it does | Example |
|---|---|---|
| **Lead type** | Policy renewals, employers with no coverage, or both | Policy renewals |
| **Policy expires within (days)** | Renewals between today and this many days from now | `90` |
| **Cities / ZIP codes** | Only employers in these places | `Houston`, `77042` |
| **Employer name contains** | Only names containing this text | `ROOFING` |
| **Minimum annual premium ($)** | Focus on bigger accounts | `25000` |
| **Current insurance carrier contains** | Only policies with this carrier | `TEXAS MUTUAL` |
| **Class codes** | Workers' comp job codes | `8810` (clerical office) |
| **Sort renewal leads by** | Expiring soonest, or biggest premium first | Expiring soonest |
| **Include other employers on the same policy** | Also list sister companies on one policy | Off |
| **Include employee-leasing (PEO) policies** | Off skips PEO policies agents can't easily replace | Off |
| **No-coverage filings received within (days)** | How recent the opt-out filing must be | `365` |
| **Maximum results** | Stop after this many leads. You only pay for leads you get. | `100` |
| **Only new since my last run** / **Memory name** | Skip leads you already received (separate memories per rep or territory) | On / `Houston team` |

### Output

Each row is one lead. Here are 5 real renewal leads (Houston, run as of 2026-10-01, 90-day window):

| employerName | address | zip | policyExpirationDate | daysUntilExpiration | insuranceCarrier | annualPremium | governingClassCode |
|---|---|---|---|---|---|---|---|
| BOLTEX MANUFACTURING CO INC | 4901 OATES RD | 77013-2815 | 2026-10-15 | 14 | TEXAS MUTUAL INSURANCE COMPANY | 260,142 | 3110 |
| PRECISION DRILLING CORP | 10350 RICHMOND AVE, STE 700 | 77042-4485 | 2026-10-31 | 30 | ZURICH AMERICAN INSURANCE COMP | 1,972,643 | 6202 |
| BAKER HUGHES CO | 575 N DAIRY ASHFORD RD, STE 100 | 77079-1121 | 2026-11-01 | 31 | INDEMNITY INSURANCE COMPANY OF | 1,132,816 | 3643 |
| QWIK PIPE INC | 1825 UPLAND DR | 77043-3003 | 2026-11-15 | 45 | TEXAS MUTUAL INSURANCE COMPANY | 300,002 | 3724 |
| TARANTINO PROPERTIES INC | 7887 SAN FELIPE ST, STE 237 | 77063-1621 | 2026-12-01 | 61 | TEXAS MUTUAL INSURANCE COMPANY | 224,192 | 9032 |

Every row also includes `leadType`, `recordRole`, `city`, `state`, `policyEffectiveDate`, `naicsCode`, `market` (voluntary or assigned risk), `peoPolicy` and `source`. No-coverage leads fill `noCoverageFrom`, `noCoverageTo` and `filingReceivedDate` instead of the policy fields.

```json
{
  "leadType": "Policy renewal",
  "employerName": "PRECISION DRILLING CORP",
  "recordRole": "Named insured",
  "address": "10350 RICHMOND AVE, STE 700",
  "city": "HOUSTON",
  "state": "TX",
  "zip": "77042-4485",
  "policyExpirationDate": "2026-10-31",
  "daysUntilExpiration": 30,
  "policyEffectiveDate": "2025-10-31",
  "insuranceCarrier": "ZURICH AMERICAN INSURANCE COMP",
  "annualPremium": 1972643,
  "governingClassCode": "6202",
  "market": "Voluntary",
  "peoPolicy": false,
  "source": "Texas Department of Insurance, Division of Workers' Compensation - Coverage subscriber data (data.texas.gov, dataset c4xz-httr)"
}
```

Download as Excel, CSV or JSON, or send leads straight to Google Sheets, HubSpot, Zapier or Make.

### How much does it cost?

**$6 per 1,000 leads** ($0.006 each), and nothing else from this Actor.

- 100 leads cost **$0.60**.
- Every Houston renewal in the next 90 days (about 7,000 policies before filters) costs about **$42**.
- With **Only new** turned on, next month's run only charges for new leads.

Use **Maximum results** or Apify's "max cost per run" to cap spending. The Actor stops at whichever limit comes first.

### FAQ

**Where does the data come from?**
Two official public datasets from the Texas Department of Insurance, Division of Workers' Compensation, published on the Texas Open Data Portal (data.texas.gov). Insurance carriers report every policy to the state, and employers that opt out file a DWC Form-005. No logins, no scraping of private sites.

**How fresh is it?**
The coverage data is updated by the state about quarterly, and the no-coverage filings monthly. The Actor always asks the state's live API, so you get the newest published version.

**Does it include personal information?**
No. Many small employers are sole proprietors whose "business name" is just their own name. **The Actor only outputs employers whose name has a legal business ending (LLC, Inc., Corp., Co., LP, Ltd., etc.)** and skips every other row (you're not charged for skipped rows). Trade names after "DBA" are removed, and "ATTN" / "C/O" person names are stripped from addresses.

**What's a class code?**
The 4-digit code insurers use to describe a business's main type of work (for example 8810 = clerical office employees). It's the main driver of a workers' comp price.

**What does "premium" mean here?**
The state standard premium reported for the policy (before some discounts and dividends). It's a good guide to the account's size, not an exact bill.

**Why don't I see a business I know has a policy?**
It may be on an employee-leasing (PEO) policy (turn on **Include employee-leasing policies**), its policy may have been cancelled, or its name may not have a legal business ending.

**Is it legal to use for marketing?**
The data is public government information. You're responsible for following marketing and do-not-call rules that apply to you. I'm not a lawyer, and this isn't legal advice.

**Something's wrong or missing?**
Open an issue on the **Issues** tab and I'll take a look.

*Not affiliated with or endorsed by the Texas Department of Insurance. Data is provided as published by the state.*

# Actor input Schema

## `leadType` (type: `string`):

Renewals = employers whose policy expires soon. No coverage = employers that filed to opt out of workers' comp. Both = renewals first, then no-coverage leads.

## `expiresWithinDays` (type: `integer`):

Renewal leads only: include policies that expire between today and this many days from today. 90 is a good window for agents.

## `cities` (type: `array`):

Only employers in these cities (e.g. Houston, Dallas). Leave empty for all of Texas.

## `zipCodes` (type: `array`):

Only employers in these 5-digit ZIP codes.

## `employerNameContains` (type: `string`):

Only employers whose name contains this text (e.g. ROOFING). Not case-sensitive.

## `minAnnualPremium` (type: `integer`):

Renewal leads only: skip policies with a state standard premium below this amount. Use it to focus on bigger accounts.

## `carrierNameContains` (type: `string`):

Renewal leads only: only policies with this carrier (e.g. TEXAS MUTUAL). Useful for targeting a competitor's customers.

## `classCodes` (type: `array`):

Renewal leads only: only policies with these 4-digit workers' comp governing class codes (the industry's job code, e.g. 8810 = clerical office).

## `sortBy` (type: `string`):

Order of renewal leads.

## `includeCoveredEmployers` (type: `boolean`):

Off = one row per policy (the named insured). On = also list sister companies covered by the same policy.

## `includePeoPolicies` (type: `boolean`):

Off = skip policies bought through a PEO / employee-leasing company, which agents usually can't replace directly.

## `filedWithinDays` (type: `integer`):

No-coverage leads only: include employers whose opt-out filing was received in the last this-many days and that are still opted out today.

## `includeLocations` (type: `boolean`):

No-coverage leads only: off = one row per company; on = also one row per listed work location.

## `maxResults` (type: `integer`):

Stop after this many leads. You are only charged for leads you receive.

## `onlyNew` (type: `boolean`):

Remembers every lead this Actor already gave you (stored privately in your own Apify account) and skips them next time, so a monthly run only returns and charges for new leads.

## `trackerName` (type: `string`):

Use a different name to keep separate memories, e.g. one per sales rep or territory. Default: default.

## `appToken` (type: `string`):

Optional free token from data.texas.gov that avoids rate limits on very large runs. Most users can leave this empty.

## Actor input object example

```json
{
  "leadType": "renewals",
  "expiresWithinDays": 90,
  "cities": [
    "Houston"
  ],
  "minAnnualPremium": 0,
  "sortBy": "expirationSoonest",
  "includeCoveredEmployers": false,
  "includePeoPolicies": false,
  "filedWithinDays": 365,
  "includeLocations": false,
  "maxResults": 100,
  "onlyNew": false
}
```

# Actor output Schema

## `results` (type: `string`):

One row per employer lead: policy renewals and employers with no workers' comp coverage.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "expiresWithinDays": 90,
    "cities": [
        "Houston"
    ],
    "maxResults": 100
};

// Run the Actor and wait for it to finish
const run = await client.actor("wicker_triathlon/texas-workers-comp-leads").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "expiresWithinDays": 90,
    "cities": ["Houston"],
    "maxResults": 100,
}

# Run the Actor and wait for it to finish
run = client.actor("wicker_triathlon/texas-workers-comp-leads").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "expiresWithinDays": 90,
  "cities": [
    "Houston"
  ],
  "maxResults": 100
}' |
apify call wicker_triathlon/texas-workers-comp-leads --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,wicker_triathlon/texas-workers-comp-leads"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/dQCSTL49yKo6sHq1D/builds/2Z9C5u1sec3kFMLYY/openapi.json
