Texas Business Entity Search Scraper avatar

Texas Business Entity Search Scraper

Pricing

Pay per event

Go to Apify Store
Texas Business Entity Search Scraper

Texas Business Entity Search Scraper

Search Texas Comptroller taxable entities and export official status, right-to-transact, addresses, registered agent, officers, and source dates for KYB workflows.

Pricing

Pay per event

Rating

0.0

(0)

Developer

Stas Persiianenko

Stas Persiianenko

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Categories

Share

Search the official Texas Comptroller franchise-tax registry and turn public taxable-entity records into structured data for bulk KYB enrichment and entity status monitoring.

The Actor accepts company names, Texas taxpayer numbers, federal EINs, and Texas Secretary of State file numbers. It returns detailed official records rather than only search-result names: right-to-transact status, SOS standing, formation state, addresses, registered agent, governing persons, report year, and source timestamps.

What does this Texas business entity search extract?

For each matched entity, the Actor saves one normalized dataset row containing:

  • legal entity and DBA names;
  • Texas taxpayer number and public FEIN when available;
  • right to transact business in Texas;
  • Texas SOS registration status, effective date, and file number;
  • state or jurisdiction of formation;
  • mailing and registered-office addresses;
  • registered agent;
  • officers or governing persons and their reported titles;
  • public-information-report year;
  • the source update timestamp and official record URL.

It uses the public structured-data route behind the Comptroller search page. No user login or browser automation is required.

Who is this Actor for?

  • KYB and onboarding teams enriching a known company or taxpayer ID.
  • Compliance analysts checking whether a Texas entity can transact business.
  • Procurement teams validating vendors before onboarding or renewal.
  • Risk operations scheduling recurring checks and comparing status changes.
  • Data teams loading normalized Texas entity records into a warehouse.
  • Developers who need JSON rather than manual browser lookups.

The Actor reports source facts. It does not make a legal, credit, sanctions, or onboarding decision.

Why use it instead of the manual Comptroller form?

The public form is useful for one lookup. Repeat workflows need consistent inputs, deduplication, detailed records, exports, and scheduling.

This Actor adds:

  1. multiple names and identifiers in one run;
  2. a global item limit across all searches;
  3. duplicate removal by taxpayer number;
  4. detailed-record enrichment after name search;
  5. typed JSON, CSV, Excel, XML, and RSS dataset exports;
  6. Apify schedules, webhooks, API, and MCP integrations;
  7. explicit source and scrape timestamps for comparison pipelines.

Quick start

  1. Open the Actor input page.
  2. Enter at least one entity name, taxpayer number, or SOS file number.
  3. Keep maxItems small for the first run.
  4. Leave officer information enabled if your KYB workflow needs governing persons.
  5. Click Start.
  6. Review Entity records in the default dataset.
  7. Export the data or connect a webhook, schedule, or API client.

A working starter input is:

{
"names": ["Automation Labs"],
"maxItems": 10,
"includeOfficers": true
}

Input parameters

FieldTypeDefaultDescription
namesstring[]Entity names or fragments, 2–50 characters each.
taxpayerIdsstring[]Exact 11-digit Texas taxpayer numbers or 9-digit EINs.
fileNumbersstring[]Exact 6–10 digit Texas SOS file numbers.
maxItemsinteger100Maximum unique detailed entity records saved across the run.
includeOfficersbooleantrueInclude public officer/governing-person rows.
maxConcurrencyinteger5Parallel detail requests, from 1 to 20.

Provide at least one value in names, taxpayerIds, or fileNumbers.

Name searches can match many entities. maxItems is applied before all candidate details are scheduled, so the Actor does not fetch an unbounded result set.

Search by entity name

Use name search when you do not know an official identifier:

{
"names": ["Automation Labs", "Apify"],
"maxItems": 10,
"includeOfficers": true,
"maxConcurrency": 5
}

The Comptroller endpoint performs the source-side name matching. Results are returned in source order and deduplicated by taxpayer number.

A broad fragment can hit the source's response-size limit. If that happens, use a longer name, a taxpayer number, or an SOS file number.

Search by taxpayer number or EIN

Exact taxpayer identifiers bypass name discovery and go directly to detailed records:

{
"taxpayerIds": ["32097823093"],
"maxItems": 1,
"includeOfficers": true
}

Texas taxpayer numbers contain 11 digits. Federal EIN inputs contain 9 digits. Keep leading zeroes by entering identifiers as strings.

Search by Texas SOS file number

