← Guides

How-to

How to run Multi-State Corporate & Business Entity Registry (CO, CT, OR)

Step-by-step: the exact input, what each field does, and the rows that come back from Socrata (CO/CT/OR SOS).

You want a feed of businesses that were registered this week, before anyone else has called them — new LLCs to prospect, fresh formations as an economic signal, a roster to enrich a credit file with. The state gives you that for free, and that is exactly the problem: each secretary of state gives it to you in its own shape. Colorado calls the name column entityname, Connecticut calls it name, Oregon calls it business_name; the date fields, the entity-type codes and the address columns all differ too. Doing it by hand means three separate queries, three different column mappings, and a spreadsheet you re-stitch every morning. This actor runs those three queries for you and hands back one table.

Two things to be plain about before you spend a cent. The scope is three states: Colorado, Connecticut and Oregon. Not fifty, not “and growing fast” — three. And the data underneath is a free public API. Every row here comes from a state’s own Socrata open-data portal, which anyone can query with a URL and no key. What you’re buying is the wiring — one schema, one date filter, one run, one nightly check that the shape hasn’t changed — not access to something you couldn’t otherwise get. If you’re happy writing three HTTP clients and a normaliser, you should; it is a free feed and there is no wall to climb.

What you’ll need

Nothing but an Apify account. The actor talks to Socrata (CO/CT/OR SOS) directly.

No API key, no proxy, no CAPTCHA budget. Socrata’s SODA endpoints are open JSON: the actor fetches them straight, unauthenticated, and nothing in the middle costs money. (A free Socrata app token raises the rate limit if you’re hammering it; the actor works fine without one, and you don’t have to supply one.) There is no anti-bot layer to defeat here and the actor doesn’t pretend there is — this is the easiest class of target in the portfolio.

Step 1 — Open the actor

Open Multi-State Corporate & Business Entity Registry (CO, CT, OR) on the Apify Store and press Try for free. The actor’s own page on this site lists its live health and pricing.

The Multi-State Corporate & Business Entity Registry (CO, CT, OR) listing on the Apify Store
The listing on the Apify Store. Pricing and the nightly health record are both public.

Step 2 — Fill in the input

The input form for Multi-State Corporate & Business Entity Registry (CO, CT, OR) in the Apify Console
The input form, as it appears in the Apify Console.
FieldTypeRequiredWhat it does
statesarraynoWhich states to pull (2-letter codes). Leave empty to pull all supported states. Supported: CO, CT, OR.
sinceDatestringnoOnly return entities formed/registered on or after this date (YYYY-MM-DD). Leave empty to pull the most recent entities regardless of date — set this (e.g. to yesterday) for a…
querystringnoOptional substring match on business/entity name. Leave empty to pull the newest entities instead of searching by name.
maxResultsintegernoCap on records returned across all selected states (bounds cost). (default 100)

sinceDate is the field that turns this from a bulk dump into a new-registration feed, and it is the one people leave empty by accident. Set it and you get entities whose formation/registration date is on or after that day; leave it empty and you get the most recent entities the state has published, whatever their date. For prospecting, that means a daily schedule with sinceDate set to yesterday. But be honest about what “delta” means here: it is a filter, not a bookmark. The actor keeps no memory between runs. Re-run yesterday’s sinceDate tomorrow and you’ll get yesterday’s rows again — and be charged for them again. The delta only stays a delta if the date rolls forward with the schedule.

maxResults is a global cap across all selected states, not a per-state one, and the states are pulled in order — CO, then CT, then OR. So maxResults: 100 against all three states is very likely 100 rows of Colorado and nothing else. If you want all three represented, either set the cap high enough for the volume you expect (a few hundred, for a one-day window) or run one state per run. Above that, one more ceiling worth knowing: each state is fetched at most 200 rows deep in a single run, so the practical maximum for a three-state run is 600 rows however high you set the cap. If you’re back-filling a wide date range, walk it a few days at a time rather than asking for everything at once.

query is a name substring search over the whole roster, not just new formations — use it when you’re checking a specific company rather than watching for new ones. If you set both query and sinceDate, they’re ANDed: that name, registered since that date.

A working input:

{
  "states": [
    "CO",
    "CT",
    "OR"
  ],
  "sinceDate": "2026-07-06",
  "maxResults": 500
}

Step 3 — Run it

Press Start. Rows are pushed to the dataset as they’re found, so the run log fills in as it works.

This is a handful of plain JSON calls — one query per state — so a run is short: seconds, not minutes, with no browser to start and no pages to walk. A one-week sinceDate across all three states will comfortably hit whatever cap you set; a one-day window is a smaller, steadier trickle.

An empty run is a result, not a fault. The usual cause is that the window is ahead of the data: each state refreshes its own open-data feed on its own cadence (typically daily), so a sinceDate of today can legitimately return nothing simply because today’s filings haven’t been published yet. Back the date off by a day or two and see if the rows appear. The other common cause is a query substring that matches nothing. If a single state fails — Socrata returns a 5xx, say — the run logs it, skips that state and returns the others rather than failing the whole thing, so check the log before you conclude a state has no data.

Step 4 — Read the output

Each run returns a labelled table, not raw JSON:

The output fields returned by Multi-State Corporate & Business Entity Registry (CO, CT, OR)
The output view — every field the actor returns, named and typed.

