# Texas Franchise Tax Account Status Scraper (`crawlerbros/texas-franchise-tax-scraper`) Actor

Search Texas Comptroller's Franchise Tax Account Status registry by entity name, taxpayer number, or SOS file number. Get registration status, registered agent, addresses, and officers. No login required.

- **URL**: https://apify.com/crawlerbros/texas-franchise-tax-scraper.md
- **Developed by:** [Crawler Bros](https://apify.com/crawlerbros) (community)
- **Categories:** Agents, Automation, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.00 / 1,000 results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js/docs.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python/docs.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/integrations/mcp.md).

If your project is in a different language, use 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 Franchise Tax Account Status Scraper

Search the **Texas Comptroller of Public Accounts'** Franchise Tax Account Status registry — the official record of every business entity's right to transact business in Texas. Search by entity name, Comptroller taxpayer number, or Texas Secretary of State file number. Get registration status, registered agent, mailing and registered-office addresses, and officers/directors. HTTP-only via the Comptroller's own public data-search API — no login, no CAPTCHA, no proxy required.

### What this actor does

- **Three modes:** `byName`, `byTaxpayerNumber`, `bySosFileNumber`
- **Full record enrichment** — name-search results are automatically enriched with the full account-status detail (registered agent, addresses, officers) unless disabled
- **Officers & directors** — every reported officer/director with their title, active year, and address
- **Empty fields are omitted** — a field only appears on a record when the registry actually has a value for it

### Output per business

