Massachusetts Secretary of State Business Search Scraper avatar

Massachusetts Secretary of State Business Search Scraper

Pricing

from $3.00 / 1,000 results

Go to Apify Store
Massachusetts Secretary of State Business Search Scraper

Massachusetts Secretary of State Business Search Scraper

Search the Massachusetts Corporations Division (Secretary of the Commonwealth) business registry by entity name, officer/agent name, or identification number. Get entity type, status, registered agent, principal office address, and officers/directors.

Pricing

from $3.00 / 1,000 results

Rating

0.0

(0)

Developer

Crawler Bros

Crawler Bros

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Share

Search the Massachusetts Corporations Division (Office of the Secretary of the Commonwealth) free public business registry. Search by entity name, officer/registered-agent name, or identification number, and get entity type, status, registered agent, principal office address, and the full officers/directors list. HTTP-only via the public corp.sec.state.ma.us search form — no login required.

Why Massachusetts instead of Nevada?

This actor was originally scoped against Nevada's SilverFlume/esos.nv.gov business entity search. Live verification found Nevada's search endpoint sits behind a full Incapsula JavaScript challenge — every request returns only a ~1 KB _Incapsula_Resource iframe, never the real page, regardless of client or retry strategy. That's a genuine bot-wall, not a flaky endpoint, so per this project's zero-cost policy it was replaced with an equivalent free state business registry: Massachusetts. Massachusetts sits behind Incapsula too, but only at the cookie level (see below) — no JavaScript execution is required to reach real data.

Data Source & Usage Notes

Read this before running a large job.

  • Cookie-level bot protection, not a JS challenge. The source is fronted by Imperva/Incapsula. A plain HTTP client is served a small interstitial on its first request; a second request on the same session (with the seeded visid_incap_*/incap_ses_* cookies) returns the real page. This actor performs that warm-up automatically at the start of every run.
  • Conservative by design. maxItems defaults to a small value and is capped at 100. Each result requires a separate detail-page fetch, so the actor adds deliberate delays between requests and only ever uses Apify's free datacenter (AUTO) proxy group — never a paid residential proxy — as an escalation fallback if a run gets rate-limited.
  • Not affiliated with the Commonwealth of Massachusetts. This is an independent third-party tool using the source's own public, no-login search form.

What this actor does

  • Four search modes:
    • byEntityName — search by business/entity name, with the source's own Begins with / Exact match / Full text / Soundex match modes
    • byIndividualName — search by officer/registered-agent last name (+ optional first/middle name), returning every business entity where a matching individual is on file
    • byIdentificationNumber — direct lookup by the entity's Massachusetts identification number
    • byFilingNumber — direct lookup by a specific filing/document number (see caveat below)
  • Full entity detail — automatically follows through from search results to each entity's detail page
  • Officers & directors — full list with title, name, and address when on file
  • Registered agent info — name and full address when on file
  • Derived statusActive / Inactive, with the specific inactivity reason and date when applicable (e.g. involuntary dissolution, revocation, withdrawal)
  • Empty fields are omitted

What's NOT included (and why)

  • Stock/share class detail. The detail page's "total number of shares" table is present on the page but is populated only for a small subset of entities and its values are frequently blank/placeholder characters in the source HTML itself — not reliably real data, so it's not scraped.
  • Filing history documents. Each entity's detail page links to a "View filings" list of document types (Annual Report, Articles of Merger, etc.) but not to the documents themselves (those require a separate paid-certificate request flow on the source). byFilingNumber mode looks up one specific filing/document number if you already have it (e.g. from correspondence with the Division); it does not enumerate an entity's full filing history.
  • filingNumber results are narrow by nature. A filing/document number identifies one specific transaction in the source's records, not the entity itself — searching an entity's own identification number in this mode will not resolve a filing. Use byIdentificationNumber to look up the entity itself.

