Connecticut Business Registry Scraper avatar

Connecticut Business Registry Scraper

Pricing

from $1.44 / 1,000 item extracteds

Go to Apify Store
Connecticut Business Registry Scraper

Connecticut Business Registry Scraper

Search and export official Connecticut business entities with IDs, status, dates, addresses, ownership flags, NAICS fields, and source provenance.

Pricing

from $1.44 / 1,000 item extracteds

Rating

0.0

(0)

Developer

Automation Lab

Automation Lab

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

11 days ago

Last modified

Categories

Share

Search and export official Connecticut business registry records for onboarding, KYB checks, compliance research, and scheduled status refreshes.

The Actor reads Connecticut's public Business Master dataset and returns normalized entity identity, Connecticut business ID, registration status, important dates, business and mailing addresses, NAICS classification, ownership flags, and source provenance.

No Connecticut account, API key, browser, or proxy is required. The Actor does not use AI or send records to an AI provider. This is an independent automation-lab tool, not affiliated with or endorsed by Connecticut or its registry.

What can you do with this Actor?

  • Verify that a Connecticut entity exists under a supplied name or business ID.
  • Check current registration and annual-report status during onboarding.
  • Export active, dissolved, cancelled, and other official status records.
  • Find entities by city, business type, registration window, annual-report due window, or NAICS industry prefix.
  • Re-export selected rows after dataset refreshes and compare them in your own KYB system.
  • Feed normalized records into spreadsheets, databases, CRMs, and compliance pipelines.

Who is it for?

KYB and onboarding teams can resolve a company name or Connecticut business ID against an official state record.

Compliance analysts can retain status, registration dates, dissolution dates, addresses, ownership indicators, and retrieval provenance.

Researchers and data teams can export bounded entity sets without maintaining Socrata queries and pagination.

Operations teams can schedule updatedSince runs and compare the resulting dataset with an earlier export.

Why use it?

The public registry data is available as a large government dataset, but production use still requires filter construction, pagination, retries, normalization, limits, and stable output fields.

This Actor provides:

  • exact business-ID lookup;
  • case-insensitive partial business-name lookup;
  • full-text search;
  • composable status, entity-type, city, registration-date, annual-report due-date, and NAICS-prefix filters;
  • a machine-readable export-limit summary;
  • bounded deterministic pagination;
  • normalized nullable fields;
  • official source URL and retrieval timestamp on every row;
  • pay-per-result billing with no separate proxy charge.

Data source

Records come from the State of Connecticut Open Data Connecticut Business Registry – Business Master dataset (n7gp-d28j).

The source is an official public-data representation of registry master records. It is not the interactive filing portal and cannot submit filings, order certificates, or guarantee that a just-filed change already appears in the open dataset.

The Actor does not scrape search-result HTML. It calls the official structured SODA endpoint directly.

What data is extracted?

GroupFields
IdentitybusinessName, accountNumber, sourceRecordId, businessType
Statusstatus, subStatus, administrativeDissolutionReason
DatesregistrationDate, annualReportDueDate, dissolutionDate, beganTransactingInConnecticut, organizationMeetingDate
Business addresscombined address plus street, unit, city, state, postal code, and country
Other addressesmailingAddress, recordAddress
Formationcitizenship, place, state or territory, country, and name in formation jurisdiction
ClassificationnaicsCode, naicsSubCode
Ownership flagswoman-, veteran-, minority-, disability-, and LGBTQI-owned indicators
CapitaltotalAuthorizedShares when supplied
ProvenancesourceUpdatedAt, sourceDatasetId, sourceUrl, retrievedAt

A missing source value is returned as null. An ownership value of false means the source flag is false; it should not be interpreted as an independent certification investigation.

Getting started

  1. Open the Actor input page.
  2. Enter a business name, Connecticut business ID, or another supported filter.
  3. Set maxItems to the maximum number of entity rows you need.
  4. Click Start.
  5. Review the Overview table or export the dataset as JSON, CSV, Excel, XML, or another Apify-supported format.

Try this name search:

{
"businessName": "Yale",
"maxItems": 10
}

Input parameters

InputTypeDescription
querystringFull-text search across the official dataset
businessNamestringCase-insensitive partial registered-name match
accountNumberstringExact Connecticut business ID; preserve leading zeros
statusstringExact official registration status, case-insensitive
businessTypestringExact official entity type, case-insensitive
citystringCase-insensitive partial business-city match
registeredFromdateRegistration date on or after YYYY-MM-DD
registeredTodateRegistration date on or before YYYY-MM-DD
updatedSincedateDataset refresh timestamp on or after YYYY-MM-DD; not an entity-change timestamp
annualReportDueFromdateAnnual-report due date on or after YYYY-MM-DD; missing dates excluded
annualReportDueTodateAnnual-report due date through the entire YYYY-MM-DD end day
naicsPrefixstring2–6 digits at the start of a bare NAICS code or a code in final parentheses; missing/malformed codes excluded
maxItemsintegerGlobal maximum saved, matching, deduplicated records, from 1 to 50,000; default 100; runtime/charge limits may stop earlier

