OpenCorporates Global Company Search avatar

OpenCorporates Global Company Search

Pricing

from $1.00 / 1,000 company fetcheds

Go to Apify Store
OpenCorporates Global Company Search

OpenCorporates Global Company Search

Search 200M+ companies from 140+ jurisdictions via the OpenCorporates API. Retrieve company registration data, officers, directors, addresses, and legal status for due diligence, lead generation, and compliance.

Pricing

from $1.00 / 1,000 company fetcheds

Rating

0.0

(0)

Developer

ryan clinton

ryan clinton

Maintained by Community

Actor stats

0

Bookmarked

16

Total users

9

Monthly active users

3 hours ago

Last modified

Share

Search the world's largest open database of companies -- over 200 million companies from 140+ jurisdictions -- via the official OpenCorporates API. This Apify actor retrieves structured company registration data including names, registration numbers, incorporation dates, legal status, registered addresses, and officer details. Run it on demand or on a schedule to power compliance checks, competitive intelligence, and corporate research workflows.


Why use this actor?

  • Largest open company database in one query. OpenCorporates aggregates data from 140+ official government registries worldwide, giving you a single search interface for 200M+ companies instead of checking each registry individually.
  • Zero infrastructure required. The actor runs on Apify's cloud platform with automatic retries, rate-limit handling, and exponential backoff built in. No servers to provision, no API client code to write.
  • Structured, export-ready output. Results land in a clean Apify dataset you can download as JSON, CSV, Excel, or XML -- or pipe directly into Google Sheets, Zapier, Make, Slack, and thousands of other tools.
  • Schedule and automate. Use Apify Schedules to run recurring searches on any cron pattern for ongoing corporate monitoring, compliance screening, or market research.
  • Chain with other actors. Combine results with UK Companies House lookups, VAT validation, sanctions screening, or LEI verification to build end-to-end due diligence pipelines.

Key features

  • 200M+ companies, 140+ jurisdictions -- search across the United States (all 50 states), United Kingdom, Germany, France, Australia, Canada, and dozens more in a single query
  • Jurisdiction-level filtering -- narrow results with jurisdiction codes like us_ca for California, gb for the United Kingdom, or de for Germany
  • Country-level filtering -- use broader two-letter country codes (us, gb, de) when you do not need state or province precision
  • Company status filtering -- filter by Active, Inactive, or Dissolved to focus on the companies that matter to your use case
  • Officer and director search -- enable the includeOfficers option to retrieve directors and officers matching your query alongside company results
  • Automatic pagination -- fetches up to 100 results per run, paginating through the API with a 1.5-second delay between pages to respect rate limits
  • Exponential backoff retries -- automatically handles HTTP 429 rate-limit responses with escalating wait times (10s, 20s, 30s) and up to 3 retries per request
  • Clean address formatting -- combines street address, locality, region, postal code, and country into a single human-readable string
  • Dry-run mode -- runs without an API key to validate your input configuration and show registration instructions before committing to live API calls

How to use

Using the Apify Console

  1. Navigate to the OpenCorporates Global Company Search actor page on Apify.
  2. Click Start to open the input form.
  3. Enter your Search Query -- a company name, keyword, or partial name (e.g., "Tesla", "Acme Corp").
  4. Optionally set Jurisdiction Code, Country Code, or Company Status filters.
  5. Paste your OpenCorporates API Key into the API Key field (get one at opencorporates.com/api_accounts/new).
  6. Toggle Include Officers/Directors if you need officer data.
  7. Set Max Results (1--100) depending on how many records you need.
  8. Click Start and view results in the Dataset tab when the run completes.

