Skip to content
    ↑↓ to choose · Enter to open

    · 13 min read

    Massachusetts Secretary of State Business Search Scraper: Setup, Cost

    By CrawlerBros Engineering Team

    Each record carries 24 output fields, including entity type, status, registered agent details, principal office addresses, and the full officers list. Searching costs $5.00 per 1,000 results on Apify's free plan, where you can gather up to 1,000 records each month without entering a credit card. It is designed for compliance officers, legal researchers, and analysts validating corporate standing in Massachusetts. It is not for teams needing certified filing document PDFs or stock share details, which the registry omits.

    Try it: open Massachusetts Secretary of State Business Search Scraper on Apify, sign in on the free plan and run the prefilled example.

    Can you try Massachusetts Secretary of State Business Search Scraper before paying?

    Yes. Apify's free plan includes $5.00 of prepaid usage every month and asks for no credit card. At $0.005 per result, that covers up to 1,000 results of Massachusetts Secretary of State Business Search Scraper a month, before run-start charges and platform usage.

    The example request further down caps maxItems at 10, so a first run returns at most 10 results and costs at most $0.05 in result charges. That is enough to see the real shape of the data before deciding anything.

    Massachusetts Secretary of State Business Search Scraper was last updated on 2026-07-21. It is one of 1,725 Actors CrawlerBros publishes on Apify, which together have 674,853 lifetime public runs and an average rating of 4.63 out of 5 across 416 reviews.

    What does it cost to run Massachusetts Secretary of State Business Search Scraper?

    Each result costs $0.005 on Apify's free plan, which is $5.00 per 1,000 results. Starting a run is charged separately at $0.005 per GB of Actor memory. Apify also bills the platform usage each run consumes, at the rates of your Apify plan, on top of these charges.

    Apify plan Per result Per 1,000 results
    FREE $0.005 $5.00
    BRONZE $0.00433 $4.33
    SILVER $0.00367 $3.67
    GOLD $0.003 $3.00
    PLATINUM $0.003 $3.00
    DIAMOND $0.003 $3.00

    Your choice of input query and the maxItems cap directly drive dataset output size and overall cost. Because each result requires a separate detail-page request, setting maxItems prevents unexpected charges. Setting maxItems to 10 on a first run caps result charges at $0.05, though Apify platform usage and run-start charges apply additionally.

    How do you run Massachusetts Secretary of State Business Search Scraper from the API?

    The schema marks 1 of its 11 controls as required: mode. The payload below uses the schema's own prefilled values, so it runs as written once you substitute your API token.

    Call the synchronous endpoint to start a run and receive dataset items in one request:

    curl -X POST "https://api.apify.com/v2/acts/crawlerbros~massachusetts-sos-scraper/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
      -H "Content-Type: application/json" \
      -d '{"mode":"byEntityName","entityName":"microsoft","entityMatchMode":"B","individualMatchMode":"B","maxItems":10,"proxyConfiguration":{"useApifyProxy":true}}'
    

    The same run from Python, using the official client:

    from apify_client import ApifyClient
    
    client = ApifyClient("<YOUR_APIFY_TOKEN>")
    
    run_input = {
      "mode": "byEntityName",
      "entityName": "microsoft",
      "entityMatchMode": "B",
      "individualMatchMode": "B",
      "maxItems": 10,
      "proxyConfiguration": {
        "useApifyProxy": True
      }
    }
    
    run = client.actor("crawlerbros~massachusetts-sos-scraper").call(run_input=run_input)
    
    for item in client.dataset(run["defaultDatasetId"]).iterate_items():
        print(item)
    

    And from Node.js:

    import { ApifyClient } from 'apify-client'
    
    const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' })
    
    const input = {
      "mode": "byEntityName",
      "entityName": "microsoft",
      "entityMatchMode": "B",
      "individualMatchMode": "B",
      "maxItems": 10,
      "proxyConfiguration": {
        "useApifyProxy": true
      }
    }
    
    const run = await client.actor('crawlerbros~massachusetts-sos-scraper').call(input)
    const { items } = await client.dataset(run.defaultDatasetId).listItems()
    console.log(items)
    

    The synchronous endpoint holds the connection open until the run finishes, which is convenient for small batches and wrong for large ones. For anything long running, start the run asynchronously and poll, or attach a webhook, so a dropped connection does not cost you the results.

    Which Massachusetts Secretary of State Business Search Scraper inputs matter, and which can you skip?

    The mode control dictates search strategy, allowing selection between entity name, individual name, identification number, or filing number modes. Fill in entityName for company searches or lastName when searching by officer name. Most runs only require setting mode and a single matching search term.

    • mode (string): Which axis of the Massachusetts Corporations Division search to use. Default: "byEntityName".
    • entityName (string): Business/entity name to search for. Default: "microsoft".
    • entityMatchMode (string): How entityName is matched against the registry. Default: "B".
    • lastName (string): Officer/registered-agent last name to search for.
    • firstName (string): Officer/registered-agent first name (optional, narrows results).
    • middleName (string): Officer/registered-agent middle name (optional, narrows results).
    • individualMatchMode (string): How the individual's name fields are matched against the registry. Default: "B".
    • identificationNumber (string): The entity's Massachusetts identification number (numeric, commonly 9 digits, e.g. 000445089).
    • filingNumber (string): A specific filing/document number within an entity's history (found via that entity's 'View filings' list on its detail page) -- not the entity's own identification number.
    • maxItems (integer): Hard cap on emitted records (each record requires a separate detail-page fetch, so keep this modest). Default: 10.
    • proxyConfiguration (object): Used only as an escalation fallback if the source rate-limits the run. The free Apify AUTO (datacenter) group is used -- no paid proxy is required. Default: {"useApifyProxy":true}.

    Fixed-choice controls: mode accepts byEntityName (Search by entity/business name), byIndividualName (Search by officer/agent (individual) name), byIdentificationNumber (Lookup by identification number), byFilingNumber (Lookup by filing/document number); entityMatchMode accepts B (Begins with), M (Exact match), F (Full text), S (Soundex (sounds like)); individualMatchMode accepts B (Begins with), M (Exact match), F (Full text), S (Soundex (sounds like)).

    What does Massachusetts Secretary of State Business Search Scraper return?

    Output datasets provide structured corporate profiles useful for verifying company status, mapping corporate officers, and checking entity registration dates. The output intentionally omits downloadable filing history PDFs and stock share distributions, as these are either gated behind paid official orders or blank in source records.

    • entityName
    • entityType - e.g. Domestic Profit Corporation, Foreign Corporation, Domestic Limited Liability Company
    • identificationNumber - Massachusetts identification number
    • oldIdentificationNumber - legacy identification number, when on file
    • status - Active 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
    • statusDate - YYYY-MM-DD, when inactive
    • dateOfOrganization - YYYY-MM-DD
    • dateOfRevival - YYYY-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)
    • publiclyTraded - true 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

    These are the documented fields. Optional ones can be empty on a given record, so measure how often each field your deliverable depends on is populated across a real sample before automating the handoff.

    How do you build the workflow end to end?

    Open Massachusetts Secretary of State Business Search Scraper and work through these in order. Each step ends with something to check, so a bad configuration surfaces on a small run rather than a scheduled one.

    1. Select mode by specifying byEntityName, byIndividualName, byIdentificationNumber, or byFilingNumber in the input config.
    2. Populate entityName when running byEntityName, or set lastName for byIndividualName searches.
    3. Set entityMatchMode or individualMatchMode to B for prefix matches or M for exact string matches.
    4. Cap maxItems at 10 for your initial test run to control request volume.
    5. Keep proxyConfiguration set to useApifyProxy: true so the run utilizes Apify AUTO proxy settings.
    6. Execute the run and review the dataset output to verify entityName and status fields are present.
    7. Inspect returned officers and registeredAgentName structures to confirm detail pages parsed correctly.
    8. Adjust maxItems up to the allowed maximum of 100 once data structure choices are verified.

    How do you apply it? Three worked playbooks

    These are Massachusetts Secretary of State Business Search Scraper's own documented use cases, each worked through as an operating pattern rather than a description.

    Use case 1: Due diligence

    Outcome: Confirm a counterparty's Massachusetts entity type, status, and registered agent before contracting

    Configure: Set mode to "byEntityName", entityName to "MICROSOFT CORPORATION", entityMatchMode to "M", and maxItems to 5.

    Working method: Execute an exact entity name query to locate the target corporate entry. Inspect entityType, status, and registeredAgentName in the dataset record to confirm valid corporate standing.

    Deliverable: A structured entity record showing legal entity status, registered agent, and principal office address.

    Stop condition: The returned entity status is Inactive or entityName fails to match counterparty documentation.

    Use case 2: Officer/director research

    Outcome: Find every Massachusetts entity a named individual is an officer, director, or registered agent of

    Configure: Set mode to "byIndividualName", lastName to "SMITH", firstName to "JOHN", individualMatchMode to "B", and maxItems to 20.

    Working method: Execute an individual name search across registered agent and officer filings. Inspect the officers array across returned records to isolate all positions tied to the individual.

    Deliverable: A collection of corporate profiles detailing every entity where the person holds an official position.

    Stop condition: The officers array yields no matching entries for the specified person across all returned items.

    Use case 3: Compliance & KYC

    Outcome: Cross-check a business's legal entity name and identification number

    Configure: Set mode to "byIdentificationNumber", identificationNumber to "000445089", and maxItems to 1.

    Working method: Run a direct entity lookup using the official state identification number. Compare entityName, dateOfOrganization, and jurisdictionState against submitted KYC forms.

    Deliverable: A confirmed state registry record containing legal entity details and formation records.

    Stop condition: The identification number yields no state record or produces an entity name contradicting submitted files.

    What breaks, and how do you design around it?

    Keep maxItems set to modest caps up to 100 per run as specified by the input schema. When searching common officer surnames in byIndividualName mode, provide firstName or select exact match mode B or M to narrow results. For bulk company lookups, execute separate runs using identificationNumber rather than broad name queries.

    When should you not use Massachusetts Secretary of State Business Search Scraper?

    Do not use this Actor if you require official Certificates of Good Standing or certified filing PDFs, which require paid ordering channels on the state site. If your business verification requires coverage outside Massachusetts, select a scraper targeted at that specific jurisdiction, such as Rhode Island Secretary of State Business Search Scraper or Vermont SOS Business Registration Search Scraper. Additionally, skip this tool if you require capital stock details, as those fields are unpopulated on source web pages.

    What should you check before trusting the output?

    • Verify status resolves to Active or Inactive for every retrieved entity record.
    • Ensure statusReason contains text whenever status is reported as Inactive.
    • Confirm identificationNumber is present as a string in each returned entity object.
    • Check that officers entries contain title, name, and address fields when populated.
    • Stop scheduled runs if consecutive executions return zero dataset items for known identification numbers.

    None of this proves a record is correct. It gives a scheduled Massachusetts Secretary of State Business Search Scraper run defined points where it should stop instead of quietly passing bad data downstream.

    Frequently asked questions

    How much does it cost to retrieve 1,000 business records?

    On Apify's free plan, results cost $0.005 each, which equals $5.00 per 1,000 results. Apify's free plan includes $5.00 of monthly usage without requiring a credit card, covering up to 1,000 results before platform usage and run-start fees.

    What is the difference between the search match modes?

    Match modes control search precision: B (Begins with) matches starting characters, M (Exact match) requires exact string alignment, F (Full text) searches anywhere within the name, and S (Soundex) matches phonetic similarities.

    Why does byIndividualName return unexpected entities?

    Results return every entity appointment matching the individual's name. Common names return multiple businesses across different individuals; narrow queries by providing firstName or using exact match mode.

    Why does byFilingNumber return 0 results for an entity ID?

    A filing number identifies one specific filing transaction rather than a company profile. To look up a business using its official state identifier, set mode to byIdentificationNumber instead.

    Are results from this scraper legally binding?

    No. The scraper retrieves public informational search data. Certified copies or official Certificates of Good Standing require paid requests directly through the Corporations Division.

    Where to go next

    When you are ready to run it, open Massachusetts Secretary of State Business Search Scraper on Apify; the free plan covers up to 1,000 results a month.

    Other Actors we maintain for related data:

    Related guides:

    Resources

    Featured actors

    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.

    Run on Apify ↗