Filters are combined with AND. For example, status: "Active" and city: "New Haven" return matching active entities in that city.

You may run without search filters to export the first bounded slice of the dataset. Increase maxItems deliberately for larger exports. Date inputs must be real calendar dates in YYYY-MM-DD format (before 9999-12-31). Reversed windows fail before start/item charging. Both end-day filters include the final second and fractions, but exclude the following day. NAICS matching does not match arbitrary digits in descriptions; naicsCode retains the original source text.

Select annual-report and industry workflows

Export active entities with reports due in January 2027:

{
"status": "Active",
"annualReportDueFrom": "2027-01-01",
"annualReportDueTo": "2027-01-31",
"maxItems": 100
}

Add "naicsPrefix": "54" for professional, scientific, and technical services, or use "541990" for that specific code. Every filter narrows the same entity set using AND. Due dates describe source records, not a filing service or an assertion that a report is overdue.

Search by Connecticut business ID

Use accountNumber when you already have the state's public business identifier:

{
"accountNumber": "3309410",
"maxItems": 1
}

This is an exact lookup. If there is no matching master row, the run succeeds with an empty dataset and no item charge.

Refresh records for recurring KYB checks

Schedule bounded re-exports of the entities you monitor. You can select rows refreshed since a date:

{
"status": "Active",
"updatedSince": "2026-09-01",
"maxItems": 1000
}

updatedSince and sourceUpdatedAt use create_dt, described by the source as the date the dataset was last refreshed. A dataset reload can give essentially all selected rows the same refresh timestamp. This is not an entity-change log or incremental change feed. A capped export is not a complete change feed either. Store prior results in your own system, compare by sourceRecordId or accountNumber, and check the OUTPUT limit summary before treating a collection as complete.

Output example

A current result has this shape:

{
"sourceRecordId": "001xx00000AbCdEAAZ",
"businessName": "SAMPLE SERVICES LLC",
"accountNumber": "3000123",
"businessType": "LLC",
"status": "Active",
"subStatus": "Annual report due",
"registrationDate": "2025-10-20T00:00:00.000",
"annualReportDueDate": "2027-01-16T00:00:00.000",
"businessAddress": "100 SAMPLE ST, HARTFORD, CT, 06103, United States",
"mailingAddress": "100 SAMPLE ST, HARTFORD, CT, United States, 06103",
"naicsCode": "Management Consulting Services (541611)",
"womanOwned": false,
"veteranOwned": false,
"minorityOwned": false,
"sourceDatasetId": "n7gp-d28j",
"sourceUrl": "https://data.ct.gov/resource/n7gp-d28j.json",
"retrievedAt": "2026-09-04T06:00:00.000Z"
}

The complete dataset schema documents every field and its nullability.

Machine-readable export summary

Successful runs also save OUTPUT in the default key-value store, linked from the Output tab:

{
"filters": { "status": "Active", "naicsPrefix": "54" },
"maxItems": 100,
"savedCount": 100,
"limitReached": true,
"stopReason": "maxItems",
"sourceExhausted": false,
"sourceDatasetId": "n7gp-d28j",
"completedAt": "2026-10-14T00:00:00.000Z"
}

filters contains only the applied, validated filters. savedCount counts entity dataset rows. stopReason is sourceExhausted (a short or empty source page), maxItems, or chargeLimit. limitReached is conservative: reaching exactly maxItems does not prove more rows exist, and does not prove completeness. sourceExhausted does not guarantee an atomic snapshot if the upstream dataset changes during paging. A genuine no-match run has zero saved rows and sourceExhausted: true. Failed runs do not receive a success summary; inspect run status before consuming output. The summary is not a dataset row and is never billed as an entity.

How much does it cost to export Connecticut business records?

Pricing has one $0.003 start fee per run plus a tiered fee per saved entity record.

PlanPrice per entity record
Free$0.00276
Bronze$0.00240
Silver$0.001872
Gold$0.00144
Platinum$0.00144
Diamond$0.00144

At Bronze rates, 10 records cost about $0.027, 100 records about $0.243, and 1,000 records about $2.403, including one start fee. Empty or rejected rows are not charged as items. Apify may separately bill platform usage according to your plan when applicable.

Limits and reliability

  • A run can save from 1 to 50,000 records.
  • The Actor requests up to 1,000 records per source page.
  • Temporary network/timeouts, HTTP 429, and temporary 500/502/503/504 failures receive at most three total attempts with bounded backoff.
  • Permanent HTTP errors and malformed JSON/record shapes fail immediately, rather than returning a misleading empty success or blindly retrying.
  • The customer charge cap bounds source requests and saved item counts. A charge-limited run records chargeLimit in OUTPUT instead of saving uncharged rows.
  • No browser or residential proxy fallback is enabled.
  • Source fields can be incomplete, inconsistently capitalized, or changed by Connecticut.
  • The open dataset can lag the transactional filing system.

