# Texas New Business Leads: New LLCs, Sales Tax & TABC (`lonestar-leads/texas-new-business-leads`) Actor

Fresh Texas new business leads from official state data: newly formed LLCs & corporations (SOS file number), new sales tax permits with NAICS industry, and pending & new TABC liquor licenses. Cross-source matching, 0-100 lead score, county/city/ZIP filters, monitor mode.

- **URL**: https://apify.com/lonestar-leads/texas-new-business-leads.md
- **Developed by:** [Matthew Lee](https://apify.com/lonestar-leads) (community)
- **Categories:** Lead generation, Business
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.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 New Business Leads – New LLCs, Sales Tax Permits & TABC Liquor License Filings

**Find Texas businesses the week they form, register or open, and bars and restaurants *before* they open.** This Actor pulls four official State of Texas open-data feeds, links records that describe the same business, scores every lead from 0 to 100, and gives you one clean list you can filter. Filter by county, city, ZIP, NAICS industry, date range or name. Turn on **monitor mode** to get only records you haven't seen before. It's built for daily or weekly schedules, CRM imports and Zapier/Make workflows.

No login, no scraping of protected pages and no proxies. The data comes from the official **data.texas.gov** Socrata API, published by the Texas Comptroller of Public Accounts and the Texas Alcoholic Beverage Commission (TABC).

### What data you get

| Source | What it means | Typical buyers |
|---|---|---|
| **New sales tax permits** (Texas Comptroller, *Active Sales Tax Permit Holders*) | A business location just registered to collect sales tax, usually right before or after it opens. Includes the **NAICS industry**, outlet address, owner/taxpayer name, mailing address and first-sales date. | Commercial insurance, merchant services/POS, payroll and bookkeeping, signage, commercial cleaning, B2B suppliers, local marketing agencies |
| **Pending TABC license applications** | A business has applied for an alcohol permit (mixed beverage, wine and beer, package store, late hours…) and is still in review. **This is a pre-opening signal.** | Restaurant suppliers, beverage distributors, POS/hospitality tech, security, staffing, insurance |
| **Newly issued TABC licenses** | Primary TABC licenses whose *original* issue date falls in your date window, i.e. newly licensed bars, restaurants and stores. | Same as above, plus market research |
| **New LLCs & corporations** *(new in v0.2, `newEntities`)* | Newly formed Texas LLCs, corporations, partnerships and nonprofits, plus out-of-state companies registering to do business in Texas. Comes from the Comptroller's franchise-tax file and includes the **Secretary of State file number**, charter date, entity type, right-to-transact status, address and NAICS code when filed. **About 40,000 a month statewide** (Jun–Aug 2026). | Business banking, registered agents, accountants and bookkeepers, insurance, payroll, web/marketing agencies, B2B SaaS |

Thousands of new sales tax permits are issued every month across Texas. The dataset logged more than 18,000 in September 2026 alone. Lubbock County alone sees roughly 180–250 a month.

### New in v0.2: matching, de-duplication and lead score

- **Entity details on every permit and license.** Each sales-tax-permit holder is looked up by Comptroller taxpayer number, and each TABC owner that is an LLC/Inc/etc. by exact legal name. Rows gain `entityTypeName`, `sosFileNumber`, `sosCharterDate`, `sosStatus` and `rightToTransact`. Name matches are accepted only when exactly one Texas entity has that name.
- **Cross-source matching.** Rows for the same business share a `matchKey`, and `matchedSources` lists every source that saw it. For example, a new LLC that also got a sales tax permit and filed a TABC application. `matchConfidence` is `taxpayerNumber` when the link is an ID match and `name` when any link relies on an exact legal-name match.
- **One row per business (optional).** Set `mergeMatches: true` to collapse matched rows into one row with an `events` list and `firstEventDate`/`lastEventDate`.
- **Lead score (0–100), fully explained.** Points for recency, a real selling location (sales tax permit or TABC premises), a pre-opening TABC application, confirmation by 2–3 sources, an active entity and a consumer-facing industry. Points off for PO boxes, missing addresses, holding-company names and **registered-agent / virtual-office addresses**. Every row lists its `leadScoreReasons`, e.g. `"+20 has a sales tax permit"`. Sort with `sortBy: "leadScore"` or filter with `minLeadScore`.
- **Registered-agent detection.** New-entity addresses shared by 10+ entities set up in the last year (registered agents, virtual offices) are flagged `isLikelyAgentAddress`. Drop them with `excludeAgentAddresses: true`.
- **Fully backward compatible.** If you don't list `sources`, you get the same three sources, in the same order, as before. The new source and options are opt-in. Existing fields are unchanged, and new fields are simply added.

### Pricing

**Pay per result: $3.00 per 1,000 leads** ($0.003 per row), plus Apify's standard tiny per-run start fee. You pay only for rows delivered to your dataset. A typical weekly county pull (50–250 rows) costs well under $1. Set a **max cost per run** and the Actor stops at your limit.

### Typical uses

- **Weekly new-business lead list** for one or more Texas counties (e.g., Harris, Dallas, Travis, Bexar, Lubbock)
- **Restaurant and bar opening alerts:** combine the NAICS prefix `722` with the TABC sources
- **Territory monitoring:** schedule daily with `onlyNew: true` and send results to Google Sheets, HubSpot, Slack or email via Apify integrations
- **Market research:** count new businesses by industry, city or ZIP over any date range
- **New LLC lists by county:** `sources: ["newEntities"]`, `entityTypes: ["llc"]`, `excludeAgentAddresses: true`
- **Best leads first:** all four sources, `sortBy: "leadScore"`, `minLeadScore: 60`, `mergeMatches: true`

### Input

| Field | Description | Default |
|---|---|---|
| `sources` | Any of `salesTaxPermits`, `tabcPendingApplications`, `tabcNewLicenses`, `newEntities` | the first three |
| `daysBack` | Records dated in the last N days | 7 |
| `startDate` / `endDate` | Exact window, `YYYY-MM-DD` (overrides `daysBack`) | — |
| `counties` | Texas county names, e.g. `["Lubbock", "Harris"]` | all counties |
| `cities` | City names (case-insensitive) | all |
| `zipCodes` | 5-digit ZIPs | all |
| `naicsPrefixes` | e.g. `["722"]` restaurants and bars, `["2382"]` building equipment contractors, `["8121"]` personal care (sales tax source only) | all |
| `nameContains` | Substring match on business or owner name | — |
| `onlyNew` | Monitor mode: output only records not returned in earlier runs | false |
| `monitorKey` | Separate memory per saved search | `default` |
| `entityDaysBack` | Look-back window for `newEntities` (by SOS charter date). New entities usually appear in the state file about 2 weeks after charter. | 30 |
| `entityTypes` | `newEntities` only: any of `llc`, `corporation`, `professional`, `partnership`, `nonprofit`, `other` | all |
| `enrichWithEntityData` | Add SOS/entity details to permit and TABC rows | true |
| `mergeMatches` | One row per business instead of one row per source record | false |
| `sortBy` | `source` (original order), `leadScore`, or `date` | `source` |
| `minLeadScore` | Drop rows scoring below this (0–100) | 0 |
| `excludeAgentAddresses` | Drop new entities at registered-agent / virtual-office addresses | false |
| `maxResults` | Cap on total records | 1000 |
| `socrataAppToken` | Optional free data.texas.gov app token for higher rate limits | — |

Example input:

```json
{
  "sources": ["salesTaxPermits", "tabcPendingApplications"],
  "counties": ["Lubbock"],
  "daysBack": 7,
  "naicsPrefixes": ["722"],
  "onlyNew": true
}
```

Best-leads example (v0.2):

```json
{
  "sources": ["salesTaxPermits", "tabcPendingApplications", "tabcNewLicenses", "newEntities"],
  "counties": ["Lubbock"],
  "daysBack": 30,
  "mergeMatches": true,
  "sortBy": "leadScore",
  "excludeAgentAddresses": true
}
```

### Output

One row per lead, with the same columns across all sources:

```json
{
  "source": "tabcPendingApplications",
  "sourceLabel": "TABC – pending license application",
  "recordId": "639857",
  "eventType": "TABC application submitted",
  "eventDate": "2026-10-07",
  "businessName": "RUBES SPORT BAR AND GRILL INC",
  "ownerName": "RUBES SPORT BAR AND GRILL INC",
  "address": "4930 S Loop 289 Unit 250",
  "city": "LUBBOCK",
  "state": "TX",
  "zip": "79414",
  "county": "Lubbock",
  "naicsCode": null,
  "industry": null,
  "licenseType": "MB",
  "licenseTypeName": "Mixed Beverage Permit",
  "status": "Pending – In Review",
  "taxpayerNumber": null,
  "firstSalesDate": null,
  "insideCityLimits": null,
  "mailingAddress": null,
  "datasetUrl": "https://data.texas.gov/dataset/...",
  "scrapedAt": "2026-10-11T17:30:00.000Z"
}
```

A merged, scored row (`mergeMatches: true`) adds fields like these:

```json
{
  "businessName": "CLOUDS HOOKAH SPORTS GRILL",
  "ownerName": "CLOUDS HOOKAH LOUNGE CAFE, LLC",
  "industry": "Limited-Service Restaurants",
  "entityTypeName": "Texas Limited Liability Company",
  "sosFileNumber": "0803181847",
  "rightToTransact": "Active",
  "matchedSources": ["salesTaxPermits", "tabcPendingApplications"],
  "matchConfidence": "name",
  "events": [
    { "source": "salesTaxPermits", "eventType": "Sales tax permit issued", "eventDate": "2026-09-14", "recordId": "32069117151-2" },
    { "source": "tabcPendingApplications", "eventType": "TABC application submitted", "eventDate": "2026-09-24", "recordId": "640996" }
  ],
  "leadScore": 90,
  "leadScoreReasons": ["+10 base", "+15 event in last 30 days", "+20 has a sales tax permit (physical/selling location)", "+10 pending TABC application (pre-opening)", "+15 confirmed by 2 sources", "+10 entity active with right to transact", "+10 consumer-facing industry"]
}
```

Sales tax rows also include `naicsCode` with a human-readable `industry` (NAICS 2017/2022 titles), `taxpayerNumber`, `firstSalesDate`, `insideCityLimits` and the taxpayer `mailingAddress`. Export to CSV, Excel, JSON or XML from the dataset tab, or pull results via the Apify API.

### How it works and reliability

- Queries the official Socrata API with server-side filters, so only matching rows are transferred. Runs are fast and cheap.
- Paginates politely (1 second between pages, per data.texas.gov's robots.txt crawl delay), and retries with exponential backoff on rate limits or server errors.
- If one source fails, the others still complete, and per-source stats are saved to the `RUN_SUMMARY` key-value record.
- County codes are decoded to county names and NAICS codes to industry titles. TABC license codes (MB, BG, BQ, BE, BF, BW, G, P, Q, LH, FB, NT and more) are decoded using TABC's official license-type list.

### Notes and limitations

- Data freshness depends on the state agencies. The Comptroller and TABC datasets are typically refreshed daily. New LLCs/corporations show up in the franchise-tax file roughly **2 weeks after their SOS charter date**, which is why `newEntities` looks back 30 days by default. Use monitor mode so each entity is delivered once, as soon as it appears.
- The `newEntities` address is the address on file with the Comptroller, often a mailing or registered-agent address, and the county filter uses that address. Use `isLikelyAgentAddress` / `excludeAgentAddresses` to focus on businesses that list their own address.
- Matching is deliberately conservative: exact taxpayer numbers, or exact legal names (after normalizing punctuation and "LLC/Inc" spellings) that belong to exactly one Texas entity. Sole proprietors are not in the franchise-tax file, so they won't get entity details.
- This data is public record. Some sole-proprietor records contain an individual's name and address. Use it responsibly and follow applicable laws (e.g., CAN-SPAM and TCPA) when contacting leads.
- Contact enrichment (emails/phones) is not included. The data contains only what the state publishes. TABC's phone column is blank in the public files.
- This Actor is not affiliated with the Texas Comptroller, TABC or the State of Texas.

### Use with AI agents and automations

Call it from the Apify API, the Apify MCP server (Claude, ChatGPT, Cursor and other agents), Zapier, Make, n8n or any HTTP client. The output schema is stable and flat, which makes it easy to load into a CRM or spreadsheet.

### FAQ

**Does it need a login or proxy?** No. It uses the public open-data API.

**How do I get only new businesses each week?** Schedule the Actor weekly with `onlyNew: true` and the same `monitorKey`.

**How fresh is it?** Each run queries the live state datasets, so you get whatever the agencies published as of that moment.

**Can I cover all of Texas?** Yes. Leave `counties` empty and raise `maxResults` (statewide is roughly 15,000–19,000 new sales tax permits and ~40,000 new entities a month).

**Can I get new Texas LLCs with their SOS file number?** Yes. Use `sources: ["newEntities"]` (optionally `entityTypes: ["llc"]`). Each row includes `sosFileNumber`, `sosCharterDate`, `entityTypeName` and `rightToTransact`.

**What does the lead score mean?** It estimates how likely a row is a real, newly opening, reachable business. Every point is listed in `leadScoreReasons`, so you can see exactly why a lead scored 85 or 30.

**Will my existing schedules change?** No. With the same input you get the same rows in the same order. Rows now carry extra fields (entity details, lead score, matches), and TABC rows may now include the owner's `taxpayerNumber` when it could be matched exactly.

# Actor input Schema

## `sources` (type: `array`):

Which official Texas datasets to pull. salesTaxPermits = new Comptroller sales tax permits (new retail/service locations, with NAICS industry). tabcPendingApplications = pending TABC alcohol license applications (bars, restaurants, stores BEFORE they open). tabcNewLicenses = TABC primary licenses originally issued in the date window. newEntities = NEW: newly formed Texas LLCs/corporations and out-of-state entities registering in Texas (SOS file number, charter date, entity type) from the Comptroller franchise-tax file. If you leave this empty, the first three are used (same as before newEntities existed).

## `daysBack` (type: `integer`):

Return records dated within the last N days (permit issue date, application submission date, or license original issue date). The newEntities source uses its own window (New LLCs: days back). Ignored if Start date is set.

## `startDate` (type: `string`):

Inclusive start date, YYYY-MM-DD. Overrides Days back.

## `endDate` (type: `string`):

Inclusive end date, YYYY-MM-DD. Defaults to today.

## `counties` (type: `array`):

Texas county names, e.g. Lubbock, Harris, Travis. Leave empty for all 254 counties.

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

City names, e.g. Lubbock, Wolfforth. Case-insensitive exact match. Leave empty for all.

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

5-digit ZIP codes. Leave empty for all.

## `naicsPrefixes` (type: `array`):

Keep only sales tax permits whose NAICS code starts with one of these, e.g. 722 (restaurants & bars), 2382 (building equipment contractors), 4411 (auto dealers), 8121 (personal care). TABC records are not filtered by NAICS.

## `nameContains` (type: `string`):

Case-insensitive substring match on business / owner name.

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

When enabled, the Actor remembers record IDs between runs (in a named key-value store) and outputs only records it has not returned before. Ideal for daily or weekly schedules.

## `monitorKey` (type: `string`):

Name for the monitor memory. Use different keys for different saved searches.

## `entityDaysBack` (type: `integer`):

Look-back window for the newEntities source, by SOS charter date. New entities usually appear in the Comptroller file about 2 weeks after they are chartered, so the default is 30 days. Use Monitor mode to get each new entity exactly once. Ignored if Start date is set.

## `entityTypes` (type: `array`):

Keep only these entity types for the newEntities source. Leave empty for all types.

## `enrichWithEntityData` (type: `boolean`):

Looks up each sales-tax-permit holder (by Comptroller taxpayer number) and each TABC owner that is an LLC/Inc/etc. (by exact legal name) in the franchise-tax file, and adds entity type, SOS file number, charter date and right-to-transact status. Only fills empty fields.

## `mergeMatches` (type: `boolean`):

When enabled, records that describe the same business (same taxpayer number, or same exact legal name) are merged into one row with an events list, firstEventDate and lastEventDate. When disabled (default), you get one row per source record, and matchedSources / relatedRecordIds show the links.

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

source = by data source, newest first within each source (the original behaviour). leadScore = best leads first. date = newest event first across all sources.

## `minLeadScore` (type: `integer`):

Drop rows with a lead score below this value (0-100). The score is explained in leadScoreReasons on every row. 0 = keep everything.

## `excludeAgentAddresses` (type: `boolean`):

For newEntities rows, drop entities whose address is shared by 10+ entities set up in the last year (typical of registered agents and virtual offices, so the address is not where the business operates).

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

Maximum total records to output across all sources.

## `socrataAppToken` (type: `string`):

Optional free data.texas.gov app token for higher API rate limits. Not required.

## Actor input object example

```json
{
  "sources": [
    "salesTaxPermits",
    "tabcPendingApplications",
    "tabcNewLicenses",
    "newEntities"
  ],
  "daysBack": 7,
  "counties": [
    "Lubbock"
  ],
  "onlyNew": false,
  "monitorKey": "default",
  "entityDaysBack": 30,
  "enrichWithEntityData": true,
  "mergeMatches": false,
  "sortBy": "source",
  "minLeadScore": 0,
  "excludeAgentAddresses": false,
  "maxResults": 1000
}
```

# Actor output Schema

## `leads` (type: `string`):

All leads from this run (new LLCs/corporations, sales tax permits and TABC filings), with lead score and cross-source matches.

## `runSummary` (type: `string`):

Input used, per-source counts, enrichment stats and number of cross-source matches.

# 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 = {
    "sources": [
        "salesTaxPermits",
        "tabcPendingApplications",
        "tabcNewLicenses",
        "newEntities"
    ],
    "counties": [
        "Lubbock"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("lonestar-leads/texas-new-business-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 = {
    "sources": [
        "salesTaxPermits",
        "tabcPendingApplications",
        "tabcNewLicenses",
        "newEntities",
    ],
    "counties": ["Lubbock"],
}

# Run the Actor and wait for it to finish
run = client.actor("lonestar-leads/texas-new-business-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 '{
  "sources": [
    "salesTaxPermits",
    "tabcPendingApplications",
    "tabcNewLicenses",
    "newEntities"
  ],
  "counties": [
    "Lubbock"
  ]
}' |
apify call lonestar-leads/texas-new-business-leads --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,lonestar-leads/texas-new-business-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/eIY8HMnrCYbsrcnE5/builds/ikcb9COsuIPISXfIg/openapi.json