Use a known Secretary of State file number to resolve the matching taxable entity:

{
"fileNumbers": ["0805805532"],
"maxItems": 5
}

A file-number search first discovers matching taxpayer records and then fetches the same detailed output used by other modes.

Output fields

FieldMeaning
taxpayerIdTexas Comptroller taxpayer number.
feiNumberPublic FEIN, when supplied by the source.
name, dbaNameLegal and assumed names.
rightToTransactTexasFranchise-tax account standing shown by the Comptroller.
sosRegistrationStatusTexas SOS registration status.
effectiveSosRegistrationDateSource-formatted effective registration date.
sosFileNumberTexas SOS file number.
stateOfFormationFormation state or jurisdiction.
mailingAddress*Entity mailing address components.
registeredAgentNameRegistered-agent name.
registeredOfficeAddress*Registered-office address components.
reportYearReport year associated with public officer information.
officersPublic governing-person rows and titles.
sourceLastUpdatedTimestamp supplied by the official detail API.
sourceUrlHuman-readable official Comptroller record.
scrapedAtUTC time when this Actor normalized the record.

Fields can be null when the official record does not provide them. An empty officers array can mean the source has no rows or includeOfficers was disabled.

Example output

{
"taxpayerId": "32097823093",
"feiNumber": null,
"name": "AUTOMATION LABS LLC",
"dbaName": null,
"mailingAddressCity": "HOUSTON",
"mailingAddressState": "TX",
"mailingAddressZip": "77064",
"rightToTransactTexas": "ACTIVE",
"stateOfFormation": "TX",
"sosFileNumber": "0805805532",
"sosRegistrationStatus": "ACTIVE",
"effectiveSosRegistrationDate": "12/03/2024",
"registeredAgentName": "REPUBLIC REGISTERED AGENT LLC",
"reportYear": "2026",
"officers": [
{
"name": "RICARDO CARRILLO",
"title": "MANAGING MEMBER",
"activeYear": "2026",
"addressCity": "HOUSTON",
"addressState": "TX",
"source": "CPA"
}
],
"sourceUrl": "https://comptroller.texas.gov/taxes/franchise/account-status/search/32097823093",
"scrapedAt": "2026-08-01T03:20:00.000Z"
}

This example reflects a public source record observed during development. Source values can change.

How much does it cost to search Texas business entities?

Pricing uses one Start event per valid run plus one Entity record event for each detailed row saved.

The active prices are:

  • Start: $0.005 per run
  • Entity record at BRONZE tier: $0.009864 per row

At those prices, a 1-record lookup is about $0.014864, 100 saved records are about $0.9914, and 1,000 saved records are about $9.869, excluding any tier-plan differences. The Actor does not enable paid residential proxy traffic.

Apify applies the active tier price shown on the Actor page. Check the live pricing table before large runs; final cost also follows the number of records actually saved.

Bulk KYB enrichment workflow

A typical enrichment pipeline is:

  1. collect legal names or official identifiers from your onboarding system;
  2. pass batches into this Actor;
  3. join results back by taxpayerId or sosFileNumber;
  4. flag missing, forfeited, or unexpected status values for human review;
  5. retain sourceLastUpdated, sourceUrl, and scrapedAt as evidence;
  6. route only reviewed exceptions into a decision process.

Exact identifiers are preferable to name fragments when false-positive matching matters.

Entity status monitoring workflow

The Actor returns snapshots; it does not maintain a hidden historical database.

To monitor changes:

  1. create an Apify Task with stable taxpayer IDs;
  2. schedule it daily, weekly, or monthly;
  3. export each run's dataset to your warehouse or webhook;
  4. compare rightToTransactTexas, sosRegistrationStatus, agent, address, and officer fields;
  5. alert only on changes relevant to your policy.

This keeps history under your control and makes each comparison reproducible.

API usage with cURL

curl -X POST \
"https://api.apify.com/v2/acts/automation-lab~texas-comptroller-entity-scraper/runs?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"taxpayerIds":["32097823093"],"maxItems":1,"includeOfficers":true}'

To wait for completion and receive dataset items directly:

curl -X POST \
"https://api.apify.com/v2/acts/automation-lab~texas-comptroller-entity-scraper/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"names":["Automation Labs"],"maxItems":10}'

