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

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.

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.

Call the DataLedger API (Webhooks)

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.

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’.

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

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.