For very large exports, begin with a narrow filter and verify the output before increasing maxItems.

Integrations and automation

Use an Apify schedule for daily or weekly refreshes. Connect the dataset to:

  • Google Sheets for analyst review;
  • webhooks for completed-run notifications;
  • Make or Zapier for onboarding workflows;
  • cloud storage or a warehouse for longitudinal comparisons;
  • a CRM to enrich an organization record with official state identity;
  • Python or JavaScript applications through the Apify API client.

Use accountNumber as the public registry identifier and retain retrievedAt to show when your system observed the row.

Run with the Apify API using cURL

curl -X POST \
"https://api.apify.com/v2/acts/automation-lab~connecticut-sots-concord-business-search/runs?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"businessName":"Yale","maxItems":10}'

To wait for completion and read dataset items, use the synchronous dataset endpoint supported by the Apify API.

Run with JavaScript

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('automation-lab/connecticut-sots-concord-business-search').call({
accountNumber: '3309410',
maxItems: 1,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Run with Python

import os
from apify_client import ApifyClient
client = ApifyClient(os.environ["APIFY_TOKEN"])
run = client.actor("automation-lab/connecticut-sots-concord-business-search").call(
run_input={"status": "Active", "city": "New Haven", "maxItems": 100}
)
items = client.dataset(run["defaultDatasetId"]).list_items().items
print(items)

Use with MCP and AI assistants

Add this Actor to Claude Code through Apify MCP:

claude mcp add --transport http apify \
"https://mcp.apify.com?tools=automation-lab/connecticut-sots-concord-business-search"

Claude Desktop setup

Cursor setup

VS Code setup

Claude Desktop, Cursor, and VS Code can use this equivalent HTTP MCP configuration:

{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com?tools=automation-lab/connecticut-sots-concord-business-search"
}
}
}

Example prompts:

  • “Look up Connecticut business ID 3309410 and summarize its official status.”
  • “Export up to 50 active Connecticut entities matching Yale.”
  • “Collect active registry rows refreshed since 2026-09-01 for comparison.”

Responsible use and legality

The Actor accesses public government open data. You are responsible for your purpose, retention, downstream decisions, and compliance with applicable laws and source terms.

Do not treat an ownership flag, address, status, or missing value as a substitute for risk-based review. Verify material decisions against the current official registry or obtain appropriate documentation from the entity.

Avoid using the data for harassment, discrimination, identity theft, or decisions that require notices, consent, or a legally mandated verification process.

Troubleshooting

Why did my exact business-ID lookup return no rows?

Confirm that you supplied the Connecticut account number exactly, including leading zeros. The open-data master dataset may also lag a recent filing.

Why did a name search return unexpected records?

businessName is a partial match. Add status, businessType, or city, or use the exact accountNumber when available.

Why is a date or address null?

The Actor preserves source absence as null. Older, reserved, dissolved, and foreign records often contain different subsets of fields.

Why did the run fail instead of returning an empty dataset?

A valid no-match query returns zero rows successfully. A malformed input or exhausted upstream error fails deliberately so automation does not confuse source failure with “no entity found.”

FAQ

Does it search every US state?

No. This Actor is specific to the official Connecticut Business Registry Business Master dataset.

Does it return registered agents or principals?

Not in this version. It returns master entity records and ownership flags, not related agent or principal datasets.

Can it file an annual report or order a certificate?

No. The Actor is read-only and does not perform registry transactions.

Is the data real time?

No real-time guarantee is made. sourceUpdatedAt records the source row timestamp, while retrievedAt records when the Actor fetched it.

Can I schedule it?

Yes. Apify schedules can run bounded re-exports repeatedly. Compare stable identifiers and field values downstream; updatedSince reflects dataset refreshes, not individual entity changes.

Are records deduplicated?

Yes, within each run, using the source row ID or account number.

For another state-specific company-verification workflow, use Florida Sunbiz Business Search.

For domain ownership and registration context, use Domain Registration & RDAP Lookup.

For City of Chicago licensing data, use Chicago Business Licenses Scraper.

Diagnostic privacy

Failed operations send sanitized diagnostic input, exceptions, and Actor/build/run IDs to our private GlitchTip service for repair. Secret fields and URL query strings are removed, and reports are retained for 30 days. No telemetry credentials are part of the public input. Diagnostics use our company-managed private service; no customer-paid diagnostic account is needed.

Entity output contains public organization records, which can include addresses or sole-proprietor names. Applied search filters are also included in the run's OUTPUT summary. The Actor writes to your run's default Apify storage, not a shared named dataset, and does not automatically make results public. Dataset, summary, input and log retention/deletion follow your Apify account settings; delete the run/storage in Console or through the API when no longer needed. There is no persistent Actor-side entity cache or session store. Do not supply confidential personal data in search fields.

Support

If a source field changes or a valid query fails, open an issue from the Actor page with the input, run ID, expected behavior, and observed behavior. Do not include confidential customer data.