Secretary of State Business Entity Search - KYB (CO, NY, CT) avatar

Secretary of State Business Entity Search - KYB (CO, NY, CT)

Pricing

from $16.00 / 1,000 registry checks

Go to Apify Store
Secretary of State Business Entity Search - KYB (CO, NY, CT)

Secretary of State Business Entity Search - KYB (CO, NY, CT)

Look up businesses in the Colorado, New York and Connecticut Secretary of State registries: status where published, registered agent, addresses, formation date and source URL, $0.02 per record. Optionally enroll a portfolio and get status, agent, name and address change events on your own schedule.

Pricing

from $16.00 / 1,000 registry checks

Rating

0.0

(0)

Developer

Paul Mikulskis

Paul Mikulskis

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

11 days ago

Last modified

Share

Merchant Registry Watch is a Secretary of State business entity search for Colorado, New York and Connecticut. Give it a state entity id (or a company name) and it returns one flat KYB lookup record per business: current company status where the state publishes one, registered agent, addresses, formation date, jurisdiction, the exact source URL and a checked-at timestamp. That is the check mode, the default, and each record costs $0.02.

If you want that same lookup repeated, enroll a portfolio in a watch: inside your own scheduled runs it polls each business daily, compares it to a stored snapshot, and delivers status-change, registered-agent, name and address events, plus a monthly attestation row when nothing changed. The watch is optional and recurring, $0.50 per business per month, and the lookup works without it.

Coverage is three state registries, all official open data: Colorado (data.colorado.gov), New York (data.ny.gov) and Connecticut (data.ct.gov). Out-of-state businesses that are foreign-qualified in those states appear too: in one measured data.ct.gov file, 191,186 of 1,269,755 categorized registrations (15.1%) were foreign. The actor runs on the Apify platform, so you get API access, scheduling, integrations and run history without operating any infrastructure yourself.

How to search a Secretary of State business registry with this actor

  1. Leave Mode on Check (point-in-time). It is the default.
  2. Put your businesses in the Businesses field, one object each: { "state": "CO", "entityId": "20251665680" }. state is CO, NY or CT; entityId is that state's own id (Colorado entityid, New York dos_id, Connecticut accountnumber). Up to 1000 per run.
  3. Don't have the id? Pass a name instead: { "state": "CT", "name": "Rype L.L.C." }. A unique exact match resolves; anything ambiguous comes back as free candidate rows so you can pick the right id yourself.
  4. Click Start. Each delivered record costs $0.02. Set Dry run to preview up to 5 rows and charge nothing.

Nothing recurring happens unless you set it up: a check run creates no watch and no schedule.

What Merchant Registry Watch does

  • Registry check (mode: check): give it a list of businesses by state entity id (or by name) and get back one flat record each, with the registry fields documented in the Output table below and the exact Socrata source URL the record was read from. This is a KYB evidence artifact you can attach to a file, not a lead list.
  • Watch (mode: watch): enroll a portfolio and, on every run, poll each business and compare it to its last snapshot. Changes come back as event rows with the field, the before value and the after value. A month with no change delivers one attestation row per business ("status verified current as of DATE"), so you can see what the watch fee bought.
  • List events (mode: list-events): read back this watch's stored change-event history for the last N days.
  • Unwatch (mode: unwatch): remove businesses from a watch.

New York has no status column in its open dataset (it is an actives-only roster), so a New York status change is detected as the business leaving the roster, with guards described below. Colorado and Connecticut publish a status field directly.

Onboarding a merchant, vendor or borrower means asking the registry itself: is this company in good standing right now, who is its registered agent, and where is it? A check run answers that for a whole list at once and hands back a dated evidence row per business with the exact state source URL on it, so the answer is still auditable months later instead of living in a screenshot someone took. The same row serves a KYB onboarding file, a vendor diligence review, a portfolio spot-check, or an AI agent that needs a company-status lookup it can call.

The watch exists for what happens after onboarding. Payment facilitators, SMB lenders, B2B marketplaces and vendor-management teams typically verify a business once and then stop looking, so when a merchant lapses into delinquency, is administratively dissolved, or swaps its registered agent, the risk team may not learn of it until chargeback time. The enterprise product for that ongoing surveillance is Middesk Monitor, a per-entity-per-month add-on inside contracts that carry $10,000 to $30,000 annual minimums (vendr.com/marketplace/middesk). This actor does the registry-only slice of that job for a 50 to 500 entity book: three states, an API, a webhook, per-entity event history, and one callable tool for an AI KYB pipeline that needs a standing "tell me if this vendor's registration changes" check.

How watching works (read this before you schedule)

Checks and diffs run inside your own scheduled Apify runs. This is not a hosted daemon that wakes itself: no schedule means no polls, no events and no charges. To watch a portfolio daily:

  1. Run the actor once in watch mode with your businesses and a watchName. This enrolls them and stores the first snapshot in named stores in your account.
  2. Open the actor, go to Schedules, and add a daily schedule that runs it with the same input. That schedule is what makes it a standing watch.