Using the Apify API -- JavaScript

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });
const run = await client.actor('ryanclinton/opencorporates-search').call({
query: 'Tesla',
countryCode: 'us',
status: 'Active',
apiKey: 'YOUR_OPENCORPORATES_API_KEY',
maxResults: 50,
includeOfficers: true,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Using the Apify API -- Python

from apify_client import ApifyClient
client = ApifyClient('YOUR_APIFY_TOKEN')
run = client.actor('ryanclinton/opencorporates-search').call(run_input={
'query': 'Tesla',
'countryCode': 'us',
'status': 'Active',
'apiKey': 'YOUR_OPENCORPORATES_API_KEY',
'maxResults': 50,
'includeOfficers': True,
})
items = client.dataset(run['defaultDatasetId']).list_items().items
for item in items:
print(item)

Input parameters

ParameterTypeRequiredDefaultDescription
queryStringYes--Company name or keyword to search for (e.g., "Google", "Tesla Motors")
jurisdictionCodeStringNo--Two-letter jurisdiction code (e.g., us_ca for California, gb for UK, de for Germany). Leave empty to search all jurisdictions
countryCodeStringNo--Two-letter country code for broader geographic filtering (e.g., us, gb, de)
statusStringNoAllFilter by company status: Active, Inactive, or Dissolved
apiKeyStringYes--Your OpenCorporates API key (stored securely). Get one at opencorporates.com
includeOfficersBooleanNofalseAlso search for officers/directors matching the query
maxResultsIntegerNo25Maximum number of results to return (1--100)

Example input JSON

{
"query": "Goldman Sachs",
"countryCode": "us",
"status": "Active",
"apiKey": "YOUR_OPENCORPORATES_API_KEY",
"includeOfficers": true,
"maxResults": 25
}

Tips for input configuration

  • Use jurisdictionCode for state-level precision (e.g., us_ny for New York) and countryCode for broad country-level filtering. You can use both together.
  • Start with a small maxResults (10--25) to validate your query before scaling up to 100.
  • The apiKey field is marked as secret -- it will not appear in run logs or shared configurations.

Output

Company result example

{
"companyName": "TESLA, INC.",
"companyNumber": "C3259768",
"jurisdictionCode": "us_ca",
"jurisdiction": "US - CA",
"incorporationDate": "2003-07-01",
"dissolutionDate": null,
"companyType": "Domestic Stock",
"registryUrl": "https://bizfileonline.sos.ca.gov/search/business",
"status": "Active",
"registeredAddress": "3500 Deer Creek Road, Palo Alto, CA, 94304, US",
"source": "California Secretary of State",
"opencorporatesUrl": "https://opencorporates.com/companies/us_ca/C3259768",
"officers": null
}

Officer result example (when includeOfficers is enabled)

{
"resultType": "officer",
"name": "Elon Musk",
"position": "chief executive officer",
"startDate": "2008-10-15",
"endDate": null,
"companyName": "TESLA, INC.",
"companyNumber": "C3259768",
"jurisdictionCode": "us_ca",
"opencorporatesUrl": "https://opencorporates.com/officers/123456789"
}

Output fields reference

FieldTypeDescription
companyNameStringOfficial registered name of the company
companyNumberStringRegistration number assigned by the official registry
jurisdictionCodeStringJurisdiction code in OpenCorporates format (e.g., us_ca, gb)
jurisdictionStringHuman-readable jurisdiction label (e.g., "US - CA", "GB")
incorporationDateString/nullDate the company was incorporated (YYYY-MM-DD)
dissolutionDateString/nullDate the company was dissolved, if applicable
companyTypeString/nullLegal entity type (e.g., "Domestic Stock", "Limited Company")
registryUrlString/nullURL of the official government registry page
statusString/nullCurrent company status (e.g., "Active", "Dissolved")
registeredAddressString/nullFormatted registered address combining street, locality, region, postal code, and country
sourceString/nullName of the official registry publisher (e.g., "California Secretary of State")
opencorporatesUrlStringDirect URL to the company's OpenCorporates profile page
officersArray/nullOfficer data (null for company search results; officers are returned as separate dataset items)
resultTypeStringPresent only on officer results -- always set to "officer"

Use cases

  • KYC and due diligence -- verify company existence, registration status, and registered addresses across 140+ jurisdictions as part of Know Your Customer workflows
  • Competitive intelligence -- track competitor registrations, monitor new incorporations in your industry, and identify corporate structures across multiple countries
  • Compliance screening -- check whether counterparties are active, dissolved, or inactive before entering business relationships
  • Corporate genealogy research -- trace company histories, dissolution dates, and officer tenures to understand corporate evolution over time
  • Lead generation and enrichment -- find companies matching specific criteria and enrich lead databases with official registry data
  • Academic and journalistic research -- investigate corporate structures, cross-border registrations, and officer networks for research publications
  • M&A target identification -- search for companies by type, jurisdiction, and status to identify potential acquisition targets
  • Supply chain verification -- confirm that suppliers and vendors are properly registered and active in their stated jurisdictions
  • Officer network mapping -- use the officer search to discover connections between individuals and companies across jurisdictions

API & integration

Python

from apify_client import ApifyClient
client = ApifyClient('YOUR_APIFY_TOKEN')
run = client.actor('ryanclinton/opencorporates-search').call(run_input={
'query': 'Alphabet Inc',
'countryCode': 'us',
'maxResults': 10,
'apiKey': 'YOUR_OPENCORPORATES_API_KEY',
})
for item in client.dataset(run['defaultDatasetId']).list_items().items:
print(f"{item['companyName']} -- {item['jurisdiction']} -- {item['status']}")

JavaScript

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });
const run = await client.actor('ryanclinton/opencorporates-search').call({
query: 'Alphabet Inc',
countryCode: 'us',
maxResults: 10,
apiKey: 'YOUR_OPENCORPORATES_API_KEY',
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
console.log(`${item.companyName} -- ${item.jurisdiction} -- ${item.status}`);
});

