# LLC Owner Finder & Skip Trace: Texas & Florida Phone + Email (`michael_b/llc-owner-finder`) Actor

Find the person who owns a Texas or Florida LLC: name and role from the state filing, plus phone numbers, emails and address, each with a match confidence. For real estate investors skip tracing LLC properties. Misses are free: you pay when an owner is found, and again when their phone is found.

- **URL**: https://apify.com/michael_b/llc-owner-finder.md
- **Developed by:** [Michal Búci](https://apify.com/michael_b) (community)
- **Categories:** Real estate, Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $20.00 / 1,000 llc owner founds

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

## LLC Owner Finder: who owns this Texas or Florida LLC?

Your property list says the owner is **"SUNSET HOLDINGS LLC"**. You want the **person** behind it and a **phone number**. This finds that person in the Texas or Florida state filing and skip traces them for phones and emails.

Paste the LLC names, click Start, and for each LLC you get:

- **the owner's name and role** (Managing Member, Manager, President...) from the official state filing
- **their phone numbers**, primary first, most with mobile or landline and the month last seen
- **their email addresses** and current address
- **how sure the match is**, in plain words

The owner is the manager or member named on the LLC's last state report. When the LLC is run by another company, we follow that company's filing to its people, and the role says so ("Manager of HOLDSTAFF, LLC").

Works for LLCs, corporations and partnerships registered in **Texas** and **Florida**. Misses are free: you pay when an owner is found, and again when their phone is found.

***

### How to find the owner of an LLC

1. Paste the owner column from your list into **LLC names**, one per line (up to 5,000). Spell them the way your list has them; `SUNSET HLDGS LLC` is fine. Use the owner's name, not the property address. People and trusts (`SMITH JOHN A TR`) work too.
2. Pick the **State**, or leave it on *Texas and Florida*.
3. Click **Start**. When it finishes, download the results as **Excel** or **CSV** from the Output tab.

That's it. No account on any other site and no API keys needed.

***

### Examples: look up one LLC or skip trace a whole tax roll

**Find the owner of one LLC**

```json
{ "owners": ["SUNSET HOLDINGS, LLC"], "state": "TX" }
```

**Skip trace a list from your tax roll or driving-for-dollars list**

Paste the whole column (up to 5,000 lines):

```json
{
  "owners": ["HAUSSNER HOLDINGS LLC", "LION FOLK LIFE VILLAGE LLC", "LOCK AND KEY REALTY LLC"],
  "state": "auto"
}
```

**Mix Texas and Florida in one list**

Add `, TX` or `, FL` at the very end of the line. Commas inside the name are fine:

```json
{ "owners": ["SUNSET HOLDINGS, LLC, TX", "SINGH PROPERTIES LLC, FL"] }
```

**Names only, no phone numbers (cheaper and faster)**

```json
{ "owners": ["SUNSET HOLDINGS, LLC"], "findContacts": false }
```

**Better phone matches: include the mailing address from your list** *(Advanced)*

The address helps us pick the right person when a name is common. `id` comes back on the row so you can match results to your spreadsheet.

```json
{
  "ownerRecords": [
    { "name": "HAUSSNER HOLDINGS LLC", "state": "TX",
      "mailingAddress": "633 E FERNHURST DR, KATY, TX 77450", "id": "row-17" }
  ]
}
```

***

### What you get: owner name, phone number and email

One row per LLC, in the same order as your list. A typical row (made-up example):

| Owner (input) | Owner name | Role | Primary phone | Last seen | Emails | Confidence | Why |
|---|---|---|---|---|---|---|---|
| ACME HOLDINGS LLC | Maria Lopez | Managing Member | (713) 555-0142 (mobile) | Jul 2026 | maria@example.com | high | the address on the filing (1200 Main St, Houston, TX 77002) is in this person's address history |

Each row also has every name on the filing, the LLC's status (active or inactive), registered agent, addresses, all phone numbers and a link to the state filing, so you can check it yourself.

Downloading to Excel? `ownerPhones` and `people` are lists and spread over many columns. Use `ownerPrimaryPhone` for one phone per row.

#### Why some LLCs show no owner

| Status | In plain words | Charged? |
|---|---|---|
| `owner_found` | We found the person behind the LLC. | yes (for people and trusts on your list, only the phone charge) |
| `no_people_listed` | The LLC exists, but its filing names no person: only other companies (common for big investment funds) or nobody yet (brand-new LLCs). If the registered agent is a person, we return their phone as a free lead. | no |
| `entity_not_found` | No LLC with that name in Texas or Florida. A Delaware LLC registered to do business in Texas or Florida is covered; one registered only in Delaware isn't. Also check for typos on the list. | no |
| `not_covered` | The LLC is in a state we don't cover yet. | no |
| `anonymous_state` | Delaware, New Mexico and Wyoming filings never name the owner, so there is nothing public to find. | no |
| `not_applicable` | A city, county or school district. No private owner. | no |
| `source_error` | A state website didn't answer. Run that LLC again later. | no |
| `invalid_input` | We couldn't read the line (no letters or digits) or the input. | no |

#### How sure is the phone match?

- **high**: the person has lived at an address from the LLC's filing or from your list, or their listed relatives include another person named on the same filing (co-owners are often spouses or family). This is the strongest proof.
- **medium**: no shared address, but they are the only person with that name who has lived in the city of an address on the filing.
- By default only **high** and **medium** matches are returned. If we're not sure, the phone fields stay empty and the reason says why.

***

### How many LLC owners it finds (1,000 real LLCs tested)

Tested on **1,000 real LLCs** taken at random from two county tax rolls (October 2026):

| | Owner's name found | Owner's phone found | Owner's email found |
|---|---|---|---|
| Harris County, Texas (500 LLCs) | 70% | 63% | 37% |
| Miami-Dade County, Florida (500 LLCs) | 86% | 61% | 22% |

When the owner's name is found, we find a phone for 8 out of 10 of them. Most phones come with the month they were last seen, and those were all seen in 2026. Most misses are big investment companies whose filings list only other companies, and LLCs registered only in Delaware. Small investor LLCs, the ones you usually want, come back with a person most of the time.

We checked 38 of these rows by hand. Every phone, email and address on them matched what the state filing and the people-search page show.

**Speed:** about 10 LLCs a minute with phones and emails on (1,000 LLCs took 97 minutes), about 50 a minute for names only.

***

### Good to know about Texas and Florida filings

- **Texas LLCs list their managers after their first yearly report.** An LLC formed in the last few months may come back as `no_people_listed` with only the registered agent.
- **Big funds and home builders** (Invitation Homes, Progress Residential, Lennar...) list companies or corporate officers, not a local owner.
- **The filing shows who ran the LLC at its last report.** The `entityLastReportYear` column tells you the year, so you can see if it's old.
- **Phone numbers are for you to check.** Scrub them against Do Not Call lists before calling or texting.

### Pricing: pay per LLC owner found

- **$0.02** when an LLC's owner is found on the state filing.
- **$0.10** more when we find that owner's phone number (emails included when listed).
- **Nothing** for LLCs we can't find, that list no person, or that are outside Texas and Florida. At most one phone charge per LLC, however many people we look up.

### Where the data comes from: Texas Comptroller and Florida Sunbiz

- **Texas**: Texas Comptroller franchise-tax records, which carry the managers, members and officers from the LLC's latest Public Information Report (the same people as the Texas Secretary of State filing), with their addresses.
- **Florida**: Florida Division of Corporations (Sunbiz): managers, members, authorized persons and officers from the latest annual report.
- **Phone numbers and emails**: public people-search records, matched to the person on the filing by address and city. TruePeopleSearch is checked first (phones with the month they were last seen, emails); when it can't be reached or has no good match, ZabaSearch fills in the phones. `contactSource` on each row says which one answered.
- When an LLC is managed by another company, that company is looked up too (up to 2 levels). Registered-agent services (CT Corporation, CSC, Northwest...) and law firms are never returned as the owner.

***

### Details

<details>
<summary>All input fields</summary>

| Field | What it does | Default |
|---|---|---|
| `owners` | LLC names, one per line. Add `, TX` or `, FL` to set the state for one line. | |
| `state` | `auto` (check Texas and Florida), `TX` or `FL`. | `auto` |
| `findContacts` | Look up phone numbers and emails. | `true` |
| `ownerRecords` | LLCs as objects with `name`, `state`, `mailingAddress`, `propertyAddress`, `id`. | |
| `minContactConfidence` | `medium` (recommended), `high`, or `low` (may be the wrong person). | `medium` |
| `maxPeoplePerOwner` | How many people on the filing get a phone lookup, most senior first (1-5). | `2` |
| `followParentCompanies` | Follow a manager that is itself a company. | `true` |
| `proxyConfiguration` | Leave as is. | Apify residential |

</details>

<details>
<summary>All output fields</summary>

`ownerInput`, `status`, `ownerName`, `ownerRole`, `ownerPrimaryPhone`, `ownerPrimaryPhoneType`, `ownerPrimaryPhoneLastSeen`, `ownerPhones`, `ownerEmails`, `contactConfidence`, `contactMatchReason`, `ownerCurrentAddress`, `ownerAge`, `message`, `matchNote`, `entityName`, `entityStatus`, `registryState`, `entityLastReportYear`, `filingUrl`, `registeredAgent`, `registeredAgentIsService`, `entityFormedIn`, `entityType`, `entityFileNumber`, `entityFiledDate`, `entityPrincipalAddress`, `entityMailingAddress`, `people` (everyone on the filing with role, address and, when looked up, phones), `ownerType`, `contactStatus`, `contactSource`, `contactSourceUrl`, `inputId`, `inputState`, `inputMailingAddress`, `inputPropertyAddress`, `checkedAt`.

Every row has the same fields. Lists are `[]` when empty; other missing values are `null`.

</details>

<details>
<summary>LLC owner lookup API for Make, Zapier and AI agents</summary>

Call the actor with the same JSON as in the examples and read the dataset. For AI agents (MCP), the `status` and `message` fields always say what happened, so a row is never silently empty.

```json
{ "owners": ["SUNSET HOLDINGS, LLC"], "state": "TX", "findContacts": true }
```

</details>

<details>
<summary>Allowed use</summary>

Use this to contact business owners about property and business matters. **Do not** use it to decide on anyone's credit, insurance, employment or housing (tenant screening). That is regulated by the Fair Credit Reporting Act, and this tool is not a consumer reporting agency. Follow Do Not Call and TCPA rules when you call or text.

</details>

# Actor input Schema

## `owners` (type: `array`):

Paste the owner column from your list, one per line (up to 5,000), spelled the way your list has them (e.g. SUNSET HOLDINGS LLC). Use the owner's name, not the property address. Corporations, partnerships, people and trusts (SMITH JOHN A TR) work too.

## `state` (type: `string`):

Where the LLCs are registered. Not sure? Leave it on Texas and Florida and both are checked. To mix states, add , TX or , FL at the very end of a line: SUNSET HOLDINGS, LLC, TX (commas inside the name are fine; a trailing CO or PA stays part of the company name).

## `findContacts` (type: `boolean`):

On: you get the owner's phone numbers, email addresses and current address. Off: you get only the names from the state filing (cheaper and faster).

## `ownerRecords` (type: `array`):

Only if you have addresses from your list: they make phone matches more certain. One object per LLC: name (required), state (TX or FL), mailingAddress and propertyAddress (one line each, 'street, city, ST zip'; both count as addresses from your list), id (any text, returned as inputId so you can match rows back). If you fill both boxes, both lists run.

## `minContactConfidence` (type: `string`):

High: the person lived at an address from the filing or your list, or a relative of theirs is also on the filing. Medium: the only person with that name who lived in the filing's city. Low: same name in the same state, often the wrong person. Phones below this level are not returned and not charged.

## `maxPeoplePerOwner` (type: `integer`):

Many LLCs list 2 or more managers. This many get a phone lookup, most senior first (1 to 5); the best one we reach becomes the owner on the row. More people make the run slower but never cost more: at most one phone charge per LLC.

## `followParentCompanies` (type: `boolean`):

When an LLC is managed by another company, look that company up too (2 levels) to reach a person.

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

Leave as is. The people-search sites only answer US home internet connections and limit lookups per connection, so the actor spreads lookups over Apify's US residential IPs.

## Actor input object example

```json
{
  "owners": [
    "SUNSET HOLDINGS, LLC",
    "HAUSSNER HOLDINGS LLC",
    "LION FOLK LIFE VILLAGE LLC"
  ],
  "state": "auto",
  "findContacts": true,
  "ownerRecords": [
    {
      "name": "HAUSSNER HOLDINGS LLC",
      "state": "TX",
      "mailingAddress": "633 E FERNHURST DR, KATY, TX 77450",
      "propertyAddress": "633 E FERNHURST DR, KATY, TX 77450",
      "id": "row-17"
    }
  ],
  "minContactConfidence": "medium",
  "maxPeoplePerOwner": 2,
  "followParentCompanies": true,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# Actor output Schema

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

Dataset of owner rows. status tells what happened for each owner (owner_found, no_people_listed, entity_not_found, not_covered, anonymous_state, not_applicable, source_error).

# 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 = {
    "owners": [
        "SUNSET HOLDINGS, LLC",
        "HAUSSNER HOLDINGS LLC",
        "LION FOLK LIFE VILLAGE LLC"
    ],
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("michael_b/llc-owner-finder").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 = {
    "owners": [
        "SUNSET HOLDINGS, LLC",
        "HAUSSNER HOLDINGS LLC",
        "LION FOLK LIFE VILLAGE LLC",
    ],
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
    },
}

# Run the Actor and wait for it to finish
run = client.actor("michael_b/llc-owner-finder").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 '{
  "owners": [
    "SUNSET HOLDINGS, LLC",
    "HAUSSNER HOLDINGS LLC",
    "LION FOLK LIFE VILLAGE LLC"
  ],
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}' |
apify call michael_b/llc-owner-finder --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,michael_b/llc-owner-finder"
        }
    }
}
```

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/KA0HTQOpemv37aeZV/builds/8oalWNpcud2nsXmTe/openapi.json
