Company Registry Lookup & Supplier Change Monitor
Pricing
from $0.69 / 1,000 results
Company Registry Lookup & Supplier Change Monitor
Look up exact Norwegian and Czech company numbers, compare published registry fields over time, or search supported public registries by keyword. Export source-linked company records and change journals.
Pricing
from $0.69 / 1,000 results
Rating
0.0
(0)
Developer
Inus Grobler
Maintained by CommunityActor stats
1
Bookmarked
14
Total users
6
Monthly active users
3 days ago
Last modified
Categories
Share
Global Company Registry Lead Finder is an Apify company scraper that searches selected public company registry websites and exports matching business records as clean structured data. It works as a practical company registry scraper, business registry scraper, company lookup tool, and public company records monitor for teams that want repeatable company search results from public web pages.
Company Registry Scraper for Public Business Records
This Actor searches selected public registry websites and returns normalized results that are ready for export from Apify. It is built for buyers who want a simple company data scraper that can help with business leads, new company leads, market research, and company registry monitor workflows without relying on private databases.
Version 1 supports selected public registries. More countries may be added over time.
What This Actor Does
- Searches public company registry websites and public registry endpoints by keyword
- Extracts company names, company numbers, status, addresses, and source links where available
- Normalizes records across supported countries
- Marks records as new or changed across repeat runs
- Exports results to the Apify dataset
This makes it useful as a company search API workflow through Apify, a business registry scraper for public company records, and a company lookup tool for recurring lead generation or monitoring.
Supported Countries
Version 1 currently supports these public registry sources:
- United Kingdom: Companies House
- United States: SEC EDGAR public filer data
- France: Annuaire des Entreprises / recherche-entreprises API
- Japan: National Tax Agency Corporate Number Publication Site
- Spain: OpenMercantil data derived from Spain's official BORME gazette
- Norway: Brønnøysund Register Centre Enhetsregisteret API
- Finland: Finnish PRH open data API
- Czech Republic: ARES public API
- Canada: Corporations Canada federal corporation search
- New Zealand: New Zealand Companies Register
The United States source covers SEC EDGAR filers such as public companies and other SEC-reporting entities. It is not a complete state-by-state registry of every US LLC or corporation. The Spain source uses OpenMercantil data derived from Spain's official BORME gazette. It is useful for public gazette-backed company discovery, but it is not a complete Registro Mercantil extract.
Who This Is For
- B2B sales teams
- Lead generation agencies
- Accountants
- Web design agencies
- Recruiters
- Market researchers
- Compliance teams
- Investors
Use Cases
- Find new business leads
- Monitor company registry search results
- Build prospect lists
- Track companies matching a keyword
- Research companies in a market
- Export company registry data
Input
The Actor keeps the input simple:
searchQueries: one or more company names or business keywords you want to search forcountries: one or more supported countriesmaxResultsPerCountry: how many matches to collect per countryincludeInactive: include dissolved, removed, cancelled, or inactive records when public pages expose themonlyNew: return only records not seen in earlier runs with the same company search history
Each search term is processed separately, and each output row keeps the specific searchQuery that produced it.
If no input is provided, the Actor runs a small smoke search for AAPL in US so the default run produces at least one SEC EDGAR record.
Example Input
{"searchQueries": ["solar", "construction"],"countries": ["GB", "US"],"maxResultsPerCountry": 25,"includeInactive": false,"onlyNew": false}
Common examples:
solarinGBto find solar-related companies in the United KingdomAAPLorAppleinUSto find SEC EDGAR filer recordsrenaultinFRto find French enterprise recordsToyotainJPto find Japanese corporate number recordstelefonicainESto find Spanish BORME-derived recordsequinorinNOto find Norwegian organisation recordsnokiainFIto find Finnish PRH recordsskodainCZto find Czech ARES recordsconstructioninGBandCAto build a broader lead listmarketingwithonlyNew=truefor a repeat-run monitoring workflowrestaurantwithincludeInactive=falseto focus on currently active public records
Output
Each dataset item uses a normalized structure like this:
{"companyName": "SOLAR LTD","companyNumber": "11660911","jurisdiction": "GB","country": "United Kingdom","registryName": "Companies House","status": "Active","companyType": "Private limited Company","incorporationDate": "2018-11-05","registeredAddress": "Latif House First Way, Wembley, London, Middlesex, United Kingdom, HA9 0JD","industryCodes": ["35110 - Production of electricity"],"sourceUrl": "https://find-and-update.company-information.service.gov.uk/company/11660911","searchQuery": "solar","matchedKeyword": "solar","isNew": true,"isChanged": false,"previousHash": null,"contentHash": "0a4a5a64a3a98dbb1dfd7eb2d1af0ee7e9ec61d5080aa27d48eaa62f4fe88975","scrapedAt": "2026-05-13T14:00:00.000Z"}
The Actor also saves a RUN_SUMMARY record in the key-value store. This makes the output more useful for recurring jobs, automations, and QA because you can quickly see:
- how many records were found
- how many were output after filters such as
onlyNew - how many were new, changed, or unchanged
- active vs inactive totals
- a country-by-country breakdown
- failed or skipped sources
You can export the dataset from Apify as JSON, CSV, or Excel-friendly formats after the run finishes.
How to Run on Apify
Open the Actor in Apify Console, enter one or more search terms, choose countries, set the per-country result limit, and start the run. For a quick test, use the default AAPL and US input.
During multi-query runs, results are written to the dataset after each search term finishes, so partial results are available before the full run ends. After the run, open the Dataset tab to preview, filter, or download results as JSON, CSV, Excel, XML, or HTML.
New Company Leads and Change Detection
The Actor stores seen records between runs and compares a stable content hash for each company or business record. That means repeat runs can help you spot:
- New company leads that were not seen before
- Changed records whose public registry details have changed
- Unchanged records that were already known
If you enable onlyNew, the dataset will contain only new records while the Actor still updates its persistent state in the background.
The Actor keeps its search history automatically so repeat runs can identify new or changed records.
Exact company watchlists
Track known companies by registration number and see which published business facts changed. Supply lookupCompanies to use exact lookup instead of keyword search:
{"lookupCompanies": [{"jurisdiction": "CZ", "companyNumber": "27074358"}],"watchlistName": "supplier-checks","changesOnly": true}
Exact lookup currently supports Norway (NO, nine-digit organisation number) and Czech Republic (CZ, eight-digit IČO). Other existing jurisdictions remain available through keyword search; they are not promised exact lookup support. Watchlists accept up to 100 entries and deduplicate repeated identities. Use the same watchlist name for subsequent checks and separate names for independent histories. Do not overlap runs for the same watchlist.
The default Dataset keeps the existing normalized company-record shape. The first successful check establishes a baseline. CHANGE_JOURNAL in the Output tab gives source links, timestamps and field-level previous/current values for name, registration status, company type, incorporation date, address and industry. With changesOnly: true, unchanged companies do not create result rows or result events, but source checks and storage still consume platform resources. Each delivered company uses the existing result price; no new billing event is introduced.
Exact mode reports inactive entities so status changes remain visible. Keyword-only includeInactive and onlyNew filters retain their current meaning in keyword mode. Missing, blocked or unsupported source results are diagnostics, never inferred dissolution. A lost dataset-write response is reconciled against the original Dataset; if confirmation is unavailable, the workflow stops rather than replaying a potentially paid row. Review such a run before retrying it. This supports human-led supplier and account research and does not make a compliance decision.
Python API Example
from apify_client import ApifyClientAPIFY_TOKEN = "YOUR_APIFY_TOKEN"ACTOR_ID = "thescrapelab/global-company-registry-lead-finder"client = ApifyClient(APIFY_TOKEN)run_input = {"searchQueries": ["solar", "construction"],"countries": ["GB"],"maxResultsPerCountry": 50,"includeInactive": False,"onlyNew": False,}run = client.actor(ACTOR_ID).call(run_input=run_input)if run is None:raise RuntimeError("Actor run failed")for item in client.dataset((run["defaultDatasetId"] if isinstance(run, dict) else run.default_dataset_id)).iterate_items():print(item)
Pricing and Cost Notes
The current Store price and estimated platform usage are shown before each run. The Actor uses lightweight HTTP requests and is optimized for low memory use.
Large searches across several countries can take several minutes because some registries require detail-page lookups. Use a smaller maxResultsPerCountry for quick tests, then increase it when you are ready for a larger lead list.
Limitations
- This Actor searches public registry websites and public registry endpoints.
- It does not use private databases.
- It does not access pages requiring sign-in, payment, challenge pages, or special permission.
- Some registry websites may change layout or limit access.
- Supported countries are limited in version 1.
- Some fields may be missing because registry websites expose different information.
- The United States source is SEC EDGAR filer data, not a complete state-by-state US company registry.
- Very broad multi-country searches can run for several minutes.
Troubleshooting
My run returned no results
Try a more specific company name or keyword, confirm the selected country supports that search type, and check the RUN_SUMMARY record for skipped or failed sources.
Some sources were skipped
Public registries can temporarily block, redirect, or require interaction. The Actor records skipped sources and failed pages in the run summary or debug report when available.
The run is slower than expected
Reduce maxResultsPerCountry, the number of search queries, or the number of countries for quicker jobs. A 50-company New Zealand detail lookup can take several minutes because each company requires a separate request. Larger runs overlap at most two New Zealand detail requests while preserving the result order.
Small examples use 128 MB. When the requested country × query × result workload exceeds 50 matches, the Actor selects 512 MB automatically unless you set memory explicitly. Our larger multi-country test exceeded the 128 MB limit, so use at least 512 MB for that workload. Increasing memory helps avoid memory failures; it does not remove source latency. Allow a longer timeout or split large jobs into smaller runs.
Compliance Note
Users are responsible for using the exported data lawfully and in line with applicable rules, restrictions, and internal compliance requirements.
FAQ
Does it support all countries?
No. Version 1 supports selected public registries in the United Kingdom, United States, France, Japan, Spain, Norway, Finland, Czech Republic, Canada, and New Zealand.
Does it use registry APIs?
It uses public web pages and public registry endpoints where they are available. It does not use private databases, paid enrichment APIs, or third-party scraping APIs.
Can it find new companies?
It can help identify new matching records compared with earlier runs of the same search.
Can it monitor repeat searches?
Yes. Persistent state lets the Actor compare repeat runs and mark records as new or changed.
Can I export CSV, JSON, or Excel from Apify?
Yes. Once the run finishes, you can export the Apify dataset in the formats supported by Apify.
Why are some fields missing?
Registry websites do not all expose the same public fields, so some records may have null values for fields that are not publicly shown.
What does the run summary tell me?
The RUN_SUMMARY record shows totals, new vs changed vs unchanged counts, output counts after filtering, active vs inactive counts, and a country breakdown so repeat runs are easier to review.
How much memory should I use?
Small jobs use 128 MB. The Actor automatically selects 512 MB when the requested country × query × result workload exceeds 50 matches, unless you explicitly choose memory. For larger multi-country jobs, use at least 512 MB and allow extra time for registry detail requests.
Business Registry Scraper for Repeatable Company Lookup
If you need a company registry scraper, business registry scraper, or company data scraper that helps surface public company records and new company leads from selected registries, this Actor gives you a simple commercial workflow through Apify.
Run the Actor with a keyword and country to start building a public company registry lead list.
Large workloads and continuation
For multi-query, multi-country jobs, the optional API field maxSourceBatches limits each run to query/country pairs. Start without continuationToken, then pass the token from BATCH_CHECKPOINT or RUN_SUMMARY with the same queries, countries, result cap, filters and state store. Combine the datasets from all batches. A failed source leaves a checkpoint before that source; a retry can repeat records already emitted by the interrupted batch, so deduplicate by jurisdiction and company identity. A token is a workload cursor, not a snapshot of changing registries.
RUN_SUMMARY reports per-source durations and request/cache counts. GET reuse is limited to the same run and successful responses, with an 8 MiB cache ceiling. Country coverage remains source-dependent: an unsupported or blocked source is reported, not substituted with unrelated companies.
French search requests use pages of at most 25 records. The HTTP client honors a valid Retry-After delay up to 60 seconds; longer requested waits leave the source incomplete rather than retrying early. HTTP 429 responses without a valid delay use a bounded cooldown. Check failedSources and failedPagesCount before treating any country job as complete.
Supplier CSV checks for Norway and Czech Republic
Set workflow to supplierChecks. Supply exactly one of supplierCsv (CSV text), inputFile (an Apify-uploaded CSV record URL), or lookupCompanies. CSV headers are jurisdiction,companyNumber; only NO (nine digits) and CZ (eight digits) are supported in this workflow. Keep registration numbers as text, including leading zeroes. Maximum 100 input rows and 100 KB; duplicates are checked once. External file URLs and credentialed links are unsupported; paste the CSV instead.
{"workflow":"supplierChecks","supplierCsv":"jurisdiction,companyNumber\nNO,923609016\nCZ,27074358","watchlistName":"my-suppliers"}
Download CHECKS.csv for successful checks and explicit lookup failures, and CHANGES.csv for field-level old/new values with source links. Repeat the same watchlist name to compare snapshots. Successful unchanged checks still appear; changesOnly and onlyNew must be false. Source errors and not-found results do not prove dissolution and do not replace an earlier good snapshot. Run the same watchlist serially.
Pricing follows the active run snapshot. Before the new supplier-check event activates, existing dataset-result pricing applies. Once active, supplierChecks costs $0.019 per successful check plus the existing automatic dataset-result event ($0.00069–$0.00099 depending on plan tier): $0.01969–$0.01999 combined, including unchanged checks. Duplicate inputs, errors and recovered confirmed deliveries do not add a supplier-service event. Platform usage is included; the memory-dependent run-start event is additional. Keyword and other legacy modes retain their existing event prices. Check the Pricing tab for the effective date. These are public registry facts, not a credit rating or a due-diligence certification. Existing keyword and exact lookup inputs remain supported.
Read supplier checks correctly
For workflow: "supplierChecks", start with Supplier checks CSV (CHECKS.csv), Supplier field changes CSV (CHANGES.csv) and Run summary. The default dataset contains successfully delivered company records. Lookup failures are reported in the checks file and summary, without adding an automatically charged error row to the dataset.
outcome: completedis a successful fresh check.isChanged: falsemeans no stable-field difference was detected; unchanged checks still return a record.outcome: recoveredis a delivery recovered from an earlier run without a repeated result charge.not_foundorsource_errormeans lookup coverage is incomplete. Neither proves dissolution, and neither replaces the last good company snapshot.CHANGES.csvrecords the field, previous value, current value, registry source and observation time. The first successful check establishes a baseline.
Exact supplier checks currently support Norway (NO) and Czech Republic (CZ). Preserve company numbers as strings, including leading zeros. Keyword search retains its separately documented registry coverage.
Console example:
{"workflow":"supplierChecks","supplierCsv":"jurisdiction,companyNumber\nNO,923609016\nCZ,27074358\n","watchlistName":"my-suppliers"}
import osfrom apify_client import ApifyClientclient = ApifyClient(os.environ["APIFY_TOKEN"])run = client.actor("thescrapelab/global-company-registry-lead-finder").call(run_input={"workflow": "supplierChecks","supplierCsv": "jurisdiction,companyNumber\nNO,923609016\nCZ,27074358\n","watchlistName": "my-suppliers",})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item["jurisdiction"], item["companyNumber"], item["isChanged"], item["sourceUrl"])checks_csv = client.key_value_store(run["defaultKeyValueStoreId"]).get_record("CHECKS.csv")
Use the same watchlist name for later checks and run it serially. Current result prices and run starts remain applicable; no supplier-service surcharge is active.
Pricing activation and spending limits
New event pricing takes effect on the date shown in the Pricing tab. During any notice period, existing pricing continues. Runs use the pricing snapshot taken at startup; a running job does not switch event prices mid-run. Completed checks may be charged when their source facts are unchanged. Set a sufficient maximum run charge for a complete billable unit plus the memory-dependent start event; smaller limits return explicit partial coverage. Existing builds pinned by API clients retain their original event routing, so use the current default build for the updated workflow.