Texas Business Entity Search Scraper
Pricing
Pay per event
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
Maintained by CommunityActor 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:
- multiple names and identifiers in one run;
- a global item limit across all searches;
- duplicate removal by taxpayer number;
- detailed-record enrichment after name search;
- typed JSON, CSV, Excel, XML, and RSS dataset exports;
- Apify schedules, webhooks, API, and MCP integrations;
- explicit source and scrape timestamps for comparison pipelines.
Quick start
- Open the Actor input page.
- Enter at least one entity name, taxpayer number, or SOS file number.
- Keep
maxItemssmall for the first run. - Leave officer information enabled if your KYB workflow needs governing persons.
- Click Start.
- Review Entity records in the default dataset.
- 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
| Field | Type | Default | Description |
|---|---|---|---|
names | string[] | — | Entity names or fragments, 2–50 characters each. |
taxpayerIds | string[] | — | Exact 11-digit Texas taxpayer numbers or 9-digit EINs. |
fileNumbers | string[] | — | Exact 6–10 digit Texas SOS file numbers. |
maxItems | integer | 100 | Maximum unique detailed entity records saved across the run. |
includeOfficers | boolean | true | Include public officer/governing-person rows. |
maxConcurrency | integer | 5 | Parallel 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
| Field | Meaning |
|---|---|
taxpayerId | Texas Comptroller taxpayer number. |
feiNumber | Public FEIN, when supplied by the source. |
name, dbaName | Legal and assumed names. |
rightToTransactTexas | Franchise-tax account standing shown by the Comptroller. |
sosRegistrationStatus | Texas SOS registration status. |
effectiveSosRegistrationDate | Source-formatted effective registration date. |
sosFileNumber | Texas SOS file number. |
stateOfFormation | Formation state or jurisdiction. |
mailingAddress* | Entity mailing address components. |
registeredAgentName | Registered-agent name. |
registeredOfficeAddress* | Registered-office address components. |
reportYear | Report year associated with public officer information. |
officers | Public governing-person rows and titles. |
sourceLastUpdated | Timestamp supplied by the official detail API. |
sourceUrl | Human-readable official Comptroller record. |
scrapedAt | UTC 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:
- collect legal names or official identifiers from your onboarding system;
- pass batches into this Actor;
- join results back by
taxpayerIdorsosFileNumber; - flag missing, forfeited, or unexpected status values for human review;
- retain
sourceLastUpdated,sourceUrl, andscrapedAtas evidence; - 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:
- create an Apify Task with stable taxpayer IDs;
- schedule it daily, weekly, or monthly;
- export each run's dataset to your warehouse or webhook;
- compare
rightToTransactTexas,sosRegistrationStatus, agent, address, and officer fields; - 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 ApifyClientimport osclient = 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().itemsprint(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.
Related Automation Lab Actor
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.