Skip to Content
Enter
Skip to Menu
Enter
Skip to Footer
Enter

HeyReach + Apify integration guide

Table of contents

HeyReach + Apify integration guide

Published:
October 22, 2026

You've built a list that fits your ICP perfectly. Right titles, right company size, right region. You launch the campaign, and a week later your acceptance rate is sitting in the low 20s.

The list wasn't the problem. A big chunk of those people simply don't open LinkedIn. They never see your connection request, and the invites you spent on them are gone for the week.

And even the active ones aren't all equal. A list tells you who fits. It doesn't tell you who's looking for a solution right now.

This guide shows you how to fix both with Apify, Claude, and HeyReach: check every prospect for LinkedIn activity in the last 30 days, find people showing real buying intent, and send only the active ones to HeyReach. Everyone else goes to email.

The building blocks: What's what?

HeyReach – A LinkedIn automation platform built for scale. It lets you run personalized outreach campaigns across multiple LinkedIn accounts, manage sequences with smart delays and conditions, and track every connection request, message, and reply. HeyReach handles the LinkedIn side — safely, efficiently, and at scale.

Apify – A marketplace of ready-made web scrapers, called actors. You give an actor a LinkedIn post, a keyword, a profile, or a company, and it returns a spreadsheet of people: name, headline, profile URL, and what they did. You pay per result, usually a fraction of a cent.

Claude – The operator in the middle. Instead of picking actors by hand and wrangling CSVs, you tell Claude what you need in plain English. It runs the Apify actors, keeps costs in check, filters by your ICP, and hands you clean files ready for HeyReach.

What they solve together

  • Stop wasting invites on inactive profiles. Every prospect is checked for reactions, comments, or posts in the last 30 days before they go into a campaign.
  • Find buyers, not just fits. Pull people who are engaging with posts about the problem you solve, so your outreach has a real reason behind it.
  • Route every lead to the right channel. Active on LinkedIn → HeyReach. Quiet on LinkedIn → your email tool.
  • Keep costs predictable. Small test runs and hard caps mean a mistake can't run up a bill.

What it costs in practice

In the walkthrough above, the HeyReach team ran two workflows on real data:

  • Activity check: 2,000 ICP prospects checked for $4.91. 80% were active in the last 30 days (64% within the last week, 16% in the 8–30 day window). The remaining ~20% (394 people) went to email.
  • Buying-intent search: $12.61 surfaced 300 high-fit prospects (CEOs, co-founders, CROs, and heads of sales) engaging with posts about booking more meetings, scaling outbound, hiring SDRs, or evaluating tools.

💡 Your numbers will vary by industry. That 80% figure is high because the list was GTM and sales people, who live on LinkedIn. On an e-commerce list, only 39% were active. In cases like that, filtering out inactive profiles can push connection acceptance up to double.

Before you start

You'll need:

  • A HeyReach account with at least one LinkedIn sender account connected
  • An Apify account (the free tier is enough to test) and your Apify API token
  • Claude — either Claude Code, or Claude.ai with Apify connected (see Part 1, Step 3)
  • A prospect list as a CSV with a LinkedIn profile URL column (for the activity check)
  • An email tool for the people who don't pass the check

🚨 Never give an Apify actor your LinkedIn login or session cookie. Use actors that work without it. Your sender accounts are worth more than any list.

Part 1: Set up Apify and Claude

Step 1: Create your Apify account and copy your API token

  1. Sign up at apify.com.
  2. Open Settings → API & Integrations and copy your Personal API token.
  3. Store it somewhere safe. Treat it like a password.

Step 2: Set a usage limit

  1. In Apify, go to Billing → Limits  and set a monthly spending cap.
  2. Start low — $15–20 covers both workflows in this guide with room to spare.

💡 Pro tip: You'll also cap each individual run through Claude, but an account-level limit is your safety net.

Step 3: Connect Claude to Apify

Option A: Claude Code (recommended for large lists)

  1. Add your token as an environment variable named APIFY_TOKEN.
  2. Claude reads it from there. Tell it never to print the token.