cURL

curl "https://api.apify.com/v2/acts/ryanclinton~opencorporates-search/runs" \
-X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_APIFY_TOKEN" \
-d '{
"query": "Alphabet Inc",
"countryCode": "us",
"maxResults": 10,
"apiKey": "YOUR_OPENCORPORATES_API_KEY"
}'

Platform integrations

This actor works with all standard Apify integrations:

  • Webhooks -- trigger downstream actions when a run completes
  • Schedules -- automate recurring searches on any cron pattern
  • Google Sheets -- export results directly to a spreadsheet
  • Zapier / Make / n8n -- connect to thousands of apps for automated workflows
  • Slack -- receive notifications when new results are available

How it works

  1. Input validation -- the actor reads your input parameters and verifies that a search query is provided. If no API key is supplied, it enters dry-run mode and outputs registration instructions.
  2. Build search parameters -- jurisdiction code, country code, and status filters are normalized to lowercase and added to the API request.
  3. Company search -- the actor queries the OpenCorporates API v0.4.8 /companies/search endpoint with pagination (up to 100 results per page). It fetches pages sequentially with a 1.5-second delay between each request.
  4. Rate-limit handling -- if the API returns HTTP 429, the actor waits with exponential backoff (10s, 20s, 30s) and retries up to 3 times per request. HTTP 401 errors throw immediately with a clear message about invalid API keys.
  5. Data transformation -- raw API responses are mapped to a clean output schema. Registered addresses are formatted into single strings. Jurisdiction codes are converted to human-readable labels.
  6. Officer search (optional) -- if includeOfficers is enabled, the actor makes a separate request to the /officers/search endpoint. Officer results are tagged with resultType: "officer" and pushed to the same dataset.
  7. Output -- all results are pushed to the Apify dataset, ready for download or integration.
Input Query
|
v
[Validate Input] --> No API key? --> [Dry-Run Output]
|
v
[Build API Params]
|
v
[Search /companies/search] --pagination--> [Next Page] --1.5s delay-->
| |
| <-- 429? --> [Exponential Backoff Retry] |
| |
v v
[Transform Company Data] <---------------------+
|
v
[Push Companies to Dataset]
|
v
includeOfficers? --yes--> [Search /officers/search]
| |
| v
| [Tag with resultType: "officer"]
| |
| v
| [Push Officers to Dataset]
|
v
[Done]

Performance & cost

MetricValue
Memory allocation256 MB
Timeout3,600 seconds (1 hour)
Typical run time (25 results)10--20 seconds
Typical run time (100 results with officers)30--60 seconds
Estimated cost per run (25 results)~$0.001
Estimated cost per run (100 results)~$0.003
Estimated cost for 1,000 runs/month~$1.00
API delay between pages1.5 seconds
Max retries on rate limit3 attempts with exponential backoff

The actor runs on minimal compute resources. On the Apify Free plan, you receive $5 of platform credits per month, which supports thousands of runs of this actor. You also need an OpenCorporates API key -- visit opencorporates.com/api_accounts/new to sign up and check their current pricing and rate limits.


Limitations

  • API key required. The actor requires a valid OpenCorporates API key. Without one, it runs in dry-run mode and does not return company data.
  • Rate limits apply. OpenCorporates enforces rate limits on their API. The actor handles these automatically, but very high-volume usage may require an upgraded API plan.
  • Maximum 100 results per run. The maxResults parameter caps at 100. For larger datasets, run multiple queries with different filters or jurisdiction codes.
  • Officer search is single-page. The officer endpoint fetches only the first page of results (up to the maxResults limit) without pagination.
  • Data freshness varies by jurisdiction. OpenCorporates updates its database from official registries on different schedules. Major jurisdictions are typically updated weekly or monthly, but some smaller registries may lag.
  • No direct company lookup by number. The actor searches by name or keyword. It does not support looking up a specific company by its exact registration number.
  • Address formatting depends on registry data. Not all registries provide complete address information. Some fields may be null or incomplete depending on the jurisdiction.

