California SOS Business Search Scraper
Under maintenancePricing
from $10.00 / 1,000 california sos record returneds
California SOS Business Search Scraper
Under maintenanceSearch California Secretary of State BizFile business entities by name or entity number and return normalized status, filing, agent, address, and risk signals.
Pricing
from $10.00 / 1,000 california sos record returneds
Rating
0.0
(0)
Developer
Muhammad Afzal
Maintained by CommunityActor stats
0
Bookmarked
10
Total users
4
Monthly active users
3 days ago
Last modified
Categories
Share
Access limitation — October 18, 2026: California SOS currently denies ordinary access or presents an hCaptcha challenge. DataImpulse rejects this target with
SITE_PERMANENTLY_BLOCKED, and the last verified Oxylabs tests rejected it. Data retrieval is not restored. This build limits wasted usage and reports access failures explicitly; it does not solve CAPTCHAs. Do not use it for a guaranteed live registry lookup until approved source access is available.
Free plan limit: Free-plan users can receive up to 5 result records per run. Paid-plan and local/unknown runs retain the Actor's existing limits.
Search the official California Secretary of State BizFile Online business registry by company name or California entity number. The actor returns compact, typed records for due diligence, KYB checks, registered-agent research, business-status monitoring, and AI-agent workflows.
What it does
Use this actor when you need public California registry data for corporations, LLCs, LPs, and nonprofit entities. It first makes a bounded HTTP request to the public page-backed search endpoint. If a normal browser session is needed, it opens the official search form once and observes the form's response. No sessions are rotated after a denial or CAPTCHA. It does not file documents, order certificates, download filing images, log in to an account, or bypass a CAPTCHA or anti-bot challenge.
The actor is designed for compliance teams, legal and due-diligence researchers, sales operations teams validating business names, journalists, and AI agents that need a small structured answer instead of a browser transcript.
When to use it
Use it for questions such as:
- Is a company registered with the California Secretary of State?
- What is the entity number, status, standing, entity type, initial filing date, or formation jurisdiction?
- What registered agent or address did the public registry return?
- Which companies in a short list look active, suspended, forfeited, dissolved, or otherwise need review?
Do not use it for California tax balances, certified copies, private account data, LLP or general-partnership records that the portal does not index, or legal conclusions. The status risk score is a transparent triage signal, not a legal, credit, or compliance opinion.
Input
{"businessNames": ["Apple Inc", "C0806592"],"maxItems": 10,"includeRawFields": false,"requestDelayMs": 2500}
businessNames is required and accepts company names or entity numbers. maxItems defaults to 10 and caps the total unique records across all queries. includeRawFields defaults to false and can be enabled when you need the original fields returned by the registry. requestDelayMs defaults to 2500 milliseconds between separate searches.
Output
One dataset item is emitted per unique registry row. The stable fields are:
| Field | Description |
|---|---|
entityName | Registered entity name |
entityNumber | California entity/file number when returned |
status | Public registry status |
standing | Public standing value when returned |
entityType | Entity classification |
formationDate | Initial filing or formation date |
jurisdiction | Formed-in state or country |
registeredAgent | Public agent text |
principalAddress | Principal address when returned |
mailingAddress | Mailing address when returned |
riskScore | 0-100 triage score from status and standing text |
riskLevel | low, medium, high, or critical |
riskSignals | Human-readable reasons for the score |
searchQuery | Input query that produced the row |
sourceUrl | Official BizFile Online search page |
scrapedAt | ISO 8601 collection timestamp |
rawFields | Original row fields when opted in; otherwise null |
Active or good-standing text maps to a low score. Suspended, inactive, delinquent, or not-good-standing text maps to a high score. Dissolved, cancelled, revoked, surrendered, merged, or forfeited text maps to a critical score. Unknown or missing status text is intentionally called out rather than silently treated as healthy.
The OUTPUT key-value record contains terminal status, counts, warnings, and target diagnostics. An empty match is a successful empty run. If Imperva blocks every search, the run is marked blocked with a diagnostic message rather than pretending that the business names have no matches.
Pricing
This Actor uses pay-per-event pricing with all-in pricing (Apify platform usage is included in the event prices, with no separate platform fees charged to users):
| Event | Tiered Price (USD) | When it is charged |
|---|---|---|
sos-record | FREE: $0.014 BRONZE: $0.013 SILVER: $0.012 GOLD / PLATINUM / DIAMOND: $0.010 | California SOS record returned — Charged for each unique normalized business entity returned in the dataset. |
apify-actor-start | $0.005 | Actor Start — Synthetic event: one event per GB allocated, minimum one. A 1 GB run charges one start event. |
For example, ten records cost $0.145 on FREE, $0.135 on BRONZE, $0.125 on SILVER, or $0.105 on GOLD at 1 GB, including one $0.005 start event. Free-plan output is limited to five records. Prices are the existing live prices; this repair does not change them.
JavaScript API
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('YOUR_USERNAME/sos-scraper').call({businessNames: ['Apple Inc', 'C0806592'],maxItems: 10});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
Python API
from apify_client import ApifyClientimport osclient = ApifyClient(os.environ["APIFY_TOKEN"])run = client.actor("YOUR_USERNAME/sos-scraper").call({"businessNames": ["Apple Inc", "C0806592"],"maxItems": 10,})items = list(client.dataset(run["defaultDatasetId"]).iterate_items())print(items)
Reliability notes
BizFile Online can deny ordinary requests or require a CAPTCHA. The Actor makes at most one direct HTTP attempt for a pending query and one browser session per run. It stops on a browser denial, CAPTCHA, proxy failure, or HTTP 429. It uses the owner-configured proxy, or one US Apify residential session when no custom proxy is configured. DataImpulse is not used because its gateway denies this target.
The browser blocks images, fonts, and media. Browser request retries and session rotations are disabled. Live runs use 1 GB by default with a 120-second hard timeout; the Actor starts shutting down after at most 85 seconds. Large batches can return partial data before this deadline. HTTP-only runs avoid browser and proxy traffic. Query names and entity identities are deduplicated before writing or charging.
OUTPUT reports terminal status, stop reason, delivered records, actual custom result-event counts, effective limit, request counts, browser launches, and stage timing. Only a recognized search response with zero rows is EMPTY. Access denials, rate limits, malformed responses, and proxy failures are distinct errors. Valid partial results remain in the dataset. A failed or empty lookup has zero sos-record charges; the platform-managed start fee can still apply.
Legal and data-use notice
This actor accesses publicly displayed business-registry information. Users are responsible for complying with the California Secretary of State website terms, applicable laws, privacy obligations, and any downstream data-use restrictions. The data is not certified, and the California Secretary of State is the authoritative source for legal reliance.
FAQ
Why did a run return no records?
The query may have no matching indexed entity, or the target may have returned a valid empty response. Check the OUTPUT warnings and try the registered name or entity number.
Why did a run become blocked?
Imperva can reject a browser session before the JSON search executes. The Actor stops after one public browser session when it sees a denial or CAPTCHA. Approved source or provider access is required if this persists; changing selectors does not repair an access restriction.
Does this download filing PDFs?
No. It is a read-only structured business-search actor. It does not order documents or access authenticated filing workflows.
Can I search all California businesses?
Use a bounded list of names or entity numbers. This actor is designed for targeted lookups and bounded batches; maxItems is capped at 10,000 to keep runtime, load, and billing predictable.
What does the risk score mean?
It is a deterministic mapping of returned status and standing text. It flags records for review; it does not determine legal good standing, solvency, tax compliance, or fraud.