Option B: Claude.ai

  1. Connect Apify to Claude through the Apify connector .
  2. Make sure Claude can reach your Apify account before you start a full run.

✅ You're ready when Claude can list your recent Apify runs without errors.

Part 2: Run the 30-day activity check

All you want to know here is simple: does this person log into LinkedIn regularly, and will they see your message?

Step 1: Filter your list first

Run your title and fit filters before the check, so you only pay to check people you'd actually message.

Step 2: Ask Claude to run the check

Upload your CSV and paste this prompt:

Check which contacts in [CSV PATH] have been active on LinkedIn in the last 30 days, using Apify. My Apify token is in the APIFY_TOKEN environment variable. Never print it.

Method (cheapest first, pay-per-hit actors only):
1. Reactions: harvestapi/linkedin-profile-reactions, input {"profiles":[...up to 150 URLs...],"maxItems":1,"postedLimit":"month"}. Charges only when it finds a reaction.
2. Comments, only for people with no reaction: harvestapi/linkedin-profile-comments, same input.
3. Posts, only for people still showing nothing: harvestapi/linkedin-profile-posts, {"targetUrls":[...],"maxPosts":1,"postedLimit":"month"}. Skip this step if budget matters (it charges even with no result and usually adds only ~2% more active people).

Rules:
- Pilot on 8 profiles first and show me the cost and a sample row before the full run.
- Map each result back by the normalised profile URL in the result's query field. Count someone active only if the activity date is inside the window.
- Save every batch to disk the moment it lands, never only at the end. Retry 5xx errors. Run up to 4 batches in parallel.
- Before starting, re-read any finished runs from today for free instead of paying again.
- Check my Apify usage limit before each batch and stop if I'm close to it.
- Write active_30d / last_activity / last_activity_at back onto the CSV.
- Split the output: linkedin.csv (active, for HeyReach) and email.csv (not active, for my email tool).
- Report: active count and %, split by 0-7 / 8-14 / 15-30 days, total cost.

💡 Why this order: the reactions actor only charges when it finds something, so inactive people cost almost nothing to check. Comments run only on people with no reactions. Posts are optional because they charge even on a miss.

Step 3: Approve the pilot

Claude runs 8 profiles first and shows you the cost and a sample row. Check that the results look right, then give the go-ahead.

Step 4: Review the split

You'll get:

  • linkedin.csv — active in the last 30 days, ready for HeyReach
  • email.csv — not active, ready for email once you find and verify addresses

ResultChannelWhat to do✅ Active in last 7 daysHeyReach, first priorityConnection request + messages✅ Active 8–30 daysHeyReachSame, or split across senders if you're limited💤 Not activeEmailFind and verify the email. Re-check in 30 days

💡 Sending from just one LinkedIn account? Prioritize the 0–7 day group, or split between both groups and compare which performs better.

⚠️ Apify doesn't find emails. For the people in email.csv, you'll need an email finder or your data provider.

Part 3: Find high-intent prospects

The activity check tells you who'll see your message. This part finds who's likely to care about it.

Step 1: Define your intent signals

Decide what "in-market" looks like for your ICP. In the walkthrough, the target was CEOs, co-founders, CROs, and heads of sales engaging with posts about:

  • booking more meetings
  • scaling outbound
  • hiring SDRs
  • asking for or evaluating a tool

Your signals will look different depending on who you sell to.

Step 2: Tell Claude your ICP, budget, and regions

Give Claude your target titles, the topics above, a spend cap, and regions to prioritize. In the walkthrough, the cap was $15 with a focus on North America and Europe.

Ask Claude to:

  1. Run a small test first and show you the cost estimate before the full run
  2. Cap the run so it can't go over budget
  3. Filter by job title before spending on anything else
  4. Run the 30-day activity check (Part 2) on everyone who's left
  5. Keep the source post and what each person did (commented, reacted) on every row

Step 3: Review the results

You'll get a list of people grouped by signal: those asking for or evaluating a tool, those who commented or reacted on relevant posts, and those with a mix of both. People with more than one signal go to the top.

🚨 Keep the evidence on every row. You'll need the source post and engagement type to write openers that are actually true. Never write "saw your comment" to someone who only reacted.

