Oregon Company Registry Scraper — SOS Active Businesses
Pricing
from $1.80 / 1,000 company scrapeds
Oregon Company Registry Scraper — SOS Active Businesses
Search Oregon's active business registry by name or registry number, or stream new registrations since a date. Returns normalized records: business name, entity type, registry number, formation date, jurisdiction and registered-agent addresses. Public Socrata API (data.oregon.gov), no proxy needed.
Pricing
from $1.80 / 1,000 company scrapeds
Rating
0.0
(0)
Developer
Vladimir Chernykh
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
6 minutes ago
Last modified
Categories
Share
Search every active business registered with the Oregon Secretary of State by name or registry number, or stream new registrations since a date.
The source is Oregon's own public Socrata publication of the business registry
(data.oregon.gov, dataset
tckn-sxa6 "Active Businesses - ALL"): 1 583 956 rows, a plain JSON API, no
cookies, no captcha, no proxy.
What you get
One row per company, in a stable shape — every field is always present, and
what Oregon does not publish is null rather than missing.
| Field | Source | Notes |
|---|---|---|
name, legalName | business_name | |
entityType | entity_type | published verbatim, never guessed |
documentNumber, sourceId | registry_number | Oregon's own registry number |
jurisdiction | jurisdiction | full state name |
formationDate | registry_date | ISO 8601; the oldest entity dates to 1850 |
principalAddress | associated_name_type = PRINCIPAL PLACE OF BUSINESS | |
mailingAddress | associated_name_type = MAILING ADDRESS | |
registeredAgent.address | associated_name_type for the agent | name is not published |
status | — | always ACTIVE, see the caveat below |
Always null / empty because Oregon does not publish them in this dataset: ein,
dbaName, statusDate, dissolutionDate, officers, annualReports,
lastEvent.
Three modes
{ "mode": "search", "searchTerms": ["NIKE"], "maxResults": 100 }
{ "mode": "search", "registryNumbers": ["299818"] }
{ "mode": "new", "sinceDays": 7, "maxResults": 500 }
mode: "new" is the one worth scheduling: it returns only companies registered
after the previous run and skips everything already delivered, using a cursor in
the key-value store. Put the actor on a daily schedule and you get a
new-registrations feed instead of paying for the same companies every day.
One row per company, not per source row
This is the part that matters for the price. Oregon's dataset is a table of
associated names: a company with both a mailing and a principal address appears
as two rows, each carrying one address in address/city/state/zip.
The actor folds those rows by registry_number before saving, so a company
with two addresses becomes one record with both addresses filled. maxResults
counts companies. The run summary reports sourceRows and mergedRows so the
merge is auditable on every run.
Caveat: active businesses only
The dataset is titled "Active Businesses - ALL" and contains no dissolved or
inactive entities. That is why status is the constant ACTIVE and
dissolutionDate is always null — the absence of a company here means it is
not currently registered, not that it never existed. If you need historical
entities, this dataset cannot answer that question.
Cost and speed
$2.00 per 1 000 companies ($0.002 per company record). You are charged per company saved to the dataset — not per request, not per page, not per source row.
513 bytes and ~229 ms per source row on the Apify platform, 1000 rows per request. Each saved company is charged once; re-reading a company's second address row is not charged again, because the merge happens before saving.
The economics are possible without a proxy: data.oregon.gov is a public JSON
endpoint, so there is no per-request cost to pass on. For mode: "new" a scheduled
run typically costs one request and no charge at all when nothing new was
registered — the run summary reports charged so you can see it per run.
Input reference
| Input | Default | Meaning |
|---|---|---|
mode | search | search uses the terms/IDs; new returns the incremental feed |
searchTerms | — | case-insensitive substring match on the business name, min 2 chars |
registryNumbers | — | exact Oregon registry numbers, one request each |
maxResults | 100 | cap on saved companies (this is what you pay for) |
sinceDays | 7 | first-run lookback for mode: "new" |
sinceDate | — | explicit YYYY-MM-DD start for mode: "new" |
maxPagesPerTerm | 10 | caps paging per term (1000 rows per page) |
includeRaw | false | attach the merged source rows |
maxConcurrency | 3 | parallel requests |
requestTimeoutSecs | 30 | per-request timeout |
proxyConfiguration | off | not needed; kept for unusual network setups |
Output
Company records go to the default dataset (see the Companies tab). Run
counters — pushed, skippedSeen, companies, sourceRows, mergedRows,
requestFailures, truncated, cursor, sourceTotalRows, charged — are
stored in the key-value store under SUMMARY.