The watch memory (snapshots, event history, per-month billing) lives in named key-value stores and a named dataset in your account, keyed by watchName, so it persists across your scheduled runs and builds a history a fresh copy cannot backfill.

Input

FieldTypeNotes
modecheck | watch | unwatch | list-eventsDefault check.
businessesarray of { state, entityId } or { state, name }1 to 1000 items. state is CO, NY or CT. entityId is that state's own id: Colorado entityid, New York dos_id, Connecticut accountnumber. A name-only entry is resolved against the registry and enrolls only on a unique exact match; an ambiguous name returns an uncharged candidate list to confirm by id. Required for check, watch and unwatch.
watchNamestringDefault default. Lowercase letters, digits and hyphens, 1 to 40 characters. Names the watch so its memory persists across runs.
sinceDaysintegerDefault 30, 1 to 365. For list-events: how many days of history to return.
webhookUrlstringOptional https URL that receives a POST with this run's events. Best-effort only; the dataset is the durable record. Put a secret token in the URL yourself if you need to verify the caller.
dryRunbooleanDefault false. Preview up to 5 rows total, charging no PPE events and writing no watch, no billing record and no event history. It does still open and read named storage (and may provision it), and it writes OUTPUT and any preview rows to the dataset, so ordinary user-paid Apify platform usage still applies. The OUTPUT charged field reports whether PPE pricing is enabled for this run, not whether a charge landed.

Worked examples

Check two businesses by id (the default input, costs $0.04):

{ "mode": "check", "businesses": [ { "state": "CT", "entityId": "2784043" }, { "state": "CO", "entityId": "20251665680" } ], "dryRun": false }

returns two check rows: the Connecticut business 2784043 and the Colorado business 20251665680, each with its current status, agent, addresses and source URL.

Resolve a business by name, then confirm by id. A name-only entry never enrolls on a guess. Input { "state": "CT", "name": "Rype L.L.C." } returns uncharged candidate rows when the name is not a unique exact match (for example both "Rype L.L.C." and "RYPE LLC" exist as distinct Connecticut businesses). Pick the right accountnumber from the candidate rows and pass it as entityId to check or watch that exact business.

Watch a portfolio:

{ "mode": "watch", "watchName": "vendors", "businesses": [ { "state": "CO", "entityId": "20251665680" }, { "state": "NY", "entityId": "4424185" } ] }

enrolls both, delivers their first snapshots, and on later scheduled runs returns only what changed.

Output