Part 4: Send your leads to HeyReach

Option A: Upload the CSV

  1. In HeyReach, create a new lead list
  2. Upload linkedin.csv and map the LinkedIn profile URL column.
  3. Map any extra columns you want to use in messages — for example the source post author, topic, or comment text — as custom variables
  4. Add the list to a campaign.

With those variables in place, your openers can reference the real signal. For example:

"Saw your comment on {author}'s post about {topic}. The bit about {their point} — is that something you're dealing with at {company} right now?"

Claude can draft these as templates, or write individual first lines for every prospect.

💡 Pro tip: Keep activity groups (0–7 days, 8–30 days) or signal types in separate lists. After two weeks, you'll see which earns the best acceptance and reply rates.

Option B: Automate it

  1. In Apify, save the run as a task and give it a schedule.
  2. Add a webhook that fires when the run finishes.
  3. Point the webhook at n8n, Make, or Zapier to dedupe, filter titles, run the activity check, and skip anyone already in a campaign.
  4. Push active leads into the matching HeyReach list or campaign with the HeyReach API. Send everyone else to your email tool.

⚠️ Watch out: If you duplicate an Apify task, its webhooks don't come with it. The copy runs fine and sends nothing. Check the webhook on every new task.

💡 Need help with the automation layer? See our guides for n8n, Zapier, and Pabbly.

Common workflows

Workflow 1: Clean a list before launch

Trigger: You've built an ICP list from a database

‍Action: Run the 30-day check → active leads go to HeyReach, sorted by recency → inactive leads go to email

Workflow 2: Intent-led LinkedIn campaign

Trigger: You want prospects showing buying signals this month

‍Action: Run the intent search → 30-day check → HeyReach campaign with openers that reference the post each person engaged with

Workflow 3: Multichannel split

Trigger: You have both LinkedIn profiles and verified emails for a list

‍Action: Active on LinkedIn → HeyReach first, email as backup for anyone who doesn't accept → not active → email only

Workflow 4: Monthly re-check

Trigger: Leads have been sitting in a campaign or email sequence for a few weeks

‍Action: Re-run the 30-day check → move people who went quiet to email, and people who came back to LinkedIn into HeyReach

Troubleshooting

Problem: A run returned 0 results on a post with 200+ likes

‍Solution: That's a failed run, not an empty audience. Ask Claude to retry with a smaller batch or a different actor.

‍

Problem: Results include people outside your ICP, even with a job title filter set

‍Solution: Some actors accept a filter and ignore it. Check the test output — if titles aren't filtered, have Claude filter after the scrape, or switch actors.

‍

Problem: Your Apify bill is higher than expected

‍Solution: Make sure every run has a cap, skip the optional posts step in the activity check, and ask Claude to re-read past runs instead of re-scraping. Re-filtering data you already have costs nothing.

‍

Problem: Claude can't reach Apify

‍Solution: Check that APIFY_TOKEN is set (Claude Code) or that the Apify connector is connected (Claude.ai).

‍

Problem: Your scheduled task runs, but nothing reaches HeyReach

‍Solution: Check the task's webhook. Duplicated tasks don't inherit webhooks.

Quick-start checklist

Setup

  • ☐ Apify account created and API token copied
  • ☐ Apify usage limit set
  • ☐ Claude connected to Apify
  • ☐ HeyReach sender account(s) connected

Activity check

  • ☐ List filtered by title and fit first
  • ☐ Pilot on 8 profiles approved
  • ☐ linkedin.csv and email.csv generated

Intent search

  • ☐ Intent signals and ICP titles defined
  • ☐ Budget cap and regions given to Claude
  • ☐ Test run and cost estimate approved
  • ☐ Results 30-day checked

HeyReach

  • ☐ Lead list created and CSV uploaded
  • ☐ Custom variables mapped for personalization
  • ☐ Campaign launched
  • ☐ Inactive leads sent to your email tool

🎯 You're all set! Your invites now go to people who'll actually see them — and have a reason to say yes.

HeyReach icon
Try it for free