🔓 Unlock all 10,000+ workflows & prompts free Join Newsletter →
✅ Full access unlocked — explore all 10,000 AI workflow and prompt templates Browse Templates →
Home n8n Workflow
January 22, 2026

Apify to Google Sheets, enriched LinkedIn leads

Lisa Granqvist Partner Workflow Automation Expert

You start with a simple task: turn a list of LinkedIn URLs into a usable lead sheet. Then it turns into the usual mess. Tabs everywhere, copy-paste mistakes, half-filled rows, and a “we’ll fix it later” column that never gets fixed.

This LinkedIn lead enrichment automation hits sales ops first, because they’re the ones cleaning lists before outreach. But recruiters feel it too, and so do growth marketers trying to launch campaigns on time. The outcome is simple: a clean Google Sheet with enriched names, titles, companies (and more) without manual lookups.

Below, you’ll see how the workflow runs in n8n, what it produces, and how to use it as a repeatable “paste URLs → get leads” system.

How This Automation Works

The full n8n workflow, from trigger to final output:

n8n Workflow Template: Apify to Google Sheets, enriched LinkedIn leads

The Problem: LinkedIn URLs Don’t Turn Into Leads by Themselves

A LinkedIn URL list looks like progress, but it’s not campaign-ready. Someone still has to open profiles, grab names and job titles, find the current company, confirm location, and keep everything aligned row-by-row in a spreadsheet. Do this for 50 profiles and you lose an afternoon. Do it weekly and it becomes a quiet tax on your pipeline. The worst part is the mental load: you’re constantly checking “did I paste into the right row?” and “did I already do this profile?”

It adds up fast. Here’s where it usually breaks down.

  • Copying fields manually leads to mismatched rows, which means you can’t trust your own list.
  • Even careful teams waste about 2 hours per batch just doing lookups and cleanup.
  • People change roles often, so the data you gathered last month is already stale.
  • Outreach personalization stalls because the list never gets “finished enough” to use.

The Solution: Apify → Google Sheets Enrichment, Automatically

This workflow turns your Google Sheet into the control center for lead enrichment. You paste LinkedIn profile URLs into a sheet (one URL per row). When you run the workflow in n8n, it reads those URLs, packages them into the right payload, and sends the batch to Apify’s LinkedIn Profile Enrichment actor. Apify returns structured profile data like name, title, company, and location. Then n8n creates a new Google Sheet (so your original stays untouched) and appends the enriched results into that new sheet as clean rows you can actually use.

The workflow starts from a manual trigger, which is perfect when you want control over when enrichment runs. In the middle, n8n merges the sheet setup with the retrieved URLs, formats the actor request, then launches Apify and fetches the dataset output. Finally, it writes enriched profiles into Google Sheets so your lead list is ready for CRM import or outreach.

What You Get: Automation vs. Results

Example: What This Looks Like

Say you collect 80 LinkedIn URLs from Sales Navigator each week. Manually, you might spend about 2 minutes per profile to open it, copy name, title, company, and paste it into the right row, which is roughly 2.5 hours. With this workflow, you paste the URLs once, click run, and come back later to an enriched sheet. Your hands-on time drops to about 10 minutes, plus whatever Apify takes to process the batch in the background.

What You’ll Need

  • n8n instance (try n8n Cloud free)
  • Self-hosting option if you prefer (Hostinger works well)
  • Google Sheets to store URLs and receive enriched rows
  • Apify to run the LinkedIn Profile Enrichment actor
  • Apify API token (get it from your Apify account settings)

Skill level: Beginner. You’ll connect accounts, paste a Sheet URL, and run a test batch.

Don’t want to set this up yourself? Talk to an automation expert (free 15-minute consultation).

How It Works

You kick it off manually inside n8n. That trigger is intentional. Enrichment is something most teams prefer to run when a list is “ready,” not every time someone edits a cell.

The workflow prepares your Google Sheet inputs. A Set (Edit Fields) node assigns the Sheet URL and the original tab name (typically a tab called “profiles”), then n8n creates a fresh destination sheet for enriched data.

n8n pulls the LinkedIn URLs and formats the actor request. It retrieves profile links from Google Sheets, merges that data with the sheet setup, then a small code step shapes the payload Apify expects.

Apify enriches, then results land back in Google Sheets. The workflow launches the Apify actor, fetches the dataset output, and appends enriched profiles into the new sheet so you can filter, score, or export.

You can easily modify which fields you write back to Sheets based on your needs. See the full implementation guide below for customization options.

Step-by-Step Implementation Guide

Step 1: Configure the Manual Trigger

This workflow starts manually so you can validate your enrichment inputs before running the Apify actor.

  1. Add and open Manual Run Trigger.
  2. Leave all fields at their defaults (no parameters required).

Step 2: Connect Google Sheets

These nodes create the enriched output sheet and read the source profile links. The flow splits into parallel branches after the sheet inputs are set.

  1. Open Assign Sheet Inputs and set google_sheet_url to your sheet URL (replace xxxxxxxxxxxx with your actual URL).
  2. In Assign Sheet Inputs, set google_sheet_name to profiles (or your source sheet name).
  3. Open Generate Enriched Sheet and set Operation to create.
  4. Set Title to =profiles-enriched-{{new Date().format('dd/mm-HH:mm')}}.
  5. Set Document to {{ $json.google_sheet_url }}.
  6. Credential Required: Connect your googleSheetsOAuth2Api credentials in Generate Enriched Sheet.
  7. Open Retrieve Profile Links and set Sheet Name to {{ $json.google_sheet_name }}.
  8. Set Document to {{ $json.google_sheet_url }}.
  9. Credential Required: Connect your googleSheetsOAuth2Api credentials in Retrieve Profile Links.