Output per entity

  • entityName
  • entityType — e.g. Domestic Profit Corporation, Foreign Corporation, Domestic Limited Liability Company
  • identificationNumber — Massachusetts identification number
  • oldIdentificationNumber — legacy identification number, when on file
  • statusActive or Inactive (derived from the presence of an inactivity date)
  • statusReason — the source's own inactivity label (e.g. Date of Involuntary Dissolution by Court Order or by the SOC), when inactive
  • statusDateYYYY-MM-DD, when inactive
  • dateOfOrganizationYYYY-MM-DD
  • dateOfRevivalYYYY-MM-DD, when on file
  • currentFiscalMonthDay, previousFiscalMonthDay — e.g. 12/31
  • principalOfficeAddress (combined) plus principalOfficeStreet, principalOfficeCity, principalOfficeState, principalOfficeZip, principalOfficeCountry
  • registeredAgentName, registeredAgentAddress
  • officers — array of { title, name, address }
  • jurisdictionState, jurisdictionCountry, jurisdictionDate — state/country of incorporation and date, when on file (foreign entities only -- domestic MA entities omit this section on the source since they're organized under Massachusetts law by definition)
  • mergedWith — array of { entityName, date, sourceUrl }, when on file (entities this one absorbed via merger, each linking to that now-inactive entity's own detail page)
  • previousNames — array of { previousName, date }, when on file (the entity's legal name-change history)
  • publiclyTradedtrue when the source's own checkbox is checked (omitted, not false, when unchecked/unknown)
  • sourceUrl — the entity's CorpSummary.aspx detail page URL
  • recordType: "entity", scrapedAt

Input

FieldTypeDefaultDescription
modestringbyEntityNamebyEntityName / byIndividualName / byIdentificationNumber / byFilingNumber
entityNamestringmicrosoftSearch query (mode=byEntityName)
entityMatchModestringBB Begins with / M Exact match / F Full text / S Soundex (mode=byEntityName)
lastNamestringOfficer/agent last name (mode=byIndividualName, required)
firstNamestringOfficer/agent first name, optional (mode=byIndividualName)
middleNamestringOfficer/agent middle name, optional (mode=byIndividualName)
individualMatchModestringBSame 4 match modes as entityMatchMode (mode=byIndividualName)
identificationNumberstringEntity identification number (mode=byIdentificationNumber, required)
filingNumberstringFiling/document number (mode=byFilingNumber, required)
maxItemsint10Hard cap (1–100)
proxyConfigurationobjectAUTO proxyApify proxy config; always datacenter (AUTO), never residential

Example: search by entity name

{
"mode": "byEntityName",
"entityName": "microsoft",
"entityMatchMode": "B",
"maxItems": 10
}

Example: exact entity name match

{
"mode": "byEntityName",
"entityName": "MICROSOFT CORPORATION",
"entityMatchMode": "M",
"maxItems": 5
}

Example: search by officer/agent name

{
"mode": "byIndividualName",
"lastName": "SMITH",
"individualMatchMode": "B",
"maxItems": 10
}

Example: lookup by identification number

{
"mode": "byIdentificationNumber",
"identificationNumber": "000445089"
}

Use cases

  • Due diligence — confirm a counterparty's Massachusetts entity type, status, and registered agent before contracting
  • Compliance & KYC — cross-check a business's legal entity name and identification number
  • Officer/director research — find every Massachusetts entity a named individual is an officer, director, or registered agent of
  • Startup / legal research — see how a company's Massachusetts entity is structured (Corp vs. LLC, domestic vs. foreign)
  • Company name availability checks — see what similarly-named entities already exist before choosing a new name

FAQ

What's the data source? The Massachusetts Corporations Division's own free public business search at corp.sec.state.ma.us. This actor is an independent third-party tool and is not affiliated with the Commonwealth of Massachusetts.

Is this data official / legally binding? No. For an official Certificate of Good Standing or certified copies, use the Division's paid ordering channels (see the source site). This actor returns the same free informational data the public search page shows.

What's the difference between the four match modes? They mirror the source search form's own dropdown exactly: Begins with matches names starting with your query, Exact match requires the whole name to match, Full text matches your query anywhere in the name, and Soundex matches names that sound similar even with different spelling.

Why did my byIndividualName search return results for entities I didn't expect? Each row in the source's own results table is one officer/agent appointment, so a common name (e.g. SMITH) can return many entities across many different people who happen to share that surname. Narrow with firstName/middleName or switch to individualMatchMode: "M" (exact) for a specific person.

Why is Active/Inactive status "derived" rather than an explicit field on the source? The source site doesn't render a single "Status:" label — it renders an inactivity date (with a specific reason label like "Date of Involuntary Dissolution...") only when an entity is no longer active, and renders nothing in that slot for active entities. This actor infers Active vs Inactive from that presence/absence, and passes through the source's own reason text verbatim when inactive.

Why did my byFilingNumber search return 0 results? A filing/document number identifies one specific transaction (e.g. one Annual Report filing) in the source's own records — it's not the entity's identification number. You can find real filing numbers via an entity's "View filings" list on its own detail page. If you have an entity's identification number instead, use byIdentificationNumber.

How fresh is the data? Real-time — the search reflects the Corporations Division's database as of the moment of the search.