# Business Entity Search: Colorado and Connecticut (`conserving_celerytop/us-state-open-business-registry-api`) Actor

Business entity search for Colorado and Connecticut. Look up entities by name or ID, or list new registrations since a date. Returns name, ID, status, type, formation date and city. No personal data. Independent tool, not affiliated with either state.

- **URL**: https://apify.com/conserving_celerytop/us-state-open-business-registry-api.md
- **Developed by:** [Don Mangu](https://apify.com/conserving_celerytop) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.40 / 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.
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

Use this business entity search API to look up companies in the Colorado and Connecticut state business registries by name or by ID, or to list new registrations since a date, for $2.00 per 1,000 entity records.

Each result is one entity from the state's open data portal: name, entity ID, status, type, formation date, jurisdiction, and the city, state and ZIP code of the principal address. The Actor reads the two datasets through the public Socrata SODA interface of the portals. You need no login, no API key and no proxy. It returns no registered agents who are people, no principals or officers, and no email addresses.

This is an unofficial tool built by an independent developer. It is not affiliated with, endorsed by or operated by the State of Colorado, the Colorado Department of State, the State of Connecticut, the Connecticut Secretary of the State or Socrata.

### A business entity search in a crowded niche

The Store has 658 results for the phrase "business entity search" (read on 9 October 2026), and several of those Actors read the same two portals. If you need 26 states in one Actor, pick a multi-state Actor. This one covers two states and does three things on purpose:

- **Two states, one stated licence.** Colorado and Connecticut are the two states in this Actor because the metadata of each dataset carries the licence field `PUBLIC_DOMAIN`. Every row repeats the licence and the source link. A state is added only after its licence field is read.
- **A new filings mode.** Set Mode to newFilings and a date, and the Actor lists the entities registered since that date in both states, at the same price as a name search. A daily schedule turns it into a feed of new companies.
- **No personal data.** The output keeps the entity, not the people behind it. Registered agents who are persons are left out. A registered agent is returned only when it is a company. The Actor does not request email columns or street addresses.

### How to run a business entity search

1. Click **Try for free**. No API key is needed.
2. Leave **Mode** on search. Pick a **State**, or keep Colorado and Connecticut together.
3. Enter one or more business names in **Entity names**, one per line. Or enter **Entity IDs**: a Colorado entity ID such as 20268247073, or a Connecticut business account number such as 3248198.
4. Leave **Name match** on startsWith for a prefix search. Pick contains to find a word anywhere in the name, or exact for the complete name.
5. Set **Max results**. The prefill is 10, so a first run costs at most $0.02. A common name can match thousands of entities. Max results counts all rows across names and states, and the Actor reads Colorado first, so a small limit on a common name returns Colorado rows only. Pick one state, or raise the limit.
6. Click **Start**, open the **Business entities** view, and export as JSON, CSV or Excel.

To list new registrations, set **Mode** to newFilings and enter **Since date** as YYYY-MM-DD, or as a value such as yesterday or 3 days ago. Leave **Since date** empty to get the last 7 days. **Until date** is today unless you set it.

Typical uses:

- Check that a counterparty exists, is active and has the name and type it claims (know your business, KYB).
- Build a list of newly registered companies in Colorado and Connecticut for sales or service outreach.
- Match a customer file to the state registry by name or entity ID.
- Watch the status of a set of entities by running the same IDs every week.

### Track new business filings every day

In the Apify Console, open **Schedules**, create a schedule with the cron expression `0 7 * * *` (07:00 UTC), and add this Actor with this input:

```json
{
  "mode": "newFilings",
  "sinceDate": "yesterday",
  "untilDate": "yesterday",
  "maxResults": 5000
}
```

Each run then returns the entities with yesterday's formation or registration date, and no entity comes twice. The portals can load an entity after its formation date, so a late entity can miss this window. To catch late entries, use a Since date such as 3 days ago and remove duplicates by state and entityId. Use a dataset export, a webhook, or an integration with Make, Zapier or n8n to send the rows on. You can also call the Actor from your own code with the Apify API.

### Pricing

Pay per event: **$2.00 per 1,000 entity records** ($0.002 per record) on the Free plan, with lower prices on Bronze, Silver and Gold plans. The start of a run costs $0.00005. A record is charged after it is saved. A name, an ID or a date window that finds nothing returns one status row and costs nothing. A run that cannot read the portal is not charged.

Worked example: a name search for Acme with Max results 10 returns up to 10 records and costs at most 10 x $0.002 = $0.02 plus $0.00005. The portals show 3,165 Colorado and 1,045 Connecticut entities with a formation or registration date from 2 October to 8 October 2026. A newFilings run for that week returns 3,165 + 1,045 = 4,210 records and costs 4,210 x $0.002 = $8.42. A daily run for 8 October alone (605 Colorado and 96 Connecticut) is 701 records and costs 701 x $0.002 = $1.402. Those counts come from count queries on the portals on 9 October 2026, read through a fetch tool and not through the Actor. Use Max results to set a ceiling.

### Input examples

A prefix search for Acme in both states:

```json
{
  "mode": "search",
  "state": "all",
  "entityNames": ["Acme"],
  "maxResults": 10
}
```

A name and an ID in both states (this is the prefill of the Actor, and it returns one row in each state when run against the portals):

```json
{
  "mode": "search",
  "state": "all",
  "entityNames": ["Eight & Change"],
  "entityIds": ["3248198"],
  "maxResults": 10
}
```

Look up two entities by ID, one per state:

```json
{
  "mode": "search",
  "entityIds": ["20268247073", "3248198"]
}
```

New registrations in a date window, active entities only:

```json
{
  "mode": "newFilings",
  "sinceDate": "2026-10-07",
  "untilDate": "2026-10-08",
  "activeOnly": true,
  "maxResults": 100
}
```

### Business entity search output example

The rows below come from a fixture run on 9 October 2026, not from a run on the live portals and not from a run on the Apify platform. The sandbox that built this Actor cannot reach the portals, so the Actor was run end to end against a local server that holds rows read from the two portals with a fetch tool on 9 October 2026. Person names and email addresses in those source rows were replaced by test strings before the run, and the output holds none of them. Run the Actor on the platform for live values.

A Colorado row found by ID. The registered agent is a company, so it is returned:

```json
{
  "state": "CO",
  "entityId": "20268247073",
  "sourceRecordId": null,
  "entityName": "Eight & Change LLC",
  "entityType": "DLLC",
  "entityStatus": "Good Standing",
  "entitySubStatus": null,
  "formationDate": "2026-10-08",
  "jurisdictionOfFormation": "CO",
  "principalCity": "Denver",
  "principalState": "CO",
  "principalZip": "80203",
  "registeredAgentOrganization": "Northwest Registered Agent LLC",
  "annualReportDueDate": null,
  "dissolutionDate": null,
  "naicsCode": null,
  "query": "20268247073",
  "retrievedAt": "2026-10-09T13:59:38.285Z",
  "source": "Colorado open data portal: Business Entities in Colorado",
  "sourceUrl": "https://data.colorado.gov/d/4ykn-tg5h",
  "licence": "Public Domain (Socrata licenseId PUBLIC_DOMAIN). The data made available here has been modified for use from its original source, which is the State of Colorado. No warranty, see https://data.colorado.gov/terms",
  "resultStatus": "ok",
  "message": null
}
```

A Connecticut row from the name search. Connecticut city, state and ZIP come from the billing address, which can lie outside Connecticut:

```json
{
  "state": "CT",
  "entityId": "3160933",
  "sourceRecordId": "001eq00000OcLf8AAF",
  "entityName": "ACME View Property Management LLC",
  "entityType": "LLC",
  "entityStatus": "Active",
  "entitySubStatus": null,
  "formationDate": "2025-02-25",
  "jurisdictionOfFormation": "Connecticut",
  "principalCity": "North Chelmsford",
  "principalState": "MA",
  "principalZip": "01863",
  "registeredAgentOrganization": null,
  "annualReportDueDate": "2027-03-31",
  "dissolutionDate": null,
  "naicsCode": "Other Activities Related to Real Estate (531390)",
  "query": "ACME",
  "retrievedAt": "2026-10-09T13:59:37.372Z",
  "source": "Connecticut open data portal: Connecticut Business Registry - Business Master",
  "sourceUrl": "https://data.ct.gov/d/n7gp-d28j",
  "licence": "Public Domain (Socrata licenseId PUBLIC_DOMAIN). No warranty of accuracy, see https://data.ct.gov/terms",
  "resultStatus": "ok",
  "message": null
}
```

A name that finds nothing returns one free status row:

```json
{
  "state": null,
  "entityId": null,
  "sourceRecordId": null,
  "entityName": null,
  "entityType": null,
  "entityStatus": null,
  "entitySubStatus": null,
  "formationDate": null,
  "jurisdictionOfFormation": null,
  "principalCity": null,
  "principalState": null,
  "principalZip": null,
  "registeredAgentOrganization": null,
  "annualReportDueDate": null,
  "dissolutionDate": null,
  "naicsCode": null,
  "query": "ZZZZ NOTHING",
  "retrievedAt": "2026-10-09T13:59:39.939Z",
  "source": "Colorado and Connecticut open data portals",
  "sourceUrl": null,
  "licence": null,
  "resultStatus": "no_match",
  "message": "No entity matched the name ZZZZ NOTHING (startsWith) in CO and CT."
}
```

#### What each result holds

| Field | Meaning |
|---|---|
| state | CO for Colorado, CT for Connecticut |
| entityId, sourceRecordId | Colorado: the entity ID. Connecticut: the business account number as entityId, and the portal record ID as sourceRecordId |
| entityName | Name as filed. Colorado adds the status and date to the name of a dissolved or delinquent entity |
| entityType, entityStatus, entitySubStatus | Type, status and Connecticut sub-status, as the state writes them |
| formationDate | Colorado: formation date. Connecticut: registration date. YYYY-MM-DD |
| jurisdictionOfFormation | Where the entity was formed: a code such as CO or DE in Colorado, a state name in Connecticut |
| principalCity, principalState, principalZip | Colorado: principal address. Connecticut: billing address, because the Connecticut master table has no principal address |
| registeredAgentOrganization | Name of the registered agent when it is a company. Colorado only |
| annualReportDueDate, dissolutionDate, naicsCode | Connecticut only |
| query, retrievedAt, source, sourceUrl, licence | Which query found the row, when it was read, and where it comes from |
| resultStatus, message | ok for an entity. no_match for a query that found nothing, with an explanation |

### Related Actors

For company data from other registries, the same author has [Company Registry Search: GLEIF LEI, Norway & Finland](https://apify.com/conserving_celerytop/open-company-registries), [Companies House API](https://apify.com/conserving_celerytop/uk-companies-house-api), [French Company Search API](https://apify.com/conserving_celerytop/french-company-search-api) and [Startup Funding Rounds Tracker: SEC Form D Raises, Daily](https://apify.com/conserving_celerytop/form-d-funding-rounds). To find the website of a company you found here, see [Company Name to Domain](https://apify.com/conserving_celerytop/company-name-to-domain).

### FAQ

**Where does the data come from?** From two public datasets on state open data portals: "Business Entities in Colorado" (dataset 4ykn-tg5h on data.colorado.gov, published by the Colorado Department of State) and "Connecticut Business Registry - Business Master" (dataset n7gp-d28j on data.ct.gov, published by the Secretary of the State). On 9 October 2026 a count query showed 3,120,546 rows in the Colorado dataset and 1,301,912 rows in the Connecticut dataset. The Actor sends read-only SODA queries over HTTPS. It does not scrape a website and does not log in.

**Is it legal to use?** The dataset metadata of both portals carries the licence field `licenseId: "PUBLIC_DOMAIN"`, and the Colorado metadata adds `license: {"name": "Public Domain"}`. The attribution fields read "CDOS" for Colorado and "Secretary of the State" for Connecticut. These were read on 9 October 2026 from the portals' `/api/views/<id>.json` metadata. The portals' terms pages say the following. Colorado (data.colorado.gov/terms): applications using the data "must include the following disclaimers on their sites": "The data made available here has been modified for use from its original source, which is the State of Colorado." "THE STATE OF COLORADO MAKES NO REPRESENTATIONS OR WARRANTY AS TO THE COMPLETENESS, ACCURACY, TIMELINESS, OR CONTENT OF ANY DATA MADE AVAILABLE THROUGH THIS SITE." "THE STATE OF COLORADO EXPRESSLY DISCLAIMS ALL WARRANTIES, WHETHER EXPRESS OR IMPLIED, INCLUDING ANY IMPLIED WARRANTIES OF MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE." "The data is subject to change as modifications and updates are complete." "It is understood that the information contained in the Web feed is being used at one's own risk." The Colorado terms also say the State may modify or discontinue data feeds and may require users to stop using the data. Connecticut (data.ct.gov/terms): the State "shall make no warranty, representation or guaranty of any type as to the content, accuracy, timeliness" of the data. Neither terms page mentions automated access or rate limits. Both pages were read through a summarising fetch tool, so check the wording on the portals. This is a description of what the sources say and not legal advice.

**Does the output hold personal data?** The Actor keeps the entity, not the people. It reads the first and last name columns of the Colorado registered agent only to tell a person from a company, and it never writes them. The registered agent organization is returned only when the agent is a company and no person name is filled in the same record. It does not request the email columns of Connecticut or any street address. An entity name can contain a person's name, for example a sole trader LLC, because the name is the registered name. Do not use the data to profile private persons.

**How fast does it read, and what are the limits of the portals?** One request at a time, with at least 400 ms between requests, so at most 2.5 requests per second. A page holds up to 2,000 rows. The Socrata documentation says requests without an app token come from a shared pool per IP address and are subject to "a much lower throttling limit", and that throttled requests receive HTTP 429. It publishes no number. This Actor uses no app token and asks the buyer for none. It retries a 429 or a 5xx answer twice with a pause (it honours a Retry-After header if the portal sends one, otherwise 2 s and 4 s), and it stops the run when the portal answers HTTP 403, or HTTP 429 after the retries, so that it does not keep hitting a limit.

**What does "new filings" mean?** An entity with a formation date (Colorado) or a registration date (Connecticut) in your window. Later changes to an old entity, such as an amended name or a new status, are not new filings. The Colorado dataset holds a few rows with a formation date in the future, for example a delayed effective date. Until date is today by default, so those rows come in when their date arrives.

**Why does a Colorado name carry a date?** Colorado writes the status and date into the name of a dissolved or delinquent entity, for example "ACME CLEANERS, INC., Dissolved November 8, 1984". The Actor returns the name as the portal holds it. The exact match type needs that full text, so use startsWith to find these entities.

**Why is the Connecticut address sometimes outside Connecticut?** The Connecticut master table holds a billing address and no principal address, so principalCity, principalState and principalZip show the billing address. A company formed elsewhere and registered in Connecticut can have a billing address in another state.

**Why do I see different data on the state's own website?** The state's own search page is the legal record. The open datasets update on their own schedule (the Colorado metadata says "Every day after midnight") and can differ from that page in content and timing. This Actor also leaves out people and officers. Check the state's website when a decision depends on one record.

**Why did a query return one row with no_match?** Nothing in the selected states matched. That row costs nothing. Check the spelling, try contains instead of startsWith, or enter fewer words.

**What if the run fails?** If a portal answers with an error or throttles the request, the run stops for that query with a clear message and charges nothing for it. If the other state worked, you keep its rows. A message such as "No such column" means the state changed its dataset. Run again later, and tell the author through the Issues tab.

**Can I ask for another state?** Yes, through the Issues tab. A state is added only after its dataset metadata and terms are read, and only when its portal states a public domain licence.

I built this Actor myself as an independent developer. Data: Colorado Department of State and Connecticut Secretary of the State, through the Colorado Information Marketplace and the Connecticut Open Data Portal.

# Actor input Schema

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

Pick search to look up entities by name or ID. Pick newFilings to list entities with a formation or registration date in a date window.

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

Pick the state portal to read. Pick all to read both portals for every query.

## `entityNames` (type: `array`):

Enter one business name per line, for example Eight & Change. Every name runs in every selected state. Used by the search mode.

## `entityIds` (type: `array`):

Enter one entity ID per line: a Colorado entity ID such as 20268247073 or a Connecticut business account number such as 3248198. Used by the search mode.

## `sinceDate` (type: `string`):

Enter a date as YYYY-MM-DD, for example 2026-10-01, or a value such as yesterday or 3 days ago. The newFilings mode returns entities with a formation date (Colorado) or registration date (Connecticut) on or after this date. Leave empty for the last 7 days.

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

Return at most this many entity rows in total, across all names and states. Each row returned is one charged result. The Actor reads Colorado first and then Connecticut, so a small limit on a common name such as Smith returns Colorado rows only. Pick one state or raise the limit to see both.

## `matchType` (type: `string`):

Pick how a name is matched. Matching ignores upper and lower case. Exact needs the complete name; Colorado adds the status and date to the name of a dissolved entity.

## `untilDate` (type: `string`):

Enter the last day of the window as YYYY-MM-DD, or a value such as yesterday. Leave empty for today. Today as the end of the window keeps out rows that carry a formation date in the future.

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

Return only entities in good standing: status Good Standing in Colorado and Active in Connecticut. Colorado entities with status Delinquent are left out.

## Actor input object example

```json
{
  "mode": "search",
  "state": "all",
  "entityNames": [
    "Eight & Change"
  ],
  "entityIds": [
    "3248198"
  ],
  "maxResults": 10,
  "matchType": "startsWith",
  "activeOnly": false
}
```

# Actor output Schema

## `entities` (type: `string`):

No description

## `stats` (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 = {
    "entityNames": [
        "Eight & Change"
    ],
    "entityIds": [
        "3248198"
    ],
    "maxResults": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("conserving_celerytop/us-state-open-business-registry-api").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 = {
    "entityNames": ["Eight & Change"],
    "entityIds": ["3248198"],
    "maxResults": 10,
}

# Run the Actor and wait for it to finish
run = client.actor("conserving_celerytop/us-state-open-business-registry-api").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 '{
  "entityNames": [
    "Eight & Change"
  ],
  "entityIds": [
    "3248198"
  ],
  "maxResults": 10
}' |
apify call conserving_celerytop/us-state-open-business-registry-api --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,conserving_celerytop/us-state-open-business-registry-api"
        }
    }
}
```

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/oS52X6qwkZVYuDVq2/builds/XJV9heV4Kdcw0uNjE/openapi.json