Assign Sheet Inputs outputs to both Generate Enriched Sheet and Retrieve Profile Links in parallel.

⚠️ Common Pitfall: Make sure your source sheet has a url column containing LinkedIn profile URLs; Format Actor Payload reads that field directly.

Step 3: Set Up the Processing Nodes

These nodes synchronize the branches, build the Apify payload, and launch the enrichment actor.

  1. Keep Sync Branch Outputs connected to both Generate Enriched Sheet and Retrieve Profile Links to merge branch results.
  2. Open Format Actor Payload and confirm the JavaScript code builds startUrls from Retrieve Profile Links.
  3. Open Launch Apify Actor and set Actor Source to store.
  4. Set Custom Body to {{ $json.startUrlsObject }}.
  5. Credential Required: Connect your apifyApi credentials in Launch Apify Actor.
  6. Open Fetch Actor Dataset and set Resource to Datasets.
  7. Set Dataset ID to {{ $json.defaultDatasetId }}.
  8. Credential Required: Connect your apifyApi credentials in Fetch Actor Dataset.

Step 4: Configure Output Actions

The final output appends enriched data to the newly created sheet.

  1. Open Append Enriched Profiles and set Operation to append.
  2. Set Sheet Name to {{ $('Generate Enriched Sheet').first().json.sheetId }}.
  3. Set Document to {{ $('Assign Sheet Inputs').first().json.google_sheet_url }}.
  4. Keep Columns in autoMapInputData to map all returned fields (e.g., full_name, headline, company_name, url).
  5. Credential Required: Connect your googleSheetsOAuth2Api credentials in Append Enriched Profiles.

Use Flowpast Branding as a visual header only—it does not affect execution.

Step 5: Test and Activate Your Workflow

Validate the full enrichment loop and then activate the workflow for ongoing use.

  1. Click Execute Workflow to run Manual Run Trigger.
  2. Confirm Generate Enriched Sheet creates a new sheet titled like profiles-enriched-12/03-14:25.
  3. Verify Retrieve Profile Links returns rows with a url field.
  4. Check Fetch Actor Dataset for enriched records and ensure Append Enriched Profiles writes them to the new sheet.
  5. Toggle the workflow to Active once successful for production use.
🔒

Unlock Full Step-by-Step Guide

Get the complete implementation guide + downloadable template

Common Gotchas

  • Google Sheets credentials can expire or need specific permissions. If things break, check n8n’s Credentials screen and confirm the account has read/write access to the target spreadsheet.
  • If you’re using Wait nodes or external rendering, processing times vary. Bump up the wait duration if downstream nodes fail on empty responses.
  • Default prompts in AI nodes are generic. Add your brand voice early or you’ll be editing outputs forever.

Frequently Asked Questions

How long does it take to set up this LinkedIn lead enrichment automation?

About 30 minutes if your Google Sheets and Apify accounts are ready.

Do I need coding skills to automate LinkedIn lead enrichment?

No coding required. You’ll mostly connect credentials and paste in your Google Sheet URL.

Is n8n free to use for this LinkedIn lead enrichment workflow?

Yes. n8n has a free self-hosted option and a free trial on n8n Cloud. Cloud plans start at $20/month for higher volume. You’ll also need to factor in Apify usage costs for the enrichment actor.

Where can I host n8n to run this automation?

Two options: n8n Cloud (managed, easiest setup) or self-hosting on a VPS. For self-hosting, Hostinger VPS is affordable and handles n8n well. Self-hosting gives you unlimited executions but requires basic server management.

Can I customize this LinkedIn lead enrichment workflow for writing into my CRM instead of a new sheet?

Yes, but you’ll swap the destination step. Keep the Google Sheets “Retrieve Profile Links” part, then replace “Append Enriched Profiles” with your CRM node (or an HTTP Request) and map fields like name, title, company, and LinkedIn URL. Common tweaks include writing back into the same sheet instead of creating a new one, adding a “Status” column for processed rows, or enriching only new URLs you haven’t seen before using an If filter.

Why is my Apify connection failing in this workflow?

Usually it’s an expired or incorrect Apify API token in your n8n credentials. It can also happen if the actor you’re calling isn’t available on your Apify plan, or if you’re hitting usage limits during bigger batches. Double-check the Apify node configuration, then run a small test with a handful of URLs to confirm the dataset fetch returns results.

How many profiles can this LinkedIn lead enrichment automation handle?

If you self-host n8n, there’s no execution limit (it mainly depends on your server and Apify throughput).

Is this LinkedIn lead enrichment automation better than using Zapier or Make?

Often, yes, because this workflow benefits from multi-step handling: creating a new sheet, merging branch outputs, formatting an actor payload, then fetching and appending a dataset. n8n is comfortable with that kind of “batch” logic, and self-hosting can keep costs predictable when volumes grow. Zapier or Make can still work if you’re doing tiny lists and want the easiest UI, but you may hit limits when you need loops, branching, or more control over payload formatting. Honestly, the best choice depends on how often you enrich and how big your batches are. Talk to an automation expert if you want a quick recommendation.

Once this is running, your spreadsheet stops being a dumping ground and becomes a reliable lead pipeline input. Set it up, run it when you need it, and move on to work that actually closes deals.

Need Help Setting This Up?

Our automation experts can build and customize this workflow for your specific needs. Free 15-minute consultation—no commitment required.

Lisa Granqvist

Workflow Automation Expert

Expert in workflow automation and no-code tools.

×

Use template

Get instant access to this n8n workflow Json file

💬
Get a free quote today!
Get a free quote today!

Tell us what you need and we'll get back to you within one working day.

Get a free quote today!
Get a free quote today!

Tell us what you need and we'll get back to you within one working day.

Launch login modal Launch register modal