# Texas Business Leads Scraper - Companies by Industry (NAICS) (`scrapesage/texas-business-leads-scraper`) Actor

Scrape Texas businesses from the official Comptroller Active Sales Tax Permit Holders open data: company & DBA name, address, NAICS industry, entity type, county, permit & first-sale dates. Filter by industry, city/county & new-business date; monitor only-new. Keyless, no browser.

- **URL**: https://apify.com/scrapesage/texas-business-leads-scraper.md
- **Developed by:** [Scrape Sage](https://apify.com/scrapesage) (community)
- **Categories:** Lead generation, Automation, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$5.00 / 1,000 business records

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/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## Texas Business Leads Scraper — Companies & New Businesses by Industry (NAICS)

Build **targeted Texas B2B lead lists** from the official **Texas Comptroller "Active Sales Tax Permit Holders"** open dataset — **every active business in Texas** with a sales-tax permit. Filter by **NAICS industry**, **city / county**, **entity type**, and **permit date**, and get clean records with **legal & DBA name, business address, decoded industry, entity type, county, and the permit & first-sales dates that flag brand-new businesses**.

This is the data the Secretary-of-State name-lookup scrapers don't have: **industry codes (NAICS) at state scale** plus a **new-business intent signal** you can monitor on a schedule.

No login, no API key, no browser — fast JSON extraction straight from the state open-data API.

### Why this Texas business scraper?

Most "Texas business" scrapers only look up a single company name in the Secretary of State registry. This actor turns the **entire Texas business universe into a filterable prospecting database** — and ships the richest record in the category:

| Data | Name-lookup scrapers | This actor |
|---|---|---|
| Bulk prospecting by **NAICS industry** (statewide) | ❌ | ✅ exact codes, prefixes & sectors |
| Decoded NAICS **title + sector name** | ❌ raw code at best | ✅ 1,394 industry titles |
| **New-business** signal (permit / first-sales date) | ❌ | ✅ filter & monitor |
| Business (outlet) **address + ZIP + county name** | partial | ✅ |
| Legal **entity type** (LLC / corp / sole prop / …) decoded | ❌ raw code | ✅ + out-of-state-owner flag |
| DBA / outlet trade name vs legal name | ❌ | ✅ |
| One-record-per-location **or** per-company | ❌ | ✅ toggle |
| Lead score (0–100) | ❌ | ✅ |
| Only-new monitoring across runs | ❌ | ✅ |

### Use cases

- **Lead generation** — pull every business in an industry + area (e.g. all `Accommodation & Food Services` in `Harris` county) as a ready-to-enrich prospect list for B2B sales, direct mail, and ABM.
- **New-business outreach** — banks, insurers, POS/payroll/SaaS vendors, accountants, marketing agencies and suppliers all want **newly opened businesses first**. Filter `newBusinessWithinDays` and sort by newest permit.
- **Market & competitive intelligence** — count and map businesses by NAICS, city, county and entity type; track where a category is growing.
- **Territory & TAM building** — size and segment the Texas market for any vertical by industry code and geography.
- **Recurring monitoring** — schedule the actor with **monitor mode** to receive only newly-permitted Texas businesses each day/week.

### How to use

1. [Sign up for Apify](https://console.apify.com/sign-up) — the free plan is enough to try this actor.
2. Open the **Texas Business Leads Scraper**, pick an **industry sector** (or NAICS codes) and a **city/county**, optionally set **New businesses within N days**, and click **Start**.
3. Watch results stream into the dataset table.
4. **Export** as JSON, CSV, Excel, or XML — or pull results programmatically via the [Apify API](https://docs.apify.com/api/v2).

### Input

```json
{
    "industrySectors": ["Accommodation & Food Services"],
    "cities": ["Austin"],
    "newBusinessWithinDays": 90,
    "sortBy": "newest",
    "maxResults": 500
}
```

- **industrySectors** — friendly NAICS sector names (`Construction`, `Retail Trade`, `Health Care & Social Assistance`, …). Maps to 2-digit NAICS.
- **naicsCodes** — exact 6-digit codes, e.g. `722511` (full-service restaurants), `541110` (law offices).
- **naicsPrefixes** — 2–5 digit prefixes for sub-sector targeting, e.g. `722` (food & drink), `2382` (building-equipment contractors).
- **cities / counties / zipCodes** — geographic filters (county accepts names like `Harris` or the Comptroller code).
- **organizationTypes** — `llc`, `corporation`, `nonprofit`, `soleProprietor`, `partnership`, `professional`, `association`, `government`, `financial`, `trust`.
- **businessNameQuery** — only businesses whose legal name or DBA contains this text.
- **newBusinessWithinDays** — only businesses permitted in the last N days (the high-intent new-business signal).
- **permitIssuedAfter / Before, firstSalesAfter / Before** — date-range filters.
- **outOfStateOwnersOnly** — only out-of-state companies operating in Texas.
- **dedupeByTaxpayer** *(default false)* — one record per company instead of one per location.
- **sortBy** *(default `newest`)* — `newest` permit first is best for fresh leads.
- **monitorMode / monitorKey** — emit only businesses not seen in previous runs (per key).

### Output

One record per business location (`recordType: "business"`):

```json
{
    "recordType": "business",
    "source": "tx-comptroller",
    "state": "TX",
    "taxpayerNumber": "32012345678",
    "taxpayerName": "Blackbird & Bayou Llc",
    "businessName": "Blackbird & Bayou",
    "dbaName": "Blackbird & Bayou",
    "hasDistinctDba": true,
    "entityTypeCode": "CL",
    "entityType": "Limited Liability Company (Texas)",
    "entityCategory": "LLC",
    "isOutOfStateOwner": false,
    "naicsCode": "722330",
    "naicsTitle": "Mobile food services",
    "naicsSector": "72",
    "naicsSectorName": "Accommodation & Food Services",
    "industryCategory": "Accommodation & Food Services",
    "outletName": "Blackbird & Bayou",
    "outletStreet": "123 Main St",
    "outletCity": "Houston",
    "outletZip": "77002",
    "outletCounty": "Harris",
    "outletFullAddress": "123 Main St Houston, TX 77002",
    "insideCityLimits": true,
    "taxpayerCity": "Houston",
    "taxpayerState": "TX",
    "taxpayerCounty": "Harris",
    "permitIssueDate": "2026-06-20",
    "firstSalesDate": "2026-06-01",
    "businessAgeYears": 0.1,
    "businessAgeTier": "startup",
    "isNewBusiness": true,
    "leadScore": 89,
    "leadSignals": ["very_new_business", "llc_or_corporation", "has_dba"],
    "scrapedAt": "2026-06-20T15:00:00.000Z"
}
```

Every record also carries the full raw state row under `sourceFields` so nothing is lost.

### Automate & schedule

Run this actor on autopilot and pull results into your own stack:

- **[Apify API](https://docs.apify.com/api/v2)** — start runs, fetch datasets, and manage schedules over REST.
- **[apify-client for JavaScript](https://docs.apify.com/api/client/js/)** and **[apify-client for Python](https://docs.apify.com/api/client/python/)** — official SDKs.
- **[Schedules](https://docs.apify.com/platform/schedules)** — run it daily/weekly with **monitor mode** to capture only newly-permitted Texas businesses; perfect for new-business lead pipelines.
- **[Webhooks](https://docs.apify.com/platform/integrations/webhooks)** — trigger downstream actions (CRM import, Slack alert, email sequence) the moment a run finishes.

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

const client = new ApifyClient({ token: 'MY_APIFY_TOKEN' });

const run = await client.actor('scrapesage/texas-business-leads-scraper').call({
    industrySectors: ['Construction'],
    counties: ['Travis'],
    newBusinessWithinDays: 30,
    sortBy: 'newest',
    maxResults: 1000,
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(`Got ${items.length} Texas business leads`);
```

### Integrate with any app

Connect the dataset to 5,000+ apps — no code required:

- **[Make](https://docs.apify.com/platform/integrations/make)** — multi-step automation scenarios.
- **[Zapier](https://docs.apify.com/platform/integrations/zapier)** — push new business leads straight into your CRM.
- **[Slack](https://docs.apify.com/platform/integrations/slack)** — get notified when a monitored search finds new businesses.
- **[Google Drive / Sheets](https://docs.apify.com/platform/integrations/drive)** — auto-export every run to a spreadsheet.
- **[Airbyte](https://docs.apify.com/platform/integrations/airbyte)** — pipe results into your data warehouse.
- **[GitHub](https://docs.apify.com/platform/integrations/github)** — trigger runs from commits or releases.

### Use with AI assistants (MCP)

The output is clean, LLM-ready JSON. You can call this actor from Claude, ChatGPT, or any agent framework through the **[Apify MCP server](https://docs.apify.com/platform/integrations/mcp)** — ask your assistant to "list new restaurants permitted in Austin this month" and let it run this scraper for you.

### Agent-ready: autonomous payments (x402 & Skyfire)

This actor is **agent-ready** — AI agents can discover it, run it, and **pay for it autonomously**, with no Apify account and no human in the loop. It uses [pay-per-event](https://docs.apify.com/platform/actors/publishing/monetize/pay-per-event) pricing and [limited permissions](https://docs.apify.com/platform/actors/development/permissions), so it qualifies for Apify's agentic-payment standards:

- **[x402](https://docs.apify.com/platform/integrations/x402)** — an open, HTTP-native payment protocol. Agents pay per run in USDC on the Base network directly through the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp) — no account, no API key.
- **[Skyfire](https://docs.apify.com/platform/integrations/skyfire)** — agent-to-service payments for fully autonomous AI-agent workflows.

Building an AI agent, MCP tool, or autonomous data pipeline? This scraper is ready to plug in and pay as it goes.

### More scrapers from scrapesage

Build a complete **US B2B lead-gen & company-intelligence stack**:

- **[US Business Formation Scraper](https://apify.com/scrapesage/us-business-formation-scraper)** — newly registered LLCs & companies from state Secretary-of-State registries.
- **[US Property Records Scraper](https://apify.com/scrapesage/us-property-records-scraper)** — property & parcel owner leads with mailing addresses.
- **[US Professional License Scraper](https://apify.com/scrapesage/us-professional-license-scraper)** — licensed professionals from official state boards.
- **[US Contractor License Scraper](https://apify.com/scrapesage/us-contractor-license-scraper)** — licensed contractor & trade leads with bond/insurance.
- **[FMCSA Trucking Scraper](https://apify.com/scrapesage/fmcsa-trucking-scraper)** — motor carriers & brokers with phone, email & authority.
- **[SBA Loan Leads Scraper](https://apify.com/scrapesage/sba-loan-leads-scraper)** — small businesses that took SBA 7(a) / 504 financing.
- **[PPP Loan Data Scraper](https://apify.com/scrapesage/ppp-loan-data-scraper)** — 11M+ PPP borrowers with industry & demographics.
- **[NPI Registry Scraper](https://apify.com/scrapesage/npi-nppes-scraper)** — US healthcare provider & organization records.
- **[Nonprofit & IRS 990 Scraper](https://apify.com/scrapesage/nonprofit-990-scraper)** — charities with officers, financials & contacts.

### Tips

- **Whole-state pulls**: leave the geographic filters empty and set `maxResults` high to export a full industry across Texas.
- **Fresh new-business feed**: combine `newBusinessWithinDays` + `sortBy: "newest"` + **monitor mode** on a daily [Schedule](https://docs.apify.com/platform/schedules).
- **Companies vs locations**: enable `dedupeByTaxpayer` to collapse multi-location chains to one record per business.
- **Cost control**: there's no start fee — you pay only per business record returned. Tighten filters to pay only for the leads you want.

### FAQ

**Where does the data come from?** The official Texas Comptroller of Public Accounts **Active Sales Tax Permit Holders** open dataset (Tax Code Chapter 151), published on the Texas Open Data Portal and refreshed daily. It lists every business holding an active Texas sales-tax permit.

**Does monitor mode conflict with Apify Schedules?** No — they complement each other. A [Schedule](https://docs.apify.com/platform/schedules) decides *when* the actor runs; **monitor mode** decides *what* it emits (only businesses not seen on previous runs, tracked per `monitorKey`). Use both together for a clean new-business feed.

**Does it include phone numbers or emails?** No — the state permit dataset is firmographic (name, address, industry, entity type, dates). It does not publish phone/email, so this actor never fabricates them. Pair it with website/contact enrichment for outreach.

**How do I target a specific industry?** Pick an **industry sector**, or enter exact **NAICS codes** (e.g. `722511` restaurants, `238220` plumbing/HVAC, `541110` law offices) or **prefixes** (e.g. `23` construction).

**Can I export to Google Sheets, CSV, or Excel?** Yes — one click in the dataset view, or automatically on every run via the [Google Drive integration](https://docs.apify.com/platform/integrations/drive).

**Is scraping this data legal?** This actor collects publicly available government open data only. You are responsible for using it in compliance with applicable laws and the source's terms.

**A field is null — why?** Some rows genuinely don't publish a value (e.g. a missing NAICS code or first-sales date). Fields are `null` only when the source doesn't provide them, not because the scraper skipped them.

### Need help?

Open an issue on the actor's **Issues** tab, or visit the [Apify help center](https://help.apify.com/). Feature requests are welcome — this actor is actively maintained.

# Actor input Schema

## `industrySectors` (type: `array`):

Filter by broad NAICS industry sector(s). Pick one or more friendly sector names — they map to the underlying 2-digit NAICS codes. Leave empty for all industries. For finer targeting use NAICS codes / prefixes below.

## `naicsCodes` (type: `array`):

Exact 6-digit NAICS industry codes to include, e.g. `722511` (full-service restaurants), `236115` (single-family home construction), `541110` (law offices). One per row.

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

Industry code prefixes for sub-sector targeting, e.g. `722` (food services & drinking places), `2382` (building equipment contractors), `5413` (architectural / engineering). Matches any NAICS starting with the prefix. One per row.

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

Filter to one or more Texas cities (business / outlet location), e.g. `Houston`, `Austin`, `Dallas`. Case-insensitive. Leave empty for the whole state.

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

Filter by Texas county name(s), e.g. `Harris`, `Travis`, `Bexar` (or the Comptroller numeric county code). One per row.

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

Filter by ZIP code or ZIP prefix, e.g. `7704` matches all `7704x` ZIPs. One per row.

## `organizationTypes` (type: `array`):

Filter by legal entity type. `llc`, `corporation`, `nonprofit`, `soleProprietor`, `partnership`, `professional`, `association`, `government`, `financial`, `trust`.

## `businessNameQuery` (type: `string`):

Only return businesses whose legal name or DBA / outlet name contains this text (case-insensitive), e.g. `coffee`, `dental`, `roofing`.

## `newBusinessWithinDays` (type: `integer`):

Only return businesses whose sales-tax permit was issued in the last N days — the high-intent new-business signal. E.g. `30` for businesses permitted this month. Leave empty to ignore.

## `permitIssuedAfter` (type: `string`):

Only businesses with a permit issue date on/after this date (YYYY-MM-DD).

## `permitIssuedBefore` (type: `string`):

Only businesses with a permit issue date on/before this date (YYYY-MM-DD).

## `firstSalesAfter` (type: `string`):

Only businesses whose first taxable-sales date is on/after this date (YYYY-MM-DD).

## `firstSalesBefore` (type: `string`):

Only businesses whose first taxable-sales date is on/before this date (YYYY-MM-DD).

## `insideCityLimitsOnly` (type: `boolean`):

Only return outlets located inside an incorporated city's limits.

## `outOfStateOwnersOnly` (type: `boolean`):

Only return businesses whose legal taxpayer (owner) mailing state is outside Texas — out-of-state companies operating in TX.

## `taxpayerNumbers` (type: `array`):

Look up specific businesses by their 11-digit Texas taxpayer number. One per row.

## `dedupeByTaxpayer` (type: `boolean`):

By default each record is one outlet / location (a business with several stores returns several rows). Enable this to keep only one record per taxpayer (company).

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

Result ordering. `newest` = most recently permitted businesses first (best for fresh new-business leads).

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

Maximum number of business records to return.

## `monitorMode` (type: `boolean`):

Remember businesses seen in previous runs (per monitor key) and emit ONLY newly-permitted businesses on each run. Ideal on a schedule to receive a fresh new-business feed. Works alongside Apify Schedules.

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

Names the monitor state so different saved tasks keep separate memory. Use one key per saved search.

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

Optional Socrata application token to raise the public API rate limit. Not required for typical runs.

## `proxyConfiguration` (type: `object`):

Optional proxy. The Texas open-data API needs no proxy; leave disabled for the cheapest runs.

## Actor input object example

```json
{
  "naicsCodes": [],
  "naicsPrefixes": [],
  "cities": [],
  "counties": [],
  "zipCodes": [],
  "insideCityLimitsOnly": false,
  "outOfStateOwnersOnly": false,
  "taxpayerNumbers": [],
  "dedupeByTaxpayer": false,
  "sortBy": "newest",
  "maxResults": 1000,
  "monitorMode": false,
  "monitorKey": "default",
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

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

All scraped Texas business / outlet lead records as JSON items in the default dataset.

# 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 = {
    "naicsCodes": [],
    "naicsPrefixes": [],
    "cities": [],
    "counties": [],
    "zipCodes": [],
    "taxpayerNumbers": []
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapesage/texas-business-leads-scraper").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 = {
    "naicsCodes": [],
    "naicsPrefixes": [],
    "cities": [],
    "counties": [],
    "zipCodes": [],
    "taxpayerNumbers": [],
}

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

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

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

```

## CLI example

```bash
echo '{
  "naicsCodes": [],
  "naicsPrefixes": [],
  "cities": [],
  "counties": [],
  "zipCodes": [],
  "taxpayerNumbers": []
}' |
apify call scrapesage/texas-business-leads-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=scrapesage/texas-business-leads-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/sX242n24tgkJLYX04/builds/F5RR96ZuaNkcWmf5H/openapi.json
