# US Business Entity Search & Leads Scraper (Secretary of State) (`scrapebench/us-business-entity-search`) Actor

Search Secretary of State business registries by company name or entity ID, or export every LLC and corporation formed since a date. Status, formation date, address, registered agent, officers. Colorado, Connecticut, Oregon; more states being added.

- **URL**: https://apify.com/scrapebench/us-business-entity-search.md
- **Developed by:** [ScrapeBench](https://apify.com/scrapebench) (community)
- **Categories:** Business, Lead generation
- **Security:** Limited permissions
- **Stats:** 62 total users, 7 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$0.0015 / entity records

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

## US Business Entity Search & Leads Scraper (Secretary of State)

### Pain points

- Every state runs its own business registry with its own entity types, status words and column names: Colorado says "Good Standing" and "DLLC", Connecticut says "Active" and "LLC", Oregon lists each business as several role rows.
- A list of newly formed companies, or of every active LLC in a city, means downloading each state's open data and normalizing it yourself.
- The registered agent and officers sit in separate datasets in Connecticut and Oregon, joined by an internal key.

### What we solve

- One table for every state: entity ID, name, type, status, formation date, years in business, principal and mailing address, registered agent.
- Export mode: every business matching your filters (entity type, status, formed since, city, name keywords, years in business), up to 100,000 rows per state, filtered at the source.
- Lookup mode: company names or entity IDs across the states you pick, for KYB and due diligence.
- State add-ons where a state publishes them: annual report due date, NAICS industry, ownership survey and business email (Connecticut); officers (Connecticut, Oregon); county (Oregon).

### Summary

Secretary of State business entity data in one dataset, read live from each state's official open-data registry: Colorado (3,134,385 entities of every status), Connecticut (1,306,481) and Oregon (569,947 active businesses), counted 2026-11-05. Look up companies by name or entity ID, or export every business that matches your filters: LLCs formed since last month in Denver, active corporations in business for 5+ years, Connecticut companies whose annual report is due this quarter, businesses with "roofing" in the name. Every row has the same columns whatever the state: entity ID, name, type, status, formation date, years in business, principal and mailing address, and the registered agent with a business address. Connecticut adds NAICS industry, annual report due date, business email and woman/minority/veteran-owned flags; Connecticut and Oregon add officers on request. No phone numbers for businesses: states do not publish them. More states are being added; pay only per entity returned.

### Who it's for

- Agencies and SMB vendors (web design, bookkeeping, insurance, banking) prospecting newly formed companies
- Fintech, compliance and KYB teams verifying that a company exists, its status and its registered agent
- Registered agents, CPAs and compliance services reaching companies whose annual report is coming due
- Suppliers and insurers building trade lists (construction, roofing, salons) in states without a licence roster
- Lenders and procurement teams screening for established businesses

### How to use

This actor does two jobs. Run it, then collect results from the run's dataset (export to JSON/CSV/Excel, or pull via the Apify API).

**Get a list (export):** no names, just filters; returns the whole matching list.

```json
{
  "mode": "export",
  "states": [
    "CO",
    "CT",
    "OR"
  ],
  "entityTypes": [
    "LLC"
  ],
  "statuses": [
    "Active"
  ],
  "formedAfter": "2026-10-06",
  "maxResults": 100
}
```

**Check specific firms (lookup):** put company names or licence numbers in `mode`, `queries`, `states`; **Inputs** below says how each is matched.

```json
{
  "mode": "lookup",
  "queries": [
    "Serve & Sip Cafe",
    "3545215"
  ],
  "states": [
    "CT"
  ],
  "maxResults": 10
}
```

See **Inputs** below for every available field.

### What you get

One row per record:

| Field | Description |
|---|---|
| `state` | State whose registry the row comes from |
| `entity_id` | The state's entity / business number (CO entity ID, CT 7-digit business ID, OR registry number) |
| `entity_name` | Registered name, as the state publishes it |
| `entity_type / entity_type_code` | The state's entity type label and code (Limited Liability Company / DLLC) |
| `status` | The state's status word (Good Standing, Active, Dissolved...). Oregon publishes active businesses only |
| `formation_date` | Formation date for entities formed in that state |
| `registered_in_state_since` | For an entity formed elsewhere: when it registered in this state |
| `years_in_business` | Whole years since the state's formation date, active entities only (assumes continuous active status) |
| `jurisdiction` | State or country of formation |
| `principal_street / city / state / zip` | Principal office address |
| `mailing_street / city / state / zip` | Mailing address, where the state publishes one |
| `agent_name / agent_street / city / state / zip` | Registered agent with a business address (never a home address) |
| `officers` | With includeOfficers: officers, principals or authorized representatives with a business address (CT, OR) |
| `annual_report_due, naics_code, naics, business_email, *_owned` | Connecticut add-ons: annual report due date, NAICS industry, business email, ownership survey flags |
| `county, annual_report_anniversary` | Oregon add-ons |
| `source_url` | The state's own record for the entity |

Sample:

```json
{
  "source_url": "https://data.ct.gov/resource/n7gp-d28j.json?id=001eq00001hDPvNAAW",
  "state": "CT",
  "entity_id": "3545105",
  "entity_name": "Serve & Sip Cafe L.L.C.",
  "entity_type": "Limited Liability Company",
  "entity_type_code": "LLC",
  "status": "Active",
  "formation_date": "2026-11-04",
  "registered_in_state_since": null,
  "years_in_business": 0,
  "jurisdiction": "Connecticut",
  "principal_street": "61 E Industrial Rd",
  "principal_city": "Branford",
  "principal_state": "CT",
  "principal_zip": "06405-6509",
  "mailing_street": "61 E Industrial Rd",
  "mailing_city": "Branford",
  "mailing_state": "CT",
  "mailing_zip": "06405-6509",
  "agent_name": "Brian Gallagher",
  "agent_street": "61 E Industrial Rd",
  "agent_city": "Branford",
  "agent_state": "CT",
  "agent_zip": "06405-6509",
  "annual_report_due": "2027-03-31",
  "naics_code": null,
  "naics": null,
  "officers": [
    {
      "name": "Brian Gallagher",
      "title": null,
      "street": null,
      "city": "Branford",
      "state": null,
      "zip": null
    }
  ],
  "woman_owned": false,
  "minority_owned": false,
  "veteran_owned": false,
  "lgbtqi_owned": false,
  "disability_owned": false,
  "agent_type": "Individual"
}
```

### Inputs

| Field | Required | Type | Default | Description |
|---|---|---|---|---|
| `mode` | no | string | `"export"` | Export: every business in the picked states that matches the filters below (e.g. LLCs formed since a date). Lookup: find the companies you name in `Business names or entity IDs` (KYB / due diligence). Auto: lookup when you give names, export otherwise. |
| `states` | no | array | `["CO", "CT", "OR"]` | Secretary of State registries to search, as 2-letter codes. Available: CO, CT, OR. Leave empty for every state available. More states are added as they are built. |
| `queries` | no | array | `[]` | Lookup mode: one company name or state entity ID per line. A name matches anywhere in the registered name. Filters below still apply (e.g. only Active). |
| `query` | no | string | — | Same as the list above, one value. Kept for saved tasks; both are combined if you fill both. |
| `entityTypes` | no | array | `["LLC"]` | Keep only these types: LLC, Corporation, Nonprofit, Limited Partnership, LLP, General Partnership, Cooperative, Trust. Each state's own types are mapped onto this one list; a state's own type code or label also works. A type a state does not register gives a free note for that state. |
| `statuses` | no | array | `["Active"]` | Keep only these statuses. "Active" means in business in every state (Colorado: Good Standing or Exists). Other words match the state's own statuses (e.g. Dissolved, Delinquent); an unknown word gives a free note listing that state's statuses. |
| `formedAfter` | no | string | `"2026-10-06"` | Newly formed companies: only entities formed (or registered in the state) on or after this date, YYYY-MM-DD. |
| `formedBefore` | no | string | — | Only entities formed on or before this date, YYYY-MM-DD. |
| `cities` | no | array | — | Keep only businesses whose principal office is in one of these cities. |
| `nameKeywords` | no | array | — | Keep only businesses whose name contains one of these words, e.g. construction, roofing, nail, dental. |
| `minYearsInBusiness` | no | integer | — | Established businesses: active, formed in this state at least this many years ago (from the state's formation date). |
| `maxYearsInBusiness` | no | integer | — | Active businesses formed in this state at most this many years ago. |
| `annualReportDueAfter` | no | string | — | Only states that publish an annual report due date (Connecticut). Other states give a free note. |
| `annualReportDueBefore` | no | string | — | Businesses about to owe their annual report (Connecticut). Other states give a free note. |
| `naicsCodes` | no | array | — | 2 to 6 digit NAICS prefixes, e.g. 2381 (foundation and structure contractors), 8121 (personal care). Only states that publish NAICS (Connecticut); others give a free note. |
| `ownedBy` | no | array | — | Businesses that told the state they are owned by these groups (all of them): woman, minority, veteran, lgbtqi, disability. Only Connecticut publishes this survey; others give a free note. |
| `includeOfficers` | no | boolean | `false` | Add officers / principals / authorized representatives with their business address, where the state publishes them (Connecticut, Oregon). Never home addresses. |
| `maxResults` | no | integer | `100` | Cap on rows returned per state (bounds cost). Up to 100,000 for a statewide export. |
| `proxyConfiguration` | no | object | `{"useApifyProxy": false}` | Optional. The state registries answer directly; a proxy is not needed. |

### Pricing (Pay Per Event)

You pay per result (`dataset-item`) — **no charge for empty runs**. Example: **1000 entity records** at *$0.0015/result* ≈ **$1.50**.

Notices (unknown state or filter, no match, source unavailable) are free. Apify platform usage is billed separately per your plan.

### Use cases

- New business leads: every LLC formed in Colorado, Connecticut or Oregon since last month, with the principal address and registered agent.
- KYB / due diligence: look up a company by name or entity ID and read its status, formation date and agent.
- Annual report due: Connecticut companies whose annual report is due before a date.
- Trade lists: active businesses with construction, roofing or nail in the name, in one city or statewide.
- Established businesses: active companies in business for at least 5 years.

### Why this actor

- One table across states: the same columns and the same entity-type and status filters everywhere.
- Statewide export up to 100,000 rows per state, filtered at the source, plus name / ID lookup in the same actor.
- Each state's extra data where it publishes it: officers, NAICS, annual report due date, ownership flags.
- Read live from the states' own registries on every run. Pay per entity; notices are free.

### Limitations & updates

Covers Colorado, Connecticut and Oregon today; other states are added as they are built. Oregon publishes active businesses only. No business phone numbers. Officers are published by Connecticut and Oregon only, and only with a business address (home addresses are never returned). One run returns at most 100,000 rows per state.

### FAQ

**Which states are covered?**

Colorado, Connecticut and Oregon today, all read live from the state's official open-data registry. More states are being added; pick states in States, or leave it empty for all of them.

**How do I get newly formed companies?**

Mode export, a Formed on or after date (e.g. 30 days ago), and optionally Entity types (LLC), Statuses (Active) and Cities. Schedule it daily with a rolling date for a new-business feed.

**How do I look up one company?**

Mode lookup and the company name or the state's entity ID in Business names or entity IDs. A name matches anywhere in the registered name; filters such as Statuses still apply. A lookup that finds nothing returns a free no-match notice.

**Do all states return the same fields?**

The core columns are the same everywhere and null where a state does not publish them. Colorado has no officers; Oregon publishes active businesses only and no annual report date; Connecticut adds NAICS, annual report due date, business email and ownership survey flags. A filter a state cannot apply (e.g. NAICS in Colorado) returns a free notice for that state instead of being ignored.

**Is there a phone number?**

No. The states publish addresses, not business phone numbers. Connecticut publishes a business email for most active companies and a phone for many registered agents.

**What does years in business mean?**

Whole years since the state's own formation date, for active entities formed in that state, assuming continuous active status. Entities formed elsewhere show registered_in_state_since instead.

**How am I charged?**

One event per business entity returned. Notices are free.

### Guides & use cases

Written up on **[scrapebench.dev](https://scrapebench.dev)** — the bench that runs and verifies this actor against the live source every night:

- **How-to:** [How to run US Business Entity Search (Secretary of State)](https://scrapebench.dev/guides/how-to-us-business-entity-search/)
- **Use case:** [Daily Delta: New Business Entities (CO, CT, OR)](https://scrapebench.dev/use-cases/daily-delta-new-business-entities/)
- **Use case:** [Pull Colorado Business Entity Registrations](https://scrapebench.dev/use-cases/pull-colorado-business-entities/)
- **Use case:** [Search Multi-State Business Entities by Name](https://scrapebench.dev/use-cases/search-business-entities-by-name/)

More actors, coverage and nightly verification results: **[scrapebench.dev](https://scrapebench.dev)**

### Works with AI assistants (MCP)

Callable as an MCP tool, so Claude, Cursor, VS Code Copilot and other MCP clients can run it directly. Grab the config from the [MCP tab](https://apify.com/scrapebench/us-business-entity-search/api/mcp) on this page — Apify hosts the server and keeps that snippet current, and OAuth signs you in on first connect, so no API token goes in your config file.

Then just ask:

> "List LLCs formed in Colorado since October 6, 2026 that are still active, with their registered agent."

That is mode export, states CO, entity types LLC, statuses Active, formed on or after 2026-10-06. Keep maxResults small on a first call. Runs started this way bill exactly like any other run.

### Data & lawful use

This actor collects publicly available information that the Colorado, Connecticut and Oregon Secretary of State offices publishes for public
lookup — licence records, business listings and the contact details professionals list there.
Some of it identifies individuals (sole proprietors, licence holders, agents), so treat any
names, phone numbers and emails in your results as personal data.

When you run this actor, you decide what is collected and what it is used for, so you are the
controller of that data and we act only as your processor (Apify Standard Actor Contract).
You need a lawful basis for your use, must honour opt-out and deletion requests, and must
follow the marketing rules that apply to you (CAN-SPAM, TCPA, GDPR, CCPA and similar).
Don't use the output for unsolicited bulk messaging, for screening covered by the FCRA, or
for anything the source's own terms forbid.

Your results are stored in your own Apify account. We don't keep a copy of your results and
don't sell or share them.

### Disclaimer

This is an independent tool. It is not affiliated with, endorsed by or sponsored by
the Colorado, Connecticut and Oregon Secretary of State offices. Names and marks are used only to describe the data source. Records are
provided as published by the source and may be out of date or incomplete. For anything
consequential (hiring, a permit, a legal decision), confirm the record with the issuing
agency. You are responsible for making sure your use complies with applicable law and the
source's terms.

### Need help?

Open an issue on this actor's **Issues** tab and we'll respond there. Bug reports, missing
fields and feature requests are all welcome. Guides and examples: [scrapebench.dev](https://scrapebench.dev).

If you are a person named in this data and want your record removed from our copy, email
apify-help@scrapebench.dev; the source agency remains the official record.

Your run may be used to improve our services. If something looks off, or you want this actor to fit your use better, please share your run data with us: [Apify Console → Settings → Security → Share run data with developers](https://console.apify.com/settings/security). It lets us see exactly what went wrong and keep improving the actor.

# Actor input Schema

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

Export: every business in the picked states that matches the filters below (e.g. LLCs formed since a date). Lookup: find the companies you name in `Business names or entity IDs` (KYB / due diligence). Auto: lookup when you give names, export otherwise.

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

Secretary of State registries to search, as 2-letter codes. Available: CO, CT, OR. Leave empty for every state available. More states are added as they are built.

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

Lookup mode: one company name or state entity ID per line. A name matches anywhere in the registered name. Filters below still apply (e.g. only Active).

## `query` (type: `string`):

Same as the list above, one value. Kept for saved tasks; both are combined if you fill both.

## `entityTypes` (type: `array`):

Keep only these types: LLC, Corporation, Nonprofit, Limited Partnership, LLP, General Partnership, Cooperative, Trust. Each state's own types are mapped onto this one list; a state's own type code or label also works. A type a state does not register gives a free note for that state.

## `statuses` (type: `array`):

Keep only these statuses. "Active" means in business in every state (Colorado: Good Standing or Exists). Other words match the state's own statuses (e.g. Dissolved, Delinquent); an unknown word gives a free note listing that state's statuses.

## `formedAfter` (type: `string`):

Newly formed companies: only entities formed (or registered in the state) on or after this date, YYYY-MM-DD.

## `formedBefore` (type: `string`):

Only entities formed on or before this date, YYYY-MM-DD.

## `cities` (type: `array`):

Keep only businesses whose principal office is in one of these cities.

## `nameKeywords` (type: `array`):

Keep only businesses whose name contains one of these words, e.g. construction, roofing, nail, dental.

## `minYearsInBusiness` (type: `integer`):

Established businesses: active, formed in this state at least this many years ago (from the state's formation date).

## `maxYearsInBusiness` (type: `integer`):

Active businesses formed in this state at most this many years ago.

## `annualReportDueAfter` (type: `string`):

Only states that publish an annual report due date (Connecticut). Other states give a free note.

## `annualReportDueBefore` (type: `string`):

Businesses about to owe their annual report (Connecticut). Other states give a free note.

## `naicsCodes` (type: `array`):

2 to 6 digit NAICS prefixes, e.g. 2381 (foundation and structure contractors), 8121 (personal care). Only states that publish NAICS (Connecticut); others give a free note.

## `ownedBy` (type: `array`):

Businesses that told the state they are owned by these groups (all of them): woman, minority, veteran, lgbtqi, disability. Only Connecticut publishes this survey; others give a free note.

## `includeOfficers` (type: `boolean`):

Add officers / principals / authorized representatives with their business address, where the state publishes them (Connecticut, Oregon). Never home addresses.

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

Cap on rows returned per state (bounds cost). Up to 100,000 for a statewide export.

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

Optional. The state registries answer directly; a proxy is not needed.

## Actor input object example

```json
{
  "mode": "export",
  "states": [
    "CO",
    "CT",
    "OR"
  ],
  "queries": [],
  "entityTypes": [
    "LLC"
  ],
  "statuses": [
    "Active"
  ],
  "formedAfter": "2026-10-06",
  "includeOfficers": false,
  "maxResults": 100,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

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

Business-entity records, one row per entity; notices are free.

# 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": "export",
    "states": [
        "CO",
        "CT",
        "OR"
    ],
    "entityTypes": [
        "LLC"
    ],
    "statuses": [
        "Active"
    ],
    "formedAfter": "2026-10-06",
    "maxResults": 100
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapebench/us-business-entity-search").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": "export",
    "states": [
        "CO",
        "CT",
        "OR",
    ],
    "entityTypes": ["LLC"],
    "statuses": ["Active"],
    "formedAfter": "2026-10-06",
    "maxResults": 100,
}

# Run the Actor and wait for it to finish
run = client.actor("scrapebench/us-business-entity-search").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 '{
  "mode": "export",
  "states": [
    "CO",
    "CT",
    "OR"
  ],
  "entityTypes": [
    "LLC"
  ],
  "statuses": [
    "Active"
  ],
  "formedAfter": "2026-10-06",
  "maxResults": 100
}' |
apify call scrapebench/us-business-entity-search --silent --output-dataset

```

## MCP server setup

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

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/FB9i4DZ5DHoHc9y4f/builds/6l81XpeYdOvSBdnXt/openapi.json
