Enrich Google Sheets with DataLedger — automatically

Add a company number to your sheet and let Zapier fill the rest: name, local authority, employees, assets, liabilities, equity, and SIC. No PDFs. No manual copy-paste.

Intro

What you’ll learn (2 minutes setup, ~10 minutes mapping):

  • Trigger a Zap when a company_number is added in Google Sheets

  • Call the DataLedger API securely with your API key

  • Update the same row with profile + balance-sheet fields

  • Add a status column to make troubleshooting easy

What you need:

  • Google account + a simple Google Sheet

  • Zapier account

  • DataLedger API key (from your account area)

Set up your Google Sheet

Screenshot of a Google Sheets document titled 'Zapier demo' showing column headers for company and registration information.

Option A (quick start):
👉 Download the Google Sheets template (preloaded with all DataLedger fields)

This template includes every available column (profile, officers, SICs, balance sheet, profit & loss, ratios). Perfect if you want the full dataset ready to go.

Option B (custom setup):
If you’d rather start small, create a sheet with these minimum columns:

  • company_number (your input column)

  • dl_status (optional, to track success/errors)

  • A few target fields such as:

    • company_name

    • local_authority

    • sic1_description

    • c_calculated_total_assets

    • c_calculated_total_liabilities

    • c_calculated_equity

You can add more columns later as you need them.

Create the Zap trigger

In Zapier:

  1. App: Google Sheets

  2. Event: New or Updated Spreadsheet Row (or New Spreadsheet Row)

  3. Connect your Google account

  4. Choose Spreadsheet + Worksheet

  5. Trigger Column: company_number

Tip: Add a Filter by Zapier step — continue only if company_number is not empty.

A visual diagram showing steps to set up a Zap, including selecting an event that triggers the Zap and an event for the Zap to run.
Screenshot of a computer screen showing a sidebar menu with categories such as Apps, AI, Flow controls, Utilities, Products, and Custom. The main area lists popular apps including Facebook Lead Ads, Google Calendar, Google Drive, Google Forms, Gmail, Google Sheets, HubSpot, Mailchimp, Notion, Slack, Calendly, Microsoft Outlook, and Typeform, among others.
Screenshot of a digital form or setup page for creating a new or updated spreadsheet row in Google Sheets via Zapier, showing options for app selection, trigger event, and account details.

Add a filter to prevent a loop

⚙️ Important filter: Add a Filter by Zapier step straight after the trigger:

  • Only continue if dl_status is empty

This means the Zap will only fire on fresh company numbers. Once the row has been updated and dl_status is set to OK (or Error), it won’t run again — avoiding an endless loop.

A visual representation of an automation workflow with Google Sheets and a filter condition using Zapier. The workflow includes a step to open or update a spreadsheet and a filtering step based on a specific status code that does not exist.

Call the DataLedger API (Webhooks)

Screenshot of a API request setup, showing URL with company number, headers for API key, and options for JSON formatting.

App: Webhooks by Zapier
Event: GET

URL:

https://api.dataledger.uk/v1/companies/12345678

(Map company_number from the trigger. Ensure ONLY the number is passed.)

Headers:

x-api-key: YOUR_API_KEY

cURL reference:

curl -X GET \ "https://api.dataledger.uk/v1/companies/12345678" \ -H "x-api-key: YOUR_API_KEY"

Common mistake to avoid: Don’t append the entire row as query params. Only pass company_number.

Screenshot of DataLedger API Pro Plan dashboard showing API key, usage example, status, length, and privacy details with a sidebar menu including Home, Chat, Billing & Credits, Products, API Showcase, API Documentation, Data Dictionary, and Support.

Map API response fields to your row