- `entityName`, `dbaName`
- `taxpayerId` — 11-digit Comptroller taxpayer number
- `feiNumber` — federal EIN, when on file
- `mailingAddress`, `mailingAddressStreet`, `mailingAddressCity`, `mailingAddressState`, `mailingAddressZip`
- `rightToTransactTX` — franchise tax right-to-transact status, e.g. `ACTIVE`, `FRANCHISE TAX ENDED`, `FRANCHISE TAX INVOLUNTARILY ENDED`, `NOT ESTABLISHED`
- `rightToTransactActionUrl`, `rightToTransactActionText` — when the entity has lapsed, the Comptroller's own "next step" link (e.g. request tax clearance to reinstate) and its label
- `stateOfFormation`
- `sosRegistrationStatus`, `effectiveSosRegistrationDate`
- `sosFileNumber` — Texas Secretary of State filing number
- `registeredAgentName`
- `registeredOfficeAddress`, `registeredOfficeAddressStreet`, `registeredOfficeAddressCity`, `registeredOfficeAddressState`, `registeredOfficeAddressZip`
- `officers[]` — `{name, title, activeYear, address, source}`, `officerCount` (`source` is `CPA` when reported on the entity's Public Information Report, or `SOS` when sourced from the Secretary of State filing)
- `reportYear`, `lastUpdated`
- `sourceUrl` — link to the official Comptroller account-status page
- `recordType: "business"`, `scrapedAt`

### Input

| Field | Type | Default | Description |
|---|---|---|---|
| `mode` | string | `byName` | `byName` / `byTaxpayerNumber` / `bySosFileNumber` |
| `entityName` | string | `walmart` | Business name (2-50 chars, mode=byName) |
| `taxpayerNumbers` | array | – | 11-digit Comptroller taxpayer numbers (mode=byTaxpayerNumber) |
| `sosFileNumbers` | array | – | Texas SOS file numbers (mode=bySosFileNumber) |
| `fetchDetails` | bool | `true` | Enrich name-search hits with the full detail record |
| `maxOfficers` | int | `25` | Cap on officers/directors per record (1-200) |
| `maxItems` | int | `20` | Hard cap on emitted records (1-500) |

#### Example: search by name

```json
{
  "mode": "byName",
  "entityName": "apple inc",
  "maxItems": 10
}
````

#### Example: lookup by taxpayer number

```json
{
  "mode": "byTaxpayerNumber",
  "taxpayerNumbers": ["19424041101"]
}
```

#### Example: lookup by Texas SOS file number

```json
{
  "mode": "bySosFileNumber",
  "sosFileNumbers": ["0004789806"]
}
```

### Use cases

- **Business verification** — confirm an entity is in good standing before signing a contract
- **Registered-agent research** — find who a company's Texas registered agent is
- **Compliance & KYC** — check franchise tax right-to-transact status
- **Corporate intelligence** — pull officers/directors on file for a Texas entity
- **Due diligence** — verify a company's Texas SOS filing number and formation state

### Data Source & Usage Notes

Data comes directly from the Texas Comptroller of Public Accounts' public "Franchise Tax Account Status Search" (comptroller.texas.gov/taxes/franchise/account-status/search), which itself publishes a documented public data-search API. No account, API key, or login is required. This is the same registry used to verify a business's legal standing to operate in Texas, functionally equivalent to a state Secretary of State business-entity search.

### FAQ

**Is this the same as the Texas Secretary of State's SOSDirect system?** No — SOSDirect requires a paid subscription. This actor uses the Comptroller's free, public Franchise Tax Account Status registry, which cross-references the same SOS registration status, file number, and registered-agent data without any login.

**What does "Right to Transact Business in Texas" mean?** It reflects the entity's franchise tax standing. `ACTIVE` means the entity may legally transact business in Texas; values like `FRANCHISE TAX ENDED` or `FRANCHISE TAX INVOLUNTARILY ENDED` mean it has lost that right (usually for failing to file/pay franchise tax). When lapsed, the record also includes `rightToTransactActionUrl`/`rightToTransactActionText` — the Comptroller's own link for reinstating the entity.

**Why do some records have no officers?** Officer/director data is self-reported on the entity's most recent Public Information Report or Ownership Information Report. Sole proprietors, very new entities, or entities that haven't filed a report yet may have none on file.

**Can I search by federal EIN?** The name-search endpoint will match a federal EIN if it appears in the registry's indexed name field, but direct detail lookups require the 11-digit Texas Comptroller taxpayer number (not the 9-digit FEIN).

**How fresh is the data?** SOS registration status is described by the Comptroller as updated each business day; other fields reflect the entity's most recently filed franchise tax report.

**Is there a limit on name searches?** The registry itself caps very broad name searches (e.g. a single common word) and asks you to refine the query — the actor surfaces that message via the run's status rather than failing silently.

# Actor input Schema

## `mode` (type: `string`):

What to search by.

## `entityName` (type: `string`):

Business name to search for (2-50 characters). Partial/starts-with matches are returned by the registry.

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

11-digit Texas Comptroller taxpayer numbers.

## `sosFileNumbers` (type: `array`):

Texas Secretary of State filing numbers.

## `fetchDetails` (type: `boolean`):

When mode=byName, fetch the full account-status record (registered agent, addresses, officers) for each match instead of just the name/taxpayer ID summary. Adds one extra request per match.

## `maxOfficers` (type: `integer`):

Cap on how many officers/directors to include per business record.

## `maxItems` (type: `integer`):

Hard cap on emitted records.

## Actor input object example

```json
{
  "mode": "byName",
  "entityName": "walmart",
  "taxpayerNumbers": [],
  "sosFileNumbers": [],
  "fetchDetails": true,
  "maxOfficers": 25,
  "maxItems": 20
}
```

# Actor output Schema

## `businesses` (type: `string`):

Dataset containing all scraped Texas Franchise Tax account records.

# 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 = {
    "mode": "byName",
    "entityName": "walmart",
    "taxpayerNumbers": [],
    "sosFileNumbers": [],
    "fetchDetails": true,
    "maxOfficers": 25,
    "maxItems": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("crawlerbros/texas-franchise-tax-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 = {
    "mode": "byName",
    "entityName": "walmart",
    "taxpayerNumbers": [],
    "sosFileNumbers": [],
    "fetchDetails": True,
    "maxOfficers": 25,
    "maxItems": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("crawlerbros/texas-franchise-tax-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 '{
  "mode": "byName",
  "entityName": "walmart",
  "taxpayerNumbers": [],
  "sosFileNumbers": [],
  "fetchDetails": true,
  "maxOfficers": 25,
  "maxItems": 20
}' |
apify call crawlerbros/texas-franchise-tax-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Texas Franchise Tax Account Status Scraper",
        "description": "Search Texas Comptroller's Franchise Tax Account Status registry by entity name, taxpayer number, or SOS file number. Get registration status, registered agent, addresses, and officers. No login required.",
        "version": "1.0",
        "x-build-id": "28ob2OcLxAi1w0vBY"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/crawlerbros~texas-franchise-tax-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-crawlerbros-texas-franchise-tax-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/crawlerbros~texas-franchise-tax-scraper/runs": {
            "post": {
                "operationId": "runs-sync-crawlerbros-texas-franchise-tax-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/crawlerbros~texas-franchise-tax-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-crawlerbros-texas-franchise-tax-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "mode"
                ],
                "properties": {
                    "mode": {
                        "title": "Mode",
                        "enum": [
                            "byName",
                            "byTaxpayerNumber",
                            "bySosFileNumber"
                        ],
                        "type": "string",
                        "description": "What to search by.",
                        "default": "byName"
                    },
                    "entityName": {
                        "title": "Entity name (mode=byName)",
                        "type": "string",
                        "description": "Business name to search for (2-50 characters). Partial/starts-with matches are returned by the registry.",
                        "default": "walmart"
                    },
                    "taxpayerNumbers": {
                        "title": "Taxpayer numbers (mode=byTaxpayerNumber)",
                        "type": "array",
                        "description": "11-digit Texas Comptroller taxpayer numbers.",
                        "default": [],
                        "items": {
                            "type": "string"
                        }
                    },
                    "sosFileNumbers": {
                        "title": "SOS file numbers (mode=bySosFileNumber)",
                        "type": "array",
                        "description": "Texas Secretary of State filing numbers.",
                        "default": [],
                        "items": {
                            "type": "string"
                        }
                    },
                    "fetchDetails": {
                        "title": "Fetch full details for name-search results",
                        "type": "boolean",
                        "description": "When mode=byName, fetch the full account-status record (registered agent, addresses, officers) for each match instead of just the name/taxpayer ID summary. Adds one extra request per match.",
                        "default": true
                    },
                    "maxOfficers": {
                        "title": "Max officers/directors per record",
                        "minimum": 1,
                        "maximum": 200,
                        "type": "integer",
                        "description": "Cap on how many officers/directors to include per business record.",
                        "default": 25
                    },
                    "maxItems": {
                        "title": "Max items",
                        "minimum": 1,
                        "maximum": 500,
                        "type": "integer",
                        "description": "Hard cap on emitted records.",
                        "default": 20
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
