# Colorado Business Entity Search — Secretary of State Registry (`foxlabs/usa-colorado-company-data`) Actor

Search Colorado's business entity registry by name or entity ID. Returns entity name, ID, status, entity type, formation date, jurisdiction of formation, principal address and the registered agent's name and address.

- **URL**: https://apify.com/foxlabs/usa-colorado-company-data.md
- **Developed by:** [Berkan Kaplan](https://apify.com/foxlabs) (community)
- **Categories:** Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$4.00 / 1,000 company 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

## Colorado Business Entity Search — Secretary of State Registry

Colorado's Secretary of State publishes the full business entity register as open data, including the registered agent for every entity. This actor searches it by name or entity ID and returns the record with both the principal address and the agent's — which is more contact detail than most US state registries expose — plus the dissolution date and latest status event the register keeps.

**No API key · Official source · Pay only for delivered rows · Same schema across the series**

### What data do you get?

| Field | Description |
|---|---|
| `companyName` | Entity name, without the status note the register appends to it (", Dissolved August 1, 1998") |
| `registrationNumber` | Colorado entity ID |
| `status` | Normalized entity status |
| `statusRaw` | The Secretary of State's own status wording |
| `legalForm` | Entity type code (`DLLC`, `DPC`, `FPC` …) |
| `incorporatedOn` | Entity formation date |
| `dissolvedOn` | Dissolution date, for entities whose current status is not active |
| `statusEvent`, `statusEventOn` | Latest status event noted in the entity's name — *Dissolved*, *Delinquent*, *Delinquency Cured*, *Reinstated*, *Colorado Authority Relinquished* or *Terminated* — and its date |
| `jurisdiction` | Jurisdiction of formation |
| `address` | Principal office address |
| `city`, `state`, `postalCode`, `countryName` | Principal office location |
| `mailingAddress` | Mailing address, when it differs from the principal office |
| `registeredAgent` | Registered agent — a person or a registered-agent company |
| `registeredAgentAddress` | Registered agent address |
| `taxNumber`, `taxNumberSource` | EIN and where it comes from: SEC EDGAR (exchange-listed companies) or the IRS exempt-organization file (nonprofits) |
| `industryCode`, `industry`, `industryClassification` | SIC code and description (listed companies) or NTEE code and major group (nonprofits) |
| `ticker`, `secCik` | Stock ticker and EDGAR CIK (listed companies) |
| `phone` | Business phone: EDGAR (listed companies) or the newest e-filed IRS 990 (nonprofits) |
| `capital`, `capitalAsOf` | Total stockholders' equity (USD) from the latest 10-K/10-Q, and its date (listed companies) |
| `employees`, `employeesAsOf` | Headcount stated in the latest 10-K (listed companies) or on the newest Form 990 (nonprofits; 990-EZ and 990-PF have no headcount line), and that period |
| `website` | The website the 10-K names as the company's own (listed companies), or the one on the newest e-filed 990 (nonprofits) |
| `officers`, `officersSource` | Listed companies: directors and officers who filed SEC insider reports in the newest published quarter. Nonprofits: the officer who signed the newest e-filed 990 and the officers, directors, trustees and key employees it lists (up to 25). With their titles |
| `nonprofitReturnSource` | The IRS return a nonprofit's phone, website, headcount and officers come from (form and tax year end) |
| `nonprofitRevenue`, `nonprofitAssets`, `taxExemptSince` | Revenue and assets on the latest IRS return, and the month of the exemption ruling (nonprofits) |
| `sourceUrl` | Colorado business database search |

Every row also carries `query` (what you asked for), `scrapedAt` (ISO timestamp) and, when a
lookup fails, `error` explaining why.

**Not in the register.** `email` stays `null`: no public source gives it. `taxNumber`, `industry`,
`phone`, `website`, `employees`, `capital` and `officers` come from federal sources and are filled only
where an entity is identified there — listed companies through the SEC, nonprofits through the IRS
(below). A private company, the bulk of the register, has no public source for them.

### Example output

A real row from the prefilled run (`officers` shortened: 10 in full):

```json
{
  "country": "US",
  "registry": "Colorado Secretary of State — Business Entities",
  "companyName": "Palantir Technologies Inc.",
  "registrationNumber": "20201707433",
  "status": "active",
  "statusRaw": "Good Standing",
  "legalForm": "FPC",
  "incorporatedOn": "2020-08-18",
  "dissolvedOn": null,
  "statusEvent": null,
  "statusEventOn": null,
  "jurisdiction": "DE",
  "address": "19505 Biscayne Boulevard, Suite 2350, Aventura, FL, 33180, United States",
  "city": "Aventura",
  "state": "FL",
  "postalCode": "33180",
  "countryName": "United States",
  "taxNumber": "68-0551851",
  "taxNumberSource": "SEC EDGAR",
  "industry": "Services-Prepackaged Software",
  "industryCode": "7372",
  "industryClassification": "SIC",
  "phone": "720-358-3679",
  "website": "https://www.palantir.com",
  "employees": 4429,
  "employeesAsOf": "2025-12-31",
  "capital": 9774194000,
  "capitalAsOf": "2026-06-30",
  "officers": [
    { "name": "Karp Alexander C.", "role": "Director, Chief Executive Officer", "appointedOn": null },
    { "name": "Glazer David A.", "role": "Chief Financial Officer and Treasurer", "appointedOn": null }
  ],
  "officersSource": "SEC insider filings, 2026-Q2",
  "ticker": "PLTR",
  "secCik": "1321655",
  "mailingAddress": null,
  "registeredAgent": "C T CORPORATION SYSTEM",
  "registeredAgentAddress": "7700 E Arapahoe Rd Ste 220, Centennial, CO, 80112, United States",
  "sourceUrl": "https://www.coloradosos.gov/biz/BusinessEntityCriteriaExt.do"
}
```

A nonprofit gets its EIN from the IRS instead — `FOOD BANK OF THE ROCKIES, INC.`: `"taxNumber": "84-0772672"`, `"industryCode": "K31Z"`, `"industry": "Food, Agriculture & Nutrition"`, `"nonprofitRevenue": 175976147`. A dissolved entity from the same run reads `"companyName": "Palantir Investments LLC"`, `"statusRaw": "Voluntarily Dissolved"`, `"dissolvedOn": "2015-07-13"`.

### Input

```json
{
  "queries": ["Palantir","Ibotta","Crocs"],
  "maxResultsPerQuery": 10,
  "maxConcurrency": 4,
  "includeRaw": false
}
```

| Input | What it does |
|---|---|
| `queries` | Entity names (`Palantir`, `Ibotta`) or numeric Colorado entity IDs. |
| `maxResultsPerQuery` | Caps how many rows one query may produce. |
| `maxConcurrency` | How many queries run at once. Lower it if the source starts throttling. |
| `includeRaw` | Attaches the source's untouched record under `raw`, for fields this actor does not map. |
| `requestDelayMs` | Politeness delay between requests. |
| `proxyConfiguration` | Optional. The Socrata API is open and rarely needs a proxy. |

### What people use it for

- **Entity verification** — confirm a Colorado counterparty exists and is in good standing.
- **Registered agent contact** — the agent address is a legally reliable point of contact.
- **Local market research** — search a keyword and count active entities by city or formation year.

### Notes and limits

- Registered-agent fields often name a natural person. That is public in Colorado, but it is still personal data under most privacy regimes. Many entities use a registered-agent company instead, which `registeredAgent` names as such.
- **Federal matches are by name, so they are strict.** Listed companies: the exact name, legal suffix included, an active entity, and a state of incorporation that agrees with the register (EDGAR's list of exchange-listed companies is read once per run). Nonprofits: exactly one IRS exempt organization with the same name at the same ZIP (the IRS file for the entity's state is read once per run). Anything less certain stays empty — most private companies have no public EIN at all.
- A status note stays in the register's name after the status changes again (an entity reinstated after dissolution can still be named "…, Dissolved …"), so `dissolvedOn` is only set while the entity's current status is not active; the note itself is always in `statusEvent`.
- Status wording is Colorado's own (`Good Standing`, `Delinquent`, `Voluntarily Dissolved`); `status` normalizes it and `statusRaw` keeps the original.

### Where the data comes from

The Colorado Secretary of State publishes the business entity register through the state Socrata open-data API with no key; EINs and industry codes come from SEC EDGAR and the IRS Exempt Organizations Business Master File. Sources: [Colorado Information Marketplace — Business Entities](https://data.colorado.gov/Business/Business-Entities-in-Colorado/4ykn-tg5h), [SEC EDGAR](https://www.sec.gov/search-filings), [IRS EO BMF](https://www.irs.gov/charities-non-profits/exempt-organizations-business-master-file-extract-eo-bmf)

### FAQ

#### Is this Colorado business entity scraper free?

The data source is free and needs no API key — you pay only for the rows the run delivers ($0.004 each). Failed or empty lookups are never charged.

#### Do I need an API key or a login?

No. The Colorado Secretary of State publishes the business entity register through the state Socrata open-data API with no key.

#### What can I search by?

Both. A numeric query is looked up as an entity ID; anything else runs a contains-match on the entity name.

#### How current is the data?

Every run queries the source live, so results are as fresh as the source itself. The Secretary of State refreshes the dataset regularly.

#### How fast is it, and how many queries can I run?

Queries run concurrently (4 at a time by default, tunable in the input). A prefilled run finishes in seconds; large lists scale roughly linearly and stay well inside a normal run timeout.

#### Can I export the results to CSV, Excel or JSON?

Yes. Apify datasets export to CSV, Excel, JSON, XML and HTML, and can be pulled through the API or pushed to your own storage.

#### What happens when a query returns nothing?

You still get a row, carrying your original `query` and an `error` field explaining why. Nothing is silently dropped, and you are not charged for it.

#### Is scraping this data legal?

Yes. Colorado publishes the entity register as open data; business filings are public records. Registered-agent records name individuals — that is personal data, so handle it accordingly.

### Changelog

#### 0.1.10 — 2026-09-25 — nonprofits: phone, website, headcount and officers from their 990

- **Nonprofits with an EIN get the contents of their newest e-filed Form 990, 990-EZ or 990-PF**: `phone`, `website`, `employees` (Form 990 only), `officers` (the signing officer plus the officers, directors, trustees and key employees listed, up to 25) and new `nonprofitReturnSource`. Food Bank of the Rockies: 303-371-9250, https://www.foodbankrockies.org, 303 employees, 25 people (tax year ending 2025-06-30). Read from the IRS's own e-file releases through a monthly-rebuilt foXLabs index of every Colorado exempt organization that e-files (14,332; the smallest file only the 990-N postcard, which carries none of this).
- Across those 14,332 returns: phone 84–96% by form, officers 100%, website 74% on Form 990 (54% 990-EZ, 19% 990-PF), headcount on every Form 990.
- An EDGAR placeholder EIN of zeros is no longer passed on.
- No pricing change.

#### 0.1.9 — 2026-09-25 — listed companies: equity, headcount, website, officers

- **For entities matched to an exchange-listed company**, the remaining company fields are filled from the SEC:
  - `capital` — total stockholders' equity from the latest 10-K/10-Q XBRL, with `capitalAsOf` (Palantir Technologies Inc.: $9,774,194,000 at 2026-06-30).
  - `employees` — the headcount the latest 10-K states ("we had 4,429 full-time employees"), with `employeesAsOf`.
  - `website` — the site the 10-K names as the company's own (an investor-relations subdomain is reduced to the company domain).
  - `officers` — directors and officers who filed insider reports (Forms 3/4/5) in the newest published quarter, with their filed titles; `officersSource` names the quarter. People who did not file that quarter are not listed.
- Private companies and nonprofits are unchanged: no public source gives their headcount, capital or officers.
- No pricing change.

#### 0.1.8 — 2026-09-25 — EIN and industry from federal sources

- **`taxNumber`, `industry` and `industryCode` are filled where a federal source identifies the entity**, with the source in `taxNumberSource`:
  - **Exchange-listed companies — SEC EDGAR:** EIN, SIC code and description, business phone, plus new `ticker` and `secCik`. Palantir Technologies Inc. → 68-0551851, 7372, PLTR. The match is strict: the exact name (legal suffix included), an active entity, and a state of incorporation that agrees with the register's jurisdiction — where EDGAR records none, only a foreign registration qualifies. The merged "CROCS, INC." and "CROCS, LTD." are therefore left alone; Crocs, Inc. is matched.
  - **Nonprofits — IRS Exempt Organizations Business Master File:** EIN, NTEE code and major group, plus new `nonprofitRevenue`, `nonprofitAssets` and `taxExemptSince`, when exactly one exempt organization has the same name at the same ZIP code. Food Bank of the Rockies → 84-0772672, K31Z (Food, Agriculture & Nutrition), $175,976,147 revenue. Established nonprofits match about 40% of the time, new ones rarely (they are not in the IRS file yet).
- New `industryClassification` (SIC or NTEE). In the prefilled run `taxNumber` goes from 0% to 17%.
- SEC requests identify the actor and a contact address, as the SEC's fair-access policy asks.
- No pricing change.

#### 0.1.7 — 2026-09-25 — registered agents, dissolution dates and clean names

- **`registeredAgent` was empty whenever the agent is a company** — C T Corporation System, Registered Agents Inc and the like: 717,088 entities, nearly a quarter of the register. It now names them: 43% → 96% of rows in the prefilled run.
- **`dissolvedOn` is filled** for dissolved entities. The register keeps the date only inside the name ("PALANTIR EXPLORATION SERVICES, INC., Dissolved December 2, 2018"); it is now read from there, and `companyName` comes back without the note. Other notes (*Delinquent*, *Reinstated*, *Colorado Authority Relinquished* …) move to the new `statusEvent` / `statusEventOn`.
- `countryName` and the country in the addresses read *United States* instead of the code `US`. New `mailingAddress` when it differs from the principal office.
- README example replaced with a real row (the old one showed an entity ID and formation date that are not Palantir's, and entity type and jurisdiction in a form the actor never returns).
- No pricing change.

### Related actors

- [New York Business Entity Search](https://apify.com/foxlabs/usa-newyork-company-data)
- [Connecticut Business Registry Search](https://apify.com/foxlabs/usa-connecticut-company-data)

***

Built by [Fox Labs](https://apify.com/foxlabs) — B2B company intelligence from public sources, as clean JSON.

# Changelog

This Actor's version history is a separate document: https://apify.com/foxlabs/usa-colorado-company-data/changelog.md

# Actor input Schema

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

Entity names (`Palantir`, `Ibotta`) or numeric Colorado entity IDs.

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

How many rows a single query may produce.

## `maxConcurrency` (type: `integer`):

How many queries to run at the same time. Lower it if the source throttles you.

## `includeRaw` (type: `boolean`):

Attach the source's untouched response under `raw`. Useful when you need a field this actor does not map.

## `requestDelayMs` (type: `integer`):

Politeness delay against a public source. Raise it for large runs.

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

Optional. The Socrata API is open and rarely needs a proxy.

## Actor input object example

```json
{
  "queries": [
    "Palantir",
    "Ibotta",
    "Crocs"
  ],
  "maxResultsPerQuery": 10,
  "maxConcurrency": 4,
  "includeRaw": false,
  "requestDelayMs": 0,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `dataset` (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": [
        "Palantir",
        "Ibotta",
        "Crocs"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("foxlabs/usa-colorado-company-data").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": [
        "Palantir",
        "Ibotta",
        "Crocs",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("foxlabs/usa-colorado-company-data").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": [
    "Palantir",
    "Ibotta",
    "Crocs"
  ]
}' |
apify call foxlabs/usa-colorado-company-data --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,foxlabs/usa-colorado-company-data"
        }
    }
}
```

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/8NRBvtjFr5Qx66t86/builds/ruyjj0MJjqFxUPSS4/openapi.json
