Missouri Secretary of State Business Search Scraper avatar

Missouri Secretary of State Business Search Scraper

Pricing

from $3.00 / 1,000 results

Go to Apify Store
Missouri Secretary of State Business Search Scraper

Missouri Secretary of State Business Search Scraper

Search Missouri's free public Business Entity Search (bsd.sos.mo.gov) by business name or registered agent name. Get entity type, status, charter number, formation date, principal address, registered agent, and more.

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 Missouri Secretary of State's free public Business Entity Search (bsd.sos.mo.gov). Look up a business by name or by registered agent name, and get entity type, status, charter number, formation date, principal address, registered agent details, domesticity/home state, duration, and more. HTTP-only via the public search form — no login required.

Data Source & Usage Notes

Read this before running a large job.

  • No login, no CAPTCHA. The source is a classic ASP.NET WebForms search form with no account wall or CAPTCHA challenge.
  • Cloudflare IP-reputation gate — handled with automatic retries. The source sits behind Cloudflare, which occasionally denies requests from some of Apify's shared datacenter (AUTO) proxy IPs while allowing others (confirmed live: pass rates vary run to run). This is a plain "Access Denied" response, not a JavaScript challenge or CAPTCHA, and it clears immediately on a fresh IP. The actor automatically retries with a new AUTO-proxy session — generously, not just once or twice — until a request succeeds, so a temporarily-flagged IP does not cause a failed run; it only adds a little latency.
  • Session continuity for detail pages. Confirmed live: Missouri's detail page (BusinessEntityDetail.aspx) returns "Access Denied" when fetched cold (no cookies), but succeeds when fetched with the same session/cookies established by the preceding search. The actor always reuses one session across the search and all of that search's detail-page fetches, and only opens a fresh session (new proxy IP + fresh search-page visit) if a detail fetch is blocked.
  • Two search axes. Missouri's own form exposes Business Name and Registered Agent search (plus "Name Availability" and "Charter No." axes that are reservation/internal-lookup tools rather than public entity search, and are not exposed here).
  • Full pagination, up to maxItems. The results grid pages at 20 rows per page (confirmed live via the grid's own client-state); the actor automatically follows the grid's "Next Page" control until maxItems is reached or the source's own reported total is exhausted, so a broad query (e.g. a single-letter starting-with search) isn't silently capped at the first page.
  • Conservative by design. maxItems caps emitted records. The actor only ever uses Apify's free datacenter (AUTO) proxy group — never a paid residential proxy.
  • Give large registered-agent searches a generous run timeout. Very common registered-agent names (e.g. "CT Corporation", used by tens of thousands of Missouri entities) draw enough scraping traffic that Cloudflare's IP-reputation gate triggers more often on their detail pages, adding retry latency per row. Each detail-page fetch is individually time-bounded (it can never hang the run), but a maxItems of 50+ against a high-traffic agent name can take several minutes end-to-end. For runs like this, set a run timeout of 600s or more (Input > Run options) rather than relying on the platform default for short test runs.
  • Not affiliated with the State of Missouri. This is an independent third-party tool using the source's own public, no-login search form.

Why Missouri instead of Indiana?

This actor was originally scoped as an Indiana INBiz (bsd.sos.in.gov) business entity search. Live verification (including a real Playwright browser run from Apify's own datacenter infrastructure, not just a local test) showed the search page itself loads fine, but the actual "Search" action is gated behind a live Google reCAPTCHA v2 checkbox: submitting the form without solving it fails silently client-side (no results, no navigation — confirmed via network capture). Per this project's zero-cost policy, paid CAPTCHA-solving services are not an option, so the target was replaced with Missouri's SOS business search — a free, no-login, no-CAPTCHA ASP.NET platform confirmed live on Apify's own infrastructure to return real search results and real entity-detail data (Missouri's own Cloudflare gate is a plain IP-reputation "Access Denied" response, not a JS/CAPTCHA challenge, and is fully solvable with proxy-session retries — no residential proxy or paid service required).

What this actor does

  • 2 search modes, matching the public axes Missouri's own search form exposes:
    • byBusinessName — business/entity name search
    • byRegisteredAgent — registered agent name search
  • 4 name-match methods on every search: starting with, all words, any word, exact match — mirroring the source form's own dropdown
  • Active-only filter — restrict to Good Standing / active entities
  • Full entity detail — automatically follows through from search results to each entity's detail page for entity type, charter number, domesticity, home state, principal address, registered agent name + address, formation date, and duration
  • Graceful degradation — if a single entity's detail page cannot be resolved after retries, the record still ships with the fields available from the search-results grid (name, charter number, entity type, status, registration date, registered agent name) rather than being dropped
  • Empty fields are omitted

What's NOT included (and why)

  • Only one entity per matching registered agent record. Missouri's own registered-agent results grid shows one representative entity per matching agent row (with a "(Click to see all N corporations represented)" note when an agent represents more than one) rather than every entity that agent represents. This mirrors the source's own search grid; use a more specific agent-name match (e.g. exactMatch) to reduce ambiguity, or use byBusinessName if you already know the entity name.
  • Individual-person registered agents — Missouri's own registered-agent search form defaults to an "Agent is Individual" sub-mode (first/last name) alongside "Agent is Organization" (a single free-text name). This actor always searches the Organization sub-type, since the vast majority of registered agents are organizations (CSC, CT Corporation, law firms, etc.) and searchTerm in mode=byRegisteredAgent is documented as a single name field.
  • "Name Availability" and "Charter No." search axes — Missouri's form exposes these as additional ddlBESearchType options, but they are internal tools (a name-reservation availability checker and an internal charter-number relookup) rather than independent public search axes with their own confirmed field mapping; excluded from v1 to avoid shipping an unverified mode.
  • Filing/document history — the detail page does not expose a list of individual filed documents; only the current entity snapshot (type, status, dates, addresses, agent) is available for free.
  • Report-due date — present on the source detail page for some entity types only; when absent for a given entity, the field is omitted rather than left null.

Output per entity

  • entityName
  • charterNumber — Missouri's entity identifier (e.g. F01326154)
  • entityType — e.g. Gen. Business - For Profit, Domestic Limited Liability Company
  • status — e.g. Good Standing, Admin Diss/Cancel - Agent
  • domesticityDomestic or Foreign
  • homeState — state/country of origin for foreign entities
  • dateFormedYYYY-MM-DD
  • duration — e.g. Perpetual
  • reportDue — when on file
  • principalAddress
  • registeredAgentName, registeredAgentId, registeredAgentAddress
  • internalId — Missouri's internal record ID (used to build sourceUrl)
  • sourceUrl
  • recordType: "entity", scrapedAt

Input

FieldTypeDefaultDescription
modestringbyBusinessNamebyBusinessName / byRegisteredAgent
searchTermstringAMAZONBusiness name or registered agent name to search for
nameSearchMethodstringstartingWithstartingWith / allWords / anyWord / exactMatch
activeOnlybooleanfalseRestrict to active/good-standing entities only
proxyConfigurationobjectAUTO proxyApify proxy config; always datacenter (AUTO), never residential
maxItemsint25Hard cap (1–200)

Example: search by business name prefix

{
"mode": "byBusinessName",
"searchTerm": "TESLA",
"nameSearchMethod": "startingWith",
"maxItems": 10
}

Example: search by registered agent, active entities only

{
"mode": "byRegisteredAgent",
"searchTerm": "Corporation Service Company",
"nameSearchMethod": "allWords",
"activeOnly": true,
"maxItems": 25
}

Example: exact business name match

{
"mode": "byBusinessName",
"searchTerm": "AMAZON CAPITAL SERVICES, INC.",
"nameSearchMethod": "exactMatch",
"maxItems": 5
}

Use cases

  • Due diligence — confirm a counterparty's Missouri formation date, entity type, and registered agent before contracting
  • Compliance & KYC — cross-check a business's legal entity name and charter number
  • Registered agent research — find every entity a specific agent represents in Missouri
  • Company name availability checks — see what similarly-named entities already exist before choosing a new name
  • Market research — pull active entities matching a brand or franchise name

FAQ

What's the data source? The Missouri Secretary of State's own free public Business Entity Search at bsd.sos.mo.gov. This actor is an independent third-party tool and is not affiliated with the State of Missouri.

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

Why did my run return 0 results? Either the query genuinely has no match, or the match method (starting with / all words / any word / exact match) is narrower than expected. Try a broader match method.

Why did my run take longer than expected? Missouri's Cloudflare protection occasionally denies a fraction of Apify's shared datacenter IPs. The actor automatically retries with fresh proxy sessions until it succeeds, which can add latency on an unlucky run, but does not require any paid proxy or manual intervention.

What's the difference between the match methods? Starting with matches the beginning of the name; All words requires every search word to appear; Any word matches if any search word appears; Exact match requires the full name. These mirror Missouri's own search form options exactly.

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