# New Business Formation Monitor — new LLCs & corps (US states) (`handa-labs/us-new-business-monitor`) Actor

Newly registered LLCs, corporations and nonprofits from official state open data (CO, NY, CT, PA, OR). Filter by state, entity type, name keyword, city, county and ZIP; registered-agent firms; only new since your last run.

- **URL**: https://apify.com/handa-labs/us-new-business-monitor.md
- **Developed by:** [tatsuya handa](https://apify.com/handa-labs) (community)
- **Categories:** Lead generation, Business, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.00 / 1,000 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?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

### What is New Business Formation Monitor for?

**A company that was registered yesterday has no bank, no insurance, no accountant, no website and no payroll provider yet.** This Actor reads the **official business registries** that US states publish as open data and returns the **newly formed LLCs, corporations and nonprofits**, filtered by state, entity type, name keyword, city, county and ZIP. In *monitor* mode it returns **only the entities it has not shown you before**, so a daily schedule becomes a clean feed of new companies.

Typical users:

- **Banks, insurers, accountants, payroll and POS vendors** prospecting brand-new businesses in their territory.
- **Registered-agent and formation services** watching which competitors (LegalZoom, Northwest, ZenBusiness…) are forming the most entities.
- **Local media, chambers of commerce and economic developers** tracking formation activity by city or county.
- **AI agents and workflows** that need a JSON feed of "companies founded this week" without scraping Secretary-of-State portals.

Everything comes from the states' own Socrata open-data APIs: no scraping, no proxies, no login.

### Sample output

An `entity` record (Colorado):

```json
{
  "type": "entity",
  "change": "new",
  "entityId": "CO:20268119881",
  "state": "CO",
  "registryId": "20268119881",
  "name": "MARJAN FLOWERS LLC",
  "entityType": "DLLC",
  "category": "llc",
  "foreign": false,
  "status": "Good Standing",
  "formedDate": "2026-09-03",
  "jurisdiction": "CO",
  "address": "1500 N GRANT ST 5656",
  "city": "DENVER",
  "addressState": "CO",
  "zip": "80203",
  "county": null,
  "registeredAgent": "Colorado Registered Agents Inc",
  "email": null,
  "naics": null,
  "sourceUrl": null,
  "sourceDataset": "https://data.colorado.gov/d/4ykn-tg5h",
  "checkedAt": "2026-09-05T03:20:11.000Z",
  "llmSummary": "MARJAN FLOWERS LLC — DLLC registered in CO on 2026-09-03, DENVER, CO 80203; registered agent Colorado Registered Agents Inc."
}
```

The first record of every run is a `summary` with counts per state and category, the share with a registered-agent firm and the most frequent agent firms.

### What you get

| Field | Meaning |
| --- | --- |
| `entityId` | `STATE:registry id`, stable across runs |
| `name`, `entityType`, `category` | Registered name, the state's own type code, and a normalised category (`llc`, `corporation`, `nonprofit`, `partnership`, `other`) |
| `foreign` | Formed in another state/country and registering to do business here |
| `status` | Registry status where published (Colorado, Connecticut) |
| `formedDate` | Formation / registration date (`YYYY-MM-DD`) |
| `jurisdiction` | Home jurisdiction |
| `address`, `city`, `addressState`, `zip`, `county` | Principal (or service-of-process) address as filed |
| `registeredAgent` | Registered-agent **firm** name where published. Individual agents are omitted |
| `email`, `naics` | Business e-mail and NAICS text (Connecticut only) |
| `sourceUrl` | Link to the registry record (Oregon only) |
| `change` | `new` (monitor mode), `baseline` (first run with `emitBaseline`) or `snapshot` |
| `llmSummary` | One-sentence description for LLM agents and alerts |

#### Coverage

| State | Dataset | Updates | New entities / day | Agent firm | Address | Notes |
| --- | --- | --- | --- | --- | --- | --- |
| Colorado | [4ykn-tg5h](https://data.colorado.gov/d/4ykn-tg5h) | daily | ~500 | yes (about half) | yes + status | Best schema |
| New York | [n9v6-gdp6](https://data.ny.gov/d/n9v6-gdp6) | daily | ~680 | partial | service-of-process address, county | Active entities only |
| Connecticut | [n7gp-d28j](https://data.ct.gov/d/n7gp-d28j) | nightly | ~170 | yes (via agents dataset) | yes + status, NAICS, e-mail | |
| Pennsylvania | [xvd7-5r2c](https://data.pa.gov/d/xvd7-5r2c) | daily (1–3 day lag) | ~250 | no | yes + county | |
| Oregon | [tckn-sxa6](https://data.oregon.gov/d/tckn-sxa6) | **monthly** | ~155 | yes (organisations) | yes + record link | Use `daysBack` 30+ and a monthly schedule |

Personal names (organizers, incorporators, individual agents, officers) are **never exported**.

### Settings

| Input | Default | Notes |
| --- | --- | --- |
| `states` | CO, NY, CT, PA | Any subset of the five |
| `categories` | – | `llc`, `corporation`, `nonprofit`, `partnership`, `other`. Empty = all |
| `includeForeign` | true | Set false for domestic formations only |
| `keywords` / `excludeKeywords` | – | Any-match against the name (and NAICS text in CT) |
| `cities`, `counties`, `zipPrefixes` | – | Location filters on the principal address. Counties: NY and PA only |
| `agentOnly` | false | Only entities with a registered-agent firm |
| `daysBack` | 3 | Formation-date window (1–60) |
| `mode` | monitor | `monitor` = only entities not seen before; `snapshot` = everything matching |
| `watchlistId` | default | Name for the memory of a watch. Filters are part of the key too |
| `emitBaseline` | false | Emit the current entities on the first run of a watch (charged) |
| `maxEntities` | 5000 | Cap per run, most recent first |
| `socrataAppToken` | – | Optional; raises the open-data rate limit |

#### Monitor mode, watchlists and the free first run

1. Choose a `watchlistId` (e.g. `denver-llcs`) and your filters. Run once. The **first run is a free baseline**: the Actor remembers the entities currently in the window and returns only a summary (no entity records are charged) unless `emitBaseline` is on.
2. Schedule the same input daily. Each later run returns **only entities registered since the last run** and charges only for those.
3. Different watchlists keep separate memories. Changing filters starts a new baseline for that watchlist.

Pricing: one `run-summary` event per non-baseline run, one `entity` event per entity record.

#### Example: new LLCs in Denver and Brooklyn, daily

```json
{
  "states": ["CO", "NY"],
  "categories": ["llc"],
  "includeForeign": false,
  "cities": ["Denver", "Brooklyn"],
  "daysBack": 3,
  "mode": "monitor",
  "watchlistId": "denver-brooklyn-llcs"
}
```

### Notes and limits

- States publish with a one-to-three-day lag; `daysBack` 3 with a daily schedule catches everything.
- New York's dataset lists active entities only and has no status column; its address is the service-of-process address, which is usually the company's own.
- Pennsylvania has no status or agent columns.
- Oregon refreshes around the first of each month.
- Results are official public records provided as-is; verify with the Secretary of State before relying on them.

### 日本語

米国5州(コロラド、ニューヨーク、コネチカット、ペンシルベニア、オレゴン)の州政府が公式オープンデータとして公開する**新設法人(LLC・株式会社・非営利)**を取得します。州・法人種別・社名キーワード・市・郡・ZIP で絞り込み、公開されている場合は**登録代理人(Registered Agent)の会社名**も付きます。`monitor` モードでは前回以降に登録された法人だけを返し、初回はベースライン(無課金)です。個人名は出力しません。

# Actor input Schema

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

Which official state registries to read. Oregon refreshes monthly; the others daily.

## `categories` (type: `array`):

Keep only these kinds of entities. Empty = all.

## `includeForeign` (type: `boolean`):

Entities formed elsewhere and registering to do business in the state.

## `keywords` (type: `array`):

Case-insensitive; matched against the entity name (and NAICS text in Connecticut). Empty = all.

## `excludeKeywords` (type: `array`):

Drop entities whose name contains any of these.

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

Keep only entities whose principal address city is one of these (case-insensitive).

## `counties` (type: `array`):

New York and Pennsylvania publish a county; e.g. "Kings", "Philadelphia".

## `zipPrefixes` (type: `array`):

Keep only entities whose principal ZIP starts with one of these.

## `agentOnly` (type: `boolean`):

Useful for spotting formations handled by LegalZoom, Northwest, ZenBusiness etc.

## `daysBack` (type: `integer`):

Look at entities formed within the last N days (1–60). Registries publish with a 1–3 day lag.

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

monitor = remember what was returned and only emit entities not seen before (first run is a free baseline). snapshot = return everything matching every time.

## `watchlistId` (type: `string`):

Name for this watch (e.g. "denver-llcs"). Separate IDs keep separate memories; the filters are part of the key too.

## `emitBaseline` (type: `boolean`):

On the very first run of a watchlist, also output the current entities (charged). Default: only a free summary.

## `maxEntities` (type: `integer`):

Cap on entities kept per run (most recent first).

## `socrataAppToken` (type: `string`):

Raises the open-data rate limit. Not needed for normal use.

## Actor input object example

```json
{
  "states": [
    "CO",
    "NY",
    "CT",
    "PA"
  ],
  "categories": [
    "llc",
    "corporation"
  ],
  "includeForeign": true,
  "agentOnly": false,
  "daysBack": 3,
  "mode": "monitor",
  "watchlistId": "default",
  "emitBaseline": false,
  "maxEntities": 5000
}
```

# Actor output Schema

## `dataset` (type: `string`):

No description

## `consoleRun` (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 = {
    "states": [
        "CO",
        "NY",
        "CT",
        "PA"
    ],
    "categories": [
        "llc",
        "corporation"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("handa-labs/us-new-business-monitor").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 = {
    "states": [
        "CO",
        "NY",
        "CT",
        "PA",
    ],
    "categories": [
        "llc",
        "corporation",
    ],
}

# Run the Actor and wait for it to finish
run = client.actor("handa-labs/us-new-business-monitor").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 '{
  "states": [
    "CO",
    "NY",
    "CT",
    "PA"
  ],
  "categories": [
    "llc",
    "corporation"
  ]
}' |
apify call handa-labs/us-new-business-monitor --silent --output-dataset

```

## MCP server setup

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

```

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/kDgRpOgVfFIb6Kwdi/builds/WuCrgmFUUQvSbyzvf/openapi.json
