Skip to content
    ↑↓ to choose · Enter to open

    · 13 min read

    NZ Companies Register Scraper: 15 Data Fields per Record (2026)

    By CrawlerBros Engineering Team

    Each company record returned carries 15 output fields including the company number, legal name, registered New Zealand Business Number, entity status, and full status history. This data collector is built for compliance officers, legal analysts, and operational teams who need to verify corporate registrations directly from the official registry. Those who require shareholder listings, historical filings, or full annual return documents should look elsewhere because these records require a registered portal login and are not returned.

    Try it before you read further. Apify's free plan includes $5.00 of usage every month with no credit card, enough for up to 1,000 results at $0.005 each before platform usage. Open NZ Companies Register Scraper on Apify and run the prefilled example.

    How reliable is NZ Companies Register Scraper in production?

    Across the last 30 days of public runs on the Apify platform, NZ Companies Register Scraper recorded 55 runs with the following outcomes.

    Outcome Runs Share
    Succeeded 45 81.8%
    Failed 10 18.2%
    Aborted by the user 0 0.0%
    Timed out 0 0.0%
    Total 55 100.0%

    The platform telemetry indicates about 18 in a hundred runs fail or time out, meaning roughly one run in 5 will not complete successfully. When running automated or unattended schedules, you must construct retry logic and notification systems to handle these failures. Keeping your inputs restricted to smaller batches of company numbers will minimize the impact when a run fails.

    What does it cost to run NZ Companies Register Scraper?

    Each result costs $0.005 on Apify's free plan, which is $5.00 per 1,000 results. Starting a run is charged separately at $0.005 per GB of Actor memory. Apify also bills the platform usage each run consumes, at the rates of your Apify plan, on top of these charges.

    Apify plan Per result Per 1,000 results
    FREE $0.005 $5.00
    BRONZE $0.00433 $4.33
    SILVER $0.00367 $3.67
    GOLD $0.003 $3.00
    PLATINUM $0.003 $3.00
    DIAMOND $0.003 $3.00

    Worked example: collecting 10,000 results costs $50.00 in result charges before run-start fees and platform usage. With 18.2% of runs failing or timing out in the last 30 days, budget for re-running a portion of those batches rather than assuming every run completes.

    The maxItems control is the primary driver of your billing because it caps the number of results written to the dataset. To run a cheap test of your pipeline, execute the run using the prefilled configuration to keep your result cost under $0.10. Setting fetchDirectors to true will fetch additional detail pages but does not change the result fee because it writes the same total number of records.

    How do you run NZ Companies Register Scraper from the API?

    The schema marks 1 of its 11 controls as required: mode. The payload below uses the schema's own prefilled values, so it runs as written once you substitute your API token.

    Call the synchronous endpoint to start a run and receive dataset items in one request:

    curl -X POST "https://api.apify.com/v2/acts/crawlerbros~nz-companies-register-scraper/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
      -H "Content-Type: application/json" \
      -d '{"mode":"search","searchQuery":"air new zealand","companyNumbers":["510446"],"entityType":"ALL","entityStatus":"ALL","fetchDirectors":false,"maxItems":20}'
    

    The same run from Python, using the official client:

    from apify_client import ApifyClient
    
    client = ApifyClient("<YOUR_APIFY_TOKEN>")
    
    run_input = {
      "mode": "search",
      "searchQuery": "air new zealand",
      "companyNumbers": [
        "510446"
      ],
      "entityType": "ALL",
      "entityStatus": "ALL",
      "fetchDirectors": False,
      "maxItems": 20
    }
    
    run = client.actor("crawlerbros~nz-companies-register-scraper").call(run_input=run_input)
    
    for item in client.dataset(run["defaultDatasetId"]).iterate_items():
        print(item)
    

    And from Node.js:

    import { ApifyClient } from 'apify-client'
    
    const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' })
    
    const input = {
      "mode": "search",
      "searchQuery": "air new zealand",
      "companyNumbers": [
        "510446"
      ],
      "entityType": "ALL",
      "entityStatus": "ALL",
      "fetchDirectors": false,
      "maxItems": 20
    }
    
    const run = await client.actor('crawlerbros~nz-companies-register-scraper').call(input)
    const { items } = await client.dataset(run.defaultDatasetId).listItems()
    console.log(items)
    

    The synchronous endpoint holds the connection open until the run finishes, which is convenient for small batches and wrong for large ones. For anything long running, start the run asynchronously and poll, or attach a webhook, so a dropped connection does not cost you the results.

    Which NZ Companies Register Scraper inputs matter, and which can you skip?

    The mode selector is the most important control because it alters the query strategy between broad keyword searches, exact registration lookups, and deep advanced filtering. Most users should start with the search mode and a basic query before attempting to use advanced coordinates. Leave the other ten parameters empty during your initial run to verify the layout.

    • mode (string): What to search. Default: "search".
    • searchQuery (string): (mode=search, mode=advanced) Company name, keyword, company number, or NZBN. Default: "air new zealand".
    • companyNumbers (array): (mode=byCompanyNumber) Exact NZ company numbers to look up. Default: [].
    • entityType (string): (mode=advanced) Restrict to a specific entity type. Default: "ALL".
    • entityStatus (string): (mode=advanced) Restrict to a specific entity status. Default: "ALL".
    • addressKeyword (string): (mode=advanced) Keyword to match within the registered office / address for rate.
    • postalCode (string): (mode=advanced) Restrict to a specific NZ postal code.
    • incorporationDateFrom (string): (mode=advanced) Earliest incorporation date, format DD/MM/YYYY (e.g. 01/01/2020).
    • incorporationDateTo (string): (mode=advanced) Latest incorporation date, format DD/MM/YYYY (e.g. 31/12/2023).
    • fetchDirectors (boolean): Fetch each company's detail page (and full directors sub-page) for the complete current + former directors list with appointment/ceased dates, ultimate holding company, previous statuses, and constitution-filed flag. Disable for faster bulk exports that only need the register summary row. Default: false.
    • maxItems (integer): Hard cap on emitted company records. Default: 20.

    Fixed-choice controls: mode accepts search (Search by name / keyword / NZBN), byCompanyNumber (Lookup by exact company number), advanced (Advanced search (entity type + status + address + incorporation date range)); entityType accepts ALL (All entity types), LTD (NZ Limited Company), UNLTD (NZ Unlimited Company), COOP (NZ Co-operative Company), ASIC (Overseas ASIC Company), NON_ASIC (Overseas Non-ASIC Company); entityStatus accepts ALL (All entity statuses), REGISTERED, EXTERNAL_ADMINISTRATION (receivership/liquidation/etc.), REMOVED.

    What does NZ Companies Register Scraper return?

    The returned datasets are excellent for populating compliance monitoring software, verifying corporate status, and mapping business hierarchies. They do not contain company shareholder lists or official document PDFs, as these require registered login access.

    • companyNumber - NZ Companies Office company number
    • entityName
    • nzbn - New Zealand Business Number
    • entityType - e.g. NZ Limited Company, Overseas Non-ASIC Company
    • entityStatus - e.g. Registered, Removed, External Administration
    • previousStatuses[] - { status, from, to } per historical status change
    • incorporationDate - ISO date
    • constitutionFiled - boolean
    • ultimateHoldingCompany
    • registeredOfficeAddress
    • directors[] - { name, address, appointmentDate }, the company's full
    • formerDirectors[] - { name, address, appointmentDate, ceasedDate }, most
    • profileUrl - canonical register page
    • recordType: "company", scrapedAt

    These are the documented fields. Optional ones can be empty on a given record, so measure how often each field your deliverable depends on is populated across a real sample before automating the handoff.

    How do you build the workflow end to end?

    Open NZ Companies Register Scraper and work through these in order. Each step ends with something to check, so a bad configuration surfaces on a small run rather than a scheduled one.

    1. Set the mode control to search, byCompanyNumber, or advanced to determine how the registry is queried.
    2. Enter a business name, NZBN, or keyword in the searchQuery field if you are using search or advanced mode.
    3. Populate the companyNumbers array with exact New Zealand company numbers when using the byCompanyNumber mode.
    4. Refine your query using advanced controls like entityType, entityStatus, or postalCode to isolate target registry rows.
    5. Set the incorporationDateFrom and incorporationDateTo fields using the DD/MM/YYYY format to filter by formation dates.
    6. Toggle fetchDirectors to true to scrape the detailed company profiles including directors and ultimateHoldingCompany fields.
    7. Verify the maxItems limit is set to a safe ceiling to keep result charges within your budget boundaries.
    8. Analyze the output dataset to ensure vital fields such as nzbn and companyNumber are correctly populated before scheduling.

    How do you apply it? Three worked playbooks

    These are NZ Companies Register Scraper's own documented use cases, each worked through as an operating pattern rather than a description.

    Use case 1: Due diligence & KYC

    Outcome: Verify a NZ company's registration status, NZBN,

    Configure: Set mode to "byCompanyNumber", enter the target company number in the companyNumbers array, set fetchDirectors to true, and set maxItems to 20.

    Working method: Run the lookup using exact registration identifiers. Check the resulting dataset to verify the entityStatus is Registered and review the directors array to cross-reference director names against your identity proofing.

    Deliverable: A validated JSON profile record containing the exact companyNumber, active entityStatus, verified nzbn, and the current list of directors.

    Stop condition: The returned company record displays an entityStatus of Removed or External Administration.

    Use case 2: Compliance monitoring

    Outcome: Track entity status changes (e.g. moves to

    Configure: Set mode to "advanced", enter the industry keyword in searchQuery, set entityStatus to "EXTERNAL_ADMINISTRATION", set fetchDirectors to false, and set maxItems to 100.

    Working method: Schedule this query to run at regular weekly intervals. Compare the newly generated dataset against the previous week's output to detect any companies that have entered administration.

    Deliverable: A tracking list containing the companyNumber, entityName, and previousStatuses history for distressed entities.

    Stop condition: The query returns no results for multiple standard search keywords that previously returned data.

    Use case 3: Business development

    Outcome: Build prospect lists filtered by entity type,

    Configure: Set mode to "advanced", set searchQuery to a target business keyword, set entityType to "LTD", set entityStatus to "REGISTERED", and set incorporationDateFrom to a recent date.

    Working method: Execute the query to pull recently registered limited companies. Scan the registeredOfficeAddress field to organize and group prospects by their geographic location.

    Deliverable: A compiled spreadsheet of active prospects featuring their incorporationDate, registeredOfficeAddress, and direct profileUrl.

    Stop condition: More than half of the returned company records contain empty registeredOfficeAddress values.

    What breaks, and how do you design around it?

    • Over the last 30 days, 18.2% of public runs failed and 0.0% timed out. Build retries and alerting around those rates rather than assuming every run completes.

    To design around the registry's strict cap of 1000 results per query, split broad keywords into narrower queries. You can apply the advanced mode to segment your runs by specific incorporationDateFrom and incorporationDateTo ranges. If you need director names, always enable fetchDirectors to ensure those details are scraped.

    When should you not use NZ Companies Register Scraper?

    Do not use this scraper if you need shareholder registries, historical PDF filings, or annual returns, as these require a login and cannot be retrieved by this public scraper. If your research targets other jurisdictions, you must use tools tailored to those registers. For Norway, use the Norway Brønnøysund Company Registry Scraper instead. For Ireland, you should run the Ireland CRO Company Search Scraper to find official registry data.

    What should you check before trusting the output?

    • Verify that the nzbn field is populated with a thirteen-digit New Zealand Business Number for each company record.
    • Check that the previousStatuses array contains structured historical statuses with both from and to date values.
    • Confirm that the directors array is not empty and contains name and address fields when fetchDirectors is enabled.
    • Abort the execution or flag the run if critical fields like entityStatus return null values across the entire dataset.
    • Verify that profileUrl strings point to the official companiesoffice.govt.nz domain without redirect errors.

    None of this proves a record is correct. It gives a scheduled NZ Companies Register Scraper run defined points where it should stop instead of quietly passing bad data downstream.

    Frequently asked questions

    What is the cost of scraping 1,000 companies from the register?

    Scraping 1,000 companies costs $5.00 on the free-plan tier. Because Apify's free plan includes $5.00 of monthly usage without requiring a credit card, you can perform your first 1,000 lookups completely free.

    Why is the success rate for this Actor currently 81.8%?

    The 30-day telemetry shows a success rate of 81.8%, meaning roughly one run in 5 fails or times out. This is typically due to changes in the layout of the New Zealand Companies Register. You should design your automated workflows to retry failed runs.

    Can this scraper retrieve director addresses and history?

    Yes. When you set the fetchDirectors parameter to true, the scraper visits each company's detail page. It returns the current directors, their addresses, and up to 10 past directors with appointment and resignation dates.

    Why are the director fields missing from my dataset?

    Director enrichment is disabled by default to keep runs fast. If your output does not contain director details, verify that you set fetchDirectors to true. Note that some overseas company types do not list directors on this register.

    How fresh is the company data returned by this scraper?

    The data is completely fresh. Every run queries the official New Zealand Companies Register in real-time, meaning you get the active, live status of the company at the exact second the run is executed.

    Where to go next

    When you are ready to run it, open NZ Companies Register Scraper on Apify; the free plan covers up to 1,000 results a month.

    Other Actors we maintain for related data:

    Related guides:

    Resources

    • Actor documentation, input schema, and pricing: verified against the published Actor on 2026-10-06.

    • Actor last updated by its maintainers on 2026-07-04.

    • Run outcome figures cover the 30 day public window ending 2026-10-06.

    • NZ Companies Register Scraper on Apify

    Featured actors

    NZ Companies Register Scraper

    Search the New Zealand Companies Register by name, keyword, or NZBN, or look up an exact company by company number. Get entity type, status, incorporation date, registered office address, and directors.

    Run on Apify ↗