Responsible use

  • Respect OpenCorporates terms of service. Ensure your usage complies with the OpenCorporates API terms. Commercial use may require a paid API plan.
  • Handle personal data carefully. Officer names and positions are personal data. Process them in accordance with applicable data protection laws such as GDPR, CCPA, or equivalent regulations in your jurisdiction.
  • Do not use for harassment or discrimination. Company and officer data should be used for legitimate business purposes such as due diligence, compliance, research, and verification -- never for stalking, harassment, or discriminatory practices.
  • Verify critical information at primary sources. For formal KYC, AML, or legal proceedings, always cross-reference OpenCorporates data against the original government registry to confirm accuracy and currency.
  • Use reasonable request volumes. Avoid unnecessarily high-frequency runs that could strain the OpenCorporates API. Use filters and appropriate maxResults values to retrieve only the data you need.

FAQ

Do I need an OpenCorporates API key to use this actor? Yes. The actor requires a valid API key to fetch live data. Without one, it runs in dry-run mode and returns instructions for obtaining a key. Sign up at opencorporates.com/api_accounts/new.

Is the OpenCorporates API key free? OpenCorporates offers API plans starting with a free tier for basic access. Visit their website to check current pricing, rate limits, and plan options for your use case.

What jurisdictions does OpenCorporates cover? Over 140 jurisdictions worldwide, including all 50 US states, the United Kingdom, Germany, France, Canada, Australia, the Netherlands, and many more. Use the jurisdictionCode or countryCode filters to target specific regions.

What is the difference between jurisdictionCode and countryCode? countryCode is a broad two-letter filter (e.g., us returns companies from all US states). jurisdictionCode is more specific -- for example, us_ca returns only California companies and us_ny returns only New York companies.

How do I search for companies in a specific US state? Set jurisdictionCode to the state code in the format us_xx -- for example, us_ca for California, us_ny for New York, or us_de for Delaware.

What happens if I hit the OpenCorporates rate limit? The actor automatically handles HTTP 429 rate-limit responses. It waits with exponential backoff (10 seconds, then 20, then 30) and retries up to 3 times per request before moving on.

Can I run this actor on a schedule? Yes. Use Apify Schedules to run the actor on any cron pattern -- daily, weekly, or custom intervals. This is ideal for ongoing corporate monitoring or compliance checks.

How do I get officer data in the results? Set includeOfficers to true in the input. The actor will perform an additional search against the OpenCorporates officers endpoint. Officer results appear in the same dataset with a resultType: "officer" field.

Are company and officer results mixed in the same dataset? Yes. Company results have the standard company fields, while officer results include a resultType: "officer" field. You can filter by the presence of resultType to separate them.

Can I combine this with other Apify actors? Absolutely. Use the Apify API or platform integrations to chain this actor with other actors -- for example, run a company search and then pass the results to a sanctions screening actor or a VAT validation actor.

What output formats are available? Results are stored in an Apify dataset and can be exported as JSON, CSV, Excel (XLSX), XML, or RSS. You can also access them programmatically via the Apify API.

Is this actor suitable for KYC/AML compliance workflows? The data comes from official government registries aggregated by OpenCorporates and can be a useful component of due diligence workflows. However, for formal KYC/AML processes, always verify critical information against primary registry sources.


ActorDescriptionLink
UK Companies HouseSearch UK Companies House for detailed company data, filings, and officer informationapify.com/ryanclinton/uk-companies-house
EU VAT ValidatorValidate European Union VAT numbers via the official VIES serviceapify.com/ryanclinton/eu-vat-validator
GLEIF LEI LookupLook up Legal Entity Identifiers (LEIs) to verify company identity in financial transactionsapify.com/ryanclinton/gleif-lei-lookup
OpenSanctions SearchSearch global sanctions and politically exposed persons (PEP) listsapify.com/ryanclinton/opensanctions-search
OFAC Sanctions SearchSearch the US Treasury OFAC sanctions list for designated individuals and entitiesapify.com/ryanclinton/ofac-sanctions-search
SEC Insider TradingTrack SEC Form 4 insider trading filings for public companiesapify.com/ryanclinton/sec-insider-trading