JavaScript API example

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('automation-lab/texas-comptroller-entity-scraper').call({
taxpayerIds: ['32097823093'],
maxItems: 1,
includeOfficers: true,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Python API example

from apify_client import ApifyClient
import os
client = ApifyClient(os.environ['APIFY_TOKEN'])
run = client.actor('automation-lab/texas-comptroller-entity-scraper').call(run_input={
'names': ['Automation Labs'],
'maxItems': 10,
'includeOfficers': True,
})
items = client.dataset(run['defaultDatasetId']).list_items().items
print(items)

Use through Apify MCP

Add the Actor to Claude Code:

claude mcp add --transport http apify \
"https://mcp.apify.com?tools=automation-lab/texas-comptroller-entity-scraper"

Use the same JSON block in Claude Desktop, Cursor, or VS Code:

{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com?tools=automation-lab/texas-comptroller-entity-scraper"
}
}
}

Example prompts showing MCP usage:

  • “Look up taxpayer number 32097823093 and summarize its Texas standing.”
  • “Search these five company names and return taxpayer IDs and right-to-transact status.”
  • “Compare this week's entity dataset with last week's and list status changes.”

Integrations and exports

The default dataset works with:

  • JSON, JSONL, CSV, Excel, XML, and RSS exports;
  • Google Sheets and cloud-storage integrations;
  • webhooks triggered after successful runs;
  • Make, Zapier, n8n, and custom ETL jobs;
  • Apify schedules for repeat snapshots;
  • dataset API pagination for larger outputs.

Nested officer rows are preserved in JSON. For flat CSV workflows, transform the officers array downstream or disable it.

Reliability and source limits

  • The Actor uses direct official JSON and does not require a browser.
  • Requests have a 20-second timeout and up to three bounded attempts for transient failures.
  • HTTP 429 and temporary server errors are retried with backoff.
  • Deterministic validation and non-JSON responses fail clearly.
  • Results are deduplicated by taxpayer ID.
  • Broad source queries may be rejected if the Comptroller result set is too large.
  • The default concurrency is conservative; raising it can increase source throttling.
  • Source fields, availability, and update timing are controlled by the Texas Comptroller.

A successful no-result search produces zero rows and an explanatory run summary. An upstream error does not silently become an empty successful result.

Responsible use and legality

The Actor accesses public Texas Comptroller data without authentication.

You are responsible for:

  • following applicable laws, source terms, and internal data policies;
  • using public personal/address information only for a legitimate purpose;
  • applying retention and access controls;
  • verifying important decisions against the linked official record;
  • providing required notices or review rights in your jurisdiction.

Do not use this dataset as the sole basis for adverse action. Registry status is not a complete view of legal existence, ownership, creditworthiness, sanctions, licensing, or fraud risk.

Troubleshooting

“Provide at least one value”

Add a non-empty names, taxpayerIds, or fileNumbers array.

Invalid taxpayer or file number

Identifiers must be strings containing only the documented number of digits. Quoting them preserves leading zeroes.

My name search is too broad

Use a longer legal name, reduce ambiguity, or switch to a known taxpayer/SOS identifier. The official source can reject oversized searches.

I received fewer rows than expected

Check maxItems, inspect spelling, and remember that the source controls matching and availability. Duplicate taxpayer IDs are intentionally returned once.

Officer data is empty

Confirm includeOfficers is true. The official record may still provide no current public officer rows.

A scheduled run failed after working before

Inspect the run log for a source status or response-shape error. Retry later for a temporary outage; do not treat a failed run as proof that an entity disappeared.

For broader company-registry enrichment beyond this Texas franchise-tax source, see Corporate AI Company Registry Scraper.

Use this Actor when official Texas Comptroller account standing and taxpayer-level detail are the primary requirement.

FAQ

Is this the Texas Secretary of State SOSDirect database?

No. The primary source is the Texas Comptroller franchise-tax account-status registry. It includes selected SOS registration fields, but it is not a substitute for every SOSDirect filing or document.

Does it return all entities in Texas?

No completeness claim is made. It returns records matched and exposed by the public Comptroller search service for the supplied inputs.

Does it monitor changes automatically?

The Actor creates a current snapshot. Save runs on an Apify schedule and compare datasets to implement monitoring.

Can I search many identifiers in one run?

Yes. Use arrays and set maxItems to the maximum number of detailed records you want saved.

Does it need a proxy or Texas IP address?

No. The current official structured route works directly. This Actor does not expose an automatic residential-proxy fallback.

Are entity records charged when a detail request fails?

No. The per-item event is charged only for a normalized record that is saved to the dataset.

How fresh is the data?

Freshness is controlled by the source. Use sourceLastUpdated, reportYear, and scrapedAt together, and verify material decisions on sourceUrl.