# US State Business Registrations Scraper (`scrapyx/us-business-registrations-scraper`) Actor

Newly registered and active businesses from the official Secretary of State registries of New York, Colorado and Oregon: name, entity type, status, formation date, address, registered agent. Filter by date, city, ZIP, name and type.

- **URL**: https://apify.com/scrapyx/us-business-registrations-scraper.md
- **Developed by:** [Ibnu Adzim](https://apify.com/scrapyx) (community)
- **Categories:** Lead generation, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.84 / 1,000 results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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 State Business Registrations Scraper (NY, CO, CT, OR)

**Newly registered and active businesses** straight from the Secretary of
State registries of **New York, Colorado, Connecticut and Oregon**, as each state
publishes them on its open-data portal: entity ID, name, entity type,
status, formation or filing date, principal and mailing address, registered
agent, and (New York) chairman and service-of-process address,
(Connecticut) business e-mail, NAICS industry and woman-, veteran- and
minority-owned flags, (Oregon) authorized representatives and a link to
the state's record.

Filter by formation date, entity type, name, city and ZIP. Official open
data: no key, no login, no proxy. On 25 September 2026 the portals showed
New York, Colorado and Connecticut updated on the 24th, Oregon on the 22nd.

### What it is for

- **New-business lead lists** — every LLC formed in Denver this month for
  banking, insurance, accounting, payroll, web and signage offers.
- **Registered-agent and compliance research.**
- **Market counts** — how many companies of a type formed in a city.

### Input

| field | what it does |
| --- | --- |
| `states` | `NY`, `CO`, `CT`, `OR` — one search each, one summary each. |
| `formedFrom` / `formedTo` | Formation / filing date window (`YYYY-MM-DD`). |
| `entityTypeContains` | e.g. `limited liability`, `nonprofit`, `corporation`. |
| `nameContains` | Part of the name, any case. |
| `cities`, `zipCodes` | Exact cities (any case); ZIPs or ZIP prefixes. |
| `includeInactive` | Colorado and Connecticut: include dissolved, forfeited, withdrawn... |
| `includeAssumedNames` | Oregon only: include assumed business names (DBAs). |
| `sortBy` | Newest or oldest first. |
| `maxItems` | Per state, default 200; `0` = all. |

### Things about these registries worth knowing

#### 1. New York rarely gives a business address

New York's file always has the **service-of-process** address (where legal
papers go — often the owner's home or an agent firm) and only sometimes a
business location. None of 1,200 LLCs filed in September 2026 had one. The
Actor keeps both: `principalAddress` falls back to the process address and
`principalAddressSource` says which you are looking at. City and ZIP
filters match either address.

#### 2. Oregon lists each business several times

Oregon publishes one row per associated name — place of business, mailing
address, registered agent, authorized representative — 1 to 7 rows per
business. The Actor merges them into one row (`sourceRowCount` says how
many), including when a business straddles two pages. The same agent can
be listed once per spelling of its name; one is kept, with its Oregon
registry number.

Oregon's "active businesses" also contain 116,553 **assumed business names**
(trade names, not companies); they are left out unless you ask for them.

#### 3. Colorado keeps dissolved companies

Colorado's file has 3.1 million entities, of which about a million are in
Good Standing; the rest include over 770,000 dissolved ones. They are excluded
unless `includeInactive` is on. Colorado stores types as codes (DLLC,
DPC...); the Actor translates them and expands a type filter to the codes.

#### 4. Connecticut's table also holds name reservations

Connecticut's registry lists reserved names and rejected filings next to
real businesses, and only 461,857 of its 1.3 million records are Active
(357,213 are Forfeited). Reservations and rejections are never returned;
non-active businesses only with `includeInactive`. Connecticut types are
short labels ("Stock", "Non-Stock") that the Actor spells out, so
`entityTypeContains: "nonprofit"` works there too. Connecticut is also the
only one of the four that publishes a business e-mail (1,500 of 1,500 new
LLCs in September) and a NAICS industry (1,441 of 1,500).

#### 5. A formation date can be in the future

Delayed-effective filings carry their future effective date (Colorado had
one dated 2026-11-01 on 25 September). Such rows have
`formationDateInFuture: true`.

### Output

One `BUSINESS_ENTITY` row per business, the same fields for every state,
with the state's own record(s) under `source`; one `SEARCH_SUMMARY` per state.

```json
{
  "recordType": "BUSINESS_ENTITY",
  "state": "OR",
  "entityId": "262743892",
  "entityName": "PEAHENPACKAGESPDX, LLC",
  "entityType": "DOMESTIC LIMITED LIABILITY COMPANY",
  "status": "ACTIVE",
  "formationDate": "2026-09-14",
  "principalAddress": {"street": "2926 SW 4TH AVE APT 203", "city": "PORTLAND", "state": "OR", "zip": "97201"},
  "principalAddressSource": "principal",
  "registeredAgent": {"name": "PEA HEN PARENTPDX, LLC", "street": "2926 SW 4TH AVE APT 203", "city": "PORTLAND", "state": "OR", "zip": "97201", "registryNumber": "262654891"},
  "sourceRowCount": 7
}
```

### Speed

1,000 rows per request, one request per second (the portals' crawl delay).
1,200 new LLCs from each of the three states took 23 seconds.

### Limits

- Three states for now: each state publishes its registry differently, and
  these three publish theirs as complete, current open data.
- Owner / member names are only what the state publishes (NY chairman,
  Oregon authorized representatives, registered agents).

# Actor input Schema

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

One search per state.

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

YYYY-MM-DD. Use it to list NEW businesses.

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

YYYY-MM-DD.

## `entityTypeContains` (type: `string`):

e.g. 'limited liability', 'nonprofit', 'corporation'. Colorado's type codes are expanded automatically.

## `nameContains` (type: `string`):

Any case.

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

Exact city names, any case (NY: business location city; CO: principal city; OR: any listed address city).

## `zipCodes` (type: `array`):

3-5 digits, e.g. '10001' or '100'.

## `includeInactive` (type: `boolean`):

Colorado and Connecticut publish ended entities too (dissolved, forfeited, withdrawn...); they are excluded by default. NY and OR files hold active entities only. Connecticut name reservations and rejected filings are never returned.

## `includeAssumedNames` (type: `boolean`):

Trade names, not legal entities.

## `sortBy` (type: `string`):

Formation / filing date.

## `maxItems` (type: `integer`):

0 = every match.

## `minRequestInterval` (type: `number`):

Never below 1 (the portals' robots.txt Crawl-delay).

## Actor input object example

```json
{
  "states": [
    "NY",
    "CO",
    "CT",
    "OR"
  ],
  "formedFrom": "2026-09-01",
  "includeInactive": false,
  "includeAssumedNames": false,
  "sortBy": "newest",
  "maxItems": 200,
  "minRequestInterval": 1
}
```

# Actor output Schema

## `items` (type: `string`):

One row per scraped record. See the dataset's default view for field definitions.

# 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": [
        "NY",
        "CO",
        "CT",
        "OR"
    ],
    "formedFrom": "2026-09-01"
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapyx/us-business-registrations-scraper").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": [
        "NY",
        "CO",
        "CT",
        "OR",
    ],
    "formedFrom": "2026-09-01",
}

# Run the Actor and wait for it to finish
run = client.actor("scrapyx/us-business-registrations-scraper").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": [
    "NY",
    "CO",
    "CT",
    "OR"
  ],
  "formedFrom": "2026-09-01"
}' |
apify call scrapyx/us-business-registrations-scraper --silent --output-dataset

```

## MCP server setup

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

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/qcKcXEigxksMYyZV4/builds/rKojxYC6XMvh9nGjP/openapi.json
