# Secretary of State Business Entity Search (KYB): 9 US States (`postatelier/us-business-entities`) Actor

Secretary of State business entity search (KYB) from official open data in NY, FL, TX, PA, CO, CT, OR, IA and DC. Look up companies by name or ID, or list new LLCs and corporations by formation date and city. Company-level data, no scraping.

- **URL**: https://apify.com/postatelier/us-business-entities.md
- **Developed by:** [Post Atelier](https://apify.com/postatelier) (community)
- **Categories:** Lead generation, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$2.50 / 1,000 entity returneds

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

### What does Secretary of State Business Entity Search do?

It's a **Secretary of State business entity search across 9 states** (New York, Florida, Texas, Pennsylvania, Colorado, Connecticut, Oregon, Iowa and DC), built on the official open data the states publish themselves. Use it as an LLC lookup, a company search by name or state ID, or a feed of newly formed businesses. Each result is one normalised record per company: name, state ID, entity type, status, formation date, jurisdiction and business address.

Use it two ways:

- **Look up companies** by name or state ID across all covered states at once.
- **List new businesses:** every LLC or corporation formed in the last N days, optionally in one city. Schedule it daily with **Only new entities** for a fresh new-business feed.

### What you get

A real run with `"queries": ["Blue Bottle Coffee"]` across all states:

| Name | State | State ID | Entity type | Status | Formed / registered | City |
|---|---|---|---|---|---|---|
| Blue Bottle Coffee, LLC | CO | 20201746648 | Foreign Other Entity | active | 2020-08-27 | Oakland |
| Blue Bottle Coffee, LLC | CT | 2416198 | LLC | active | 2022-01-05 | Oakland |
| BLUE BOTTLE COFFEE, LLC | TX | 32083230212 | Foreign Lmtd Liab Co - OOS | active | 2022-02-16 | Dallas |
| BLUE BOTTLE COFFEE, LLC | OR | 188377197 | Foreign Limited Liability Company | active | 2021-10-20 | Oakland |
| BLUE BOTTLE COFFEE, LLC | DC | C00005504176 | Foreign Limited Liability Company | active | 2016-09-06 | Oakland |

One company registered in several states comes back once per state, each with its own state ID and source link.

### Run it on a schedule: Slack, e-mail, Google Sheets or a webhook

Set it up once and get newly formed US businesses automatically:

1. **Save a task.** Fill in the input (or paste the JSON below in the JSON editor) and click **Save as a new task**.
   ```json
   { "states": ["CO"], "city": "Denver", "formedWithinDays": 3, "onlyNew": true, "monitorName": "denver-new" }
   ```
2. **Schedule it daily.** Open **Schedules** in the left menu of the Apify Console, create a schedule, pick the time and add your task. Each run then returns only entities that earlier runs haven't, so you pay only for new ones.
3. **Send the results somewhere.** In the task's **Integrations** tab:
   - **Slack:** "Send notification via Slack" when a run succeeds.
   - **E-mail or Google Drive:** "Send results email via Gmail" attaches the rows; "Upload results to GDrive" saves them as a file.
   - **Google Sheets, CRM, n8n:** connect the task through Make, Zapier or n8n (listed under Automation platforms) and add a row per result.
   - **Webhook:** add an HTTP webhook for the event **Run succeeded** with your URL. The payload includes `resource.defaultDatasetId`; fetch the rows from `https://api.apify.com/v2/datasets/<defaultDatasetId>/items`.

### Who uses it

- **KYB and onboarding checks:** confirm a US customer or supplier exists, is active and is registered where it says it is, from the state's own data.
- **New-business lead lists:** every LLC and corporation formed this week in Colorado, Florida, New York, Connecticut, Oregon or DC, for insurers, banks, accountants, payroll and SaaS sales teams.
- **Data enrichment:** add state ID, entity type, formation date and status to a list of company names.
- **AI agents:** one call answers "is this company registered and active in Texas?"

### Coverage

| State | Source | Search by name/ID | New-business lists | Updated |
|---|---|---|---|---|
| **New York** | NY Department of State, *Active Corporations* (data.ny.gov) | ✅ | ✅ | frequently |
| **Florida** | Division of Corporations (Sunbiz), daily filing files | Within the date window only | ✅ (last 62 days) | daily (work days) |
| **Texas** | Texas Comptroller, *Active Franchise Taxpayers* (data.texas.gov) | ✅ | ⚠️ lags by weeks (refreshed periodically) | periodically |
| **Pennsylvania** | PA Department of State, *Registered Businesses* (data.pa.gov) | ✅ | ❌ (no formation date published) | monthly |
| **Colorado** | Colorado Secretary of State, *Business Entities* (data.colorado.gov) | ✅ | ✅ | daily |
| **Connecticut** | Secretary of the State, *Business Registry* (data.ct.gov) | ✅ | ✅ | daily |
| **Oregon** | Oregon Secretary of State, *Active Businesses* (data.oregon.gov) | ✅ | ✅ | weekly |
| **Iowa** | Iowa Secretary of State, *Active Iowa Business Entities* (data.iowa.gov) | ✅ | ⚠️ lags by up to a month (monthly file) | monthly |
| **District of Columbia** | DC Department of Licensing and Consumer Protection, *Corporate Registration* (Open Data DC) | ✅ (active and inactive) | ✅ | regularly |
| Delaware, California, Georgia, North Carolina, Michigan, New Jersey and most other states | — | ❌ **not available**: these states sell their registry data or put it behind an account, so there is no free open data to use | | |

Notes:

- New York's, Oregon's and Iowa's datasets list **active** entities only. Most New York records carry **no address** (the state fills the location field for a minority of entities), so the city filter finds few New York entities.
- Texas lists **active franchise taxpayers**, which covers most for-profit entities doing business in Texas, including out-of-state LLCs and corporations.
- Iowa's register is published as one monthly file, which the Actor downloads (about 100 MB, around 20 seconds) the first time a run needs Iowa.
- Florida's daily files contain the filings added each day, so Florida is a feed of recent filings, not a full-register name search.

More states are added as they publish open data. Open an issue to ask for one.

### How to use it

**Look up companies:**

```json
{ "queries": ["Blue Bottle Coffee", "Dell Technologies"], "maxResultsPerQuery": 10 }
```

**New LLCs formed this week in Colorado and Florida:**

```json
{ "states": ["CO", "FL"], "formedWithinDays": 7, "entityKinds": ["llc"], "maxResults": 500 }
```

**Daily new-business feed for one city:** `{ "states": ["CO"], "city": "Denver", "formedWithinDays": 3, "onlyNew": true, "monitorName": "denver-new" }`. Save it as a task and schedule it daily.

Names match at word starts ("Dell" finds "Dell Technologies Inc." but not "Zuradell LLC"). Within each state, the closest (shortest) names are fetched first, and exact matches are ranked first.

### Output example

A real record from a run:

```json
{
  "name": "Blue Bottle Coffee, LLC",
  "state": "CT",
  "registryId": "2416198",
  "registryIdType": "Connecticut business ID",
  "entityType": "LLC",
  "entityKind": "llc",
  "status": "active",
  "statusDetail": "Active",
  "formationDate": "2022-01-05",
  "jurisdictionOfFormation": "DE",
  "address": { "street": "476 9th Street", "city": "Oakland", "state": "CA", "zip": "94607", "country": "United States" },
  "county": null,
  "sourceInfo": {
    "registry": "Connecticut Secretary of the State, Business Registry",
    "dataset": "Connecticut Business Registry - Business Master (n7gp-d28j)",
    "url": "https://service.ct.gov/business/s/onlinebusinesssearch?businessNameEn=2416198",
    "licence": "Public Domain",
    "attribution": "Source: Connecticut Secretary of the State, via data.ct.gov",
    "updateFrequency": "daily"
  },
  "query": "Blue Bottle Coffee",
  "retrievedAt": "2026-10-16T21:38:43.161Z"
}
```

`entityKind` normalises state-specific types to `llc`, `corporation`, `nonprofit`, `partnership` or `other`. `entityType` keeps the state's own label.

`status` is one of:

- `active`
- `delinquent`: Colorado's "Delinquent" or "Noncompliant" (the entity still exists but is behind on filings)
- `inactive`
- `unknown`

### Use it from code, Make, Zapier or an AI agent

```bash
curl -X POST "https://api.apify.com/v2/acts/postatelier~us-business-entities/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "queries": ["Blue Bottle Coffee"] }'
```

It also works from Make, Zapier, n8n and Google Sheets through Apify's integrations. AI agents can call it through the [Apify MCP server](https://mcp.apify.com) as `postatelier/us-business-entities`.

### Pricing

Pay per event:

| Event | Price |
|---|---|
| Entity returned | **$0.0025** ($2.50 per 1,000 entities) |

Names with no match, and entities skipped by monitoring, are free.

**Examples:** 1,000 entities cost $2.50. Checking a 400-name customer list in every state costs up to $10 at the default of 10 results per name; set `maxResultsPerQuery: 3` to cap it at $3. A daily feed of 50 new LLCs costs about $3.75 a month. Apify's free plan includes $5 of monthly credit, which covers about 2,000 entities.

### Data sources and terms

Every record carries `sourceInfo.licence` and `sourceInfo.attribution`.

| State | Terms |
|---|---|
| New York | Open NY Terms of Use: reuse, including in private-sector projects, is permitted without attribution requirements |
| Florida | Florida public records, published by the Department of State as a free public data download ("as is"), downloaded from the Sunbiz public SFTP server with the guest credentials the state publishes |
| Texas | Published by the Texas Comptroller on the Texas Open Data Portal. The dataset names no specific licence; open data on the portal is published for public use |
| Pennsylvania | Public Domain (U.S. Government), per dataset metadata |
| Colorado | Public Domain, per dataset metadata |
| Connecticut | Public Domain, per dataset metadata |
| Oregon | Published by the Oregon Secretary of State, Corporation Division, on the Oregon Open Data Portal. The dataset names no specific licence |
| Iowa | CC BY 4.0, per dataset metadata. Attribution: Iowa Secretary of State |
| District of Columbia | CC BY 4.0, per dataset metadata. Attribution: DC Department of Licensing and Consumer Protection |

No state website is scraped. The data comes from the states' open-data APIs and published files only.

### Privacy: company data only

- **Never returned:** registered agents, people named for service of process, chairmen, officers, and the e-mail addresses some states publish.
- **Filtered out:** entity types that are individuals or are usually named after people:

  - Texas: sole proprietorships, estates, individual and general partnerships, trusts
  - Colorado: sole proprietorships, general partnerships, trusts
  - Connecticut, Pennsylvania and Iowa: general partnerships
  - Oregon: assumed business names (DBAs), which are often registered by individuals
  - Florida: declarations of trust and registered-agent designations

  Trade names held by individuals (e.g. Colorado "true names") aren't included.
- The address is the business's own principal or location address as filed with the state.

### Good to know

- **Speed:** a name lookup queries every selected state in parallel, about 10 seconds per name, plus about 20 seconds once per run when Iowa is included.
- **Florida:** each day file is a few MB from the state's server, about 3 seconds per day. A 30-day window takes a little over a minute.
- **Not available:** officer and registered-agent data, filing documents and annual-report details. This Actor is company-level by design.

### Related Actors

- [UK Companies House](https://apify.com/postatelier/uk-companies-house): UK company profiles and daily new incorporations.
- [European Company Registry Search](https://apify.com/postatelier/eu-company-registry): European registers with LEI and VAT checks.
- [Public Tenders & Procurement](https://apify.com/postatelier/public-tenders-feed): US SAM.gov federal opportunities plus EU and UK tenders.

### FAQ

**Why not Delaware, California or Georgia?** They don't publish free open business data. Their registries are only available through paid products, accounts, or search sites whose terms forbid automated access, and we don't scrape those. We check every state's terms before adding it.

**How fresh is it?** It's as fresh as each state's dataset; see the coverage table. Every record shows its source and update frequency.

**What if a state's source is down?** The other states keep working, and a free record with `status: "source_unavailable"` shows which state couldn't be checked. Filter on `status` before importing results into a spreadsheet or CRM.

**Something broke?** Open an issue. A health check runs against every state daily, and we aim to fix problems within a day.

# Actor input Schema

## `queries` (type: `array`):

One per line. Names match at word starts ("Blue Bottle" finds "Blue Bottle Coffee, LLC"). State IDs (NY DOS ID, Texas taxpayer number, Colorado entity ID, Florida document number…) return that entity. Leave empty to list entities by the filters below.

## `states` (type: `array`):

Leave empty for all: New York, Florida, Texas, Pennsylvania, Colorado, Connecticut, Oregon, Iowa and DC.

## `formedWithinDays` (type: `integer`):

New-business lists: entities formed in the last N days, newest first. Needed for Florida (daily filing files, up to 62 days).

## `formedFrom` (type: `string`):

YYYY-MM-DD (alternative to the rolling window).

## `formedTo` (type: `string`):

YYYY-MM-DD

## `city` (type: `string`):

Only entities whose business address is in this city, e.g. "Austin".

## `entityKinds` (type: `array`):

Leave empty for all.

## `activeOnly` (type: `boolean`):

Skip dissolved, withdrawn, revoked and similar entities (where the state publishes status).

## `maxResultsPerQuery` (type: `integer`):

Best matches across all states for each name.

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

Upper limit when listing by filters, shared across states.

## `onlyNew` (type: `boolean`):

Skip entities this monitor already returned. Schedule daily with formedWithinDays 3 for a fresh new-business feed. Skipped entities are free.

## `monitorName` (type: `string`):

Keeps separate memory per monitor.

## `selfCheck` (type: `boolean`):

Maintainer health check. Leave off.

## Actor input object example

```json
{
  "queries": [
    "Blue Bottle Coffee",
    "Dell Technologies"
  ],
  "activeOnly": true,
  "maxResultsPerQuery": 10,
  "maxResults": 50,
  "onlyNew": false,
  "monitorName": "default",
  "selfCheck": false
}
```

# Actor output Schema

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

No description

## `summary` (type: `string`):

No description

# 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 = {
    "queries": [
        "Blue Bottle Coffee",
        "Dell Technologies"
    ],
    "maxResults": 50
};

// Run the Actor and wait for it to finish
const run = await client.actor("postatelier/us-business-entities").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 = {
    "queries": [
        "Blue Bottle Coffee",
        "Dell Technologies",
    ],
    "maxResults": 50,
}

# Run the Actor and wait for it to finish
run = client.actor("postatelier/us-business-entities").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 '{
  "queries": [
    "Blue Bottle Coffee",
    "Dell Technologies"
  ],
  "maxResults": 50
}' |
apify call postatelier/us-business-entities --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,postatelier/us-business-entities"
        }
    }
}
```

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/xynZLBqNz2KTqcdTb/builds/I0QHhboycP4g6r0i6/openapi.json