Every row looks like this — a real row from a real run:

{
  "state": "CO",
  "entity_id": "20251665680",
  "entity_name": "KYLDERON MIST VALLEY LLC",
  "entity_type": "DLLC",
  "status": "Good Standing",
  "formation_date": "2025-06-16T00:00:00.000",
  "jurisdiction": "CO",
  "principal_address": "660 Willow Wood Ln",
  "principal_city": "Delta",
  "principal_state": "CO",
  "principal_zip": "81416",
  "agent_name": "KEQIANG DENG",
  "agent_address": "660 Willow Wood Ln",
  "agent_city": "Delta",
  "agent_state": "CO",
  "agent_zip": "81416",
  "source_url": "https://www.sos.state.co.us/biz/BusinessEntityCriteriaExt.do"
}
FieldExample valueMeaning
stateCO2-letter state code the entity is registered in
entity_id20251665680State-assigned entity/registry number
entity_nameKYLDERON MIST VALLEY LLCRegistered business/entity name
entity_typeDLLCState’s raw entity-type code (e.g. LLC, corporation)
statusGood StandingEntity status where the state publishes it (e.g. Good Standing, Active)
formation_date2025-06-16T00:00:00.000Date the entity was formed/registered
jurisdictionCOState/jurisdiction of formation
principal_address / principal_city / principal_state / principal_zipPrincipal place of business location

If you’re prospecting, the fields you actually came for are formation_date — the whole point, the thing that tells you this business is days old — plus entity_name and the principal_* address block, which is where you’d actually reach them. entity_id is the key to hold onto: it’s the state-assigned registry number, and it’s what lets you de-duplicate across runs, which you will need to do, because the actor won’t do it for you.

The thing to watch is that the three states do not publish the same columns, and the actor does not fabricate the missing ones — anything a state doesn’t publish comes back null:

  • Colorado is the richest: status, jurisdiction, mailing address, and a registered agent with an address. Where the agent is a person rather than a firm, the name is assembled from the first- and last-name columns.
  • Connecticut gives you status and jurisdiction, but no mailing address and no registered agent in this dataset (the state publishes agents separately, and this actor does not join them in).
  • Oregon has no status and no registered agent at all in the feed it reads, which is Oregon’s principal-place-of-business records. Expect status: null on every Oregon row; it is not a bug.

Two formatting notes. formation_date comes back as a Socrata timestamp (2025-06-16T00:00:00.000), not a plain date — take the first ten characters if you want a date. And entity_type is the state’s own raw code, not a normalised label: Colorado’s DLLC means a domestic LLC, and the other states use their own vocabulary. If you’re filtering to LLCs across all three, you’ll need to map those codes yourself.

Step 5 — Export it

Open the Dataset tab and export to CSV, JSON, or Excel — or pull the same rows from the API, which is what you want if this is going to run on a schedule.

What it costs

You pay $0.0015 per entity record returned — 2,000 records is $3.00. A run that matches nothing returns nothing and costs nothing. Apify’s own platform usage (compute) is billed separately on top, and this is a plain JSON fetch with no browser, so that part is small.

In practice: a daily prospecting schedule with sinceDate set to yesterday across all three states is a couple of hundred rows on a busy weekday — call it 30-odd cents — and near zero on a holiday. The way to make it expensive is to re-run a wide sinceDate on a frequent schedule: a 30-day window run every morning re-charges you for the whole month, every morning, because the actor has no memory of what it already gave you. Roll the date forward, cap maxResults at a number you’re willing to pay for, and it can’t surprise you.

And the honest comparison, again: the underlying Socrata endpoints are free, public, and need no key. If you’re willing to write three clients and a column mapper, the data costs you nothing at all. What this charges for is not having to.

Where the data comes from

This reads Socrata (CO/CT/OR SOS) directly. The target is Socrata SODA JSON APIs - one dataset per state (CO, CT, OR secretaries of state), delta-pulled on each state’s date field into one normalised schema. Every night a canary runs this actor against that live source and diffs the result against a frozen fixture — what “verified” means.

Socrata is the open-data platform a lot of US governments publish on, and each of these three states hosts its business-entity register there as a queryable dataset: data.colorado.gov, data.ct.gov, data.oregon.gov. Nothing is scraped and nothing is resold — these are the states’ own feeds, read through their own public API. The annoyance is not access, it’s shape: three different column vocabularies, three different date fields to filter on, and per-state quirks (Oregon’s dataset holds several address-type rows per business, so the actor has to filter to the principal-place-of-business ones or you’d get duplicates). Getting that right once is an afternoon; keeping it right as the states quietly rename a column is the part that never ends, and it is the part the nightly canary covers.

That is also why coverage stops at three. Plenty of states advertise business-entity open data and then hand you a link to a search page rather than a dataset you can query — Washington is the standard example. A state gets added here when it actually exposes a queryable Socrata dataset, not when it announces one.

See it used

Three worked write-ups, one per job this actor actually gets opened for:

If it’s licences rather than registrations you’re chasing, reach for the Multi-State Contractor License Lookup instead — that one verifies a contractor’s trade licence and status across several states, which is a compliance check, not a prospecting feed. And if you want businesses at the point they apply to trade in a city rather than incorporate in a state, the Municipal Business License Aggregator is the closer match.

Last updated 2026-07-13