Every row is flat. The rowType field tells you what a row is: check (a point-in-time record), event (a detected change, with eventType, changedField, before, after), attestation (a no-change month confirmation), candidate (a name-disambiguation option, uncharged), truncation-marker (entities withheld at your run's charge limit, uncharged), watch-expired (an entity idle past 60 days, uncharged), poll-failed (a fetch that failed this run, uncharged) and unwatched (a removal confirmation).

FieldMeaning
rowTypeWhat this row is (see above).
stateCO, NY or CT.
entityKey / displayIdThe state's customer-facing id.
legalNameLegal name. For Colorado, any status annotation the source embeds in the name is stripped.
status / subStatusRegistry status. Always empty for New York (see below).
formationDate / dissolutionDateFormation date; dissolution date where the state publishes it (Connecticut).
registeredAgent / agentAddressRegistered agent and its address.
principalAddressPrincipal or business address.
jurisdictionOfFormationState or territory of formation.
statusSemanticsstatus-column for CO and CT; active-roster-presence for NY.
eventType / changedField / before / afterSet on event rows: what changed and its old and new values.
eventSourcelive-diff for real diffs; historical-reconstruction for the demo section.
checkedAtISO timestamp of the poll.
sourceUrlThe exact Socrata resource this row was read from. Verify any record or event here before acting.
billingHow the row was billed: registry-check, watch-month, unbilled or dry-run.

You can download the dataset in JSON, HTML, CSV or Excel.

Per-state semantics

StateStatusNotes
ColoradoFull status vocabulary (for example "Good Standing", "Delinquent").The source occasionally embeds the status inside the name string; the legal name is cleaned. Registered agent and addresses included.
Connecticutstatus and sub_status, plus dissolution_date.Registered-agent data comes from a companion dataset joined on the business key. If the companion is briefly unavailable, status events still deliver and the run says so.
New YorkNo status column. statusSemantics is active-roster-presence.The dataset is an actives-only roster, so a status change surfaces as the business leaving the roster. A disappeared-from-roster event fires only after a business is absent for 3 or more consecutive daily polls, on a fresh feed whose total row count is within tolerance of the watch's baseline, and only when a targeted re-query also finds it gone. If more than 5% of your watched New York portfolio goes missing in one run, a circuit breaker marks the feed suspect and suppresses both the New York disappearance events and their charges for that run. A residual false positive is possible; verify against the source URL before acting.

Pricing: how much does a registry lookup cost?

Two events, and the second one applies only if you ask for it. A lookup-only run charges the first and nothing else: 40 businesses checked is $0.80.

  • Registry check: $0.02 per delivered record. This is the entry price and the only charge in check mode. Also charged once per business for the first snapshot row when you enroll it in a watch. Candidate (disambiguation) rows are never charged.
  • Entity watch-month: $0.50 per business per calendar month. The optional recurring charge, billed only in watch mode. Charged once per business per month, only after a successful poll on a fresh feed, and only inside a customer-initiated run. It covers that month's daily polls, all of that business's change events, and the monthly attestation row.

Limits built into the billing:

  • The first calendar month of watching is free (watch-months are not charged that month; checks are).
  • A failed poll is never charged. A business whose fetch keeps failing on an otherwise fresh feed returns uncharged notes and costs nothing until a poll completes.
  • No charge in a month a feed is stale. If a state's feed has not refreshed within 48 hours, that state's watch-months are deferred to a later run that month.
  • Idle watches expire at 60 days. A business that no run has polled for over 60 days expires and stops being charged; the expiry row itself is free.
  • If your run hits its max-charge limit, remaining businesses are withheld (not polled, not billed) and a truncation-marker row names how many. The next run polls and charges them.

Colorado also offers free single-entity email and text alerts to anyone; if you only need to watch a handful of Colorado businesses one at a time, that is the honest budget alternative. Merchant Registry Watch is for portfolio-scale, multi-state watching with an API, webhook and event history.

Demo datasets

What a lookup returns (current, all three states)

https://api.apify.com/v2/datasets/ROGO7uPn6t1baeqf5/items?format=json (browse it at https://api.apify.com/v2/datasets/ROGO7uPn6t1baeqf5/items?format=html)

Six real check rows from one run, two per state, showing both what a lookup returns and how the three registries differ:

StateEntity idLegal nameStatus returned
CO20251665680KYLDERON MIST VALLEY LLCGood Standing
CO20251005762APEX NETWORK TECH INC.Delinquent
CT2784043Rype L.L.C.Dissolved, dissolution date 2026-06-16
CT2766822JEGRILLO HAIR, LLCActive
NY4424185BUTCHY'S WINE & SPIRITS, INC.empty: New York publishes no status column, and this business is present on the actives roster
NY4072354GRACE SEAFOOD CORP.empty, present on the actives roster

Every row carries its registered agent, addresses, formation date and the exact sourceUrl it was read from. Open any sourceUrl to verify the record against the state.

What a change event looks like

https://api.apify.com/v2/datasets/0KvaScvVL68iP5edQ/items?format=json (browse it at https://api.apify.com/v2/datasets/0KvaScvVL68iP5edQ/items?format=html). It shows 50 real event rows for 25 Connecticut businesses that data.ct.gov recorded as newly dissolved, each with two rows (the status change and the dissolution-date change), legal name, agent, addresses, and the exact sourceUrl.

These rows are a labeled reconstruction of real filed transitions, not a live-captured diff: each entity's current record was read from the live Connecticut registry, and the "before" state (Active, no dissolution date) is reconstructed rather than observed at an earlier poll, since a fresh actor has no prior snapshot to diff against. Every row carries eventSource: "historical-reconstruction" for that reason. Once a watch has run for a full poll cycle, its event rows carry eventSource: "live-diff" instead, meaning both states were observed. The underlying business data (names, statuses, dissolution dates, addresses) is real and verifiable at each row's sourceUrl; only the "before" pairing is reconstructed.

Data sources and disclaimers

The original sources are the states' own open-data portals. Records are modified from source only by normalizing field names into the documented output schema and, for Colorado, stripping a status annotation the source embeds in the name. Every row carries the exact sourceUrl of the resource it came from.

Colorado (data.colorado.gov). Applications using this data must carry the state's disclaimer verbatim:

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.

Connecticut (data.ct.gov). Provided as-is by the State of Connecticut with no warranty and with the state's right to discontinue the feed. Attribution: Secretary of the State. The registry dataset declares a public-domain license.

New York (data.ny.gov). Attribution: New York State Department of State. The data is provided as-is with no warranty and no claim of state endorsement.

Limitations

  • Three states only (Colorado, New York, Connecticut), including businesses foreign-qualified in those states.
  • New York signals are roster presence, not a legal status field. Even with the guards above, a New York disappearance event can still be a false positive; verify at the row's source URL before acting.
  • Connecticut registered-agent data comes from a companion dataset; if it is briefly unavailable, agent-change detection degrades for that run, though status events still arrive.
  • This is a KYB evidence and trigger surface, not an adjudication. Every row carries the exact source URL; verify against it before acting on any event.

FAQ and support

Which states can I search? Colorado, New York and Connecticut, plus any out-of-state business foreign-qualified in one of them. This is not a 50-state search, and it will not find a company that has never registered in those three states. If you need a state that isn't here, say so on the Issues tab.

Can I use it just as a lookup, without watching anything? Yes. check mode is the default, charges $0.02 per record, and writes no watch, no schedule and no recurring charge.

Does it run automatically? Only on the schedule you create. No schedule, no polls, no charges.

Can an AI agent call it? Yes. On the Apify platform the actor is exposed as a single callable tool whose input includes the mode field.

How do I verify a record? Open the sourceUrl on the row; it is the exact state resource the record came from.

For issues or feature requests, use the Issues tab.