Now we tell Zapier how to update the same row that triggered the Zap:

  1. Action: Google Sheets → Update Spreadsheet Row

  2. Row: Map the Row ID from the trigger step (this ensures only the correct row is updated).

  3. Field mapping: For each column in your sheet, select the matching property from the API response.

    • Example:

      • company_nameresponse.company_name

      • local_authorityresponse.local_authority

      • c_calculated_total_assetsresponse.financials.c_calculated_total_assets

      • c_calculated_total_liabilitiesresponse.financials.c_calculated_total_liabilities

      • c_calculated_equityresponse.financials.c_calculated_equity

  4. dl_status: Manually set this field to "fetched".

    • This is essential — it marks the row as complete so the Zap won’t keep re-triggering when the row changes. This resolves the warning ‘Possible Zap loop detected’.

Screenshot of a Zapier automation setup showing steps for updating a spreadsheet row, including filter conditions, Zapier webhooks, and data insertion fields for company information.
Screenshot of spreadsheet data entry form titled 'Update Spreadsheet Row' with fields for company details such as company number, name, activity status, report start and end dates, country, category, incorporation date, officer name, and entity status.

Test end-to-end

Enter a real company_number in the next empty row

  1. Watch the Zap run (Zapier Task History)

  2. Confirm the row fills with data; dl_status = OK

Table with columns labeled AH, AI, AJ, AK, AL containing numerical data.
Screenshot of a spreadsheet showing company registration details, including company number, name, status, start and end dates, country of origin, and other registration info.

Troubleshooting

403 Forbidden

  • Authorization should be added as a header “x-api-key”: YOUR_API_KEY

  • Check that only company_number is added to the URL

  • Ensure you have DataLedger credits available

Row didn’t update

  • Confirm Row ID from the trigger is mapped in Update Row

  • Verify JSON keys exist in the Webhook test output

  • Re-test the Webhook step and remap any changed keys

Zap keeps running in a loop

  • Make sure you have a dl_status column.

  • Add a Filter by Zapier step → only continue if dl_status is empty.

  • When updating the row, always set dl_status to "fetched" (or "error" if the API fails).

Data comes back blank or unexpected

  • Double-check the company number is valid and active.

  • Some fields may not exist for smaller companies (e.g. turnover, P&L).

  • Use c_ for current year values, p_ for previous year.

  • If a field is missing, the API will return null.

Zap runs but Google Sheets isn’t updating

  • Ensure you’ve selected the correct Spreadsheet and Worksheet in the update step.

  • Check that column headers in your sheet exactly match what you’re mapping in Zapier.

  • Avoid hidden rows or merged cells — they can break Zapier’s row mapping.

Frequently Asked Questions

What does the dl_status column do?

It prevents loops. When you first add a company number, dl_status is empty, so the Zap runs. When updating, Zapier sets dl_status to “fetched”. That stops it re-triggering when the row changes.

Can I enrich multiple company numbers at once?

Yes. Paste or import several company numbers into the sheet. Zapier will process each new row individually. For bulk jobs, add a Delay step or use batching to respect API rate limits.

Which DataLedger fields can I get in Google Sheets?

All major profile, balance sheet, and P&L fields are available, including:

  • Company name, address, SIC codes, officers

  • Assets, liabilities, equity (current and previous years)

  • Turnover and profit/loss (where disclosed)

  • Growth rates and ratios (debt-to-asset, debt-to-equity)

Download the template sheet to see the full column list.

Why are some values empty in the returned row?

Some companies file abbreviated accounts. Smaller companies often don’t disclose revenue, profit, or detailed breakdowns. In those cases, the API returns null.

Can I filter for companies with specific assets or liabilities directly in Zapier?

Zapier just handles the enrichment. To filter companies by assets/liabilities, use DataLedger’s CHat or API search endpoints to get the relevant company numbers, then push results into Sheets.

Is my API key safe in Zapier?

Yes — keep it in the x-api-key header. Never paste it into the sheet or URL. If a key leaks, contact us and we will reset it for you.

How often is the data updated?

DataLedger syncs with Companies House the day after the accounts are submitted. Balance sheet and P&L fields update as soon as filings are available.

Can I use this workflow for lead generation?

Yes. Many users enrich lists of company numbers (from LinkedIn, CRM exports, or other sources) to pull structured financials and employee counts directly into Sheets.